Created a new stock item for Reset buttons.
[pspp-builds.git] / src / ui / gui / psppire-keypad.c
index af0e592487f795179bb8cc76fde26e0d8fb46a3c..54e6d4314fd2f2ba324ae9cfd419ad1e6c5af38c 100644 (file)
@@ -1,21 +1,20 @@
-/* PSPP - computes sample statistics.
+/* PSPPIRE - a graphical user interface for PSPP.
    Copyright (C) 2007 Free Software Foundation, Inc.
 
-   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 the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   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
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
 
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
+#include <config.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtktable.h>
 #include <gtk/gtkbutton.h>
@@ -25,6 +24,7 @@
 
 enum {
   INSERT_SYNTAX,
+  ERASE,
   n_SIGNALS
 };
 
@@ -106,6 +106,16 @@ psppire_keypad_class_init (PsppireKeypadClass *klass)
                                         g_cclosure_marshal_VOID__STRING,
                                          G_TYPE_NONE, 1,
                                         G_TYPE_STRING);
+
+  keypad_signals[ERASE] = g_signal_new ("erase",
+                                        G_TYPE_FROM_CLASS (klass),
+                                        G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                                        G_STRUCT_OFFSET (PsppireKeypadClass,
+                                                         keypad),
+                                         NULL,
+                                         NULL,
+                                        g_cclosure_marshal_VOID__VOID,
+                                         G_TYPE_NONE, 0);
 }
 
 
@@ -118,7 +128,7 @@ psppire_keypad_class_init (PsppireKeypadClass *klass)
 static const char *keypad_insert_text[] = {
   "0",  "1",  "2", "3", "4", "5", "6", "7", "8", "9",
   ".", "+", "-", "*", "**", "/", "=", "<>", "<", "<=",
-  ">", ">=", "&", "|", "~", "(", ")"
+  ">", ">=", "&", "|", "~", "()", NULL
 };
 
 
@@ -131,7 +141,11 @@ button_click (GtkButton *b, PsppireKeypad *kp)
 {
   const gchar *s = g_hash_table_lookup (kp->frag_table, b);
 
-  g_signal_emit (kp, keypad_signals [INSERT_SYNTAX], 0, s);
+
+  if ( s )
+    g_signal_emit (kp, keypad_signals [INSERT_SYNTAX], 0, s);
+  else
+    g_signal_emit (kp, keypad_signals [ERASE], 0);
 }
 
 static const gint cols = 6;
@@ -369,12 +383,15 @@ psppire_keypad_init (PsppireKeypad *kp)
       g_markup_printf_escaped ("<span style=\"italic\">x<sup>y</sup></span>");
 
     label = gtk_label_new ("**");
+
     gtk_label_set_markup (GTK_LABEL (label), markup);
     g_free (markup);
 
     kp->star_star = gtk_button_new ();
     gtk_container_add (GTK_CONTAINER (kp->star_star), label);
 
+    gtk_widget_show (label);
+
     add_button (kp, &kp->star_star,
                0, 1,
                4, 5);