X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-dialog.c;h=1e4216175b41e1a536a4d64decbca52a89911afc;hb=c5526c9acb2c33a265b6be745a6d83a870ebd666;hp=c5ac30b2767b7fe6c11d0de77993edc96355e4b5;hpb=d46430e7458fcd65dfdf7928f52f2d06fa60127d;p=pspp diff --git a/src/ui/gui/psppire-dialog.c b/src/ui/gui/psppire-dialog.c index c5ac30b276..1e4216175b 100644 --- a/src/ui/gui/psppire-dialog.c +++ b/src/ui/gui/psppire-dialog.c @@ -21,16 +21,18 @@ #include "psppire-dialog.h" #include "psppire-buttonbox.h" #include "psppire-selector.h" -#include "psppire-conf.h" #include #include "builder-wrapper.h" #include "help-menu.h" +#include "psppire-window-base.h" + static void psppire_dialog_class_init (PsppireDialogClass *); static void psppire_dialog_init (PsppireDialog *); enum {DIALOG_REFRESH, + RESPONSE, VALIDITY_CHANGED, DIALOG_HELP, n_SIGNALS}; @@ -68,7 +70,7 @@ psppire_dialog_get_type (void) NULL }; - dialog_type = g_type_register_static (GTK_TYPE_WINDOW, + dialog_type = g_type_register_static (PSPPIRE_TYPE_WINDOW_BASE, "PsppireDialog", &dialog_info, 0); g_type_add_interface_static (dialog_type, @@ -248,6 +250,18 @@ psppire_dialog_class_init (PsppireDialogClass *class) 0); + signals [RESPONSE] = + g_signal_new ("response", + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT); + + signals [VALIDITY_CHANGED] = g_signal_new ("validity-changed", G_TYPE_FROM_CLASS (class), @@ -301,37 +315,6 @@ delete_event_callback (GtkWidget *w, GdkEvent *e, gpointer data) } -static gboolean -configure_event_callback (GtkDialog *dialog, - GdkEvent *event, gpointer data) -{ - const gchar *base; - - PsppireConf *conf = psppire_conf_new (); - - if ( ! gtk_widget_get_mapped (GTK_WIDGET (dialog))) - return FALSE; - - base = gtk_buildable_get_name (GTK_BUILDABLE (dialog)); - - psppire_conf_save_window_geometry (conf, base, GTK_WINDOW (dialog)); - - return FALSE; -} - - -static void -on_realize (GtkWindow *dialog, gpointer data) -{ - PsppireConf *conf = psppire_conf_new (); - - const gchar *base = gtk_buildable_get_name (GTK_BUILDABLE (dialog)); - - psppire_conf_set_window_geometry (conf, base, dialog); -} - - - static void psppire_dialog_init (PsppireDialog *dialog) { @@ -353,15 +336,6 @@ psppire_dialog_init (PsppireDialog *dialog) G_CALLBACK (delete_event_callback), dialog); - g_signal_connect (dialog, "configure-event", - G_CALLBACK (configure_event_callback), - dialog); - - g_signal_connect (dialog, "realize", - G_CALLBACK (on_realize), - dialog); - - gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG); @@ -524,6 +498,8 @@ psppire_dialog_run (PsppireDialog *dialog) g_main_loop_unref (dialog->loop); + g_signal_emit (dialog, signals [RESPONSE], 0, dialog->response); + return dialog->response; }