Whitespace changes only.
[pspp] / src / ui / gui / val-labs-dialog.c
index 588bc42601ca36230cca470a8395d996dc698a46..d1649e900bae47ccf5f8eee28e578a69e84ae2da 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2005, 2009, 2010, 2011, 2012  Free Software Foundation
+   Copyright (C) 2005, 2009, 2010, 2011, 2012, 2015, 2016  Free Software Foundation
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -48,6 +48,8 @@ enum
     PROP_VALUE_LABELS
   };
 
+static void do_change (PsppireValLabsDialog *);
+
 static void
 psppire_val_labs_dialog_set_property (GObject      *object,
                                       guint         prop_id,
@@ -142,7 +144,6 @@ psppire_val_labs_dialog_new (const struct variable *var)
 {
   return PSPPIRE_VAL_LABS_DIALOG (
     g_object_new (PSPPIRE_TYPE_VAL_LABS_DIALOG,
-                  "orientation", PSPPIRE_HORIZONTAL,
                   "variable", var,
                   NULL));
 }
@@ -196,6 +197,15 @@ on_label_entry_change (GtkEntry *entry, gpointer data)
   value_destroy (&v, val_labs_get_width (dialog->labs));
 }
 
+/* This callback occurs when Enter is pressed in the label entry box. */
+static void
+on_label_entry_activate (GtkEntry *entry, gpointer data)
+{
+  PsppireValLabsDialog *dialog = data;
+  do_change (dialog);
+}
+
+/* Return the value-label pair currently selected in the dialog box  */
 
 /* Set the TREEVIEW list cursor to the item which has the value VAL */
 static void
@@ -222,14 +232,14 @@ select_treeview_from_value (GtkTreeView *treeview, union value *val)
 
       v.f = g_value_get_double (&gvalue);
 
-      if ( 0 == memcmp (&v, val, sizeof (union value)))
+      if (0 == memcmp (&v, val, sizeof (union value)))
        {
          break;
        }
     }
 
   path = gtk_tree_model_get_path (model, &iter);
-  if ( path )
+  if (path)
     {
       gtk_tree_view_set_cursor (treeview, path, 0, 0);
       gtk_tree_path_free (path);
@@ -258,7 +268,7 @@ on_value_entry_change (GtkEntry *entry, gpointer data)
   gtk_entry_set_text (GTK_ENTRY (dialog->label_entry),"");
 
 
-  if ( (s = val_labs_find (dialog->labs, &v)) )
+  if ((s = val_labs_find (dialog->labs, &v)))
     {
       gtk_entry_set_text (GTK_ENTRY (dialog->label_entry), s);
       gtk_widget_set_sensitive (dialog->add_button, FALSE);
@@ -277,9 +287,16 @@ on_value_entry_change (GtkEntry *entry, gpointer data)
   value_destroy (&v, val_labs_get_width (dialog->labs));
 }
 
-
-/* Return the value-label pair currently selected in the dialog box  */
+/* This callback occurs when Enter is pressed in the value entry box. */
 static void
+on_value_entry_activate (GtkEntry *entry, gpointer data)
+{
+  PsppireValLabsDialog *dialog = data;
+
+  gtk_widget_grab_focus (dialog->label_entry);
+}
+
+static gboolean
 get_selected_tuple (PsppireValLabsDialog *dialog,
                     union value *valuep, const char **label)
 {
@@ -293,7 +310,8 @@ get_selected_tuple (PsppireValLabsDialog *dialog,
 
   GtkTreeModel * model  = gtk_tree_view_get_model (treeview);
 
-  gtk_tree_selection_get_selected (sel, &model, &iter);
+  if (! gtk_tree_selection_get_selected (sel, &model, &iter))
+    return FALSE;
 
   gtk_tree_model_get_value (model, &iter, 1, &the_value);
 
@@ -308,6 +326,8 @@ get_selected_tuple (PsppireValLabsDialog *dialog,
       if (vl != NULL)
         *label = val_lab_get_escaped_label (vl);
     }
+
+  return TRUE;
 }
 
 
@@ -318,22 +338,28 @@ static void
 on_change (GtkWidget *w, gpointer data)
 {
   PsppireValLabsDialog *dialog = data;
+  do_change (dialog);
+}
 
+static void
+do_change (PsppireValLabsDialog *dialog)
+{
   const gchar *val_text = gtk_entry_get_text (GTK_ENTRY (dialog->value_entry));
 
   union value v;
 
-  text_to_value__ (val_text, &dialog->format, dialog->encoding, &v);
-
-  val_labs_replace (dialog->labs, &v,
-                   gtk_entry_get_text (GTK_ENTRY (dialog->label_entry)));
+  if (text_to_value__ (val_text, &dialog->format, dialog->encoding, &v))
+    {
+      val_labs_replace (dialog->labs, &v,
+                       gtk_entry_get_text (GTK_ENTRY (dialog->label_entry)));
 
-  gtk_widget_set_sensitive (dialog->change_button, FALSE);
+      gtk_widget_set_sensitive (dialog->change_button, FALSE);
 
-  repopulate_dialog (dialog);
-  gtk_widget_grab_focus (dialog->value_entry);
+      repopulate_dialog (dialog);
+      gtk_widget_grab_focus (dialog->value_entry);
 
-  value_destroy (&v, val_labs_get_width (dialog->labs));
+      value_destroy (&v, val_labs_get_width (dialog->labs));
+    }
 }
 
 /* Callback which occurs when the "Add" button is clicked */
@@ -346,19 +372,20 @@ on_add (GtkWidget *w, gpointer data)
 
   const gchar *text = gtk_entry_get_text (GTK_ENTRY (dialog->value_entry));
 
-  text_to_value__ (text, &dialog->format, dialog->encoding, &v);
-
-  if (val_labs_add (dialog->labs, &v,
-                   gtk_entry_get_text
-                   ( GTK_ENTRY (dialog->label_entry)) ) )
+  if (text_to_value__ (text, &dialog->format, dialog->encoding, &v))
     {
-      gtk_widget_set_sensitive (dialog->add_button, FALSE);
+      if (val_labs_add (dialog->labs, &v,
+                       gtk_entry_get_text
+                       (GTK_ENTRY (dialog->label_entry))))
+       {
+         gtk_widget_set_sensitive (dialog->add_button, FALSE);
 
-      repopulate_dialog (dialog);
-      gtk_widget_grab_focus (dialog->value_entry);
-    }
+         repopulate_dialog (dialog);
+         gtk_widget_grab_focus (dialog->value_entry);
+       }
 
-  value_destroy (&v, val_labs_get_width (dialog->labs));
+      value_destroy (&v, val_labs_get_width (dialog->labs));
+    }
 }
 
 /* Callback which occurs when the "Remove" button is clicked */
@@ -370,7 +397,9 @@ on_remove (GtkWidget *w, gpointer data)
   union value value;
   struct val_lab *vl;
 
-  get_selected_tuple (dialog, &value, NULL);
+  if (! get_selected_tuple (dialog, &value, NULL))
+    return;
+
   vl = val_labs_lookup (dialog->labs, &value);
   if (vl != NULL)
     val_labs_remove (dialog->labs, vl);
@@ -395,7 +424,9 @@ on_select_row (GtkTreeView *treeview, gpointer data)
 
   gchar *text;
 
-  get_selected_tuple (dialog, &value, &label);
+  if (! get_selected_tuple (dialog, &value, &label))
+    return;
+
   text = value_to_text__ (value, &dialog->format, dialog->encoding);
 
   g_signal_handler_block (GTK_ENTRY (dialog->value_entry),
@@ -472,11 +503,15 @@ psppire_val_labs_dialog_constructor (GType                  type,
     g_signal_connect (dialog->label_entry,
                     "changed",
                     G_CALLBACK (on_label_entry_change), dialog);
+  g_signal_connect (dialog->label_entry, "activate",
+                    G_CALLBACK (on_label_entry_activate), dialog);
 
   dialog->value_handler_id  =
     g_signal_connect (dialog->value_entry,
                     "changed",
                     G_CALLBACK (on_value_entry_change), dialog);
+  g_signal_connect (dialog->value_entry, "activate",
+                    G_CALLBACK (on_value_entry_activate), dialog);
 
   g_signal_connect (dialog->change_button,
                   "clicked",