[gcalctool/gcalctool-newui2] ...



commit 7ea0adf65807bf3358ef4d8cb04b3c4e0112b3bd
Author: Robert Ancell <robert ancell gmail com>
Date:   Thu Jul 2 15:28:24 2009 +1000

    ...

 data/gcalctool.ui        |    2 +-
 src/gtk.c                |   47 ++++++++++++++++++++++++++++++++-------------
 src/mp-equation-lexer.l  |   29 ++++++++++-----------------
 src/mp-equation-parser.y |   10 +++-----
 4 files changed, 49 insertions(+), 39 deletions(-)
---
diff --git a/data/gcalctool.ui b/data/gcalctool.ui
index 1600c85..80e963a 100644
--- a/data/gcalctool.ui
+++ b/data/gcalctool.ui
@@ -4882,7 +4882,7 @@
     <property name="type_hint">normal</property>
     <property name="has_separator">False</property>
     <signal name="response" handler="preferences_response_cb"/>
-    <signal name="close" handler="preferences_dialog_close_cb"/>
+    <signal name="delete_event" handler="preferences_dialog_delete_cb"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox4">
         <property name="visible">True</property>
diff --git a/src/gtk.c b/src/gtk.c
index 9d31824..82cc876 100644
--- a/src/gtk.c
+++ b/src/gtk.c
@@ -1202,8 +1202,9 @@ update_memory_menus()
     }
 }
 
+/* The Copy function key has been pressed. */
 static void
-get_display()              /* The Copy function key has been pressed. */
+get_display()
 {
     gchar *string = NULL;
     GtkTextIter start, end;
@@ -1225,7 +1226,7 @@ get_display()              /* The Copy function key has been pressed. */
 static gboolean
 check_for_localized_numeric_point(int keyval)
 {
-    gchar outbuf[10];        /* Minumum size 6. */
+    gchar outbuf[10]; /* Minumum size 6. */
     gunichar ch;
 
     ch = gdk_keyval_to_unicode(keyval);
@@ -1355,7 +1356,7 @@ gboolean
 main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
 {
     int state;
-    const char *c, *allowed_input = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-*/^|!%¬~ \t\n=<>";
+    const char *c, *allowed_input = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-*/^|!%¬~ \t\n=<>.,()";
     
     /* Only look at the modifiers we use */
     state = event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK);
@@ -1406,15 +1407,27 @@ main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
             case GDK_KP_Subtract:
                 do_text(do_sub ? "â??" : "â?»");
                 return TRUE;
-            case GDK_e:
-                do_text("Ã?10^");
-                return TRUE;
-            case GDK_r:
-                do_text("â??");
-                return TRUE;
-            case GDK_p:
-                do_text("Ï?");
-                return TRUE;
+        }
+    }
+
+    if (state == GDK_CONTROL_MASK) {
+        switch(event->keyval)
+        {
+        case GDK_u:
+            do_text("µ");
+            return TRUE;            
+        case GDK_e:
+            do_text("Ã?10^");
+            return TRUE;
+        case GDK_r:
+            do_text("â??");
+            return TRUE;
+        case GDK_i:
+            do_text("�¹");
+            return TRUE;
+        case GDK_p:
+            do_text("Ï?");
+            return TRUE;
         }
     }
     
@@ -1443,11 +1456,17 @@ main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
         return TRUE;
     }
     
+    if (state != 0)
+        return FALSE;
+    
     for (c = allowed_input; *c; c++) {
         // FIXME: event->string deprecated
         if (strncmp(event->string, c, 1) == 0) {
             switch(*c)
             {
+            case ',':
+                do_text(",");
+                return TRUE;
             case '-':
                 do_text("â??");
                 return TRUE;
@@ -1654,10 +1673,10 @@ preferences_response_cb(GtkWidget *widget, gint id)
 
 G_MODULE_EXPORT
 gboolean
-preferences_dialog_close_cb(GtkWidget *widget)
+preferences_dialog_delete_cb(GtkWidget *widget)
 {
     preferences_response_cb(widget, 0);
-    return FALSE;
+    return TRUE;
 }
 
 
diff --git a/src/mp-equation-lexer.l b/src/mp-equation-lexer.l
index 2855cac..111973f 100644
--- a/src/mp-equation-lexer.l
+++ b/src/mp-equation-lexer.l
@@ -110,39 +110,32 @@ NUMBER  {BIN_NUM}|{OCT_NUM}|{DEC_NUM}|{HEX_NUM}
 "sinh�¹"|"asinh"|"Asinh"|"ASINH" {return tASINH;}
 "cosh�¹"|"acosh"|"Acosh"|"ACOSH" {return tACOSH;}
 "tanh�¹"|"atanh"|"Atanh"|"ATANH" {return tATANH;}
-"â?§"|"and"|"And"|"AND" {return tAND;}
 "ans"|"Ans"|"ANS" {return tANS;}
 "frac"|"Frac"|"FRAC" {return tFRAC;}
 "int"|"Int"|"INT" {return tINT;}
 "ln"|"Ln"|"LN" {return tLN;}
 "log"|"Log"|"LOG" {return tLOG;}
 "mod"|"Mod"|"MOD" {return tMOD;}
-"¬"|"~" {return tNOT;}
-"â?¨"|"or"|"Or"|"OR" {return tOR;}
 "e" {return tEULERS;}
 "Ï?"|"pi"|"Pi"|"PI" {return tPI;}
 "rand"|"Rand"|"RAND" {return tRAND;}
-"rcl"|"Rcl"|"RCL" {return tRCL;}
 "â??"|"sqrt"|"Sqrt"|"SQRT" {return tROOT;}
 "â??"|"cbrt"|"Cbrt"|"CBRT" {return tROOT3;}
 "â??" {return tROOT4;}
-"sto"|"Sto"|"STO" {return tSTO;}
-"trunc"|"Trunc"|"TRUNC" {return tTRUNC;}
-"ones" {return t1S;}
-"twos" {return t2S;}
-"xnor"|"Xnor"|"XNOR" {return tXNOR;}
+"¬"|"~"|"not"|"Not"|"NOT" {return tNOT;}
+"â?§"|"and"|"And"|"AND" {return tAND;}
+"â?¨"|"or"|"Or"|"OR" {return tOR;}
 "â??"|"xor"|"Xor"|"XOR" {return tXOR;}
+"xnor"|"Xnor"|"XNOR" {return tXNOR;}
+"ones" {return tONES;}
+"twos" {return tTWOS;}
+"trunc"|"Trunc"|"TRUNC" {return tTRUNC;}
 
-"R"{DEC}+ {
-yylval->integer = atoi(yytext+1);  
-return tREG;
-}
-
-{SUP_NUM} { yylval->integer = super_atoi(yytext); return tSUPNUM; }
-{SUB_NUM} { yylval->integer = sub_atoi(yytext); return tSUBNUM; }
+"R"{DEC}+ {yylval->integer = atoi(yytext+1); return tREG;}
+{SUP_NUM} {yylval->integer = super_atoi(yytext); return tSUPNUM; }
+{SUB_NUM} {yylval->integer = sub_atoi(yytext); return tSUBNUM; }
 {NUMBER}  {mp_set_from_string(yytext, &yylval->int_t); return tNUMBER;}
-
 [ \t\n]
-.        {return *yytext; }
+.         {return *yytext;}
 
 %% 
diff --git a/src/mp-equation-parser.y b/src/mp-equation-parser.y
index 97a8051..f3148b6 100644
--- a/src/mp-equation-parser.y
+++ b/src/mp-equation-parser.y
@@ -83,21 +83,19 @@ static void set_error(yyscan_t yyscanner, int error)
 %token tLN
 %token tLOG
 %token tMOD
-%token t1S
-%token t2S
+%token tONES
+%token tTWOS
 %token tNOT
 %token tOR
 %token tEULERS
 %token tPI
 %token tRAND
-%token tRCL
 %token tSIN
 %token tSINH
 %token tROOT
 %token tROOT3
 %token tROOT4
 %token tSQRT
-%token tSTO
 %token tTAN
 %token tTANH
 %token tTRUNC
@@ -225,7 +223,7 @@ func:
 | tACOSH term %prec HIGH {mp_acosh(&$2, &$$);}
 | tATANH term %prec HIGH {mp_atanh(&$2, &$$);}
 | tTRUNC term %prec HIGH {mp_mask(&$2, _mp_equation_get_extra(yyscanner)->wordlen, &$$);}
-| t1S term %prec HIGH  {
+| tONES term %prec HIGH  {
     if (!mp_is_natural(&$2)) {
 	set_error(yyscanner, -PARSER_ERR_BITWISEOP);
     } else if (!mp_is_overflow(&$2, _mp_equation_get_extra(yyscanner)->wordlen)) {
@@ -233,7 +231,7 @@ func:
     }
     mp_1s_complement(&$2, _mp_equation_get_extra(yyscanner)->wordlen, &$$);
 }
-| t2S term %prec HIGH {
+| tTWOS term %prec HIGH {
     if (!mp_is_natural(&$2)) {
 	set_error(yyscanner, -PARSER_ERR_BITWISEOP);
     } else if (!mp_is_overflow(&$2, _mp_equation_get_extra(yyscanner)->wordlen)) {



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