Implement palette groups. Use them to not popdown frame when hover a palette.
This commit is contained in:
parent
9ec946d2d0
commit
7468faa840
@ -44,6 +44,8 @@ class ClipboardMenu(Palette):
|
|||||||
self._percent = percent
|
self._percent = percent
|
||||||
self._activity = activity
|
self._activity = activity
|
||||||
|
|
||||||
|
self.set_group_id('frame')
|
||||||
|
|
||||||
if percent < 100:
|
if percent < 100:
|
||||||
self._progress_bar = gtk.ProgressBar()
|
self._progress_bar = gtk.ProgressBar()
|
||||||
self._update_progress_bar()
|
self._update_progress_bar()
|
||||||
|
@ -18,6 +18,7 @@ import hippo
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from sugar.graphics import units
|
from sugar.graphics import units
|
||||||
|
from sugar.graphics.palette import Palette
|
||||||
from sugar.graphics.xocolor import XoColor
|
from sugar.graphics.xocolor import XoColor
|
||||||
from sugar.graphics.iconbutton import IconButton
|
from sugar.graphics.iconbutton import IconButton
|
||||||
from sugar import profile
|
from sugar import profile
|
||||||
@ -27,7 +28,11 @@ from model import bundleregistry
|
|||||||
class ActivityButton(IconButton):
|
class ActivityButton(IconButton):
|
||||||
def __init__(self, activity):
|
def __init__(self, activity):
|
||||||
IconButton.__init__(self, icon_name=activity.get_icon())
|
IconButton.__init__(self, icon_name=activity.get_icon())
|
||||||
self.set_tooltip(activity.get_name())
|
|
||||||
|
palette = Palette(activity.get_name())
|
||||||
|
palette.set_group_id('frame')
|
||||||
|
self.set_palette(palette)
|
||||||
|
|
||||||
self._activity = activity
|
self._activity = activity
|
||||||
|
|
||||||
def get_bundle_id(self):
|
def get_bundle_id(self):
|
||||||
|
@ -25,6 +25,7 @@ from model.BuddyModel import BuddyModel
|
|||||||
class FriendIcon(BuddyIcon):
|
class FriendIcon(BuddyIcon):
|
||||||
def __init__(self, shell, buddy):
|
def __init__(self, shell, buddy):
|
||||||
BuddyIcon.__init__(self, shell, buddy)
|
BuddyIcon.__init__(self, shell, buddy)
|
||||||
|
self.get_palette().set_group_id('frame')
|
||||||
|
|
||||||
def prelight(self, enter):
|
def prelight(self, enter):
|
||||||
if enter:
|
if enter:
|
||||||
|
@ -20,6 +20,11 @@ import gtk
|
|||||||
import gobject
|
import gobject
|
||||||
import hippo
|
import hippo
|
||||||
|
|
||||||
|
from sugar.graphics import animator
|
||||||
|
from sugar.graphics import units
|
||||||
|
from sugar.graphics import palettegroup
|
||||||
|
from sugar.clipboard import clipboardservice
|
||||||
|
|
||||||
from view.frame.eventarea import EventArea
|
from view.frame.eventarea import EventArea
|
||||||
from view.frame.ActivitiesBox import ActivitiesBox
|
from view.frame.ActivitiesBox import ActivitiesBox
|
||||||
from view.frame.ZoomBox import ZoomBox
|
from view.frame.ZoomBox import ZoomBox
|
||||||
@ -28,9 +33,6 @@ from view.frame.FriendsBox import FriendsBox
|
|||||||
from view.frame.framewindow import FrameWindow
|
from view.frame.framewindow import FrameWindow
|
||||||
from view.frame.clipboardpanelwindow import ClipboardPanelWindow
|
from view.frame.clipboardpanelwindow import ClipboardPanelWindow
|
||||||
from model.shellmodel import ShellModel
|
from model.shellmodel import ShellModel
|
||||||
from sugar.graphics import animator
|
|
||||||
from sugar.graphics import units
|
|
||||||
from sugar.clipboard import clipboardservice
|
|
||||||
|
|
||||||
MODE_NONE = 0
|
MODE_NONE = 0
|
||||||
MODE_MOUSE = 1
|
MODE_MOUSE = 1
|
||||||
@ -126,6 +128,9 @@ class Frame(object):
|
|||||||
self.mode = MODE_NONE
|
self.mode = MODE_NONE
|
||||||
self.visible = False
|
self.visible = False
|
||||||
|
|
||||||
|
self._palette_group = palettegroup.get_group('frame')
|
||||||
|
self._palette_group.connect('popdown', self._palette_group_popdown_cb)
|
||||||
|
|
||||||
self._left_panel = None
|
self._left_panel = None
|
||||||
self._right_panel = None
|
self._right_panel = None
|
||||||
self._top_panel = None
|
self._top_panel = None
|
||||||
@ -309,10 +314,14 @@ class Frame(object):
|
|||||||
if not self._hover:
|
if not self._hover:
|
||||||
return
|
return
|
||||||
|
|
||||||
if not self._is_hover():
|
if not self._is_hover() and not self._palette_group.is_up():
|
||||||
self._hover = False
|
self._hover = False
|
||||||
self._mouse_listener.mouse_leave()
|
self._mouse_listener.mouse_leave()
|
||||||
|
|
||||||
|
def _palette_group_popdown_cb(self, group):
|
||||||
|
if not self._is_hover():
|
||||||
|
self._mouse_listener.mouse_leave()
|
||||||
|
|
||||||
def _drag_motion_cb(self, window, context, x, y, time):
|
def _drag_motion_cb(self, window, context, x, y, time):
|
||||||
self._mouse_listener.mouse_enter()
|
self._mouse_listener.mouse_enter()
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ sugar_PYTHON = \
|
|||||||
radiotoolbutton.py \
|
radiotoolbutton.py \
|
||||||
roundbox.py \
|
roundbox.py \
|
||||||
palette.py \
|
palette.py \
|
||||||
|
palettegroup.py \
|
||||||
panel.py \
|
panel.py \
|
||||||
spreadlayout.py \
|
spreadlayout.py \
|
||||||
toggletoolbutton.py \
|
toggletoolbutton.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
|
# This library is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
@ -22,6 +22,7 @@ import gobject
|
|||||||
import time
|
import time
|
||||||
import hippo
|
import hippo
|
||||||
|
|
||||||
|
from sugar.graphics import palettegroup
|
||||||
from sugar.graphics import animator
|
from sugar.graphics import animator
|
||||||
from sugar.graphics import units
|
from sugar.graphics import units
|
||||||
from sugar import _sugarext
|
from sugar import _sugarext
|
||||||
@ -51,9 +52,18 @@ class Palette(gobject.GObject):
|
|||||||
0, gobject.PARAM_READWRITE)
|
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):
|
def __init__(self, label, accel_path=None):
|
||||||
gobject.GObject.__init__(self)
|
gobject.GObject.__init__(self)
|
||||||
|
|
||||||
|
self._group_id = None
|
||||||
|
self._up = False
|
||||||
self._position = self.AUTOMATIC
|
self._position = self.AUTOMATIC
|
||||||
self._palette_popup_sid = None
|
self._palette_popup_sid = None
|
||||||
|
|
||||||
@ -88,6 +98,9 @@ class Palette(gobject.GObject):
|
|||||||
self._menu.connect('button-press-event',
|
self._menu.connect('button-press-event',
|
||||||
self._button_press_event_cb)
|
self._button_press_event_cb)
|
||||||
|
|
||||||
|
def is_up(self):
|
||||||
|
return self._up
|
||||||
|
|
||||||
def set_primary_text(self, label, accel_path=None):
|
def set_primary_text(self, label, accel_path=None):
|
||||||
self._primary.set_label(label, accel_path)
|
self._primary.set_label(label, accel_path)
|
||||||
|
|
||||||
@ -119,7 +132,15 @@ class Palette(gobject.GObject):
|
|||||||
def append_button(self, button):
|
def append_button(self, button):
|
||||||
self._button_bar.append_button(button)
|
self._button_bar.append_button(button)
|
||||||
self._button_bar.show()
|
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):
|
def do_set_property(self, pspec, value):
|
||||||
if pspec.name == 'invoker':
|
if pspec.name == 'invoker':
|
||||||
self._invoker = value
|
self._invoker = value
|
||||||
@ -206,7 +227,10 @@ class Palette(gobject.GObject):
|
|||||||
self._palette_popup_sid = _palette_observer.connect('popup',
|
self._palette_popup_sid = _palette_observer.connect('popup',
|
||||||
self._palette_observer_popup_cb)
|
self._palette_observer_popup_cb)
|
||||||
self._menu.popup(x, y)
|
self._menu.popup(x, y)
|
||||||
|
|
||||||
|
self._up = True
|
||||||
_palette_observer.emit('popup', self)
|
_palette_observer.emit('popup', self)
|
||||||
|
self.emit('popup')
|
||||||
|
|
||||||
def _hide(self):
|
def _hide(self):
|
||||||
if not self._palette_popup_sid is None:
|
if not self._palette_popup_sid is None:
|
||||||
@ -214,6 +238,9 @@ class Palette(gobject.GObject):
|
|||||||
self._palette_popup_sid = None
|
self._palette_popup_sid = None
|
||||||
self._menu.popdown()
|
self._menu.popdown()
|
||||||
|
|
||||||
|
self._up = False
|
||||||
|
self.emit('popdown')
|
||||||
|
|
||||||
def popup(self):
|
def popup(self):
|
||||||
self._popdown_anim.stop()
|
self._popdown_anim.stop()
|
||||||
self._popup_anim.start()
|
self._popup_anim.start()
|
||||||
|
Loading…
Reference in New Issue
Block a user