Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/calculate.py
diff options
context:
space:
mode:
authorReinier Heeres <reinier@heeres.eu>2007-07-15 17:20:33 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-07-15 17:20:33 (GMT)
commitc3aeeab1593f4a72c33639add8da40fe8f7c5c56 (patch)
treef707f55ced176d9ddba00528cfbea1a40b6f0fb6 /calculate.py
parentc736b57378384a400250c28dbcdec83d75ae7a66 (diff)
Fixed toggle buttons (variable/history view working)
Diffstat (limited to 'calculate.py')
-rw-r--r--calculate.py61
1 files changed, 39 insertions, 22 deletions
diff --git a/calculate.py b/calculate.py
index 4944274..0eb42b1 100644
--- a/calculate.py
+++ b/calculate.py
@@ -79,8 +79,8 @@ class Calculate(activity.Activity):
self.history = self.layout.history
self.last_eq = self.layout.last_eq.get_buffer()
- self.old_eqs = [] # List of Equation objects
- self.old_changed = False
+ self.old_eqs = [] # List of Equation objects
+ self.old_changed = False # This variable should be thrown out somehow
self.show_vars = False
self.reset()
@@ -94,6 +94,7 @@ class Calculate(activity.Activity):
_logger.debug('Cleaning up...')
def equation_pressed_cb(self, n):
+ """Callback for when an equation box is clicked"""
if len(self.old_eqs) <= n:
return True
if len(self.old_eqs[n].label) > 0:
@@ -151,7 +152,6 @@ class Calculate(activity.Activity):
s = self.text_entry.get_text()
label = self.label_entry.get_text()
_logger.debug('process(): parsing \'%s\', label: \'%s\'', s, label)
- self.refresh_bar()
res = self.parser.parse(s)
eqn = Equation(label, s, res, self.color)
self.set_last_equation(eqn)
@@ -159,23 +159,37 @@ class Calculate(activity.Activity):
if res is not None:
self.old_eqs.insert(0, eqn)
self.old_changed = True
+ self.refresh_bar()
return res is not None
def refresh_bar(self):
- if not self.layout.varbut.selected:
+ _logger.debug('Refreshing right bar...')
+ if self.layout.varbut.selected == 0:
self.refresh_history()
else:
self.refresh_vars()
+ def format_var_buf(self, buf):
+ iter_start = buf.get_start_iter()
+ iter_end = buf.get_end_iter()
+ buf.apply_tag(buf.create_tag(font=self.FONT_BIG),
+ iter_start, iter_end)
+ buf.apply_tag(buf.create_tag(foreground=self.color.get_fill_color()),
+ iter_start, iter_end)
+
def refresh_vars(self):
list = []
for name, value in self.parser.get_vars():
+ if name == "Ans":
+ continue
w = gtk.TextView()
b = w.get_buffer()
b.set_text(name + ":\t" + value)
+ self.format_var_buf(b)
list.append(w)
self.layout.show_history(list)
+ self.old_changed = True
def format_history_buf(self, buf):
iter_start = buf.get_start_iter()
@@ -192,34 +206,37 @@ class Calculate(activity.Activity):
if not self.old_changed:
return
list = []
-# This logic should be fixed; it's a little strange that we setup everything before updating self.old_eqs
- i = 0
- for e in self.old_eqs:
- text = ""
- if len(e.label) > 0:
- text += str(e.label) + ": "
- r = self.ml.format_number(e.result)
- text += str(e.equation) + "\n=" + r
- w = gtk.TextView()
- w.connect('button-press-event', lambda w, e, j: self.equation_pressed_cb(j), i+1)
- b = w.get_buffer()
-## b.modify_bg(gtk.STATE_ACTIVE | gtk.STATE_NORMAL,
-## gtk.gdk.color_parse(self.color.get_fill_color()))
- b.set_text(text)
- self.format_history_buf(b)
- list.append(w)
- i += 1
+
+ if len(self.old_eqs) > 1:
+ i = 1
+ for e in self.old_eqs[1:]:
+ text = ""
+ if len(e.label) > 0:
+ text += str(e.label) + ": "
+ r = self.ml.format_number(e.result)
+ text += str(e.equation) + "\n=" + r
+ w = gtk.TextView()
+ w.connect('button-press-event', lambda w, e, j: self.equation_pressed_cb(j), i)
+ b = w.get_buffer()
+## b.modify_bg(gtk.STATE_ACTIVE | gtk.STATE_NORMAL,
+## gtk.gdk.color_parse(self.color.get_fill_color()))
+ b.set_text(text)
+ self.format_history_buf(b)
+ list.append(w)
+ i += 1
+
self.layout.show_history(list)
self.old_changed = False
def clear(self):
_logger.debug('Clearing...')
self.text_entry.set_text('')
+ self.text_entry.grab_focus()
return True
def reset(self):
_logger.debug('Resetting...')
- self.text_entry.grab_focus()
+ self.clear()
return True
##########################################