diff options
author | Sascha Silbe <silbe@activitycentral.com> | 2011-03-12 17:44:09 (GMT) |
---|---|---|
committer | Sascha Silbe <silbe@activitycentral.com> | 2011-03-12 17:44:09 (GMT) |
commit | db56ac4562a9ab10308de0998b56262956f51b64 (patch) | |
tree | e9ea3923a6203538480822593354146c01d1341b /src/jarabe/desktop/favoritesview.py | |
parent | 8cd75e783fec952497eda68ae06e00323a4c179b (diff) | |
parent | ff47b24c5aa032f830c6f3dc3ae32dfed3c72229 (diff) |
Merge commit 'refs/top-bases/t/bug-1755' into t/bug-1755t/bug-1755
* commit 'refs/top-bases/t/bug-1755': (261 commits)
Fix up style issues introduced by commit 3f8a1e1
Don't set default timezone
Restore setting a language with the command line OLPC #10681
battery frame device: replace HAL with UPower
use ConsoleKit instead of HAL for shutdown/reboot
fix recognition of JEBs outside of data store
Adjust the year in the licence visible in the control panel
Handle activities that cycle through windows dlo#10695
Speaker frame device: pop up palette on left-click instead of toggling mute
recognise translations using pgettext
Remove last few pieces of buddy-icon.jpg handling
fix whitespace error introduced by 4b6a534 (revert of 4a3416b)
Commit from Sugar Labs: Translation System by user RafaelOrtiz.: 374 of 374 messages translated (0 fuzzy).
Intro: Fall back to user name if GECOS real name field is empty
Sugar Ad-hoc icons show in search results when connect/disconnect to AP OLPC #10412
Show busy cursor during session shutdown
Show free space for the Journal in the Journal volumes toolbar (SL#2318)
Fix incorrect logging level for warning about missing GSM configuration
simplify extension loading exception error
Revert "Add cpu and memory resource indicator to frame" as agreed on with erikos. Scheduling for inclusion in 0.94 after potential artwork changes based on feedback from the Design Team.
...
Conflicts:
src/jarabe/util/emulator.py
Diffstat (limited to 'src/jarabe/desktop/favoritesview.py')
-rw-r--r-- | src/jarabe/desktop/favoritesview.py | 88 |
1 files changed, 46 insertions, 42 deletions
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index aca945a..b4a4e75 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -30,25 +30,23 @@ from sugar.graphics.menuitem import MenuItem from sugar.graphics.alert import Alert from sugar.graphics.xocolor import XoColor from sugar.activity import activityfactory -from sugar.activity.activityhandle import ActivityHandle -from sugar.presence import presenceservice from sugar import dispatch from sugar.datastore import datastore from jarabe.view.palettes import JournalPalette from jarabe.view.palettes import CurrentActivityPalette, ActivityPalette +from jarabe.view.buddyicon import BuddyIcon from jarabe.view.buddymenu import BuddyMenu -from jarabe.view import launcher -from jarabe.model.buddy import BuddyModel +from jarabe.model.buddy import get_owner_instance from jarabe.model import shell from jarabe.model import bundleregistry from jarabe.journal import misc from jarabe.desktop import schoolserver from jarabe.desktop.schoolserver import RegisterError -from jarabe.desktop.myicon import MyIcon from jarabe.desktop import favoriteslayout + _logger = logging.getLogger('FavoritesView') _ICON_DND_TARGET = ('activity-icon', gtk.TARGET_SAME_WIDGET, 0) @@ -62,6 +60,9 @@ LAYOUT_MAP = {favoriteslayout.RingLayout.key: favoriteslayout.RingLayout, `FavoritesLayout` which implement the layouts. Additional information about the layout can be accessed with fields of the class.""" +_favorites_settings = None + + class FavoritesView(hippo.Canvas): __gtype_name__ = 'SugarFavoritesView' @@ -82,7 +83,7 @@ class FavoritesView(hippo.Canvas): self._box.props.background_color = style.COLOR_WHITE.get_int() self.set_root(self._box) - self._my_icon = _MyIcon(style.XLARGE_ICON_SIZE) + self._my_icon = OwnerIcon(style.XLARGE_ICON_SIZE) self._my_icon.connect('register-activate', self.__register_activate_cb) self._box.append(self._my_icon) @@ -172,7 +173,8 @@ class FavoritesView(hippo.Canvas): height = allocation.height min_w_, my_icon_width = self._my_icon.get_width_request() - min_h_, my_icon_height = self._my_icon.get_height_request(my_icon_width) + min_h_, my_icon_height = self._my_icon.get_height_request( + my_icon_width) x = (width - my_icon_width) / 2 y = (height - my_icon_height - style.GRID_CELL_SIZE) / 2 self._layout.move_icon(self._my_icon, x, y, locked=True) @@ -190,7 +192,8 @@ class FavoritesView(hippo.Canvas): # TODO: Dnd methods. This should be merged somehow inside hippo-canvas. def __button_press_event_cb(self, widget, event): if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS: - self._last_clicked_icon = self._get_icon_at_coords(event.x, event.y) + self._last_clicked_icon = self._get_icon_at_coords(event.x, + event.y) if self._last_clicked_icon is not None: self._pressed_button = event.button self._press_start_x = event.x @@ -203,9 +206,9 @@ class FavoritesView(hippo.Canvas): icon_x, icon_y = icon.get_context().translate_to_widget(icon) icon_width, icon_height = icon.get_allocation() - if (x >= icon_x ) and (x <= icon_x + icon_width) and \ - (y >= icon_y ) and (y <= icon_y + icon_height) and \ - isinstance(icon, ActivityIcon): + if (x >= icon_x) and (x <= icon_x + icon_width) and \ + (y >= icon_y) and (y <= icon_y + icon_height) and \ + isinstance(icon, ActivityIcon): return icon return None @@ -274,7 +277,7 @@ class FavoritesView(hippo.Canvas): def _set_layout(self, layout): if layout not in LAYOUT_MAP: - logging.warn('Unknown favorites layout: %r' % layout) + logging.warn('Unknown favorites layout: %r', layout) layout = favoriteslayout.RingLayout.key assert layout in LAYOUT_MAP @@ -327,7 +330,7 @@ class FavoritesView(hippo.Canvas): alert.props.title = _('Registration Successful') alert.props.msg = _('You are now registered ' \ 'with your school server.') - self._my_icon.remove_register_menu() + self._my_icon.set_registered() ok_icon = Icon(icon_name='dialog-ok') alert.add_button(gtk.RESPONSE_OK, _('Ok'), ok_icon) @@ -387,7 +390,7 @@ class ActivityIcon(CanvasIcon): break def _get_last_activity_async(self, bundle_id, properties): - query = {'activity': bundle_id} + query = {'activity': bundle_id} datastore.find(query, sorting=['+timestamp'], limit=self._MAX_RESUME_ENTRIES, properties=properties, @@ -395,8 +398,8 @@ class ActivityIcon(CanvasIcon): error_handler=self.__get_last_activity_error_handler_cb) def __get_last_activity_reply_handler_cb(self, entries, total_count): - # If there's a problem with the DS index, we may get entries not related - # to this activity. + # If there's a problem with the DS index, we may get entries not + # related to this activity. checked_entries = [] for entry in entries: if entry['activity'] == self.bundle_id: @@ -484,16 +487,7 @@ class ActivityIcon(CanvasIcon): if self._resume_mode and self._journal_entries: self._resume(self._journal_entries[0]) else: - client = gconf.client_get_default() - xo_color = XoColor(client.get_string('/desktop/sugar/user/color')) - - activity_id = activityfactory.create_activity_id() - launcher.add_launcher(activity_id, - self._activity_info.get_icon(), - xo_color) - - handle = ActivityHandle(activity_id) - activityfactory.create(self._activity_info, handle) + misc.launch(self._activity_info) def get_bundle_id(self): return self._activity_info.get_bundle_id() @@ -516,6 +510,7 @@ class ActivityIcon(CanvasIcon): self._resume_mode = resume_mode self._update() + class FavoritePalette(ActivityPalette): __gtype_name__ = 'SugarFavoritePalette' @@ -564,6 +559,7 @@ class FavoritePalette(ActivityPalette): if entry is not None: self.emit('entry-activate', entry) + class CurrentActivityIcon(CanvasIcon, hippo.CanvasItem): def __init__(self): CanvasIcon.__init__(self, cache=True) @@ -602,17 +598,18 @@ class CurrentActivityIcon(CanvasIcon, hippo.CanvasItem): self._home_activity = home_activity self._update() -class _MyIcon(MyIcon): - __gtype_name__ = 'SugarFavoritesMyIcon' + +class OwnerIcon(BuddyIcon): + __gtype_name__ = 'SugarFavoritesOwnerIcon' __gsignals__ = { - 'register-activate' : (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([])) + 'register-activate': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + ([])), } - def __init__(self, scale): - MyIcon.__init__(self, scale) - self._power_manager = None + def __init__(self, size): + BuddyIcon.__init__(self, buddy=get_owner_instance(), size=size) + self._palette_enabled = False self._register_menu = None @@ -621,17 +618,20 @@ class _MyIcon(MyIcon): self._palette_enabled = True return - presence_service = presenceservice.get_instance() - owner = BuddyModel(buddy=presence_service.get_owner()) - palette = BuddyMenu(owner) + palette = BuddyMenu(get_owner_instance()) client = gconf.client_get_default() backup_url = client.get_string('/desktop/sugar/backup_url') + if not backup_url: self._register_menu = MenuItem(_('Register'), 'media-record') - self._register_menu.connect('activate', self.__register_activate_cb) - palette.menu.append(self._register_menu) - self._register_menu.show() + else: + self._register_menu = MenuItem(_('Register again'), + 'media-record') + + self._register_menu.connect('activate', self.__register_activate_cb) + palette.menu.append(self._register_menu) + self._register_menu.show() return palette @@ -641,12 +641,17 @@ class _MyIcon(MyIcon): def __register_activate_cb(self, menuitem): self.emit('register-activate') - def remove_register_menu(self): + def set_registered(self): self.palette.menu.remove(self._register_menu) + self._register_menu = MenuItem(_('Register again'), 'media-record') + self._register_menu.connect('activate', self.__register_activate_cb) + self.palette.menu.append(self._register_menu) + self._register_menu.show() + class FavoritesSetting(object): - _FAVORITES_KEY = "/desktop/sugar/desktop/favorites_layout" + _FAVORITES_KEY = '/desktop/sugar/desktop/favorites_layout' def __init__(self): client = gconf.client_get_default() @@ -672,7 +677,6 @@ class FavoritesSetting(object): layout = property(get_layout, set_layout) -_favorites_settings = None def get_settings(): global _favorites_settings |