Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/graphics
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-07-24 13:53:35 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-07-24 13:53:35 (GMT)
commit452f01d2db126bee28106cc9a7aa73f9d8d0da61 (patch)
treef9bbe2cbef57187346b8d849a79ac297f156e028 /sugar/graphics
parent3e40075a80c2b04cd1693b48e8b1ff09699bf0a3 (diff)
Refactor to move primary/secondary state handling inside Palette.
Diffstat (limited to 'sugar/graphics')
-rw-r--r--sugar/graphics/palette.py52
1 files changed, 33 insertions, 19 deletions
diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py
index 20757cb..b405901 100644
--- a/sugar/graphics/palette.py
+++ b/sugar/graphics/palette.py
@@ -46,6 +46,9 @@ class Palette(gobject.GObject):
RIGHT = 5
TOP = 6
+ _PRIMARY = 0
+ _SECONDARY = 1
+
__gtype_name__ = 'SugarPalette'
__gproperties__ = {
@@ -65,6 +68,7 @@ class Palette(gobject.GObject):
def __init__(self, label, accel_path=None):
gobject.GObject.__init__(self)
+ self._state = self._SECONDARY
self._invoker = None
self._group_id = None
self._up = False
@@ -295,6 +299,33 @@ class Palette(gobject.GObject):
else:
self._hide()
+ def _set_state(self, state):
+ if self._state == state:
+ return
+
+ if state == self._PRIMARY:
+ self._primary.show()
+ for menu_item in self._menu.get_children()[1:]:
+ menu_item.hide()
+ elif state == self._SECONDARY:
+ middle_menu_items = self._menu.get_children()
+ middle_menu_items = middle_menu_items[2:len(middle_menu_items) - 2]
+ if middle_menu_items or \
+ not self._content.is_empty() or \
+ not self._button_bar.is_empty():
+ self._separator.show()
+
+ for menu_item in middle_menu_items:
+ menu_item.show()
+
+ if not self._content.is_empty():
+ self._content.show()
+
+ if not self._button_bar.is_empty():
+ self._button_bar.show()
+
+ self._state = state
+
def _invoker_mouse_enter_cb(self, invoker):
self.popup()
@@ -371,9 +402,7 @@ class _PopupAnimation(animator.Animation):
def next_frame(self, current):
if current == 1.0:
- self._palette._primary.show()
- for menu_item in self._palette._menu.get_children()[1:]:
- menu_item.hide()
+ self._palette._set_state(Palette._PRIMARY)
self._palette._show()
class _SecondaryAnimation(animator.Animation):
@@ -383,22 +412,7 @@ class _SecondaryAnimation(animator.Animation):
def next_frame(self, current):
if current == 1.0:
- middle_menu_items = self._palette._menu.get_children()
- middle_menu_items = middle_menu_items[2:len(middle_menu_items) - 2]
- if middle_menu_items or \
- not self._palette._content.is_empty() or \
- not self._palette._button_bar.is_empty():
- self._palette._separator.show()
-
- for menu_item in middle_menu_items:
- menu_item.show()
-
- if not self._palette._content.is_empty():
- self._palette._content.show()
-
- if not self._palette._button_bar.is_empty():
- self._palette._button_bar.show()
-
+ self._palette._set_state(Palette._SECONDARY)
self._palette._show()
class _PopdownAnimation(animator.Animation):