[gcalctool/gcalctool-newui2] ...



commit 3fae5beb64d632a50fe91d7cd480fe89c5934720
Author: Robert Ancell <robert ancell gmail com>
Date:   Tue Jun 30 11:54:36 2009 +1000

    ...

 data/gcalctool.ui |   20 ++++++++++----------
 src/gtk.c         |   35 +++++++++++++++++++++++++++++++----
 2 files changed, 41 insertions(+), 14 deletions(-)
---
diff --git a/data/gcalctool.ui b/data/gcalctool.ui
index 2be22e4..4687c73 100644
--- a/data/gcalctool.ui
+++ b/data/gcalctool.ui
@@ -2138,7 +2138,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 4</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="top_attach">1</property>
@@ -2161,7 +2161,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 7</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="x_options">GTK_EXPAND | GTK_SHRINK | GTK_FILL</property>
@@ -2182,7 +2182,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 8</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -2205,7 +2205,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 9</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
@@ -2228,7 +2228,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 5</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -2253,7 +2253,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 6</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
@@ -2302,7 +2302,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 1</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="top_attach">2</property>
@@ -2325,7 +2325,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 2</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -2350,7 +2350,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 0</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="top_attach">3</property>
@@ -2425,7 +2425,7 @@
                         <property name="AtkObject::accessible-name" translatable="yes">Numeric 3</property>
                       </object>
                     </child>
-                    <signal name="clicked" handler="button_cb"/>
+                    <signal name="clicked" handler="digit_cb"/>
                   </object>
                   <packing>
                     <property name="left_attach">2</property>
diff --git a/src/gtk.c b/src/gtk.c
index 60a7a50..c885157 100644
--- a/src/gtk.c
+++ b/src/gtk.c
@@ -49,8 +49,8 @@ static const char *mode_names[] = { "BASIC", "ADVANCED", "FINANCIAL",
                                     "SCIENTIFIC", "PROGRAMMING", NULL };
 
 typedef struct {
-    char *widget_name;
-    char *data;
+    const char *widget_name;
+    const char *data;
 } ButtonData;
 
 static ButtonData button_data[] = {
@@ -261,11 +261,16 @@ static void load_ui(GtkBuilder *ui, const gchar *filename)
     exit(0);
 }
 
-static void set_data(GtkBuilder *ui, const gchar *object_name, const gchar *name, gpointer value)
+static void set_data(GtkBuilder *ui, const gchar *object_name, const gchar *name, const gpointer value)
 {
     g_object_set_data(gtk_builder_get_object(ui, object_name), name, value);
 }
 
+static void set_string_data(GtkBuilder *ui, const gchar *object_name, const gchar *name, const char *value)
+{
+    g_object_set_data(gtk_builder_get_object(ui, object_name), name, (gpointer)value);
+}
+
 static void set_int_data(GtkBuilder *ui, const gchar *object_name, const gchar *name, gint value)
 {
     set_data(ui, object_name, name, GINT_TO_POINTER(value));
@@ -1312,6 +1317,18 @@ popup_cb(GtkWidget *widget, GdkEventButton *event)
     }
 }
 
+G_MODULE_EXPORT
+void
+digit_cb(GtkWidget *widget, GdkEventButton *event)
+{
+    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(X.superscript_toggle)))
+        do_text(g_object_get_data(G_OBJECT(widget), "calc_superscript_text"));
+    else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(X.subscript_toggle)))
+        do_text(g_object_get_data(G_OBJECT(widget), "calc_subscript_text"));
+    else
+        do_text(g_object_get_data(G_OBJECT(widget), "calc_text"));    
+}
+
 
 G_MODULE_EXPORT
 void
@@ -1704,7 +1721,17 @@ create_main_window()
     /* Connect text to buttons */
     for (i = 0; button_data[i].widget_name != NULL; i++) {
         SNPRINTF(name, MAXLINE, "calc_%s_button", button_data[i].widget_name);
-        set_data(X.ui, name, "calc_text", button_data[i].data);
+        set_string_data(X.ui, name, "calc_text", button_data[i].data);
+    }
+    
+    /* Connect super and subscript */
+    for (i = 0; i < 10; i++) {
+        static const char *subscript_digits[] = {"â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??"};
+        static const char *superscript_digits[] = {"�", "¹", "²", "³", "�", "�", "�", "�", "�", "�"};
+
+        SNPRINTF(name, MAXLINE, "calc_%d_button", i);
+        set_string_data(X.ui, name, "calc_subscript_text", subscript_digits[i]);
+        set_string_data(X.ui, name, "calc_superscript_text", superscript_digits[i]);
     }
 
     /* Connect menus to popup buttons */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]