def __init__(self, label, default_icon=None, icon_categories=[], default_category=None, expand_width=False, size_group=None, dep_key=None, tooltip=""): super(IconChooser, self).__init__(dep_key=dep_key) self.label = SettingsLabel(label) self.content_widget = XApp.IconChooserButton() self.content_widget.set_icon_size(Gtk.IconSize.BUTTON) dialog = self.content_widget.get_dialog() if default_icon: dialog.set_default_icon(default_icon) for category in icon_categories: dialog.add_custom_category(category['name'], category['icons']) if default_category is not None: self.content_widget.set_default_category(default_category) self.pack_start(self.label, False, False, 0) self.pack_end(self.content_widget, expand_width, expand_width, 0) self.set_tooltip_text(tooltip) if size_group: self.add_to_size_group(size_group)
def __init__(self, label, expand_width=False, size_group=None, dep_key=None, tooltip=""): super(IconChooser, self).__init__(dep_key=dep_key) self.label = SettingsLabel(label) self.content_widget = XApp.IconChooserButton() self.content_widget.set_icon_size(Gtk.IconSize.BUTTON) self.pack_start(self.label, False, False, 0) self.pack_end(self.content_widget, expand_width, expand_width, 0) self.set_tooltip_text(tooltip) if size_group: self.add_to_size_group(size_group)
def __init__(self, application): self.application = application self.settings = Gio.Settings(schema_id="org.x.webapp-manager") self.manager = WebAppManager() self.selected_webapp = None self.icon_theme = Gtk.IconTheme.get_default() # Set the Glade file gladefile = "/usr/share/webapp-manager/webapp-manager.ui" self.builder = Gtk.Builder() self.builder.set_translation_domain(APP) self.builder.add_from_file(gladefile) self.window = self.builder.get_object("main_window") self.window.set_title(_("Web Apps")) self.window.set_icon_name("webapp-manager") self.stack = self.builder.get_object("stack") self.icon_chooser = XApp.IconChooserButton() self.builder.get_object("icon_button_box").pack_start( self.icon_chooser, 0, True, True) self.icon_chooser.set_icon("webapp-manager") self.icon_chooser.show() # Create variables to quickly access dynamic widgets self.headerbar = self.builder.get_object("headerbar") self.favicon_button = self.builder.get_object("favicon_button") self.add_button = self.builder.get_object("add_button") self.remove_button = self.builder.get_object("remove_button") self.edit_button = self.builder.get_object("edit_button") self.run_button = self.builder.get_object("run_button") self.ok_button = self.builder.get_object("ok_button") self.name_entry = self.builder.get_object("name_entry") self.url_entry = self.builder.get_object("url_entry") self.url_label = self.builder.get_object("url_label") self.isolated_switch = self.builder.get_object("isolated_switch") self.isolated_label = self.builder.get_object("isolated_label") self.navbar_switch = self.builder.get_object("navbar_switch") self.navbar_label = self.builder.get_object("navbar_label") self.spinner = self.builder.get_object("spinner") self.favicon_stack = self.builder.get_object("favicon_stack") self.browser_combo = self.builder.get_object("browser_combo") self.browser_label = self.builder.get_object("browser_label") # Widgets which are in the add page but not the edit page self.add_specific_widgets = [ self.browser_label, self.browser_combo, self.isolated_label, self.isolated_switch, self.navbar_label, self.navbar_switch ] # Widget signals self.add_button.connect("clicked", self.on_add_button) self.builder.get_object("cancel_button").connect( "clicked", self.on_cancel_button) self.builder.get_object("cancel_favicon_button").connect( "clicked", self.on_cancel_favicon_button) self.remove_button.connect("clicked", self.on_remove_button) self.edit_button.connect("clicked", self.on_edit_button) self.run_button.connect("clicked", self.on_run_button) self.ok_button.connect("clicked", self.on_ok_button) self.favicon_button.connect("clicked", self.on_favicon_button) self.name_entry.connect("changed", self.on_name_entry) self.url_entry.connect("changed", self.on_url_entry) self.window.connect("key-press-event", self.on_key_press_event) # Menubar accel_group = Gtk.AccelGroup() self.window.add_accel_group(accel_group) menu = self.builder.get_object("main_menu") item = Gtk.ImageMenuItem() item.set_image( Gtk.Image.new_from_icon_name( "preferences-desktop-keyboard-shortcuts-symbolic", Gtk.IconSize.MENU)) item.set_label(_("Keyboard Shortcuts")) item.connect("activate", self.open_keyboard_shortcuts) key, mod = Gtk.accelerator_parse("<Control>K") item.add_accelerator("activate", accel_group, key, mod, Gtk.AccelFlags.VISIBLE) menu.append(item) item = Gtk.ImageMenuItem() item.set_image( Gtk.Image.new_from_icon_name("help-about-symbolic", Gtk.IconSize.MENU)) item.set_label(_("About")) item.connect("activate", self.open_about) key, mod = Gtk.accelerator_parse("F1") item.add_accelerator("activate", accel_group, key, mod, Gtk.AccelFlags.VISIBLE) menu.append(item) item = Gtk.ImageMenuItem(label=_("Quit")) image = Gtk.Image.new_from_icon_name("application-exit-symbolic", Gtk.IconSize.MENU) item.set_image(image) item.connect('activate', self.on_menu_quit) key, mod = Gtk.accelerator_parse("<Control>Q") item.add_accelerator("activate", accel_group, key, mod, Gtk.AccelFlags.VISIBLE) key, mod = Gtk.accelerator_parse("<Control>W") item.add_accelerator("activate", accel_group, key, mod, Gtk.AccelFlags.VISIBLE) menu.append(item) menu.show_all() # Treeview self.treeview = self.builder.get_object("webapps_treeview") renderer = Gtk.CellRendererPixbuf() column = Gtk.TreeViewColumn("", renderer, pixbuf=COL_ICON) column.set_cell_data_func(renderer, self.data_func_surface) self.treeview.append_column(column) column = Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=COL_NAME) column.set_sort_column_id(COL_NAME) column.set_resizable(True) self.treeview.append_column(column) self.treeview.show() self.model = Gtk.TreeStore(GdkPixbuf.Pixbuf, str, object) # icon, name, webapp self.model.set_sort_column_id(COL_NAME, Gtk.SortType.ASCENDING) self.treeview.set_model(self.model) self.treeview.get_selection().connect("changed", self.on_webapp_selected) self.treeview.connect("row-activated", self.on_webapp_activated) # Combox box category_model = Gtk.ListStore(str, str) # CATEGORY_ID, CATEGORY_NAME category_model.append(["Network", _("Internet")]) category_model.append(["WebApps", _("Web")]) category_model.append(["Utility", _("Accessories")]) category_model.append(["Game", _("Games")]) category_model.append(["Graphics", _("Graphics")]) category_model.append(["Office", _("Office")]) category_model.append(["AudioVideo", _("Sound & Video")]) category_model.append(["Development", _("Programming")]) category_model.append(["Education", _("Education")]) self.category_combo = self.builder.get_object("category_combo") renderer = Gtk.CellRendererText() self.category_combo.pack_start(renderer, True) self.category_combo.add_attribute(renderer, "text", CATEGORY_NAME) self.category_combo.set_model(category_model) self.category_combo.set_active(0) # Select 1st category browser_model = Gtk.ListStore(object, str) # BROWSER_OBJ, BROWSER_NAME num_browsers = 0 for browser in self.manager.get_supported_browsers(): if os.path.exists(browser.test_path): browser_model.append([browser, browser.name]) num_browsers += 1 renderer = Gtk.CellRendererText() self.browser_combo.pack_start(renderer, True) self.browser_combo.add_attribute(renderer, "text", BROWSER_NAME) self.browser_combo.set_model(browser_model) self.browser_combo.set_active(0) # Select 1st browser if (num_browsers < 2): self.browser_label.hide() self.browser_combo.hide() self.browser_combo.connect("changed", self.on_browser_changed) self.load_webapps() # Used by the OK button, indicates whether we're editing a web-app or adding a new one. self.edit_mode = False