[sugar] [PATCH] Reset activity icons when clicked/launched (#7273, #7274)

Eben Eliason eben.eliason
Sat Jun 21 22:05:53 EDT 2008


Good points.  This new patch addresses the points brought up, and also
cleans things up a bit by naming the hovering event appropriately, and
by homogenizing the classes in the two files a bit.

---
 src/view/home/activitieslist.py |   31 +++++++++++++++++++++----------
 src/view/home/favoritesview.py  |   22 ++++++++++++++--------
 2 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/src/view/home/activitieslist.py b/src/view/home/activitieslist.py
index 5dab09d..e542859 100644
--- a/src/view/home/activitieslist.py
+++ b/src/view/home/activitieslist.py
@@ -105,22 +105,33 @@ class ActivitiesList(gtk.ScrolledWindow):
 class ActivityIcon(CanvasIcon):
     def __init__(self, activity_info):
         CanvasIcon.__init__(self, size=style.STANDARD_ICON_SIZE, cache=True,
-                            file_name=activity_info.icon,
-                            stroke_color=style.COLOR_BUTTON_GREY.get_svg(),
-                            fill_color=style.COLOR_TRANSPARENT.get_svg())
+                            file_name=activity_info.icon)
         self._activity_info = activity_info
+        self._uncolor()
         self.connect('hovering-changed', self.__hovering_changed_event_cb)
-
-    def __hovering_changed_event_cb(self, icon, event):
-        if event:
-            self.props.xo_color = profile.get_color()
-        else:
-            self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
-            self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
+        self.connect('button-release-event', self.__button_release_event_cb)

     def create_palette(self):
         return ActivityPalette(self._activity_info)

+    def _color(self):
+        self.props.xo_color = profile.get_color()
+
+    def _uncolor(self):
+        self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
+        self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
+
+    def __hovering_changed_event_cb(self, icon, hovering):
+        if hovering:
+            self._color()
+        else:
+            self._uncolor()
+
+    def __button_release_event_cb(self, icon, event):
+        self.palette.popdown(immediate=True)
+        self._uncolor()
+
+
 class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
     __gtype_name__ = 'SugarActivityEntry'

diff --git a/src/view/home/favoritesview.py b/src/view/home/favoritesview.py
index a6e2268..1c948e8 100644
--- a/src/view/home/favoritesview.py
+++ b/src/view/home/favoritesview.py
@@ -268,23 +268,29 @@ class ActivityIcon(CanvasIcon):
     def __init__(self, activity_info):
         CanvasIcon.__init__(self, cache=True, file_name=activity_info.icon)
         self._activity_info = activity_info
+        self._uncolor()
         self.connect('hovering-changed', self.__hovering_changed_event_cb)
         self.connect('button-release-event', self.__button_release_event_cb)

-        self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
-        self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
-
     def create_palette(self):
         return ActivityPalette(self._activity_info)

-    def __hovering_changed_event_cb(self, icon, event):
-        if event:
-            self.props.xo_color = get_profile().color
+    def _color(self):
+        self.props.xo_color = get_profile().color
+
+    def _uncolor(self):
+        self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
+        self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
+
+    def __hovering_changed_event_cb(self, icon, hovering):
+        if hovering:
+            self._color()
         else:
-            self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
-            self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
+            self._uncolor()

     def __button_release_event_cb(self, icon, event):
+        self.palette.popdown(immediate=True)
+        self._uncolor()
         view.Shell.get_instance().start_activity(self._activity_info.bundle_id)

     def get_bundle_id(self):
-- 

Thanks!

- Eben



On Sat, Jun 21, 2008 at 4:56 AM, Tomeu Vizoso <tomeu at tomeuvizoso.net> wrote:
> On Sat, Jun 21, 2008 at 1:14 AM, Eben Eliason <eben.eliason at gmail.com> wrote:
>> The act of clicking on an activity icon in Home to launch it
>> switches the view to the launcher, eliminating the expected
>> hovering-changed event (leave).  This commit hides the palette
>> instantly (it used to remain visible in the launcher) and
>> un-colors the icon (which used to remain colored when returning
>> to Home).
>>
>> ---
>>  src/view/home/activitieslist.py |   11 ++++++++++-
>>  src/view/home/favoritesview.py  |    8 +++++++-
>>  2 files changed, 17 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/view/home/activitieslist.py b/src/view/home/activitieslist.py
>> index 5dab09d..8086b7b 100644
>> --- a/src/view/home/activitieslist.py
>> +++ b/src/view/home/activitieslist.py
>> @@ -110,6 +110,9 @@ class ActivityIcon(CanvasIcon):
>>                             fill_color=style.COLOR_TRANSPARENT.get_svg())
>>         self._activity_info = activity_info
>>         self.connect('hovering-changed', self.__hovering_changed_event_cb)
>> +        self.connect('button-release-event', self.__button_release_event_cb)
>> +
>> +        self._palette = None
>
> No need to keep track of the palette, we can access it with
> self.palette (is a property of CanvasIcon).
>
>>     def __hovering_changed_event_cb(self, icon, event):
>>         if event:
>> @@ -118,8 +121,14 @@ class ActivityIcon(CanvasIcon):
>>             self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
>>             self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
>>
>> +    def __button_release_event_cb(self, icon, event):
>> +        self._palette.popdown(immediate=True)
>> +        self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
>> +        self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
>
> Perhaps we shouldn't duplicate this set of colors, maybe a
> _restore_colors() method could be created?
>
>> +
>>     def create_palette(self):
>> -        return ActivityPalette(self._activity_info)
>> +        self._palette = ActivityPalette(self._activity_info)
>> +        return self._palette
>>
>>  class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
>>     __gtype_name__ = 'SugarActivityEntry'
>> diff --git a/src/view/home/favoritesview.py b/src/view/home/favoritesview.py
>> index a6e2268..6e56db5 100644
>> --- a/src/view/home/favoritesview.py
>> +++ b/src/view/home/favoritesview.py
>> @@ -274,8 +274,11 @@ class ActivityIcon(CanvasIcon):
>>         self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
>>         self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
>>
>> +        self._palette = None
>> +
>>     def create_palette(self):
>> -        return ActivityPalette(self._activity_info)
>> +        self._palette = ActivityPalette(self._activity_info)
>> +        return self._palette
>>
>>     def __hovering_changed_event_cb(self, icon, event):
>>         if event:
>> @@ -285,6 +288,9 @@ class ActivityIcon(CanvasIcon):
>>             self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
>>
>>     def __button_release_event_cb(self, icon, event):
>> +        self._palette.popdown(immediate=True)
>> +        self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg()
>> +        self.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
>>         view.Shell.get_instance().start_activity(self._activity_info.bundle_id)
>>
>>     def get_bundle_id(self):
>
> Same for favorites as for the list.
>
> Thanks,
>
> Tomeu
>



More information about the Sugar-devel mailing list