* Reduced popup delay
authorepage <eopage@byu.net>
Wed, 25 Feb 2009 01:20:20 +0000 (01:20 +0000)
committerepage <eopage@byu.net>
Wed, 25 Feb 2009 01:20:20 +0000 (01:20 +0000)
* 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
src/operation.py

index 9334d08..6ddfe84 100755 (executable)
@@ -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)
index 413f4d7..4465f62 100644 (file)
@@ -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