Implement "scrubbing" of palettes based on groups.

This commit is contained in:
Marco Pesenti Gritti 2007-08-20 20:01:27 +02:00
parent 1c06a44a7d
commit 3b8f25b7b9
2 changed files with 24 additions and 5 deletions

View File

@ -194,6 +194,7 @@ class Palette(gtk.Window):
group = palettegroup.get_group(self._group_id) group = palettegroup.get_group(self._group_id)
group.remove(self) group.remove(self)
if group_id: if group_id:
self._group_id = group_id
group = palettegroup.get_group(group_id) group = palettegroup.get_group(group_id)
group.add(self) group.add(self)
@ -412,16 +413,21 @@ class Palette(gtk.Window):
self._up = False self._up = False
self.emit('popdown') self.emit('popdown')
def popup(self): def popup(self, immediate=False):
self._popdown_anim.stop() self._popdown_anim.stop()
if not immediate:
self._popup_anim.start() self._popup_anim.start()
else:
self._show()
self._secondary_anim.start() self._secondary_anim.start()
def popdown(self, inmediate=False): def popdown(self, immediate=False):
self._secondary_anim.stop() self._secondary_anim.stop()
self._popup_anim.stop() self._popup_anim.stop()
if not inmediate: if not immediate:
self._popdown_anim.start() self._popdown_anim.start()
else: else:
self._hide() self._hide()
@ -440,7 +446,15 @@ class Palette(gtk.Window):
self._state = state self._state = state
def _invoker_mouse_enter_cb(self, invoker): def _invoker_mouse_enter_cb(self, invoker):
self.popup() immediate = False
if self._group_id:
group = palettegroup.get_group(self._group_id)
if group and group.is_up():
immediate = True
group.popdown()
print immediate
self.popup(immediate=immediate)
def _invoker_mouse_leave_cb(self, invoker): def _invoker_mouse_leave_cb(self, invoker):
self.popdown() self.popdown()

View File

@ -58,6 +58,11 @@ class Group(gobject.GObject):
self._palettes.remove(palette) self._palettes.remove(palette)
def popdown(self):
for palette in self._palettes:
if palette.is_up():
palette.popdown(immediate=True)
def _palette_popup_cb(self, palette): def _palette_popup_cb(self, palette):
if not self._up: if not self._up:
self.emit('popup') self.emit('popup')