X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fmessagebox.c;fp=src%2Fmessagebox.c;h=c4d37232af695a67a97b9575ed6cee82aa334549;hb=6c53f8ff0267ae104d1b60efb3b8285df338e473;hp=15019a7c4f4162033253c91821287099e6a37c16;hpb=311abd4cfc360ef689606153b4644e02633f2079;p=emu8051.git diff --git a/src/messagebox.c b/src/messagebox.c index 15019a7..c4d3723 100644 --- a/src/messagebox.c +++ b/src/messagebox.c @@ -32,72 +32,20 @@ #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),