[Sugar-devel] [PATCH sugar] Making the buddy icons in the Views reveal the Palette on left click or touch
Simon Schampijer
simon at schampijer.de
Wed Aug 15 13:01:36 EDT 2012
The owner icon (in the Home, Group and Neighborhood View) has
no primary action. On left click we agreed to always reveal the
Palette. This will give a better experience for users with a
mouse/trackpad and for those with a touchscreen.
This patch also changes the behavior of the buddy icons that
represent other learners which appear in the Neighborhood
and Group View. Here as well we do not have currently a primary
action. Left click does currently not do anything. We change this
to revealing the Palette on left click now as well.
Signed-off-by: Simon Schampijer <simon at laptop.org>
---
src/jarabe/desktop/groupbox.py | 11 +++--------
src/jarabe/desktop/meshbox.py | 11 ++---------
src/jarabe/view/buddyicon.py | 6 ++++++
3 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/src/jarabe/desktop/groupbox.py b/src/jarabe/desktop/groupbox.py
index 4fcd6c2..8beec90 100644
--- a/src/jarabe/desktop/groupbox.py
+++ b/src/jarabe/desktop/groupbox.py
@@ -21,6 +21,7 @@ import gconf
from sugar.graphics import style
from sugar.graphics.xocolor import XoColor
+from jarabe.view.buddyicon import BuddyIcon
from jarabe.view.buddymenu import BuddyMenu
from jarabe.view.eventicon import EventIcon
from jarabe.model.buddy import get_owner_instance
@@ -38,15 +39,9 @@ class GroupBox(ViewContainer):
layout = SpreadLayout()
- client = gconf.client_get_default()
- color = XoColor(client.get_string('/desktop/sugar/user/color'))
- owner_icon = EventIcon(icon_name='computer-xo', cache=True,
- xo_color=color)
# Round off icon size to an even number to ensure that the icon
- # is placed evenly in the grid
- owner_icon.props.pixel_size = style.LARGE_ICON_SIZE & ~1
- owner_icon.set_palette(BuddyMenu(get_owner_instance()))
-
+ owner_icon = BuddyIcon(get_owner_instance(),
+ style.LARGE_ICON_SIZE & ~1)
ViewContainer.__init__(self, layout, owner_icon)
self._friends = {}
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index 1de3779..8ac5047 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -410,18 +410,11 @@ class MeshContainer(ViewContainer):
__gtype_name__ = 'SugarMeshContainer'
def __init__(self):
-
layout = SpreadLayout()
- client = gconf.client_get_default()
- color = XoColor(client.get_string('/desktop/sugar/user/color'))
- owner_icon = EventIcon(icon_name='computer-xo', cache=True,
- xo_color=color)
# Round off icon size to an even number to ensure that the icon
- # is placed evenly in the grid
- owner_icon.props.pixel_size = style.STANDARD_ICON_SIZE & ~1
- owner_icon.set_palette(BuddyMenu(get_owner_instance()))
-
+ owner_icon = BuddyIcon(get_owner_instance(),
+ style.STANDARD_ICON_SIZE & ~1)
ViewContainer.__init__(self, layout, owner_icon)
diff --git a/src/jarabe/view/buddyicon.py b/src/jarabe/view/buddyicon.py
index 663bd92..e84e881 100644
--- a/src/jarabe/view/buddyicon.py
+++ b/src/jarabe/view/buddyicon.py
@@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from sugar.graphics import style
+from sugar.graphics.palette import Palette
from jarabe.view.buddymenu import BuddyMenu
from jarabe.view.eventicon import EventIcon
@@ -33,6 +34,8 @@ class BuddyIcon(EventIcon):
self._buddy.connect('notify::present', self.__buddy_notify_present_cb)
self._buddy.connect('notify::color', self.__buddy_notify_color_cb)
+ self.connect('button-release-event', self.__button_release_event_cb)
+
self.palette_invoker.cache_palette = False
self._update_color()
@@ -40,6 +43,9 @@ class BuddyIcon(EventIcon):
def create_palette(self):
return BuddyMenu(self._buddy)
+ def __button_release_event_cb(self, icon, event):
+ self.props.palette.popup(immediate=True, state=Palette.SECONDARY)
+
def __buddy_notify_present_cb(self, buddy, pspec):
# Update the icon's color when the buddy comes and goes
self._update_color()
--
1.7.11.4
More information about the Sugar-devel
mailing list