[gcalctool/gcalctool-newui2] ...
- From: Robert Ancell <rancell src gnome org>
- To: svn-commits-list gnome org
- Subject: [gcalctool/gcalctool-newui2] ...
- Date: Sat, 4 Jul 2009 15:13:52 +0000 (UTC)
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]