def _notify_visible_cb(self, embed, param): self._embed.disconnect(self._vis_sid) if self._embed.type == Browser.TYPE_POPUP or self._embed.is_chrome: logging.debug('Show the popup') self._embed.show() self._dialog.set_transient_for(self._parent_window) self._dialog.show() else: logging.debug('Open a new activity for the popup') self._dialog.remove(self._embed) self._dialog.destroy() self._dialog = None # FIXME We need a better way to handle this. # It seem like a pretty special case though, I doubt # other activities will need something similar. from webactivity import WebActivity from sugar3.activity import activityfactory from sugar3.activity.activityhandle import ActivityHandle handle = ActivityHandle(activityfactory.create_activity_id()) activity = WebActivity(handle, self._embed) activity.show() self.emit('popup-created')
def launch(bundle, activity_id=None, object_id=None, uri=None, color=None, invited=False): if activity_id is None or not activity_id: activity_id = activityfactory.create_activity_id() logging.debug('launch bundle_id=%s activity_id=%s object_id=%s uri=%s', bundle.get_bundle_id(), activity_id, object_id, uri) shell_model = shell.get_model() activity = shell_model.get_activity_by_id(activity_id) if activity is not None: logging.debug('re-launch %r', activity.get_window()) activity.get_window().activate(Gtk.get_current_event_time()) return if color is None: client = GConf.Client.get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) launcher.add_launcher(activity_id, bundle.get_icon(), color) activity_handle = ActivityHandle(activity_id=activity_id, object_id=object_id, uri=uri, invited=invited) activityfactory.create(bundle, activity_handle)
def __realize_cb(self, window): xid = window.get_window().get_xid() SugarExt.wm_set_bundle_id(xid, _BUNDLE_ID) activity_id = activityfactory.create_activity_id() SugarExt.wm_set_activity_id(xid, str(activity_id)) self.disconnect(self._realized_sid) self._realized_sid = None
def __realize_cb(self, window): xid = window.get_window().get_xid() SugarExt.wm_set_bundle_id(xid, _BUNDLE_ID) activity_id = activityfactory.create_activity_id() SugarExt.wm_set_activity_id(xid, str(activity_id)) self.disconnect(self._realized_sid) self._realized_sid = None
def launch(bundle, activity_id=None, object_id=None, uri=None, color=None, invited=False, alert_window=None): bundle_id = bundle.get_bundle_id() if activity_id is None or not activity_id: activity_id = activityfactory.create_activity_id() logging.debug('launch bundle_id=%s activity_id=%s object_id=%s uri=%s', bundle.get_bundle_id(), activity_id, object_id, uri) if isinstance(bundle, ContentBundle): # Content bundles are a special case: we treat them as launching # Browse with a specific URI. uri = bundle.get_start_uri() activities = _get_activities_for_mime('text/html') if len(activities) == 0: logging.error("No browser available for content bundle") return bundle = activities[0] logging.debug('Launching content bundle with uri %s', uri) shell_model = shell.get_model() activity = shell_model.get_activity_by_id(activity_id) if activity is not None: logging.debug('re-launch %r', activity.get_window()) activity.get_window().activate(Gtk.get_current_event_time()) return if not shell_model.can_launch_activity(): if alert_window is None: from jarabe.desktop import homewindow alert_window = homewindow.get_instance() if alert_window is not None: alerts.show_max_open_activities_alert(alert_window) return if not shell_model.can_launch_activity_instance(bundle): if alert_window is None: from jarabe.desktop import homewindow alert_window = homewindow.get_instance() if alert_window is not None: alerts.show_multiple_instance_alert( alert_window, shell_model.get_name_from_bundle_id(bundle_id)) return if color is None: color = profile.get_color() launcher.add_launcher(activity_id, bundle.get_icon(), color) activity_handle = ActivityHandle(activity_id=activity_id, object_id=object_id, uri=uri, invited=invited) activityfactory.create(bundle, activity_handle)
def initialize_journal_object(title=None, bundle_id=None, activity_id=None, project_metadata=None, icon_color=None, invited=False): if not icon_color: settings = Gio.Settings('org.sugarlabs.user') icon_color = settings.get_string('color') if not activity_id: activity_id = activityfactory.create_activity_id() jobject = datastore.create() jobject.metadata['title'] = title jobject.metadata['title_set_by_user'] = '******' jobject.metadata['activity_id'] = activity_id jobject.metadata['keep'] = '0' jobject.metadata['preview'] = '' jobject.metadata['icon-color'] = icon_color jobject.file_path = '' if bundle_id == PROJECT_BUNDLE_ID: jobject.metadata['activity'] = PROJECT_BUNDLE_ID elif project_metadata is not None: jobject.metadata['mountpoints'] = ['/'] jobject.metadata['activity'] = bundle_id jobject.metadata['share-scope'] = SCOPE_PRIVATE jobject.metadata['launch-times'] = str(int(time.time())) jobject.metadata['spent-times'] = '0' jobject.metadata['project_id'] = project_metadata['uid'] # FIXME: We should be able to get an ID synchronously from the DS, # then call async the actual create. # http://bugs.sugarlabs.org/ticket/2169 datastore.write(jobject) return jobject
def initialize_journal_object(title=None, bundle_id=None, activity_id=None, project_metadata=None, icon_color=None, invited=False): if not icon_color: settings = Gio.Settings.new('org.sugarlabs.user') icon_color = settings.get_string('color') if not activity_id: activity_id = activityfactory.create_activity_id() jobject = datastore.create() jobject.metadata['title'] = title jobject.metadata['title_set_by_user'] = '******' jobject.metadata['activity_id'] = activity_id jobject.metadata['keep'] = '0' jobject.metadata['preview'] = '' jobject.metadata['icon-color'] = icon_color jobject.file_path = '' if bundle_id == PROJECT_BUNDLE_ID: jobject.metadata['activity'] = PROJECT_BUNDLE_ID elif project_metadata is not None: jobject.metadata['mountpoints'] = ['/'] jobject.metadata['activity'] = bundle_id jobject.metadata['share-scope'] = SCOPE_PRIVATE jobject.metadata['launch-times'] = str(int(time.time())) jobject.metadata['spent-times'] = '0' jobject.metadata['project_id'] = project_metadata['uid'] # FIXME: We should be able to get an ID synchronously from the DS, # then call async the actual create. # http://bugs.sugarlabs.org/ticket/2169 datastore.write(jobject) return jobject
def launch(bundle, activity_id=None, object_id=None, uri=None, color=None, invited=False): if activity_id is None or not activity_id: activity_id = activityfactory.create_activity_id() logging.debug('launch bundle_id=%s activity_id=%s object_id=%s uri=%s', bundle.get_bundle_id(), activity_id, object_id, uri) shell_model = shell.get_model() activity = shell_model.get_activity_by_id(activity_id) if activity is not None: logging.debug('re-launch %r', activity.get_window()) activity.get_window().activate(Gtk.get_current_event_time()) return if color is None: client = GConf.Client.get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) launcher.add_launcher(activity_id, bundle.get_icon(), color) activity_handle = ActivityHandle(activity_id=activity_id, object_id=object_id, uri=uri, invited=invited) activityfactory.create(bundle, activity_handle)
def _notify_visible_cb(self, embed, param): self._embed.disconnect(self._vis_sid) if self._embed.type == Browser.TYPE_POPUP or self._embed.is_chrome: logging.debug('Show the popup') self._embed.show() self._dialog.set_transient_for(self._parent_window) self._dialog.show() else: logging.debug('Open a new activity for the popup') self._dialog.remove(self._embed) self._dialog.destroy() self._dialog = None # FIXME We need a better way to handle this. # It seem like a pretty special case though, I doubt # other activities will need something similar. from webactivity import WebActivity from sugar3.activity import activityfactory from sugar3.activity.activityhandle import ActivityHandle handle = ActivityHandle(activityfactory.create_activity_id()) activity = WebActivity(handle, self._embed) activity.show() self.emit('popup-created')
def launch(bundle, activity_id=None, object_id=None, uri=None, color=None, invited=False, alert_window=None): bundle_id = bundle.get_bundle_id() if activity_id is None or not activity_id: activity_id = activityfactory.create_activity_id() logging.debug('launch bundle_id=%s activity_id=%s object_id=%s uri=%s', bundle.get_bundle_id(), activity_id, object_id, uri) if isinstance(bundle, ContentBundle): # Content bundles are a special case: we treat them as launching # Browse with a specific URI. uri = bundle.get_start_uri() activities = _get_activities_for_mime('text/html') if len(activities) == 0: logging.error("No browser available for content bundle") return bundle = activities[0] logging.debug('Launching content bundle with uri %s', uri) shell_model = shell.get_model() activity = shell_model.get_activity_by_id(activity_id) if activity is not None: logging.debug('re-launch %r', activity.get_window()) activity.get_window().activate(Gtk.get_current_event_time()) return if not shell_model.can_launch_activity(): if alert_window is None: from jarabe.desktop import homewindow alert_window = homewindow.get_instance() if alert_window is not None: alerts.show_max_open_activities_alert(alert_window) return if not shell_model.can_launch_activity_instance(bundle): if alert_window is None: from jarabe.desktop import homewindow alert_window = homewindow.get_instance() if alert_window is not None: alerts.show_multiple_instance_alert( alert_window, shell_model.get_name_from_bundle_id(bundle_id)) return if color is None: client = GConf.Client.get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) launcher.add_launcher(activity_id, bundle.get_icon(), color) activity_handle = ActivityHandle(activity_id=activity_id, object_id=object_id, uri=uri, invited=invited) activityfactory.create(bundle, activity_handle)
def __key_press_event_cb(self, widget, event): if not self.search_bar.search_entry.has_focus(): self.search_bar.search_entry.grab_focus() if widget == self.search_bar.search_entry: if event.keyval == Gdk.KEY_Return: model = self.tree_view.get_model() if len(model) > 1: return True row = model[0] bundle_id = row[self.tree_view._model.column_bundle_id] activity_id = activityfactory.create_activity_id() self.emit('activity-selected', bundle_id, activity_id) self.destroy() return True
def __key_press_event_cb(self, widget, event): if not self.search_bar.search_entry.has_focus(): self.search_bar.search_entry.grab_focus() if widget == self.search_bar.search_entry: if event.keyval == Gdk.KEY_Return: model = self.tree_view.get_model() if len(model) > 1: return True row = model[0] bundle_id = row[self.tree_view._model.column_bundle_id] activity_id = activityfactory.create_activity_id() self.emit("activity-selected", bundle_id, activity_id) self.destroy() return True
def launch(bundle, activity_id=None, object_id=None, uri=None, color=None, invited=False): if activity_id is None or not activity_id: activity_id = activityfactory.create_activity_id() logging.debug('launch bundle_id=%s activity_id=%s object_id=%s uri=%s', bundle.get_bundle_id(), activity_id, object_id, uri) if isinstance(bundle, ContentBundle): # Content bundles are a special case: we treat them as launching # Browse with a specific URI. uri = bundle.get_start_uri() activities = _get_activities_for_mime('text/html') if len(activities) == 0: logging.error("No browser available for content bundle") return bundle = activities[0] logging.debug('Launching content bundle with uri %s', uri) shell_model = shell.get_model() activity = shell_model.get_activity_by_id(activity_id) if activity is not None: logging.debug('re-launch %r', activity.get_window()) activity.get_window().activate(Gtk.get_current_event_time()) return if color is None: client = GConf.Client.get_default() color = XoColor(client.get_string('/desktop/sugar/user/color')) launcher.add_launcher(activity_id, bundle.get_icon(), color) activity_handle = ActivityHandle(activity_id=activity_id, object_id=object_id, uri=uri, invited=invited) activityfactory.create(bundle, activity_handle)
def __get_last_activity_reply_handler_cb(self, entries, total_count): if entries: if not entries[0]['activity_id']: entries[0]['activity_id'] = activityfactory.create_activity_id() misc.resume(entries[0], entries[0]['activity'])
def _resume(self, journal_entry): if not journal_entry['activity_id']: journal_entry['activity_id'] = activityfactory.create_activity_id() misc.resume(journal_entry, self._activity_info.get_bundle_id())
def _resume(self, journal_entry): if not journal_entry['activity_id']: journal_entry['activity_id'] = activityfactory.create_activity_id() misc.resume(journal_entry, self._activity_info.get_bundle_id())
def _got_row_tree_view(self, row): bundle_id = row[self.tree_view._model.column_bundle_id] activity_id = activityfactory.create_activity_id() self.emit('activity-selected', bundle_id, activity_id) self.destroy()
def _got_row_tree_view(self, row): bundle_id = row[self.tree_view._model.column_bundle_id] activity_id = activityfactory.create_activity_id() self.emit("activity-selected", bundle_id, activity_id) self.destroy()