def _add_activity(self, activity_info): if activity_info.get_bundle_id() == "org.laptop.JournalActivity": return timestamp = activity_info.get_installation_time() version = activity_info.get_activity_version() registry = bundleregistry.get_registry() favorites = [] for i in range(desktop.get_number_of_views()): favorites.append(registry.is_bundle_favorite(activity_info.get_bundle_id(), version, i)) tag_list = activity_info.get_tags() if tag_list is None or not tag_list: title = "<b>%s</b>" % activity_info.get_name() else: tags = ", ".join(tag_list) title = "<b>%s</b>\n" '<span style="italic" weight="light">%s</span>' % (activity_info.get_name(), tags) model_list = [activity_info.get_bundle_id()] for i in range(desktop.get_number_of_views()): model_list.append(favorites[i]) model_list.append(activity_info.get_icon()) model_list.append(title) model_list.append(version) model_list.append(_("Version %s") % version) model_list.append(int(timestamp)) model_list.append(util.timestamp_to_elapsed_string(timestamp)) self._model.append(model_list)
def __init__(self, toolbar): logging.debug('STARTUP: Loading the home view') Gtk.VBox.__init__(self) self._favorites_views_indicies = [] for i in range(desktop.get_number_of_views()): self._favorites_views_indicies.append(i) self._list_view_index = self._favorites_views_indicies[-1] + 1 self._favorites_boxes = [] for i in range(desktop.get_number_of_views()): self._favorites_boxes.append(favoritesview.FavoritesBox(i)) self._list_view = ActivitiesList() self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb) toolbar.search_entry._icon_selected = [] toolbar.connect('query-changed', self.__toolbar_query_changed_cb) toolbar.connect('view-changed', self.__toolbar_view_changed_cb) toolbar.search_entry.connect('key-press-event', self.__search_entry_key_press_event_cb) toolbar.search_entry.connect('icon-press', self.__clear_icon_pressed_cb) self._list_view.connect('clear-clicked', self.__activitylist_clear_clicked_cb, toolbar) self._set_view(self._favorites_views_indicies[0]) self._query = '' self._resume_mode = True
def __init__(self, toolbar): logging.debug('STARTUP: Loading the home view') Gtk.VBox.__init__(self) self._favorites_views_indicies = [] for i in range(desktop.get_number_of_views()): self._favorites_views_indicies.append(i) self._list_view_index = self._favorites_views_indicies[-1] + 1 self._favorites_boxes = [] for i in range(desktop.get_number_of_views()): self._favorites_boxes.append(favoritesview.FavoritesBox(i)) self._list_view = ActivitiesList() self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb) toolbar.connect('query-changed', self.__toolbar_query_changed_cb) toolbar.connect('view-changed', self.__toolbar_view_changed_cb) toolbar.search_entry.connect('icon-press', self.__clear_icon_pressed_cb) self._list_view.connect('clear-clicked', self.__activitylist_clear_clicked_cb, toolbar) self._set_view(self._favorites_views_indicies[0]) self._query = ''
def _set_view(self, view): if view in self._favorites_views_indicies: favorite = self._favorites_views_indicies.index(view) children = self.get_children() if self._list_view in children: self.remove(self._list_view) else: for i in range(desktop.get_number_of_views()): if i != favorite and self._favorites_boxes[i] in children: self.remove(self._favorites_boxes[i]) if self._favorites_boxes[favorite] not in children: self.add(self._favorites_boxes[favorite]) self._favorites_boxes[favorite].show() self._favorites_boxes[favorite].grab_focus() elif view == self._list_view_index: children = self.get_children() for i in range(desktop.get_number_of_views()): if self._favorites_boxes[i] in children: self.remove(self._favorites_boxes[i]) if self._list_view not in children: self.add(self._list_view) self._list_view.show() self._list_view.grab_focus() else: raise ValueError('Invalid view: %r' % view)
def __init__(self, activity_info): ActivityPalette.__init__(self, activity_info) self._bundle_id = activity_info.get_bundle_id() self._version = activity_info.get_activity_version() registry = bundleregistry.get_registry() self._favorites = [] self._favorite_items = [] self._favorite_icons = [] for i in range(desktop.get_number_of_views()): self._favorites.append(registry.is_bundle_favorite(self._bundle_id, self._version, i)) self._favorite_items.append(PaletteMenuItem()) self._favorite_icons.append(Icon(icon_name=desktop.get_favorite_icons()[i], icon_size=Gtk.IconSize.MENU)) self._favorite_items[i].set_image(self._favorite_icons[i]) self._favorite_icons[i].show() self._favorite_items[i].connect("activate", self.__change_favorite_activate_cb, i) self.menu_box.append_item(self._favorite_items[i]) self._favorite_items[i].show() if activity_info.is_user_activity(): self._add_erase_option(registry, activity_info) registry = bundleregistry.get_registry() self._activity_changed_sid = [] for i in range(desktop.get_number_of_views()): self._activity_changed_sid.append(registry.connect("bundle_changed", self.__activity_changed_cb, i)) self._update_favorite_item(i) self.menu_box.connect("destroy", self.__destroy_cb)
def _add_activity(self, activity_info): if activity_info.get_bundle_id() == 'org.laptop.JournalActivity': return timestamp = activity_info.get_installation_time() version = activity_info.get_activity_version() registry = bundleregistry.get_registry() favorites = [] for i in range(desktop.get_number_of_views()): favorites.append( registry.is_bundle_favorite(activity_info.get_bundle_id(), version, i)) tag_list = activity_info.get_tags() if tag_list is None or not tag_list: title = '<b>%s</b>' % activity_info.get_name() else: tags = ', '.join(tag_list) title = '<b>%s</b>\n' \ '<span style="italic" weight="light">%s</span>' % \ (activity_info.get_name(), tags) model_list = [activity_info.get_bundle_id()] for i in range(desktop.get_number_of_views()): model_list.append(favorites[i]) model_list.append(activity_info.get_icon()) model_list.append(title) model_list.append(version) model_list.append(_('Version %s') % version) model_list.append(int(timestamp)) model_list.append(util.timestamp_to_elapsed_string(timestamp)) self._model.append(model_list)
def __init__(self, toolbar): logging.debug('STARTUP: Loading the home view') Gtk.VBox.__init__(self) self._favorites_views_indicies = [] for i in range(desktop.get_number_of_views()): self._favorites_views_indicies.append(i) self._list_view_index = self._favorites_views_indicies[-1] + 1 self._favorites_boxes = [] for i in range(desktop.get_number_of_views()): self._favorites_boxes.append(FavoritesBox(i)) self._list_view = ActivitiesList() self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb) toolbar.search_entry._icon_selected = [] toolbar.connect('query-changed', self.__toolbar_query_changed_cb) toolbar.connect('view-changed', self.__toolbar_view_changed_cb) toolbar.search_entry.connect('key-press-event', self.__search_entry_key_press_event_cb) toolbar.search_entry.connect('icon-press', self.__clear_icon_pressed_cb) self._list_view.connect('clear-clicked', self.__activitylist_clear_clicked_cb, toolbar) self._set_view(self._favorites_views_indicies[0]) self._query = '' self._resume_mode = Gio.Settings('org.sugarlabs.user').get_boolean( 'resume-activity')
def __init__(self): Gtk.Toolbar.__init__(self) self._favorites_views_indicies = [] for i in range(desktop.get_number_of_views()): self._favorites_views_indicies.append(i) self._list_view_index = self._favorites_views_indicies[-1] + 1 self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb) self._query = None self._autosearch_timer = None self._add_separator() tool_item = Gtk.ToolItem() self.insert(tool_item, -1) tool_item.show() self.search_entry = iconentry.IconEntry() self.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'entry-search') self.set_placeholder_text_for_view(_('Home')) self.search_entry.add_clear_button() self.search_entry.set_width_chars(25) self.search_entry.connect('activate', self._entry_activated_cb) self.search_entry.connect('changed', self._entry_changed_cb) tool_item.add(self.search_entry) self.search_entry.show() self._add_separator(expand=True) self._button_box = Gtk.HBox() self._favorites_buttons = [] for i in range(desktop.get_number_of_views()): self._add_favorites_button(i) toolitem = Gtk.ToolItem() toolitem.add(self._button_box) self.insert(toolitem, -1) self._button_box.show() toolitem.show() self._list_button = RadioToolButton(icon_name='view-list') self._list_button.props.group = self._favorites_buttons[0] self._list_button.props.tooltip = _('List view') self._list_button.props.accelerator = \ _('<Ctrl>%d' % (len(self._favorites_views_indicies) + 1)) self._list_view_toggle_id = self._list_button.connect( 'toggled', self.__view_button_toggled_cb, self._list_view_index) self.insert(self._list_button, -1) self._add_separator()
def __activity_changed_cb(self, activity_registry, activity_info): bundle_id = activity_info.get_bundle_id() version = activity_info.get_activity_version() favorites = [] for i in range(desktop.get_number_of_views()): favorites.append(activity_registry.is_bundle_favorite(bundle_id, version, i)) for row in self._model: if row[self.column_bundle_id] == bundle_id and row[self.column_version] == version: for i in range(desktop.get_number_of_views()): row[self.column_favorites[i]] = favorites[i] return
def __activity_changed_cb(self, activity_registry, activity_info): bundle_id = activity_info.get_bundle_id() version = activity_info.get_activity_version() favorites = [] for i in range(desktop.get_number_of_views()): favorites.append( activity_registry.is_bundle_favorite(bundle_id, version, i)) for row in self._model: if row[self.column_bundle_id] == bundle_id and \ row[self.column_version] == version: for i in range(desktop.get_number_of_views()): row[self.column_favorites[i]] = favorites[i] return
def __toolbar_query_changed_cb(self, toolbar, query): self._query = normalize_string(query.decode('utf-8')) self._list_view.set_filter(self._query) for i in range(desktop.get_number_of_views()): self._favorites_boxes[i].set_filter(self._query) toolbar.search_entry._icon_selected.append( self._favorites_boxes[i]._get_selected(self._query))
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() if len(self._favorites_views_indicies) < number_of_views: for i in range(number_of_views - len(self._favorites_views_indicies)): n = len(self._favorites_views_indicies) self._favorites_views_indicies.append(n) self._add_favorites_button(n) self._favorites_buttons[n].show() elif number_of_views < len(self._favorites_views_indicies): for i in range(len(self._favorites_views_indicies) - number_of_views): n = len(self._favorites_views_indicies) - 1 logging.debug('removing FavoritesButton %d' % (n)) button = self._favorites_buttons[n] self._favorites_buttons.remove(button) button.destroy() self._favorites_views_indicies.remove( self._favorites_views_indicies[n]) self._button_box.show() self._list_view_index = number_of_views self._list_button.props.accelerator = \ _('<Ctrl>%d' % (len(self._favorites_views_indicies) + 1)) self._list_button.disconnect(self._list_view_toggle_id) self._list_view_toggle_id = self._list_button.connect( 'toggled', self.__view_button_toggled_cb, self._list_view_index) self._list_button.show()
def set_resume_mode(self, resume_mode, favorite_view=0): self._resume_mode = resume_mode self._favorites_boxes[favorite_view].set_resume_mode(resume_mode) if resume_mode and self._query != '': self._list_view.set_filter(self._query) for i in range(desktop.get_number_of_views()): self._favorites_boxes[i].set_filter(self._query)
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() if len(self._favorites_views_indicies) < number_of_views: for i in range(number_of_views - len(self._favorites_views_indicies)): n = len(self._favorites_views_indicies) self._favorites_views_indicies.append(n) self._add_favorites_button(n) self._favorites_buttons[n].show() elif number_of_views < len(self._favorites_views_indicies): for i in range( len(self._favorites_views_indicies) - number_of_views): n = len(self._favorites_views_indicies) - 1 logging.debug('removing FavoritesButton %d' % (n)) button = self._favorites_buttons[n] self._favorites_buttons.remove(button) button.destroy() self._favorites_views_indicies.remove( self._favorites_views_indicies[n]) self._button_box.show() self._list_view_index = number_of_views self._list_button.props.accelerator = \ _('<Ctrl>%d' % (len(self._favorites_views_indicies) + 1)) self._list_button.disconnect(self._list_view_toggle_id) self._list_view_toggle_id = self._list_button.connect( 'toggled', self.__view_button_toggled_cb, self._list_view_index) self._list_button.show()
def _load_favorites(self): for i in range(desktop.get_number_of_views()): # Special-case 0 for backward compatibility if i == 0: favorites_path = env.get_profile_path('favorite_activities') else: favorites_path = env.get_profile_path( 'favorite_activities_%d' % (i)) if os.path.exists(favorites_path): favorites_data = json.load(open(favorites_path)) favorite_bundles = favorites_data['favorites'] if not isinstance(favorite_bundles, dict): raise ValueError('Invalid format in %s.' % favorites_path) if favorite_bundles: first_key = favorite_bundles.keys()[0] if not isinstance(first_key, basestring): raise ValueError('Invalid format in %s.' % favorites_path) first_value = favorite_bundles.values()[0] if first_value is not None and \ not isinstance(first_value, dict): raise ValueError('Invalid format in %s.' % favorites_path) self._favorite_bundles[i] = favorite_bundles
def _load_favorites(self): for i in range(desktop.get_number_of_views()): # Special-case 0 for backward compatibility if i == 0: favorites_path = env.get_profile_path('favorite_activities') else: favorites_path = env.get_profile_path( 'favorite_activities_%d' % (i)) if os.path.exists(favorites_path): favorites_data = json.load(open(favorites_path)) favorite_bundles = favorites_data['favorites'] if not isinstance(favorite_bundles, dict): raise ValueError('Invalid format in %s.' % favorites_path) if favorite_bundles: first_key = favorite_bundles.keys()[0] if not isinstance(first_key, basestring): raise ValueError('Invalid format in %s.' % favorites_path) first_value = favorite_bundles.values()[0] if first_value is not None and \ not isinstance(first_value, dict): raise ValueError('Invalid format in %s.' % favorites_path) self._last_defaults_mtime[i] = \ float(favorites_data['defaults-mtime']) self._favorite_bundles[i] = favorite_bundles
def __init__(self): logging.debug('STARTUP: Loading the bundle registry') GObject.GObject.__init__(self) self._mime_defaults = self._load_mime_defaults() # Queue of bundles to be installed/upgraded self._install_queue = _InstallQueue(self) # Bundle installation happens in a separate thread, which needs # access to _bundles. Protect all _bundles access with a lock. self._lock = Lock() self._bundles = [] # hold a reference to the monitors so they don't get disposed self._gio_monitors = [] dirs = [env.get_user_activities_path(), env.get_user_library_path()] for data_dir in GLib.get_system_data_dirs(): dirs.append(os.path.join(data_dir, "sugar", "activities")) for activity_dir in dirs: self._scan_directory(activity_dir) directory = Gio.File.new_for_path(activity_dir) monitor = directory.monitor_directory( flags=Gio.FileMonitorFlags.NONE, cancellable=None) monitor.connect('changed', self.__file_monitor_changed_cb) self._gio_monitors.append(monitor) self._last_defaults_mtime = [] self._favorite_bundles = [] for i in range(desktop.get_number_of_views()): self._favorite_bundles.append({}) self._last_defaults_mtime.append(-1) client = GConf.Client.get_default() self._protected_activities = [] # FIXME, gconf_client_get_list not introspectable #681433 protected_activities = client.get( '/desktop/sugar/protected_activities') for gval in protected_activities.get_list(): activity_id = gval.get_string() self._protected_activities.append(activity_id) if self._protected_activities is None: self._protected_activities = [] try: self._load_favorites() except Exception: logging.exception('Error while loading favorite_activities.') self._merge_default_favorites() self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb)
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() if len(self._favorite_bundles) < number_of_views: for i in range(number_of_views - len(self._favorite_bundles)): self._favorite_bundles.append({}) try: self._load_favorites() except Exception: logging.exception('Error while loading favorite_activities.')
def grab_focus(self): # overwrite grab focus to be able to grab focus on the # views which are packed inside a box children = self.get_children() if self._list_view in children: self._list_view.grab_focus() else: for i in range(desktop.get_number_of_views()): if self._favorites_boxes[i] in children: self._favorites_boxes[i].grab_focus()
def _convert_old_favorites(self): for i in range(desktop.get_number_of_views()): for key in self._favorite_bundles[i].keys(): data = self._favorite_bundles[i][key] if data is None: data = {} if 'favorite' not in data: data['favorite'] = True self._favorite_bundles[i][key] = data self._write_favorites_file(i)
def __desktop_view_icons_changed_cb(self): number_of_views = desktop.get_number_of_views() self.assertTrue(number_of_views == len(self.target)) view_icons = desktop.get_view_icons() self.assertTrue(len(view_icons) == len(self.target)) for i in range(len(view_icons)): self.assertTrue(view_icons[i] in self.target) favorite_icons = desktop.get_favorite_icons() self.assertTrue(len(favorite_icons) >= len(self.target))
def get_settings(favorite_view=0): global _favorites_settings number_of_views = desktop.get_number_of_views() if _favorites_settings is None: _favorites_settings = [] for i in range(number_of_views): _favorites_settings.append(FavoritesSetting(i)) elif len(_favorites_settings) < number_of_views: for i in range(number_of_views - len(_favorites_settings)): _favorites_settings.append( FavoritesSetting(len(_favorites_settings))) return _favorites_settings[favorite_view]
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() self.assertTrue(number_of_views == len(self.target)) view_icons = desktop.get_view_icons() self.assertTrue(len(view_icons) == len(self.target)) right_view_icons = [view['view-icon'] for view in self.target] for i in range(len(view_icons)): self.assertTrue(view_icons[i] in right_view_icons) favorite_icons = desktop.get_favorite_icons() self.assertTrue(len(favorite_icons) >= len(self.target))
def __init__(self, activity_info): ActivityPalette.__init__(self, activity_info) self._bundle_id = activity_info.get_bundle_id() self._version = activity_info.get_activity_version() registry = bundleregistry.get_registry() self._favorites = [] self._favorite_items = [] self._favorite_icons = [] for i in range(desktop.get_number_of_views()): self._favorites.append( registry.is_bundle_favorite(self._bundle_id, self._version, i)) self._favorite_items.append(PaletteMenuItem()) self._favorite_icons.append( Icon(icon_name=desktop.get_favorite_icons()[i], pixel_size=style.SMALL_ICON_SIZE)) self._favorite_items[i].set_image(self._favorite_icons[i]) self._favorite_icons[i].show() self._favorite_items[i].connect('activate', self.__change_favorite_activate_cb, i) self.menu_box.append_item(self._favorite_items[i]) self._favorite_items[i].show() if activity_info.is_user_activity(): self._add_erase_option(registry, activity_info) registry = bundleregistry.get_registry() self._activity_changed_sid = [] for i in range(desktop.get_number_of_views()): self._activity_changed_sid.append( registry.connect('bundle-changed', self.__activity_changed_cb, i)) self._update_favorite_item(i) self.menu_box.connect('destroy', self.__destroy_cb)
def __init__(self): logging.debug('STARTUP: Loading the bundle registry') GObject.GObject.__init__(self) self._mime_defaults = self._load_mime_defaults() # Queue of bundles to be installed/upgraded self._install_queue = _InstallQueue(self) # Bundle installation happens in a separate thread, which needs # access to _bundles. Protect all _bundles access with a lock. self._lock = Lock() self._bundles = [] # hold a reference to the monitors so they don't get disposed self._gio_monitors = [] dirs = [env.get_user_activities_path(), env.get_user_library_path()] for data_dir in GLib.get_system_data_dirs(): dirs.append(os.path.join(data_dir, "sugar", "activities")) for activity_dir in dirs: self._scan_directory(activity_dir) directory = Gio.File.new_for_path(activity_dir) monitor = directory.monitor_directory( flags=Gio.FileMonitorFlags.NONE, cancellable=None) monitor.connect('changed', self.__file_monitor_changed_cb) self._gio_monitors.append(monitor) self._favorite_bundles = [] for i in range(desktop.get_number_of_views()): self._favorite_bundles.append({}) settings = Gio.Settings('org.sugarlabs') self._protected_activities = settings.get_strv('protected-activities') try: self._load_favorites() except Exception: logging.exception('Error while loading favorite_activities.') self._hidden_activities = [] self._load_hidden_activities() self._convert_old_favorites() self._scan_new_favorites() self._desktop_model = desktop.get_model() self._desktop_model.connect('desktop-view-icons-changed', self.__desktop_view_icons_changed_cb)
def __init__(self): self.column_bundle_id = 0 self.column_favorites = [] for i in range(desktop.get_number_of_views()): self.column_favorites.append(self.column_bundle_id + i + 1) self.column_icon = self.column_favorites[-1] + 1 self.column_title = self.column_icon + 1 self.column_version = self.column_title + 1 self.column_version_text = self.column_version + 1 self.column_date = self.column_version_text + 1 self.column_date_text = self.column_date + 1 column_types = [str, str, str, str, str, int, str] for i in range(desktop.get_number_of_views()): column_types.insert(1, bool) self._model = Gtk.ListStore() self._model.set_column_types(column_types) self._model_filter = self._model.filter_new() Gtk.TreeModelSort.__init__(self, model=self._model_filter) self.set_sort_column_id(self.column_title, Gtk.SortType.ASCENDING) GLib.idle_add(self.__connect_to_bundle_registry_cb)
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() if len(self._favorites_views_indicies) < number_of_views: for i in range(number_of_views - len(self._favorites_views_indicies)): self._favorites_views_indicies.append(len(self._favorites_views_indicies) + i) self._favorites_boxes.append(favoritesview.FavoritesBox(len(self._favorites_views_indicies) - 1)) elif number_of_views < len(self._favorites_views_indicies): for i in range(len(self._favorites_views_indicies) - number_of_views): self._favorites_boxes.remove(self._favorites_boxes[-1]) self._favorites_views_indicies.remove(self._favorites_views_indicies[-1]) self._list_view_index = number_of_views logging.debug("homebox: reassigning list view index to %d" % (self._list_view_index))
def __toolbar_query_changed_cb(self, toolbar, query): self._query = normalize_string(query.decode('utf-8')) self._list_view.set_filter(self._query) for i in range(desktop.get_number_of_views()): self._favorites_boxes[i].set_filter(self._query) toolbar.search_entry._icon_selected = \ self._list_view.get_activities_selected() # verify if one off the selected names is a perfect match # this is needed by th case of activities with names contained # in other activities like 'Paint' and 'MusicPainter' for activity in self._list_view.get_activities_selected(): if activity['name'].upper() == query.upper(): toolbar.search_entry._icon_selected = [activity] break if len(toolbar.search_entry._icon_selected) == 1: toolbar.search_entry.set_text( toolbar.search_entry._icon_selected[0]['name']) toolbar.search_entry.set_position(-1)
def __desktop_view_icons_changed_cb(self, model): number_of_views = desktop.get_number_of_views() if len(self._favorites_views_indicies) < number_of_views: for i in range(number_of_views - len(self._favorites_views_indicies)): self._favorites_views_indicies.append( len(self._favorites_views_indicies) + i) self._favorites_boxes.append( FavoritesBox(len(self._favorites_views_indicies) - 1)) elif number_of_views < len(self._favorites_views_indicies): for i in range( len(self._favorites_views_indicies) - number_of_views): self._favorites_boxes.remove(self._favorites_boxes[-1]) self._favorites_views_indicies.remove( self._favorites_views_indicies[-1]) self._list_view_index = number_of_views logging.debug('homebox: reassigning list view index to %d' % (self._list_view_index))
def __toolbar_query_changed_cb(self, toolbar, query): self._query = normalize_string(query.decode("utf-8")) self._list_view.set_filter(self._query) for i in range(desktop.get_number_of_views()): self._favorites_boxes[i].set_filter(self._query) toolbar.search_entry._icon_selected = self._list_view.get_activities_selected() # verify if one off the selected names is a perfect match # this is needed by th case of activities with names contained # in other activities like 'Paint' and 'MusicPainter' for activity in self._list_view.get_activities_selected(): if activity["name"].upper() == query.upper(): toolbar.search_entry._icon_selected = [activity] break # Don't change the selection if the entry has been autocompleted if len(toolbar.search_entry._icon_selected) == 1 and not toolbar.search_entry.get_text() == activity["name"]: pos = toolbar.search_entry.get_position() toolbar.search_entry.set_text(toolbar.search_entry._icon_selected[0]["name"]) toolbar.search_entry.select_region(pos, -1)
def __init__(self): Gtk.TreeView.__init__(self) self.set_can_focus(False) self._query = '' self.set_headers_visible(False) self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.TOUCH_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK) selection = self.get_selection() selection.set_mode(Gtk.SelectionMode.NONE) self._model = ListModel() self._model.set_visible_func(self.__model_visible_cb) self.set_model(self._model) self._favorite_columns = [] for i in range(desktop.get_number_of_views()): self.fav_column = Gtk.TreeViewColumn() self.cell_favorite = CellRendererFavorite(i) self.cell_favorite.connect('clicked', self.__favorite_clicked_cb) self.fav_column.pack_start(self.cell_favorite, True) self.fav_column.set_cell_data_func(self.cell_favorite, self.__favorite_set_data_cb) self.append_column(self.fav_column) self._favorite_columns.append(self.fav_column) self.cell_icon = CellRendererActivityIcon() column = Gtk.TreeViewColumn() column.pack_start(self.cell_icon, True) column.add_attribute(self.cell_icon, 'file-name', self._model.column_icon) self.append_column(column) self._icon_column = column cell_text = Gtk.CellRendererText() cell_text.props.ellipsize = style.ELLIPSIZE_MODE_DEFAULT cell_text.props.ellipsize_set = True column = Gtk.TreeViewColumn() column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.expand = True column.set_sort_column_id(self._model.column_title) column.pack_start(cell_text, True) column.add_attribute(cell_text, 'markup', self._model.column_title) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 self.version_column = Gtk.TreeViewColumn() self.version_column.set_alignment(1) self.version_column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY self.version_column.props.resizable = True self.version_column.props.reorderable = True self.version_column.props.expand = True self.version_column.set_sort_column_id(self._model.column_version) self.version_column.pack_start(cell_text, True) self.version_column.add_attribute(cell_text, 'text', self._model.column_version_text) self.append_column(self.version_column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 self.date_column = Gtk.TreeViewColumn() self.date_column.set_alignment(1) self.date_column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY self.date_column.props.resizable = True self.date_column.props.reorderable = True self.date_column.props.expand = True self.date_column.set_sort_column_id(self._model.column_date) self.date_column.pack_start(cell_text, True) self.date_column.add_attribute(cell_text, 'text', self._model.column_date_text) self.append_column(self.date_column) self.set_search_column(self._model.column_title) self.set_enable_search(False) self._activity_selected = None self._invoker = TreeViewInvoker() self._invoker.attach_treeview(self) self.button_press_handler = None self.button_reslease_handler = None self.icon_clicked_handler = None self.row_activated_handler = None if hasattr(self.props, 'activate_on_single_click'): # Gtk+ 3.8 and later self.props.activate_on_single_click = True self.row_activated_handler = self.connect('row-activated', self.__row_activated_cb) else: self.icon_clicked_handler = self.cell_icon.connect( 'clicked', self.__icon_clicked_cb) self.button_press_handler = self.connect( 'button-press-event', self.__button_press_cb) self.button_reslease_handler = self.connect( 'button-release-event', self.__button_release_cb) self._row_activated_armed_path = None
def __init__(self): Gtk.TreeView.__init__(self) self.set_can_focus(False) self._query = '' self.set_headers_visible(False) self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.TOUCH_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK) selection = self.get_selection() selection.set_mode(Gtk.SelectionMode.NONE) self._model = ListModel() self._model.set_visible_func(self.__model_visible_cb) self.set_model(self._model) self._favorite_columns = [] for i in range(desktop.get_number_of_views()): self.fav_column = Gtk.TreeViewColumn() self.cell_favorite = CellRendererFavorite(i) self.cell_favorite.connect('clicked', self.__favorite_clicked_cb) self.fav_column.pack_start(self.cell_favorite, True) self.fav_column.set_cell_data_func(self.cell_favorite, self.__favorite_set_data_cb) self.append_column(self.fav_column) self._favorite_columns.append(self.fav_column) self.cell_icon = CellRendererActivityIcon() column = Gtk.TreeViewColumn() column.pack_start(self.cell_icon, True) column.add_attribute(self.cell_icon, 'file-name', self._model.column_icon) self.append_column(column) self._icon_column = column cell_text = Gtk.CellRendererText() cell_text.props.ellipsize = style.ELLIPSIZE_MODE_DEFAULT cell_text.props.ellipsize_set = True column = Gtk.TreeViewColumn() column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.expand = True column.set_sort_column_id(self._model.column_title) column.pack_start(cell_text, True) column.add_attribute(cell_text, 'markup', self._model.column_title) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 self.version_column = Gtk.TreeViewColumn() self.version_column.set_alignment(1) self.version_column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY self.version_column.props.resizable = True self.version_column.props.reorderable = True self.version_column.props.expand = True self.version_column.set_sort_column_id(self._model.column_version) self.version_column.pack_start(cell_text, True) self.version_column.add_attribute(cell_text, 'text', self._model.column_version_text) self.append_column(self.version_column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 self.date_column = Gtk.TreeViewColumn() self.date_column.set_alignment(1) self.date_column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY self.date_column.props.resizable = True self.date_column.props.reorderable = True self.date_column.props.expand = True self.date_column.set_sort_column_id(self._model.column_date) self.date_column.pack_start(cell_text, True) self.date_column.add_attribute(cell_text, 'text', self._model.column_date_text) self.append_column(self.date_column) self.set_search_column(self._model.column_title) self.set_enable_search(False) self._activity_selected = None self._invoker = TreeViewInvoker() self._invoker.attach_treeview(self) self.button_press_handler = None self.button_reslease_handler = None self.icon_clicked_handler = None self.row_activated_handler = None if hasattr(self.props, 'activate_on_single_click'): # Gtk+ 3.8 and later self.props.activate_on_single_click = True self.row_activated_handler = self.connect('row-activated', self.__row_activated_cb) else: self.icon_clicked_handler = self.cell_icon.connect( 'clicked', self.__icon_clicked_cb) self.button_press_handler = self.connect('button-press-event', self.__button_press_cb) self.button_reslease_handler = self.connect( 'button-release-event', self.__button_release_cb) self._row_activated_armed_path = None
def show_view_buttons(self): for i in range(desktop.get_number_of_views()): self._favorites_buttons[i].show() self._list_button.show()
def __init__(self): Gtk.TreeView.__init__(self) self._query = '' self.set_headers_visible(False) self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.TOUCH_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK) selection = self.get_selection() selection.set_mode(Gtk.SelectionMode.NONE) self._model = ListModel() self._model.set_visible_func(self.__model_visible_cb) self.set_model(self._model) column = Gtk.TreeViewColumn() cell_favorites = [] for i in range(desktop.get_number_of_views()): cell_favorites.append(CellRendererFavorite(i)) cell_favorites[i].connect('clicked', self.__favorite_clicked_cb) column.pack_start(cell_favorites[i], True) column.set_cell_data_func(cell_favorites[i], self.__favorite_set_data_cb) self.append_column(column) cell_icon = CellRendererActivityIcon() cell_icon.connect('clicked', self.__icon_clicked_cb) column = Gtk.TreeViewColumn() column.pack_start(cell_icon, True) column.add_attribute(cell_icon, 'file-name', self._model.column_icon) self.append_column(column) self._icon_column = column cell_text = Gtk.CellRendererText() cell_text.props.ellipsize = style.ELLIPSIZE_MODE_DEFAULT cell_text.props.ellipsize_set = True column = Gtk.TreeViewColumn() column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.expand = True column.set_sort_column_id(self._model.column_title) column.pack_start(cell_text, True) column.add_attribute(cell_text, 'markup', self._model.column_title) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 column = Gtk.TreeViewColumn() column.set_alignment(1) column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.resizable = True column.props.reorderable = True column.props.expand = True column.set_sort_column_id(self._model.column_version) column.pack_start(cell_text, True) column.add_attribute(cell_text, 'text', self._model.column_version_text) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 column = Gtk.TreeViewColumn() column.set_alignment(1) column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.resizable = True column.props.reorderable = True column.props.expand = True column.set_sort_column_id(self._model.column_date) column.pack_start(cell_text, True) column.add_attribute(cell_text, 'text', self._model.column_date_text) self.append_column(column) self.set_search_column(self._model.column_title) self.set_enable_search(False) self._activity_selected = None self._invoker = TreeViewInvoker() self._invoker.attach_treeview(self)
def __toolbar_query_changed_cb(self, toolbar, query): self._query = normalize_string(query.decode('utf-8')) self._list_view.set_filter(self._query) for i in range(desktop.get_number_of_views()): self._favorites_boxes[i].set_filter(self._query)
def __destroy_cb(self, palette): registry = bundleregistry.get_registry() for i in range(desktop.get_number_of_views()): registry.disconnect(self._activity_changed_sid[i])
def __init__(self): Gtk.TreeView.__init__(self) self._query = "" self.set_headers_visible(False) self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.TOUCH_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK) selection = self.get_selection() selection.set_mode(Gtk.SelectionMode.NONE) self._model = ListModel() self._model.set_visible_func(self.__model_visible_cb) self.set_model(self._model) column = Gtk.TreeViewColumn() cell_favorites = [] for i in range(desktop.get_number_of_views()): cell_favorites.append(CellRendererFavorite(self, i)) cell_favorites[i].connect("clicked", self.__favorite_clicked_cb) column.pack_start(cell_favorites[i], True) column.set_cell_data_func(cell_favorites[i], self.__favorite_set_data_cb) self.append_column(column) cell_icon = CellRendererActivityIcon(self) cell_icon.connect("erase-activated", self.__erase_activated_cb) cell_icon.connect("clicked", self.__icon_clicked_cb) column = Gtk.TreeViewColumn() column.pack_start(cell_icon, True) column.add_attribute(cell_icon, "file-name", self._model.column_icon) self.append_column(column) self._icon_column = column cell_text = Gtk.CellRendererText() cell_text.props.ellipsize = Pango.EllipsizeMode.MIDDLE cell_text.props.ellipsize_set = True column = Gtk.TreeViewColumn() column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.expand = True column.set_sort_column_id(self._model.column_title) column.pack_start(cell_text, True) column.add_attribute(cell_text, "markup", self._model.column_title) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 column = Gtk.TreeViewColumn() column.set_alignment(1) column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.resizable = True column.props.reorderable = True column.props.expand = True column.set_sort_column_id(self._model.column_version) column.pack_start(cell_text, True) column.add_attribute(cell_text, "text", self._model.column_version_text) self.append_column(column) cell_text = Gtk.CellRendererText() cell_text.props.xalign = 1 column = Gtk.TreeViewColumn() column.set_alignment(1) column.props.sizing = Gtk.TreeViewColumnSizing.GROW_ONLY column.props.resizable = True column.props.reorderable = True column.props.expand = True column.set_sort_column_id(self._model.column_date) column.pack_start(cell_text, True) column.add_attribute(cell_text, "text", self._model.column_date_text) self.append_column(column) self.set_search_column(self._model.column_title) self.set_enable_search(False)
def hide_view_buttons(self): for i in range(desktop.get_number_of_views()): self._favorites_buttons[i].hide() self._list_button.hide()