Replace GTK deprecated functions
[emu8051.git] / src / messagebox.c
index 15019a7..c4d3723 100644 (file)
 
 #define BUTTON_TEXT_BORDER 3
 
-/* This function is used to adjust the border around the text in a button. */
-static GtkWidget *
-AddTextButton(gchar *button_text)
-{
-       GtkWidget *button;
-       GtkWidget *label;
-       GtkWidget *label_window;
-
-       /*
-        * The GtkLabel widget is one of a few GTK+ widgets that don't create
-        * their own window to render themselves into. Instead, they draw
-        * themselves directly onto their parents window. This means that in
-        * order to set a property for a GtkLabel widget, you need to change the
-        * property of its parent, i.e. the object that you pack it into.
-        * Another solution (short term workaround) is to put the label widget
-        * inside another widget that does get its own window, like the
-        * 'ViewPort' or 'EventBox' widget.
-        */
-
-       /*
-        * Using workaround described above to set the border width of 'label'
-        * widget.
-        */
-       label_window = gtk_event_box_new();
-
-       /* Creating our label. */
-       label = gtk_label_new(button_text);
-
-       /* Adding label widget to label_window widget. */
-       gtk_container_add(GTK_CONTAINER(label_window), label);
-
-       /*
-        * Changing border width of the label widget by way of label_window
-        * widget.
-        */
-       gtk_container_set_border_width(GTK_CONTAINER(label_window),
-                                      BUTTON_TEXT_BORDER);
-
-       /* Create the button. */
-       button = gtk_button_new();
-
-       /* Adding label to button. */
-       gtk_container_add(GTK_CONTAINER(button), label_window);
-
-       return button;
-}
+extern GtkWidget *mainwin;
 
 void
 ShowMessage(gchar *title, gchar *message, int justification, int font_style)
 {
        GtkWidget *dialog;
        GtkWidget *label;
-       GtkWidget *okay_button;
        GtkWidget *label_window;
-       GtkWidget *center;
-
-       /* Set-up a dialog window, centered on the screen. */
-       dialog = gtk_dialog_new();
-       gtk_window_set_title(GTK_WINDOW(dialog), title);
-       gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
 
-       /*
-        * To have the main window of our application being unusable while using
-        * the dialog.
-        */
-       gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
+       /* Keep the dialog on top of the main window, and centered. */
+       dialog = gtk_dialog_new_with_buttons(
+               title, GTK_WINDOW(mainwin),
+               GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK,
+               GTK_RESPONSE_NONE, NULL);
 
        /*
         * The GtkLabel widget is one of a few GTK+ widgets that don't create
@@ -137,22 +85,9 @@ ShowMessage(gchar *title, gchar *message, int justification, int font_style)
        gtk_container_set_border_width(GTK_CONTAINER(label_window),
                                       MESSAGE_DIALOG_BORDER);
 
-       /* xalign, yalign, xscale, yscale */
-       center = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
-
-       /* Create the OK button. */
-       okay_button = AddTextButton("OK");
-
-       /* Ensure that the dialog box is destroyed when the user clicks ok. */
-       gtk_signal_connect_object(GTK_OBJECT(okay_button), "clicked",
-                                 GTK_SIGNAL_FUNC(gtk_widget_destroy),
-                                 (gpointer) dialog);
-
-       /* Add the OK button to the alignment widget. */
-       gtk_container_add(GTK_CONTAINER(center), okay_button);
-       /* Add the alignment widget to the dialog window. */
-       gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area),
-                         center);
+       /* Ensure that the dialog box is destroyed when the user responds */
+       g_signal_connect_swapped(dialog, "response",
+                                G_CALLBACK(gtk_widget_destroy), dialog);
 
        /* Add the label_window to the dialog window. */
        gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),