# HG changeset patch # User Matti Hamalainen # Date 1352442277 -7200 # Node ID 911401ea2145337f635e028467dd6b8979c3c230 # Parent b6e069c9c000260f2cd8008d6b3c3fbc705a395e Add message box functionality. diff -r b6e069c9c000 -r 911401ea2145 src/xs_config.c --- a/src/xs_config.c Fri Nov 09 08:22:41 2012 +0200 +++ b/src/xs_config.c Fri Nov 09 08:24:37 2012 +0200 @@ -950,6 +950,49 @@ } +void xs_messagebox_ok(GtkButton *button, gpointer user_data) +{ + (void) button; + gtk_widget_destroy(GTK_WIDGET(user_data)); +} + + +void xs_messagebox_const(const gchar *title, const gchar *msg) +{ + GtkWidget *win = create_xs_messagebox(); + GtkWidget *wid; + + gtk_signal_connect( + GTK_OBJECT(lookup_widget(win, "xs_messagebox_ok")), + "clicked", GTK_SIGNAL_FUNC(xs_messagebox_ok), win); + + if ((wid = lookup_widget(win, "xs_messagebox_frame")) != NULL) + { + gtk_frame_set_label(GTK_FRAME(wid), title); + } + + if ((wid = lookup_widget(win, "xs_messagebox_msg")) != NULL) + { + gtk_label_set_text(GTK_LABEL(wid), msg); + } + + gtk_widget_show(win); +} + + +void xs_messagebox(const gchar *title, const gchar *fmt, ...) +{ + va_list ap; + gchar *msg; + + va_start(ap, fmt); + msg = g_strdup_vprintf(fmt, ap); + va_end(ap); + + xs_messagebox_const(title, msg); + g_free(msg); +} + /* Confirmation window */ gboolean xs_confirmwin_delete(GtkWidget *widget, GdkEvent *event, gpointer user_data) diff -r b6e069c9c000 -r 911401ea2145 src/xs_genui.h --- a/src/xs_genui.h Fri Nov 09 08:22:41 2012 +0200 +++ b/src/xs_genui.h Fri Nov 09 08:24:37 2012 +0200 @@ -211,3 +211,7 @@ void xs_rom_fs_cancel (GtkButton *button, gpointer user_data); + +void +xs_messagebox_ok (GtkButton *button, + gpointer user_data); diff -r b6e069c9c000 -r 911401ea2145 src/xs_interface.c --- a/src/xs_interface.c Fri Nov 09 08:22:41 2012 +0200 +++ b/src/xs_interface.c Fri Nov 09 08:24:37 2012 +0200 @@ -2549,3 +2549,80 @@ return xs_rom_fs; } +GtkWidget* +create_xs_messagebox (void) +{ + GtkWidget *xs_messagebox; + GtkWidget *vbox2; + GtkWidget *xs_messagebox_frame; + GtkWidget *xs_messagebox_msg; + GtkWidget *hbox1; + GtkWidget *hbuttonbox4; + GtkWidget *xs_messagebox_ok; + + xs_messagebox = gtk_dialog_new (); + gtk_widget_set_name (xs_messagebox, "xs_messagebox"); + gtk_object_set_data (GTK_OBJECT (xs_messagebox), "xs_messagebox", xs_messagebox); + gtk_widget_set_usize (xs_messagebox, 350, 150); + gtk_window_set_title (GTK_WINDOW (xs_messagebox), _("Message title")); + GTK_WINDOW (xs_messagebox)->type = GTK_WINDOW_DIALOG; + gtk_window_set_position (GTK_WINDOW (xs_messagebox), GTK_WIN_POS_CENTER); + gtk_window_set_modal (GTK_WINDOW (xs_messagebox), TRUE); + gtk_window_set_default_size (GTK_WINDOW (xs_messagebox), 350, 150); + + vbox2 = GTK_DIALOG (xs_messagebox)->vbox; + gtk_widget_set_name (vbox2, "vbox2"); + gtk_object_set_data (GTK_OBJECT (xs_messagebox), "vbox2", vbox2); + gtk_widget_show (vbox2); + + xs_messagebox_frame = gtk_frame_new (_("Message title")); + gtk_widget_set_name (xs_messagebox_frame, "xs_messagebox_frame"); + gtk_widget_ref (xs_messagebox_frame); + gtk_object_set_data_full (GTK_OBJECT (xs_messagebox), "xs_messagebox_frame", xs_messagebox_frame, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (xs_messagebox_frame); + gtk_box_pack_start (GTK_BOX (vbox2), xs_messagebox_frame, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (xs_messagebox_frame), 6); + + xs_messagebox_msg = gtk_label_new (_("label3")); + gtk_widget_set_name (xs_messagebox_msg, "xs_messagebox_msg"); + gtk_widget_ref (xs_messagebox_msg); + gtk_object_set_data_full (GTK_OBJECT (xs_messagebox), "xs_messagebox_msg", xs_messagebox_msg, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (xs_messagebox_msg); + gtk_container_add (GTK_CONTAINER (xs_messagebox_frame), xs_messagebox_msg); + gtk_label_set_line_wrap (GTK_LABEL (xs_messagebox_msg), TRUE); + + hbox1 = GTK_DIALOG (xs_messagebox)->action_area; + gtk_widget_set_name (hbox1, "hbox1"); + gtk_object_set_data (GTK_OBJECT (xs_messagebox), "hbox1", hbox1); + gtk_widget_show (hbox1); + gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6); + + hbuttonbox4 = gtk_hbutton_box_new (); + gtk_widget_set_name (hbuttonbox4, "hbuttonbox4"); + gtk_widget_ref (hbuttonbox4); + gtk_object_set_data_full (GTK_OBJECT (xs_messagebox), "hbuttonbox4", hbuttonbox4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbuttonbox4); + gtk_box_pack_start (GTK_BOX (hbox1), hbuttonbox4, TRUE, TRUE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox4), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbuttonbox4), 8); + gtk_button_box_set_child_ipadding (GTK_BUTTON_BOX (hbuttonbox4), 0, 0); + + xs_messagebox_ok = gtk_button_new_with_label (_("Ok")); + gtk_widget_set_name (xs_messagebox_ok, "xs_messagebox_ok"); + gtk_widget_ref (xs_messagebox_ok); + gtk_object_set_data_full (GTK_OBJECT (xs_messagebox), "xs_messagebox_ok", xs_messagebox_ok, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (xs_messagebox_ok); + gtk_container_add (GTK_CONTAINER (hbuttonbox4), xs_messagebox_ok); + GTK_WIDGET_SET_FLAGS (xs_messagebox_ok, GTK_CAN_DEFAULT); + + gtk_signal_connect (GTK_OBJECT (xs_messagebox), "delete_event", + GTK_SIGNAL_FUNC (xs_confirmwin_delete), + NULL); + + return xs_messagebox; +} + diff -r b6e069c9c000 -r 911401ea2145 src/xs_interface.h --- a/src/xs_interface.h Fri Nov 09 08:22:41 2012 +0200 +++ b/src/xs_interface.h Fri Nov 09 08:24:37 2012 +0200 @@ -12,3 +12,4 @@ GtkWidget* create_xs_confirmwin (void); GtkWidget* create_xs_filter_newwin (void); GtkWidget* create_xs_rom_fs (void); +GtkWidget* create_xs_messagebox (void);