changeset 896:911401ea2145

Add message box functionality.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 09 Nov 2012 08:24:37 +0200
parents b6e069c9c000
children cfc20df88401
files src/xs_config.c src/xs_genui.h src/xs_interface.c src/xs_interface.h
diffstat 4 files changed, 125 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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);
--- 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;
+}
+
--- 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);