X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-keypad.c;h=23ddccb550aa1c5648c0099f93f8ce8612028883;hb=2cae74e57bd1bc78f09ef0b01411d3ba83a9857d;hp=af0e592487f795179bb8cc76fde26e0d8fb46a3c;hpb=5d5b324c12dc799e6e4dc3230e93edaa7d0a0272;p=pspp-builds.git diff --git a/src/ui/gui/psppire-keypad.c b/src/ui/gui/psppire-keypad.c index af0e5924..23ddccb5 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);