From 7d946488f038591a27c15b596ef5d6ab9267f1d8 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Tue, 30 Oct 2012 19:22:47 +0100 Subject: [PATCH] Compute Dialog: Add mnemonics and focus widgets on activation. --- src/ui/gui/compute-dialog.c | 28 +++++++++++++++++++++++-- src/ui/gui/compute.ui | 41 +++++++++++++++++++++++++++---------- 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/ui/gui/compute-dialog.c b/src/ui/gui/compute-dialog.c index debc412341..30456a3818 100644 --- a/src/ui/gui/compute-dialog.c +++ b/src/ui/gui/compute-dialog.c @@ -305,6 +305,24 @@ run_type_label_dialog (GtkButton *b, gpointer data) cd->use_type = TRUE; } +static void +on_type_toggled (GtkToggleButton *button, gpointer data) +{ + struct compute_dialog *cd = data; + + GtkWidget *entry = + get_widget_assert (cd->xml, "type-and-label-width"); + + if ( gtk_toggle_button_get_active (button)) + { + gtk_widget_set_sensitive (entry, TRUE); + gtk_widget_grab_focus (entry); + } + else + { + gtk_widget_set_sensitive (entry, FALSE); + } +} static void on_expression_toggle (GtkToggleButton *button, gpointer data) @@ -321,7 +339,6 @@ on_expression_toggle (GtkToggleButton *button, gpointer data) } else { - const char *label; struct variable *target_var; const gchar *target_name = gtk_entry_get_text (GTK_ENTRY (get_widget_assert (cd->xml, "compute-entry1"))); @@ -329,7 +346,7 @@ on_expression_toggle (GtkToggleButton *button, gpointer data) target_var = psppire_dict_lookup_var (cd->dict, target_name); if ( target_var ) { - label = var_get_label (target_var); + const char *label = var_get_label (target_var); if ( label ) gtk_entry_set_text (GTK_ENTRY (entry), label); @@ -338,6 +355,7 @@ on_expression_toggle (GtkToggleButton *button, gpointer data) gtk_entry_set_text (GTK_ENTRY (entry), ""); gtk_widget_set_sensitive (entry, TRUE); + gtk_widget_grab_focus (entry); } } @@ -387,6 +405,9 @@ compute_dialog (PsppireDataWindow *de) GtkWidget *expression = get_widget_assert (xml, "radio-button-expression-label"); + GtkWidget *str_btn = + get_widget_assert (xml, "radio-button-string"); + g_object_get (de->data_editor, "var-store", &vs, NULL); g_object_get (vs, "dictionary", &scd.dict, NULL); @@ -395,6 +416,9 @@ compute_dialog (PsppireDataWindow *de) g_signal_connect (expression, "toggled", G_CALLBACK(on_expression_toggle), &scd); + g_signal_connect (str_btn, "toggled", + G_CALLBACK(on_type_toggled), &scd); + gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (de)); diff --git a/src/ui/gui/compute.ui b/src/ui/gui/compute.ui index 3b78a0b933..fe9b10b203 100644 --- a/src/ui/gui/compute.ui +++ b/src/ui/gui/compute.ui @@ -1,7 +1,7 @@ - + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -38,7 +38,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Target Variable: + Target _Variable: + True + compute-entry1 False @@ -67,11 +69,12 @@ - Type & Label + _Type & Label... True True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True False @@ -168,7 +171,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Numeric Expressions: + _Numeric Expressions: + True + compute-textview1 False @@ -230,7 +235,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Functions: + _Functions: + True + compute-treeview2 0 @@ -295,11 +302,12 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - If... + _If... False True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True False @@ -383,7 +391,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Use expression as label + Use _expression as label + True + radio-button-expression-label 1 @@ -402,7 +412,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Label: + _Label: + True + radio-button-user-label False @@ -500,7 +512,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - String + _String + True + radio-button-string 0 @@ -510,6 +524,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 5 True @@ -517,15 +532,17 @@ Width + False + False 0 - adjustment1 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + adjustment1 1 @@ -581,7 +598,9 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Numeric + _Numeric + True + radio-button-numeric 1 -- 2.30.2