[gcalctool/gcalctool-newui2] ...
- From: Robert Ancell <rancell src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gcalctool/gcalctool-newui2] ...
- Date: Mon, 17 Aug 2009 22:00:42 +0000 (UTC)
commit bae22513d4179d83f1940b39309e5a66ea79f3ce
Author: Robert Ancell <robert ancell gmail com>
Date: Sat Aug 15 11:06:41 2009 -0700
...
data/gcalctool.schemas.in | 78 +++++++----------
data/gcalctool.ui | 4 +-
src/calctool.c | 5 -
src/functions.c | 103 ---------------------
src/functions.h | 5 -
src/get.h | 7 +-
src/gtk.c | 216 ++++++++++++++------------------------------
src/ui.h | 10 --
8 files changed, 105 insertions(+), 323 deletions(-)
---
diff --git a/data/gcalctool.schemas.in b/data/gcalctool.schemas.in
index b31dfde..0adc8f4 100644
--- a/data/gcalctool.schemas.in
+++ b/data/gcalctool.schemas.in
@@ -21,61 +21,45 @@ To change the gconftool target use the - -config-source=blah option to gconftool
<type>int</type>
<default>9</default>
<locale name="C">
- <short>Accuracy value</short>
+ <short>Number of digits after numeric point</short>
<long>
- The number of digits displayed after the numeric point.
- This value must be in the range 0 to 9.
- </long>
- </locale>
- </schema>
- <schema>
- <applyto>/apps/gcalctool/base</applyto>
- <key>/schemas/apps/gcalctool/base</key>
- <owner>gcalctool</owner>
- <type>string</type>
- <default>DEC</default>
- <locale name="C">
- <short>Numeric Base</short>
- <long>
- The initial numeric base. Valid values are
- BIN (binary)
- OCT (octal)
- DEC (decimal)
- HEX (hexadecimal)
+ The number of digits displayed after the numeric point (0-N)
</long>
</locale>
</schema>
<schema>
- <applyto>/apps/gcalctool/display</applyto>
- <key>/schemas/apps/gcalctool/display</key>
+ <applyto>/apps/gcalctool/result_format</applyto>
+ <key>/schemas/apps/gcalctool/result_format</key>
<owner>gcalctool</owner>
<type>string</type>
- <default>FIX</default>
+ <default>decimal</default>
<locale name="C">
- <short>Display Mode</short>
+ <short>Display format for results</short>
<long>
- The initial display mode. Valid values are
- ENG (engineering)
- FIX (fixed-point)
- SCI (scientific)
+ The format to provide results in. Valid values:
+ "decimal" - in decimal form, e.g. "2783.25"
+ "scientific" - in scientific form, e.g. "2.78325*10^3"
+ "engineering" - in engineering form, e.g. "2.78325k"
+ "binary" - in binary form, e.g. "101011011111.01â??"
+ "octal" - in octal form, e.g. "5337.2â??"
+ "hexadecimal" - in hexadecimal form, e.g. "ADF.4â??â??"
</long>
</locale>
</schema>
<schema>
- <applyto>/apps/gcalctool/mode</applyto>
- <key>/schemas/apps/gcalctool/mode</key>
+ <applyto>/apps/gcalctool/button_layout</applyto>
+ <key>/schemas/apps/gcalctool/button_layout</key>
<owner>gcalctool</owner>
<type>string</type>
- <default>BASIC</default>
+ <default>basic</default>
<locale name="C">
- <short>Mode</short>
+ <short>Button layout for calculator</short>
<long>
- The initial calculator mode. Valid values are
- BASIC
- FINANCIAL
- LOGICAL
- SCIENTIFIC
- PROGRAMMING
+ The visible buttons for the calculator. Valid values:
+ "basic" - Show only basic buttons
+ "scientific" - Show advanced buttons
+ "programming" - Show programming buttons
+ "financial" - Show financial buttons
</long>
</locale>
</schema>
@@ -121,18 +105,18 @@ To change the gconftool target use the - -config-source=blah option to gconftool
</locale>
</schema>
<schema>
- <applyto>/apps/gcalctool/trigtype</applyto>
- <key>/schemas/apps/gcalctool/trigtype</key>
+ <applyto>/apps/gcalctool/angle_units</applyto>
+ <key>/schemas/apps/gcalctool/angle_units</key>
<owner>gcalctool</owner>
<type>string</type>
- <default>DEG</default>
+ <default>degrees</default>
<locale name="C">
- <short>Trigonometric type</short>
- <long>
- The initial trigonometric type. Valid values are
- DEG (degrees)
- GRAD (grads)
- RAD (radians).
+ <short>Angle units to use</short>
+ <long>
+ The units used for trigonometric operations. Valid values:
+ "degrees" - degrees, i.e 180
+ "radians" - ?
+ "gradians" - ?
</long>
</locale>
</schema>
diff --git a/data/gcalctool.ui b/data/gcalctool.ui
index c74cf77..7f67575 100644
--- a/data/gcalctool.ui
+++ b/data/gcalctool.ui
@@ -4977,7 +4977,7 @@
<property name="xalign">0</property>
<property name="label" translatable="yes">Word _size:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">combobox4</property>
+ <property name="mnemonic_widget">word_size_combobox</property>
</object>
<packing>
<property name="right_attach">2</property>
@@ -4987,7 +4987,7 @@
</packing>
</child>
<child>
- <object class="GtkComboBox" id="combobox4">
+ <object class="GtkComboBox" id="word_size_combobox">
<property name="visible">True</property>
<property name="model">word_size_model</property>
</object>
diff --git a/src/calctool.c b/src/calctool.c
index daffe2f..230b7d0 100644
--- a/src/calctool.c
+++ b/src/calctool.c
@@ -238,11 +238,6 @@ init_state(void)
v->accuracy = DEFAULT_ACCURACY;
}
- if (get_int_resource(R_BASE, &i))
- v->base = i;
- else
- v->base = 10;
-
if (get_enumerated_resource(R_TRIG, Rtstr, &i))
v->ttype = (MPAngleUnit) i;
else
diff --git a/src/functions.c b/src/functions.c
index 48ff9da..d434a2e 100644
--- a/src/functions.c
+++ b/src/functions.c
@@ -60,35 +60,12 @@ static Function functions[NFUNCTIONS] = {
{ FN_SHIFT, NULL, 0 },
{ FN_STORE, NULL, 0 },
{ FN_RECALL, NULL, 0 },
-{ FN_SET_ACCURACY, NULL, 0 },
-{ FN_SET_BASE, NULL, 0 },
-{ FN_SET_NUMBERTYPE, NULL, 0 },
-{ FN_SET_TRIG_TYPE, NULL, 0 },
-{ FN_SET_WORDLEN, NULL, 0 },
{ FN_UNDO, NULL, 0 },
{ FN_REDO, NULL, 0 },
{ FN_PASTE, NULL, 0 },
{ FN_INSERT_CHARACTER, NULL, 0 }
};
-static void
-clear_undo_history(void)
-{
- display_clear_stack(&v->display);
-}
-
-
-/* Set display accuracy. */
-static void
-do_accuracy(int value)
-{
- v->accuracy = value;
- set_int_resource(R_ACCURACY, v->accuracy);
- display_set_accuracy(&v->display, value);
- ui_set_accuracy(v->accuracy);
- clear_undo_history();
-}
-
static void
do_paste(int cursor_start, int cursor_end, const char *text)
@@ -182,65 +159,6 @@ do_shift(int count)
}
-/* Change the current base setting. */
-static void
-do_base(int b)
-{
- int ret;
- MPNumber MP;
-
- if (!display_is_empty(&v->display))
- {
- ret = display_is_usable_number(&v->display, &MP);
- if (ret) {
- ui_set_statusbar(_("No sane value to convert"),
- "gtk-dialog-error");
- } else {
- mp_set_from_mp(&MP, display_get_answer(&v->display));
- display_set_answer(&v->display);
- clear_undo_history();
- }
- }
- v->base = b;
- set_int_resource(R_BASE, v->base);
- display_set_base(&v->display, v->base);
- ui_set_base(v->base);
-}
-
-
-/* Set word size for bitwise operations. */
-static void
-do_wordlen(int len)
-{
- v->wordlen = len;
- set_int_resource(R_WORDLEN, len);
-}
-
-
-static void
-do_numtype(DisplayFormat n) /* Set number display type. */
-{
- int ret;
- MPNumber MP;
-
- /* Convert display if it contains a number */
- if (!display_is_empty(&v->display))
- {
- ret = display_is_usable_number(&v->display, &MP);
- if (ret) {
- ui_set_statusbar(_("No sane value to convert"),
- "gtk-dialog-error");
- } else {
- mp_set_from_mp(&MP, display_get_answer(&v->display));
- display_set_answer(&v->display);
- clear_undo_history();
- }
- }
-
- display_set_format(&v->display, n);
-}
-
-
static void
do_sto(int index)
{
@@ -300,27 +218,6 @@ do_expression(int function, int arg, int cursor_start, int cursor_end)
do_shift(arg);
break;
- case FN_SET_ACCURACY:
- do_accuracy(arg);
- return;
-
- case FN_SET_BASE:
- do_base(arg);
- return;
-
- case FN_SET_TRIG_TYPE:
- v->ttype = arg;
- set_enumerated_resource(R_TRIG, Rtstr, arg);
- return;
-
- case FN_SET_NUMBERTYPE:
- do_numtype(arg);
- return;
-
- case FN_SET_WORDLEN:
- do_wordlen(arg);
- return;
-
case FN_PASTE:
do_paste(cursor_start, cursor_end, (const char *)arg); // FIXME: Probably not 64 bit safe
return;
diff --git a/src/functions.h b/src/functions.h
index 5cd4a4f..16e6a5f 100644
--- a/src/functions.h
+++ b/src/functions.h
@@ -35,11 +35,6 @@ enum
FN_SHIFT,
FN_STORE,
FN_RECALL,
- FN_SET_ACCURACY,
- FN_SET_BASE,
- FN_SET_NUMBERTYPE,
- FN_SET_TRIG_TYPE,
- FN_SET_WORDLEN,
FN_UNDO,
FN_REDO,
FN_PASTE,
diff --git a/src/get.h b/src/get.h
index 41975bf..06ce096 100644
--- a/src/get.h
+++ b/src/get.h
@@ -25,11 +25,10 @@
#include "calctool.h"
#define R_ACCURACY "accuracy"
-#define R_BASE "base"
-#define R_DISPLAY "display"
-#define R_MODE "mode"
+#define R_DISPLAY "result_format"
+#define R_MODE "button_layout"
#define R_REGS "showregisters"
-#define R_TRIG "trigtype"
+#define R_TRIG "angle_units"
#define R_ZEROES "showzeroes"
#define R_TSEP "showthousands"
#define R_WORDLEN "wordlen"
diff --git a/src/gtk.c b/src/gtk.c
index bb51f8e..b518cbc 100644
--- a/src/gtk.c
+++ b/src/gtk.c
@@ -333,54 +333,6 @@ position_popup(GtkWidget *base, GtkWidget *popup,
gtk_window_move(GTK_WINDOW(popup), popup_x, popup_y);
}
-void
-ui_set_accuracy(int accuracy)
-{
- //FIXME: Obsolete
-}
-
-
-void
-ui_set_trigonometric_mode(MPAngleUnit units)
-{
- //FIXME: Obsolete
-}
-
-
-void
-ui_set_numeric_mode(DisplayFormat mode)
-{
- //FIXME: Obsolete
-}
-
-
-void
-ui_set_show_thousands_separator(gboolean visible)
-{
- // FIXME: Obsolete
-}
-
-
-void
-ui_set_show_trailing_zeroes(gboolean visible)
-{
- // FIXME: Obsolete
-}
-
-
-void
-ui_set_base(int base)
-{
- //FIXME: Obsolete
-}
-
-
-void
-ui_set_wordlen(int len)
-{
- //FIXME: Obsolete
-}
-
void
ui_set_undo_enabled(gboolean undo, gboolean redo)
@@ -494,20 +446,8 @@ ui_set_mode(ModeType mode)
char *hostname, title[MAXLINE];
GtkWidget *menu;
- if (X.mode != mode) {
- X.mode = mode;
+ X.mode = mode;
- // FIXME: These should affect display but not the actual UI settings
- if (mode != PROGRAMMING)
- ui_set_base(10);
- if (mode != SCIENTIFIC) {
- ui_set_numeric_mode(FIX);
- do_button(FN_SET_ACCURACY, DEFAULT_ACCURACY);
- }
- if (mode == BASIC)
- ui_set_show_trailing_zeroes(FALSE);
- }
-
/* Save mode */
set_enumerated_resource(R_MODE, mode_names, (int)mode);
@@ -647,9 +587,6 @@ ui_set_error_state(gboolean error)
{
v->error = error;
- if (!v->error)
- ui_set_base(v->base);
-
gtk_widget_set_sensitive(GET_WIDGET("copy_menu"), !v->error);
gtk_widget_set_sensitive(GET_WIDGET("paste_menu"), !v->error);
gtk_widget_set_sensitive(GET_WIDGET("undo_menu"), !v->error);
@@ -673,8 +610,8 @@ ui_beep()
}
-void
-ui_set_registers_visible(gboolean visible)
+static void
+set_registers_visible(gboolean visible)
{
GtkWidget *menu;
@@ -836,37 +773,6 @@ ascii_dialog_activate_cb(GtkWidget *entry)
}
-G_MODULE_EXPORT
-void
-disp_cb(GtkWidget *widget)
-{
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
- do_button(FN_SET_NUMBERTYPE, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "numeric_mode")));
-}
-
-
-G_MODULE_EXPORT
-void
-base_cb(GtkWidget *widget)
-{
- int base;
-
- base = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "base"));
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
- do_button(FN_SET_BASE, base);
-}
-
-G_MODULE_EXPORT
-void
-word_cb(GtkWidget *widget)
-{
- int wordlen;
-
- wordlen = (int) g_object_get_data(G_OBJECT(widget), "wordlen_mode");
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
- do_button(FN_SET_WORDLEN, wordlen);
-}
-
static void
help_display(void)
{
@@ -1005,7 +911,7 @@ edit_register_names_response_cb(GtkDialog *dialog, gint id)
help_display();
else {
gtk_widget_hide(GTK_WIDGET(dialog));
- ui_set_registers_visible(FALSE);
+ set_registers_visible(FALSE);
}
}
@@ -1014,7 +920,7 @@ G_MODULE_EXPORT
gboolean
edit_register_names_delete_cb(GtkDialog *dialog)
{
- ui_set_registers_visible(FALSE);
+ set_registers_visible(FALSE);
return TRUE;
}
@@ -1183,15 +1089,6 @@ help_cb(GtkWidget *widget)
}
-G_MODULE_EXPORT
-void
-trig_cb(GtkWidget *widget)
-{
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
- do_button(FN_SET_TRIG_TYPE, (int)g_object_get_data(G_OBJECT(widget), "trig_mode"));
-}
-
-
static void
menu_pos_func(GtkMenu *menu, gint *x, gint *y,
gboolean *push_in, gpointer user_data)
@@ -1391,21 +1288,6 @@ main_window_key_press_cb(GtkWidget *widget, GdkEventKey *event)
case GDK_9:
do_text("â??");
return TRUE;
- 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;
}
}
@@ -1623,7 +1505,7 @@ G_MODULE_EXPORT
void
edit_register_names_cb(GtkMenuItem *item)
{
- ui_set_registers_visible(TRUE);
+ set_registers_visible(TRUE);
}
@@ -1659,7 +1541,7 @@ create_main_window()
char name[MAXLINE];
GtkWidget *widget;
PangoFontDescription *font_desc;
- GtkWidget *treeview;
+ GtkCellRenderer *renderer;
X.ui = gtk_builder_new();
load_ui(X.ui, UI_FILE);
@@ -1757,16 +1639,16 @@ create_main_window()
/* Make register tree model */
X.register_model = create_register_model();
- treeview = GET_WIDGET("edit_register_names_treeview");
- gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), X.register_model);
- gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)),
+ widget = GET_WIDGET("edit_register_names_treeview");
+ gtk_tree_view_set_model(GTK_TREE_VIEW(widget), X.register_model);
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)),
GTK_SELECTION_SINGLE);
/* Translators: Edit Register Names Dialog: Register number column title */
- add_cf_column(GTK_TREE_VIEW(treeview), _("No."), COLUMN_NUMBER, FALSE);
+ add_cf_column(GTK_TREE_VIEW(widget), _("No."), COLUMN_NUMBER, FALSE);
/* Translators: Edit Register Names Dialog: Register value column title */
- add_cf_column(GTK_TREE_VIEW(treeview), _("Value"), COLUMN_VALUE, TRUE);
+ add_cf_column(GTK_TREE_VIEW(widget), _("Value"), COLUMN_VALUE, TRUE);
/* Translators: Edit Register Names Dialog: Register description column title */
- add_cf_column(GTK_TREE_VIEW(treeview), _("Description"), COLUMN_DESCRIPTION, TRUE);
+ add_cf_column(GTK_TREE_VIEW(widget), _("Description"), COLUMN_DESCRIPTION, TRUE);
X.display_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(X.display_item));
gtk_widget_ensure_style(X.display_item);
@@ -1806,6 +1688,23 @@ create_main_window()
set_data(X.ui, "calc_finc_straight_line_depreciation_button", "finc_dialog", "sln_dialog");
set_data(X.ui, "calc_finc_sum_of_the_years_digits_depreciation_button", "finc_dialog", "syd_dialog");
set_data(X.ui, "calc_finc_term_button", "finc_dialog", "term_dialog");
+
+ /* Configuration dialog */
+
+ widget = GET_WIDGET("angle_unit_combobox");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);
+ gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0);
+
+ widget = GET_WIDGET("display_format_combobox");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);
+ gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0);
+
+ widget = GET_WIDGET("word_size_combobox");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);
+ gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0);
}
@@ -1834,6 +1733,42 @@ ui_init(int *argc, char ***argv)
}
+static void
+set_combo_box_from_config(const gchar *name, const gchar *key_name)
+{
+ GtkWidget *combo;
+ GtkTreeModel *model;
+ gchar *key_value;
+ GtkTreeIter iter;
+ gboolean valid;
+
+ combo = GET_WIDGET(name);
+ model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo));
+
+ key_value = get_resource(key_name);
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+ while (valid) {
+ GValue value = {0};
+
+ gtk_tree_model_get_value(model, &iter, 1, &value);
+ printf("'%s' '%s'\n", g_value_get_string(&value), key_value);
+ if (strcmp(g_value_get_string(&value), key_value) == 0) {
+ printf("%s->%s\n", name, key_value);
+ g_value_unset(&value);
+ break;
+ }
+ g_value_unset(&value);
+ valid = gtk_tree_model_iter_next(model, &iter);
+ }
+ if (!valid)
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo), &iter);
+
+ g_free(key_value);
+}
+
+
void
ui_load(void)
{
@@ -1841,21 +1776,13 @@ ui_load(void)
/* Create main gcalctool window. */
create_main_window();
-
- /* Load configuration */
- ui_set_show_thousands_separator(v->display.show_tsep);
- ui_set_show_trailing_zeroes(v->display.show_zeroes);
-
- ui_set_mode(X.mode);
- ui_set_numeric_mode(v->display.format);
- ui_set_base(v->base);
- ui_set_wordlen(v->wordlen);
- ui_set_accuracy(v->accuracy);
ui_set_undo_enabled(FALSE, FALSE);
+ set_combo_box_from_config("display_format_combobox", R_DISPLAY);
+
/* Show the memory register window? */
if (get_boolean_resource(R_REGS, &boolval))
- ui_set_registers_visible(boolval);
+ set_registers_visible(boolval);
}
@@ -1960,11 +1887,6 @@ add_buttons_to_size_group()
void
ui_start(void)
{
- ui_set_base(v->base);
- ui_set_wordlen(v->wordlen);
- ui_set_trigonometric_mode(v->ttype);
- ui_set_numeric_mode(v->display.format);
-
gtk_widget_show(X.main_window);
/* Add buttons to size group so they are all the same size.
diff --git a/src/ui.h b/src/ui.h
index f84e105..d66470c 100644
--- a/src/ui.h
+++ b/src/ui.h
@@ -44,16 +44,6 @@ void ui_set_display(char *, int);
void ui_set_bitfield(int enabled, guint64 bits);
gchar *ui_get_display(void);
-void ui_set_registers_visible(gboolean);
-void ui_set_accuracy(int);
-void ui_set_mode(ModeType);
-void ui_set_base(int);
-void ui_set_trigonometric_mode(MPAngleUnit unit);
-void ui_set_numeric_mode(DisplayFormat mode);
-void ui_set_show_thousands_separator(gboolean);
-void ui_set_show_trailing_zeroes(gboolean);
-void ui_set_wordlen(int);
-
void ui_set_error_state(gboolean);
void ui_set_statusbar(const gchar *, const gchar *);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]