X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-buttonbox.c;h=4552210729df4dd15243d30c47fcd497f567eee9;hb=2cae74e57bd1bc78f09ef0b01411d3ba83a9857d;hp=e4ee788566320f30117b647254f31521590fcd5f;hpb=a84eb76b976646ae9b0315ae6b856bf0f71da567;p=pspp-builds.git diff --git a/src/ui/gui/psppire-buttonbox.c b/src/ui/gui/psppire-buttonbox.c index e4ee7885..45522107 100644 --- a/src/ui/gui/psppire-buttonbox.c +++ b/src/ui/gui/psppire-buttonbox.c @@ -225,6 +225,31 @@ refresh_clicked (GtkWidget *w, gpointer data) } + +static void +on_validity_change (GtkWidget *toplevel, gboolean valid, gpointer data) +{ + PsppireButtonBox *bb = data; + + /* Set the sensitivity of all the 'executive order' buttons */ + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_OK]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_PASTE]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_GOTO]), valid); + gtk_widget_set_sensitive (GTK_WIDGET (bb->button[PSPPIRE_BUTTON_CONTINUE]), valid); +} + +static void +on_realize (GtkWidget *buttonbox, gpointer data) +{ + GtkWidget *toplevel = gtk_widget_get_toplevel (buttonbox); + + if ( PSPPIRE_IS_DIALOG (toplevel)) + { + g_signal_connect (toplevel, "validity-changed", + G_CALLBACK (on_validity_change), buttonbox); + } +} + static void psppire_button_box_init (PsppireButtonBox *bb) { @@ -257,7 +282,7 @@ psppire_button_box_init (PsppireButtonBox *bb) - bb->button[PSPPIRE_BUTTON_PASTE] = gtk_button_new_with_mnemonic (_("_Paste")); + bb->button[PSPPIRE_BUTTON_PASTE] = gtk_button_new_from_stock (GTK_STOCK_PASTE); g_signal_connect (bb->button[PSPPIRE_BUTTON_PASTE], "clicked", G_CALLBACK (paste_button_clicked), NULL); gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_PASTE]); @@ -270,7 +295,7 @@ psppire_button_box_init (PsppireButtonBox *bb) g_object_set (bb->button[PSPPIRE_BUTTON_CANCEL], "no-show-all", TRUE, NULL); - bb->button[PSPPIRE_BUTTON_RESET] = gtk_button_new_from_stock (GTK_STOCK_REFRESH); + bb->button[PSPPIRE_BUTTON_RESET] = gtk_button_new_from_stock ("pspp-stock-reset"); g_signal_connect (bb->button[PSPPIRE_BUTTON_RESET], "clicked", G_CALLBACK (refresh_clicked), NULL); gtk_box_pack_start_defaults (GTK_BOX (bb), bb->button[PSPPIRE_BUTTON_RESET]); @@ -299,6 +324,8 @@ psppire_button_box_init (PsppireButtonBox *bb) g_value_unset (&value); } + + g_signal_connect (bb, "realize", G_CALLBACK (on_realize), NULL); }