def load(self, window): self.window = window self.spices = Spice_Harvester(self.collection_type, self.window) self.stack = SettingsStack() self.add_widget(self.stack) self.stack.expand = True manage_extensions_page = ManageDeskletsPage(self, self.spices, self.window) self.stack.add_titled(manage_extensions_page, 'installed', _("Manage desklets")) download_desklets_page = DownloadSpicesPage(self, self.collection_type, self.spices, self.window) self.stack.add_titled(download_desklets_page, 'more', _("Download desklets")) page = SettingsPage() self.stack.add_titled(page, 'general', _("General Settings")) settings = page.add_section(_("General Desklets Settings")) dec = [[0, _("No decoration")], [1, _("Border only")], [2, _("Border and header")]] widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) combo_box = GSettingsComboBox(_("Decoration of desklets"), "org.cinnamon", "desklet-decorations", dec, valtype="int") widget.pack_start(combo_box, False, False, 0) line1 = Gtk.Label() line1.set_markup("<i><small>%s</small></i>" % _( "Note: Some desklets require the border/header to be always present" )) line1.get_style_context().add_class("dim-label") widget.pack_start(line1, True, True, 0) line2 = Gtk.Label() line2.set_markup( "<i><small>%s</small></i>" % _("Such requirements override the settings selected here")) line2.get_style_context().add_class("dim-label") widget.pack_start(line2, True, True, 0) settings.add_row(widget) settings.add_row( GSettingsSwitch(_("Snap desklets to grid"), "org.cinnamon", "desklet-snap")) settings.add_reveal_row( GSettingsSpinButton(_("Width of desklet snap grid"), "org.cinnamon", "desklet-snap-interval", "", 0, 100, 1, 5), "org.cinnamon", "desklet-snap")
def load(self, window): self.window = window self.spices = Spice_Harvester(self.collection_type, self.window) self.stack = SettingsStack() self.add_widget(self.stack) self.stack.expand = True manage_extensions_page = ManageAppletsPage(self, self.spices, window) self.stack.add_titled(manage_extensions_page, "installed", _("Manage")) download_applets_page = DownloadSpicesPage(self, self.collection_type, self.spices, window) self.stack.add_titled(download_applets_page, "more", _("Download"))
def on_module_selected(self): if not self.loaded: print("Loading Themes module") self.spices = Spice_Harvester('theme', self.window) self.sidePage.stack = SettingsStack() self.sidePage.add_widget(self.sidePage.stack) self.settings = Gio.Settings.new("org.cinnamon.desktop.interface") self.wm_settings = Gio.Settings.new( "org.cinnamon.desktop.wm.preferences") self.cinnamon_settings = Gio.Settings.new("org.cinnamon.theme") self.scale = self.window.get_scale_factor() self.icon_chooser = self.create_button_chooser( self.settings, 'icon-theme', 'icons', 'icons', button_picture_size=ICON_SIZE, menu_pictures_size=ICON_SIZE, num_cols=4) self.cursor_chooser = self.create_button_chooser( self.settings, 'cursor-theme', 'icons', 'cursors', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.theme_chooser = self.create_button_chooser( self.settings, 'gtk-theme', 'themes', 'gtk-3.0', button_picture_size=35, menu_pictures_size=35, num_cols=4) self.metacity_chooser = self.create_button_chooser( self.wm_settings, 'theme', 'themes', 'metacity-1', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.cinnamon_chooser = self.create_button_chooser( self.cinnamon_settings, 'name', 'themes', 'cinnamon', button_picture_size=60, menu_pictures_size=60 * self.scale, num_cols=4) page = SettingsPage() self.sidePage.stack.add_titled(page, "themes", _("Themes")) settings = page.add_section(_("Themes")) widget = self.make_group(_("Window borders"), self.metacity_chooser) settings.add_row(widget) widget = self.make_group(_("Icons"), self.icon_chooser) settings.add_row(widget) widget = self.make_group(_("Controls"), self.theme_chooser) settings.add_row(widget) widget = self.make_group(_("Mouse Pointer"), self.cursor_chooser) settings.add_row(widget) widget = self.make_group(_("Desktop"), self.cinnamon_chooser) settings.add_row(widget) page = DownloadSpicesPage(self, 'theme', self.spices, self.window) self.sidePage.stack.add_titled(page, 'download', _("Add/Remove")) page = SettingsPage() self.sidePage.stack.add_titled(page, "options", _("Settings")) settings = page.add_section(_("Miscellaneous options")) widget = GSettingsSwitch( _("Show icons in menus"), "org.cinnamon.settings-daemon.plugins.xsettings", "menus-have-icons") settings.add_row(widget) widget = GSettingsSwitch( _("Show icons on buttons"), "org.cinnamon.settings-daemon.plugins.xsettings", "buttons-have-icons") settings.add_row(widget) settings = page.add_section(_("Scrollbar behavior")) # Translators: The 'trough' is the part of the scrollbar that the 'handle' # rides in. This setting determines whether clicking in that trough somewhere # jumps directly to the new position, or if it only scrolls towards it. switch = GtkSettingsSwitch( _("Jump to position when clicking in a trough"), "gtk-primary-button-warps-slider") settings.add_row(switch) widget = GSettingsSwitch(_("Use overlay scroll bars"), "org.cinnamon.desktop.interface", "gtk-overlay-scrollbars") settings.add_row(widget) self.gtk2_scrollbar_editor = Gtk2ScrollbarSizeEditor( widget.get_scale_factor()) switch = CssOverrideSwitch( _("Override the current theme's scrollbar width")) settings.add_row(switch) self.scrollbar_switch = switch.content_widget widget = CssRange(_("Scrollbar width"), "scrollbar slider", ["min-width", "min-height"], 2, 40, "px", None, switch) settings.add_reveal_row(widget) widget.sync_initial_switch_state() self.scrollbar_css_range = widget.content_widget self.scrollbar_css_range.get_adjustment().set_page_increment(2.0) switch.content_widget.connect("notify::active", self.on_css_override_active_changed) widget.content_widget.connect("value-changed", self.on_range_slider_value_changed) self.on_css_override_active_changed(switch) widget = PreviewWidget() settings.add_row(widget) label_widget = LabelRow( _("""Changes will take effect the next time you log in and may not affect all applications.""" )) settings.add_row(label_widget) self.builder = self.sidePage.builder for path in [ os.path.expanduser("~/.themes"), os.path.expanduser("~/.icons") ]: try: os.makedirs(path) except OSError: pass self.monitors = [] for path in [ os.path.expanduser("~/.themes"), "/usr/share/themes", os.path.expanduser("~/.icons"), "/usr/share/icons" ]: if os.path.exists(path): file_obj = Gio.File.new_for_path(path) try: file_monitor = file_obj.monitor_directory( Gio.FileMonitorFlags.SEND_MOVED, None) file_monitor.connect("changed", self.on_file_changed) self.monitors.append(file_monitor) except Exception as e: # File monitors can fail when the OS runs out of file handles print(e) self.refresh()
def on_module_selected(self): if not self.loaded: print("Loading Themes module") self.spices = Spice_Harvester('theme', self.window) self.sidePage.stack = SettingsStack() self.sidePage.add_widget(self.sidePage.stack) self.settings = Gio.Settings.new("org.cinnamon.desktop.interface") self.wm_settings = Gio.Settings.new( "org.cinnamon.desktop.wm.preferences") self.cinnamon_settings = Gio.Settings.new("org.cinnamon.theme") self.icon_chooser = self.create_button_chooser( self.settings, 'icon-theme', 'icons', 'icons', button_picture_size=ICON_SIZE, menu_pictures_size=ICON_SIZE, num_cols=4) self.cursor_chooser = self.create_button_chooser( self.settings, 'cursor-theme', 'icons', 'cursors', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.theme_chooser = self.create_button_chooser( self.settings, 'gtk-theme', 'themes', 'gtk-3.0', button_picture_size=35, menu_pictures_size=35, num_cols=4) self.metacity_chooser = self.create_button_chooser( self.wm_settings, 'theme', 'themes', 'metacity-1', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.cinnamon_chooser = self.create_button_chooser( self.cinnamon_settings, 'name', 'themes', 'cinnamon', button_picture_size=60, menu_pictures_size=60, num_cols=4) page = SettingsPage() self.sidePage.stack.add_titled(page, "themes", _("Themes")) settings = page.add_section(_("Themes")) widget = self.make_group(_("Window borders"), self.metacity_chooser) settings.add_row(widget) widget = self.make_group(_("Icons"), self.icon_chooser) settings.add_row(widget) widget = self.make_group(_("Controls"), self.theme_chooser) settings.add_row(widget) widget = self.make_group(_("Mouse Pointer"), self.cursor_chooser) settings.add_row(widget) widget = self.make_group(_("Desktop"), self.cinnamon_chooser) settings.add_row(widget) page = DownloadSpicesPage(self, 'theme', self.spices, self.window) self.sidePage.stack.add_titled(page, 'download', _("Add/Remove")) page = SettingsPage() self.sidePage.stack.add_titled(page, "options", _("Settings")) settings = page.add_section(_("Miscellaneous options")) widget = GSettingsSwitch( _("Show icons in menus"), "org.cinnamon.settings-daemon.plugins.xsettings", "menus-have-icons") settings.add_row(widget) widget = GSettingsSwitch( _("Show icons on buttons"), "org.cinnamon.settings-daemon.plugins.xsettings", "buttons-have-icons") settings.add_row(widget) widget = GSettingsSpinButton( _("Size of symbolic icons when icons are 16px"), "org.cinnamon.theme", "symbolic-size-16", mini=1, maxi=64, step=1) settings.add_row(widget) widget = GSettingsSpinButton( _("Size of symbolic icons when icons are 22px"), "org.cinnamon.theme", "symbolic-size-22", mini=1, maxi=64, step=1) settings.add_row(widget) widget = GSettingsSpinButton( _("Size of symbolic icons when icons are 24px"), "org.cinnamon.theme", "symbolic-size-24", mini=1, maxi=64, step=1) settings.add_row(widget) widget = GSettingsSpinButton( _("Size of symbolic icons when icons are 32px"), "org.cinnamon.theme", "symbolic-size-32", mini=1, maxi=64, step=1) settings.add_row(widget) widget = GSettingsSpinButton( _("Size of symbolic icons when icons are 48px"), "org.cinnamon.theme", "symbolic-size-48", mini=1, maxi=64, step=1) settings.add_row(widget) self.builder = self.sidePage.builder for path in [ os.path.expanduser("~/.themes"), os.path.expanduser("~/.icons") ]: try: os.makedirs(path) except OSError: pass self.monitors = [] for path in [ os.path.expanduser("~/.themes"), "/usr/share/themes", os.path.expanduser("~/.icons"), "/usr/share/icons" ]: if os.path.exists(path): file_obj = Gio.File.new_for_path(path) try: file_monitor = file_obj.monitor_directory( Gio.FileMonitorFlags.SEND_MOVED, None) file_monitor.connect("changed", self.on_file_changed) self.monitors.append(file_monitor) except Exception as e: # File monitors can fail when the OS runs out of file handles print(e) self.refresh()
def on_module_selected(self): if not self.loaded: print("Loading Themes module") self.spices = Spice_Harvester('theme', self.window) self.sidePage.stack = SettingsStack() self.sidePage.add_widget(self.sidePage.stack) self.settings = Gio.Settings.new("org.cinnamon.desktop.interface") self.wm_settings = Gio.Settings.new( "org.cinnamon.desktop.wm.preferences") self.cinnamon_settings = Gio.Settings.new("org.cinnamon.theme") self.icon_chooser = self.create_button_chooser( self.settings, 'icon-theme', 'icons', 'icons', button_picture_size=ICON_SIZE, menu_pictures_size=ICON_SIZE, num_cols=4) self.cursor_chooser = self.create_button_chooser( self.settings, 'cursor-theme', 'icons', 'cursors', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.theme_chooser = self.create_button_chooser( self.settings, 'gtk-theme', 'themes', 'gtk-3.0', button_picture_size=35, menu_pictures_size=35, num_cols=4) self.metacity_chooser = self.create_button_chooser( self.wm_settings, 'theme', 'themes', 'metacity-1', button_picture_size=32, menu_pictures_size=32, num_cols=4) self.cinnamon_chooser = self.create_button_chooser( self.cinnamon_settings, 'name', 'themes', 'cinnamon', button_picture_size=60, menu_pictures_size=60, num_cols=4) page = SettingsPage() self.sidePage.stack.add_titled(page, "themes", _("Themes")) settings = page.add_section(_("Themes")) widget = self.make_group(_("Window borders"), self.metacity_chooser) settings.add_row(widget) widget = self.make_group(_("Icons"), self.icon_chooser) settings.add_row(widget) widget = self.make_group(_("Controls"), self.theme_chooser) settings.add_row(widget) widget = self.make_group(_("Mouse Pointer"), self.cursor_chooser) settings.add_row(widget) widget = self.make_group(_("Desktop"), self.cinnamon_chooser) settings.add_row(widget) page = DownloadSpicesPage(self, 'theme', self.spices, self.window) self.sidePage.stack.add_titled(page, 'download', _("Add/Remove")) page = SettingsPage() self.sidePage.stack.add_titled(page, "options", _("Settings")) settings = page.add_section(_("Miscellaneous options")) widget = GSettingsSwitch( _("Show icons in menus"), "org.cinnamon.settings-daemon.plugins.xsettings", "menus-have-icons") settings.add_row(widget) widget = GSettingsSwitch( _("Show icons on buttons"), "org.cinnamon.settings-daemon.plugins.xsettings", "buttons-have-icons") settings.add_row(widget) dark_text = _( "Use a dark theme variant when available in certain applications" ) dark_italic = _( "(Applications must be restarted for this change to take effect)" ) widget = GtkSettingsSwitch( "%s\n<i><small>%s</small></i>" % (dark_text, dark_italic), "gtk-application-prefer-dark-theme") settings.add_row(widget) self.builder = self.sidePage.builder for path in [ os.path.expanduser("~/.themes"), os.path.expanduser("~/.icons") ]: try: os.makedirs(path) except OSError: pass self.monitors = [] for path in [ os.path.expanduser("~/.themes"), "/usr/share/themes", os.path.expanduser("~/.icons"), "/usr/share/icons" ]: if os.path.exists(path): file_obj = Gio.File.new_for_path(path) file_monitor = file_obj.monitor_directory( Gio.FileMonitorFlags.SEND_MOVED, None) file_monitor.connect("changed", self.on_file_changed) self.monitors.append(file_monitor) self.refresh()
def build(self, advanced): # Clear all the widgets from the content box widgets = self.content_box.get_children() for widget in widgets: self.content_box.remove(widget) scrolledWindow = Gtk.ScrolledWindow() scrolledWindow.set_shadow_type(Gtk.ShadowType.ETCHED_IN) scrolledWindow.set_border_width(6) self.notebook = Gtk.Notebook() applets_vbox = Gtk.VBox() self.search_entry = Gtk.Entry() self.search_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, 'edit-find') self.search_entry.set_placeholder_text(_("Search applets")) self.search_entry.connect('changed', self.on_entry_refilter) self.notebook.append_page(applets_vbox, Gtk.Label(_("Installed"))) self.content_box.add(self.notebook) self.treeview = Gtk.TreeView() cr = Gtk.CellRendererToggle() cr.connect("toggled", self.toggled, self.treeview) column1 = Gtk.TreeViewColumn(_("Enable"), cr) column1.set_cell_data_func(cr, self.celldatafunction_checkbox) column1.set_resizable(True) column2 = Gtk.TreeViewColumn(_("Icon"), Gtk.CellRendererPixbuf(), pixbuf=4) column2.set_resizable(True) column3 = Gtk.TreeViewColumn(_("Description"), Gtk.CellRendererText(), markup=1) column3.set_resizable(True) column3.set_max_width(450) cr = Gtk.CellRendererText() actionColumn = Gtk.TreeViewColumn(_("Action"), cr) actionColumn.set_cell_data_func(cr, self._action_data_func) self.treeview.append_column(column2) self.treeview.append_column(column3) self.treeview.append_column(actionColumn) self.treeview.set_headers_visible(False) self.model = Gtk.TreeStore(str, str, int, int, GdkPixbuf.Pixbuf, str, int, bool, str) # uuid, desc, enabled, max-instances, icon, name, read-only, hide-config-button, ext-setting-app self.modelfilter = self.model.filter_new() self.onlyActive = True self.modelfilter.set_visible_func(self.only_active) self.treeview.set_model(self.modelfilter) self.treeview.set_search_column(5) self.treeview.set_search_entry(self.search_entry) # Find the enabled applets self.settings = Gio.Settings.new("org.cinnamon") self.enabled_applets = self.settings.get_strv("enabled-applets") self.load_applets() self.model.set_sort_column_id(5, Gtk.SortType.ASCENDING) # Sort by name self.settings.connect("changed::enabled-applets", lambda x,y: self._enabled_applets_changed()) scrolledWindow.add(self.treeview) self.treeview.connect('button_press_event', self.on_button_press_event) self.instanceButton = Gtk.Button(_("Add to panel")) self.instanceButton.connect("clicked", lambda x: self._add_another_instance()) self.instanceButton.set_tooltip_text(_("Some applets can be added multiple times.\nUse this to add another instance. Use panel edit mode to remove a single instance.")) self.instanceButton.set_sensitive(False); self.configureButton = Gtk.Button(_("Configure")) self.configureButton.connect("clicked", self._configure_applet) self.configureButton.set_tooltip_text(_("Configure this applet")) self.extConfigureButton = Gtk.Button(_("Configure")) self.extConfigureButton.connect("clicked", self._external_configure_launch) self.extConfigureButton.set_tooltip_text(_("Configure this applet")) restoreButton = Gtk.Button(_("Restore to default")) restoreButton.connect("clicked", lambda x: self._restore_default_applets()) # Installed hbox = Gtk.HBox() self.activeButton = Gtk.ToggleButton(_("Active")) self.inactiveButton = Gtk.ToggleButton(_("Inactive")) self.activeButton.set_active(True) self.inactiveButton.set_active(False) self.activeHandler = self.activeButton.connect("toggled", self._filter_toggle) self.inactiveHandler = self.inactiveButton.connect("toggled", self._filter_toggle) buttonbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL) buttonbox.set_spacing(6) buttonbox.pack_start(self.activeButton, False, False, 0) buttonbox.pack_start(self.inactiveButton, False, False, 0) hbox.pack_start(buttonbox, False, False, 4) hbox.pack_end(self.search_entry, False, False, 4) applets_vbox.pack_start(hbox, False, False, 4) hbox.show() self.search_entry.show() applets_vbox.pack_start(scrolledWindow, True, True, 0) hbox = Gtk.HBox() applets_vbox.pack_start(hbox, False, True, 5) buttonbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL) buttonbox.set_layout(Gtk.ButtonBoxStyle.START); buttonbox.set_spacing(5) hbox.pack_start(buttonbox, True, True, 5) hbox.xalign = 1.0 img = Gtk.Image.new_from_stock("gtk-add", Gtk.IconSize.BUTTON) self.instanceButton.set_image(img) img = Gtk.Image.new_from_stock("gtk-properties", Gtk.IconSize.BUTTON) self.configureButton.set_image(img) img = Gtk.Image.new_from_stock("gtk-properties", Gtk.IconSize.BUTTON) self.extConfigureButton.set_image(img) buttonbox.pack_start(self.instanceButton, False, False, 0) buttonbox.pack_start(self.configureButton, False, False, 0) buttonbox.pack_start(self.extConfigureButton, False, False, 0) rightbuttonbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL); rightbuttonbox.set_layout(Gtk.ButtonBoxStyle.END); rightbuttonbox.pack_start(restoreButton, False, False, 0) hbox.pack_end(rightbuttonbox, False, False, 5) self.configureButton.hide() self.configureButton.set_no_show_all(True) self.extConfigureButton.hide() self.extConfigureButton.set_no_show_all(True) # Get More - Variables prefixed with "gm_" where necessary gm_scrolled_window = Gtk.ScrolledWindow() gm_scrolled_window.set_shadow_type(Gtk.ShadowType.ETCHED_IN) gm_scrolled_window.set_border_width(6) getmore_vbox = Gtk.VBox() getmore_vbox.set_border_width(0) getmore_label = Gtk.Label(_("Get more online")) self.notebook.append_page(getmore_vbox, getmore_label) self.notebook.connect("switch-page", self.on_page_changed) self.gm_combosort = Gtk.ComboBox() renderer_text = Gtk.CellRendererText() self.gm_combosort.pack_start(renderer_text, True) sortTypes=Gtk.ListStore(int, str) sortTypes.append([self.SORT_NAME, _("Name")]) sortTypes.append([self.SORT_RATING, _("Most popular")]) sortTypes.append([self.SORT_DATE_EDITED, _("Latest")]) self.gm_combosort.set_model(sortTypes) self.gm_combosort.set_entry_text_column(1) self.gm_combosort.set_active(1) #Rating self.gm_combosort.connect('changed', self.gm_changed_sorting) self.gm_combosort.add_attribute(renderer_text, "text", 1) self.gm_combosort.show() hbox = Gtk.HBox() #hbox.set_margin_bottom(2) sortLabel = Gtk.Label() sortLabel.set_text("Sort by") sortLabel.show() hbox.pack_start(sortLabel, False, False, 4) hbox.pack_start(self.gm_combosort, False, False, 2) hbox.show() self.gm_search_entry = Gtk.Entry() self.gm_search_entry.connect('changed', self.gm_on_entry_refilter) self.gm_search_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, 'edit-find') self.gm_search_entry.set_placeholder_text(_("Search applets")) hbox.pack_end(self.gm_search_entry, False, False, 4) self.search_entry.show() getmore_vbox.pack_start(hbox, False, False, 4) # MODEL self.gm_model = Gtk.TreeStore(str, str, int, GdkPixbuf.Pixbuf, int, str, int) # uuid, name, install, icon, score self.gm_model.set_sort_column_id(4, Gtk.SortType.DESCENDING) # TREE self.gm_modelfilter = self.gm_model.filter_new() self.gm_modelfilter.set_visible_func(self.gm_match_func) self.gm_treeview = Gtk.TreeView() gm_cr = Gtk.CellRendererToggle() gm_cr.connect("toggled", self.gm_toggled, self.gm_treeview) gm_column1 = Gtk.TreeViewColumn(_("Install"), gm_cr) gm_column1.set_cell_data_func(gm_cr, self.gm_celldatafunction_checkbox) gm_column1.set_resizable(True) gm_column2 = Gtk.TreeViewColumn(_("Icon"), Gtk.CellRendererPixbuf(), pixbuf=3) gm_column2.set_resizable(True) gm_column3 = Gtk.TreeViewColumn(_("Description"), Gtk.CellRendererText(), markup=1) gm_column3.set_resizable(True) gm_column3.set_max_width(400) cr = Gtk.CellRendererText() actionColumn = Gtk.TreeViewColumn(_("Action"), cr) actionColumn.set_cell_data_func(cr, self._gm_action_data_func) actionColumn.set_max_width(70) right = Gtk.CellRendererText() right.set_property('xalign', 1.0) gm_column4 = Gtk.TreeViewColumn(_("Score"), right, markup=4) gm_column4.set_resizable(True) gm_column4.set_alignment(1.0) self.gm_treeview.append_column(gm_column1) self.gm_treeview.append_column(gm_column2) self.gm_treeview.append_column(gm_column3) self.gm_treeview.append_column(actionColumn) self.gm_treeview.append_column(gm_column4) self.gm_treeview.set_headers_visible(False) self.gm_treeview.set_model(self.gm_modelfilter) self.gm_treeview.set_search_column(5) self.gm_treeview.set_search_entry(self.gm_search_entry) gm_scrolled_window.add(self.gm_treeview) self.gm_treeview.connect('motion_notify_event', self.gm_on_motion_notify_event) self.gm_treeview.connect('button_press_event', self.gm_on_button_press_event) getmore_vbox.add(gm_scrolled_window) hbox = Gtk.HBox() buttonbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL) buttonbox.set_spacing(6) self.install_button = Gtk.Button(_("Install selected")) reload_button = Gtk.Button(_("Refresh list")) buttonbox.pack_start(self.install_button, False, False, 2) buttonbox.pack_end(reload_button, False, False, 2) hbox.pack_start(buttonbox, True, True, 5) getmore_vbox.pack_end(hbox, False, True, 5) reload_button.connect("clicked", lambda x: self.load_spices(True)) self.install_button.connect("clicked", lambda x: self.install_applets()) self.content_box.show_all() self.treeview.get_selection().connect("changed", lambda x: self._selection_changed()); self.install_list = [] self.spices = Spice_Harvester('applets', self.window, self.builder, self.on_enable_new_applet) if not self.spices.get_webkit_enabled(): getmore_label.set_sensitive(False) reload_button.set_sensitive(False) self.spices.scrubConfigDirs(self.enabled_applets) if len(sys.argv) > 2: for row in self.model: uuid = self.model.get_value(row.iter, 0) if uuid == sys.argv[2]: path = self.model.get_path(row.iter) filtered = self.treeview.get_model().convert_child_path_to_path(path) if filtered is not None: self.treeview.get_selection().select_path(filtered) self.treeview.scroll_to_cell(filtered, None, False, 0, 0) if self.configureButton.get_visible() and self.configureButton.get_sensitive(): self.configureButton.clicked() elif self.extConfigureButton.get_visible() and self.extConfigureButton.get_sensitive(): self.extConfigureButton.clicked()