476
475
reset_display(void)
478
struct exprm_state *e;
483
MPstr_to_num("0", DEC, v->MPdisp_val);
484
display_set_number(v->MPdisp_val);
485
clear_undo_history();
490
MPstr_to_num("0", DEC, e->ans);
491
display_clear(FALSE);
492
display_set_number(e->ans);
501
ui_set_syntax_mode(enum syntax mode)
510
ui_set_statusbar(_("Activated no operator precedence mode"), "");
513
_("Activated expression mode with operator precedence"), "");
516
/* Save the syntax mode */
517
set_resource(R_SYNTAX, Rsstr[v->syntax]);
520
ui_set_mode(v->modetype);
523
if (v->syntax == EXPRS) {
524
widget = GET_WIDGET("arithmetic_precedence_menu");
525
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), TRUE);
527
widget = GET_WIDGET("ltr_precedence_menu");
528
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), TRUE);
479
ans = display_get_answer(&v->display);
480
MPstr_to_num("0", DEC, ans);
481
display_clear(&v->display, FALSE);
482
display_set_number(&v->display, ans);
884
837
set_bit_panel(void)
886
int bit_str_len, i, MP1[MP_SIZE], MP2[MP_SIZE];
888
841
char bit_str[MAXLINE], label[MAXLINE];
892
MPstr_to_num(v->display, v->base, MP1);
894
if (mp_is_equal(MP1, MP2)) {
895
int toclear = (v->current == KEY_CLEAR_ENTRY)
898
make_fixed(bit_str, MAXLINE, MP1, BIN, MAXLINE, toclear);
899
bit_str_len = strlen(bit_str);
900
if (bit_str_len <= MAXBITS) {
901
gtk_widget_set_sensitive(X->bit_panel, TRUE);
903
for (i = 0; i < MAXBITS; i++) {
904
if (i < bit_str_len) {
905
SNPRINTF(label, MAXLINE, " %c", bit_str[bit_str_len-i-1]);
907
SNPRINTF(label, MAXLINE, " 0");
909
gtk_label_set_text(GTK_LABEL(X->bits[MAXBITS - i - 1]), label);
915
gtk_widget_set_sensitive(X->bit_panel, FALSE);
919
if (display_is_usable_number(MP) || !is_integer(MP)) {
920
gtk_widget_set_sensitive(X->bit_panel, FALSE);
923
make_fixed(bit_str, MAXLINE, MP, BIN, MAXLINE, FALSE);
924
bit_str_len = strlen(bit_str);
925
if (bit_str_len <= MAXBITS) {
926
gtk_widget_set_sensitive(X->bit_panel, TRUE);
928
for (i = 0; i < MAXBITS; i++) {
929
if (i < bit_str_len) {
930
SNPRINTF(label, MAXLINE, " %c", bit_str[bit_str_len-i-1]);
932
SNPRINTF(label, MAXLINE, " 0");
934
gtk_label_set_text(GTK_LABEL(X->bits[MAXBITS - i - 1]), label);
843
if (display_is_usable_number(&v->display, MP) || !is_integer(MP)) {
844
gtk_widget_set_sensitive(X->bit_panel, FALSE);
847
make_fixed(bit_str, MAXLINE, MP, BIN, MAXLINE, FALSE);
848
bit_str_len = strlen(bit_str);
849
if (bit_str_len <= MAXBITS) {
850
gtk_widget_set_sensitive(X->bit_panel, TRUE);
852
for (i = 0; i < MAXBITS; i++) {
853
if (i < bit_str_len) {
854
SNPRINTF(label, MAXLINE, " %c", bit_str[bit_str_len-i-1]);
937
gtk_widget_set_sensitive(X->bit_panel, FALSE);
856
SNPRINTF(label, MAXLINE, " 0");
858
gtk_label_set_text(GTK_LABEL(X->bits[MAXBITS - i - 1]), label);
861
gtk_widget_set_sensitive(X->bit_panel, FALSE);
975
894
if (str == NULL || str[0] == '\0') {
978
if (v->syntax == EXPRS || (v->syntax == NPA && v->ltr.noparens == 0)) {
979
localize_expression(localized, str, MAX_LOCALIZED, &cursor);
897
localize_expression(localized, str, MAX_LOCALIZED, &cursor);
984
901
gtk_text_buffer_set_text(X->display_buffer, str, -1);
1324
1237
static void do_button(int function, int arg)
1326
switch (v->syntax) {
1328
v->current = buttons[function].id;
1331
/* Must press a valid key first. */
1332
if (v->current != KEY_CLEAR) {
1335
ui_set_error_state(FALSE);
1338
if (v->ltr.noparens > 0) {
1343
buttons[function].func(arg);
1345
if (v->ltr.new_input && v->dtype == FIX) {
1346
display_set_string(v->display);
1351
do_expression(function, arg, get_cursor());
1239
do_expression(function, arg, get_cursor());
1741
1624
unsigned long long lval;
1742
1625
int n, MP1[MP_SIZE], index;
1743
struct exprm_state *e = get_state();
1745
1627
index = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(event_box),
1747
1629
n = MAXBITS - index - 1;
1749
switch (v->syntax) {
1751
MPstr_to_num(v->display, v->base, MP1);
1754
int ret = display_is_usable_number(e->ans);
1756
mp_set_from_mp(e->ans, MP1);
1631
int ret = display_is_usable_number(&v->display, display_get_answer(&v->display));
1633
mp_set_from_mp(display_get_answer(&v->display), MP1);
1763
1635
number = mp_cast_to_double(MP1);
1764
1636
lval = (long long) number;
1773
1645
number = (double) lval;
1775
switch (v->syntax) {
1777
mp_set_from_double(number, v->MPdisp_val);
1778
display_set_number(v->MPdisp_val);
1781
mp_set_from_double(number, e->ans);
1782
display_set_string("Ans");
1783
display_refresh(-1);
1647
mp_set_from_double(number, display_get_answer(&v->display));
1648
display_set_string(&v->display, "Ans");
1649
display_refresh(&v->display, -1);
2204
2064
*dstp++ = '\0';
2206
switch (v->syntax) {
2208
ret = lr_parse((char *) text, v->MPdisp_val);
2210
display_set_number(v->MPdisp_val);
2212
ui_set_statusbar(_("Clipboard contained malformed calculation"),
2213
"gtk-dialog-error");
2218
display_insert((char *) text, get_cursor()); // FIXME: Move out of gtk.c
2219
display_refresh(-1);
2066
display_insert(&v->display, (char *) text, get_cursor()); // FIXME: Move out of gtk.c
2067
display_refresh(&v->display, -1);