Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-07-06 12:36:59 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-07-06 12:36:59 (GMT)
commit7468faa840203399542c1b5085a8c744df4eb14f (patch)
tree8fc05a241ab183f848d56261e4810c44c882eccc /sugar
parent9ec946d2d0f9b689e18076c5eb41b37344d56b2d (diff)
Implement palette groups. Use them to not popdown frame when hover a palette.
Diffstat (limited to 'sugar')
-rw-r--r--sugar/graphics/Makefile.am1
-rw-r--r--sugar/graphics/palette.py31
2 files changed, 30 insertions, 2 deletions
diff --git a/sugar/graphics/Makefile.am b/sugar/graphics/Makefile.am
index d906569..b68821b 100644
--- a/sugar/graphics/Makefile.am
+++ b/sugar/graphics/Makefile.am
@@ -16,6 +16,7 @@ sugar_PYTHON = \
radiotoolbutton.py \
roundbox.py \
palette.py \
+ palettegroup.py \
panel.py \
spreadlayout.py \
toggletoolbutton.py \
diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py
index 3a816d5..a22df74 100644
--- a/sugar/graphics/palette.py
+++ b/sugar/graphics/palette.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, Eduardo Silva (edsiper@gmail.com)
+# Copyright (C) 2007, Eduardo Silva <edsiper@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -22,6 +22,7 @@ import gobject
import time
import hippo
+from sugar.graphics import palettegroup
from sugar.graphics import animator
from sugar.graphics import units
from sugar import _sugarext
@@ -51,9 +52,18 @@ class Palette(gobject.GObject):
0, gobject.PARAM_READWRITE)
}
+ __gsignals__ = {
+ 'popup' : (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE, ([])),
+ 'popdown' : (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE, ([]))
+ }
+
def __init__(self, label, accel_path=None):
gobject.GObject.__init__(self)
+ self._group_id = None
+ self._up = False
self._position = self.AUTOMATIC
self._palette_popup_sid = None
@@ -88,6 +98,9 @@ class Palette(gobject.GObject):
self._menu.connect('button-press-event',
self._button_press_event_cb)
+ def is_up(self):
+ return self._up
+
def set_primary_text(self, label, accel_path=None):
self._primary.set_label(label, accel_path)
@@ -119,7 +132,15 @@ class Palette(gobject.GObject):
def append_button(self, button):
self._button_bar.append_button(button)
self._button_bar.show()
-
+
+ def set_group_id(self, group_id):
+ if self._group_id:
+ group = palettegroup.get_group(self._group_id)
+ group.remove(self)
+ if group_id:
+ group = palettegroup.get_group(group_id)
+ group.add(self)
+
def do_set_property(self, pspec, value):
if pspec.name == 'invoker':
self._invoker = value
@@ -206,7 +227,10 @@ class Palette(gobject.GObject):
self._palette_popup_sid = _palette_observer.connect('popup',
self._palette_observer_popup_cb)
self._menu.popup(x, y)
+
+ self._up = True
_palette_observer.emit('popup', self)
+ self.emit('popup')
def _hide(self):
if not self._palette_popup_sid is None:
@@ -214,6 +238,9 @@ class Palette(gobject.GObject):
self._palette_popup_sid = None
self._menu.popdown()
+ self._up = False
+ self.emit('popdown')
+
def popup(self):
self._popdown_anim.stop()
self._popup_anim.start()