From 4248825dc63eaf61c79f18a59534462f29317d79 Mon Sep 17 00:00:00 2001 From: epage Date: Wed, 25 Feb 2009 01:20:20 +0000 Subject: [PATCH] * Reduced popup delay * Reduced unneeded object creation * Fixed a base conversion issue from when I added simplification caching git-svn-id: file:///svnroot/ejpi/trunk@22 df6cc7de-23d0-4ae0-bb86-c17aa67b2a9d --- src/libraries/gtkpie.py | 2 +- src/operation.py | 39 ++++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/libraries/gtkpie.py b/src/libraries/gtkpie.py index 9334d08..6ddfe84 100755 --- a/src/libraries/gtkpie.py +++ b/src/libraries/gtkpie.py @@ -710,7 +710,7 @@ class PiePopup(gtk.DrawingArea): self.__clickPosition = event.get_root_coords() self.__generate_draw_event() - self.__popupTimeDelay = gobject.timeout_add(200, self._on_delayed_popup) + self.__popupTimeDelay = gobject.timeout_add(150, self._on_delayed_popup) def _on_delayed_popup(self): self.__popup(self.__clickPosition) diff --git a/src/operation.py b/src/operation.py index 413f4d7..4465f62 100644 --- a/src/operation.py +++ b/src/operation.py @@ -157,11 +157,16 @@ class render_number(object): class Operation(object): def __init__(self): - self.base = 10 + self._base = 10 def __str__(self): raise NotImplementedError + @property + def base(self): + base = self._base + return base + def get_children(self): return [] @@ -192,7 +197,7 @@ class Value(Operation): def __init__(self, value, base): super(Value, self).__init__() self.value = value - self.base = base + self._base = base def serialize(self, renderer): for item in super(Value, self).serialize(renderer): @@ -267,11 +272,11 @@ class Function(Operation): def __init__(self, *args, **kwd): super(Function, self).__init__() - self.base = None + self._base = None self._args = args self._kwd = kwd - self.__simple = self.__simplify() - self.__str = self.pretty_print(args, kwd) + self._simple = self._simplify() + self._str = self.pretty_print(args, kwd) def serialize(self, renderer): for item in super(Function, self).serialize(renderer): @@ -284,17 +289,26 @@ class Function(Operation): for arg in self._args ) + @property + def base(self): + base = self._base + if base is None: + bases = [arg.base for arg in self._args] + base = bases[0] + assert base is not None + return base + def __str__(self): - return self.__str + return self._str def simplify(self): - return self.__simple + return self._simple def evaluate(self): selfArgs = [arg.evaluate() for arg in self._args] return Value(self._op(*selfArgs)) - def __simplify(self): + def _simplify(self): selfArgs = [arg.simplify() for arg in self._args] selfKwd = dict( (name, arg.simplify()) @@ -304,14 +318,11 @@ class Function(Operation): try: args = [arg.evaluate() for arg in selfArgs] base = self.base - if base is None: - bases = [arg.base for arg in selfArgs] - base = bases[0] result = self._op(*args) node = Value(result, base) except KeyError: - node = type(self)(*selfArgs, **selfKwd) + node = self return node @@ -371,7 +382,9 @@ def change_base(base, rep): def __init__(self, *args, **kwd): super(GenFunc, self).__init__(*args, **kwd) - self.base = base + self._base = base + self._simple = self._simplify() + self._str = self.pretty_print(args, kwd) _op = lambda self, n: n _rep = Function.REP_FUNCTION -- 1.7.9.5