X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-keypad.c;h=23ddccb550aa1c5648c0099f93f8ce8612028883;hb=20ab4257de9330d8ad358fd8f66ebcd75bd1846a;hp=af0e592487f795179bb8cc76fde26e0d8fb46a3c;hpb=5d5b324c12dc799e6e4dc3230e93edaa7d0a0272;p=pspp
diff --git a/src/ui/gui/psppire-keypad.c b/src/ui/gui/psppire-keypad.c
index af0e592487..23ddccb550 100644
--- a/src/ui/gui/psppire-keypad.c
+++ b/src/ui/gui/psppire-keypad.c
@@ -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 . */
+#include
#include
#include
#include
@@ -25,13 +24,14 @@
enum {
INSERT_SYNTAX,
+ ERASE,
n_SIGNALS
};
static void psppire_keypad_class_init (PsppireKeypadClass *klass);
static void psppire_keypad_init (PsppireKeypad *kp);
-static guint keypad_signals[n_SIGNALS] = { 0 };
+static guint keypad_signals [n_SIGNALS] = { 0 };
GType
psppire_keypad_get_type (void)
@@ -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);
}
@@ -115,10 +125,10 @@ psppire_keypad_class_init (PsppireKeypadClass *klass)
The order of these must correspond
to the order of the button declarations
*/
-static const char *keypad_insert_text[] = {
+static const char * const 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;
@@ -325,7 +339,7 @@ psppire_keypad_init (PsppireKeypad *kp)
{
int j = i - 1;
char buf[5];
- snprintf (buf, 5, "%d", i);
+ g_snprintf (buf, 5, "%d", i);
kp->digit[i] = gtk_button_new_with_label (buf);
if ( i == 0 )
@@ -369,12 +383,15 @@ psppire_keypad_init (PsppireKeypad *kp)
g_markup_printf_escaped ("xy");
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);