[gcalctool] Prep for redisplaying after preferences changes
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcalctool] Prep for redisplaying after preferences changes
- Date: Wed, 14 Apr 2010 15:24:28 +0000 (UTC)
commit 122d85ebb17266e3367eec2689fce148e17cb9d7
Author: Robert Ancell <robert ancell gmail com>
Date: Wed Apr 14 22:59:40 2010 +0800
Prep for redisplaying after preferences changes
src/math-equation.c | 59 +++++++++++++++++++++++++++-----------------------
1 files changed, 32 insertions(+), 27 deletions(-)
---
diff --git a/src/math-equation.c b/src/math-equation.c
index 8c62ab3..a363695 100644
--- a/src/math-equation.c
+++ b/src/math-equation.c
@@ -104,21 +104,38 @@ math_equation_new()
}
-//FIXME
static void
-display_refresh(MathEquation *equation)
+get_ans_offsets(MathEquation *equation, gint *start, gint *end)
{
GtkTextIter iter;
+
+ if (!equation->priv->ans_start) {
+ *start = *end = -1;
+ return;
+ }
- /*FIXME
- equation->priv->cursor = display_get_cursor(equation);
- display_make_text(equation, equation->priv->localized, MAX_DIGITS, &equation->priv->cursor);
- gtk_text_buffer_set_text(GTK_TEXT_BUFFER(equation), equation->priv->localized, -1);
- if (equation->priv->cursor < 0)
- gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(equation), &iter);
- else
- gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(equation), &iter, equation->priv->cursor);
- gtk_text_buffer_place_cursor(GTK_TEXT_BUFFER(equation), &iter);*/
+ gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &iter, equation->priv->ans_start);
+ *start = gtk_text_iter_get_offset(&iter);
+ gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &iter, equation->priv->ans_end);
+ *end = gtk_text_iter_get_offset(&iter);
+}
+
+
+static void
+reformat_display(MathEquation *equation)
+{
+ gchar *text;
+ gint ans_start, ans_end;
+
+ text = math_equation_get_display(equation);
+ get_ans_offsets(equation, &ans_start, &ans_end);
+
+ // FIXME: Need to know old base to do base changes
+ // FIXME: Need to keep cursor location correct
+
+ /* Find numbers in display, format and then replace if changed */
+
+ g_free(text);
}
@@ -235,7 +252,7 @@ math_equation_set_accuracy(MathEquation *equation, int accuracy)
if (equation->priv->accuracy == accuracy)
return;
equation->priv->accuracy = accuracy;
- display_refresh(equation);
+ reformat_display(equation);
g_object_notify(G_OBJECT(equation), "accuracy");
}
@@ -253,7 +270,7 @@ math_equation_set_show_thousands_separators(MathEquation *equation, gboolean vis
if (equation->priv->show_tsep && visible || !equation->priv->show_tsep && !visible)
return;
equation->priv->show_tsep = visible;
- display_refresh(equation);
+ reformat_display(equation);
g_object_notify(G_OBJECT(equation), "show-thousands-separators");
}
@@ -271,7 +288,7 @@ math_equation_set_show_trailing_zeroes(MathEquation *equation, gboolean visible)
if (equation->priv->show_zeroes && visible || !equation->priv->show_zeroes && !visible)
return;
equation->priv->show_zeroes = visible;
- display_refresh(equation);
+ reformat_display(equation);
g_object_notify(G_OBJECT(equation), "show-trailing-zeroes");
}
@@ -289,7 +306,7 @@ math_equation_set_number_format(MathEquation *equation, DisplayFormat format)
if (equation->priv->format == format)
return;
equation->priv->format = format;
- display_refresh(equation);
+ reformat_display(equation);
g_object_notify(G_OBJECT(equation), "number-format");
}
@@ -382,18 +399,6 @@ math_equation_get_display(MathEquation *equation)
}
-static void
-get_ans_offsets(MathEquation *equation, gint *start, gint *end)
-{
- GtkTextIter iter;
-
- gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &iter, equation->priv->ans_start);
- *start = gtk_text_iter_get_offset(&iter);
- gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &iter, equation->priv->ans_end);
- *end = gtk_text_iter_get_offset(&iter);
-}
-
-
gchar *
math_equation_get_equation(MathEquation *equation)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]