def __init__(self, shell, ext, **options): Gtk.ListBoxRow.__init__(self) Tweak.__init__(self, ext["name"], ext.get("description", ""), **options) self.hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.hbox.props.border_width = 10 self.hbox.props.spacing = 12 self._shell = shell state = ext.get("state") uuid = ext["uuid"] self._app_id = "user/*/extensions-web/shell-extension/" + uuid.replace( '@', '_') + "/*" shell._settings.bind("disable-user-extensions", self, "sensitive", Gio.SettingsBindFlags.INVERT_BOOLEAN) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) lbl_name = Gtk.Label(xalign=0.0) name_markup = GLib.markup_escape_text(ext["name"].lower().capitalize()) lbl_name.set_markup("<span size='medium'><b>" + name_markup + "</b></span>") lbl_desc = _ExtensionDescriptionLabel(xalign=0.0, yalign=0.0, wrap=True, lines=2) desc = GLib.markup_escape_text( ext["description"].lower().capitalize().split('\n')[0]) lbl_desc.set_markup("<span size='small'>" + desc + "</span>") lbl_desc.get_style_context().add_class("dim-label") lbl_desc.props.ellipsize = Pango.EllipsizeMode.END vbox.pack_start(lbl_name, False, False, 0) vbox.pack_start(lbl_desc, False, False, 0) self.hbox.pack_start(vbox, True, True, 10) info = None warning = None sensitive = False if state == GnomeShell.EXTENSION_STATE["ENABLED"] or \ state == GnomeShell.EXTENSION_STATE["DISABLED"] or \ state == GnomeShell.EXTENSION_STATE["INITIALIZED"]: sensitive = True elif state == GnomeShell.EXTENSION_STATE["DOWNLOADING"]: info = _("Extension downloading") elif state == GnomeShell.EXTENSION_STATE["ERROR"]: warning = _("Error loading extension") elif state == GnomeShell.EXTENSION_STATE["OUT_OF_DATE"]: warning = _("Extension does not support shell version") else: warning = _("Unknown extension error") logging.critical(warning) if info: inf = self.make_image("dialog-information-symbolic", info) self.hbox.pack_start(inf, False, False, 0) if warning: wg = self.make_image("dialog-warning-symbolic", warning) self.hbox.pack_start(wg, False, False, 0) if self._shell.SUPPORTS_EXTENSION_PREFS: prefs = os.path.join(ext['path'], "prefs.js") if os.path.exists(prefs): btn = Gtk.Button.new_from_icon_name("emblem-system-symbolic", Gtk.IconSize.BUTTON) btn.props.valign = Gtk.Align.CENTER btn.connect("clicked", self._on_configure_clicked, uuid) self.hbox.pack_start(btn, False, False, 0) sw = Gtk.Switch(sensitive=sensitive) sw.props.vexpand = False sw.props.valign = Gtk.Align.CENTER sw.set_active(self._shell.extension_is_active(state, uuid)) sw.connect('notify::active', self._on_extension_toggled, uuid) self.hbox.pack_start(sw, False, False, 0) de = DisableExtension() de.connect('disable-extension', self._on_disable_extension, sw) self.add(self.hbox) self.widget_for_size_group = None
def __init__(self, shell, ext, **options): Gtk.ListBoxRow.__init__(self) Tweak.__init__(self, ext["name"], ext.get("description",""), **options) self.hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.hbox.props.border_width = 10 self.hbox.props.spacing = UI_BOX_SPACING self._shell = shell state = ext.get("state") uuid = ext["uuid"] sw = Gtk.Switch() sw.props.vexpand = False sw.props.valign = Gtk.Align.CENTER sw.set_active(self._shell.extension_is_active(state, uuid)) sw.connect('notify::active', self._on_extension_toggled, uuid) self.hbox.pack_start(sw, False, False, 0) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) lbl_name = Gtk.Label(xalign=0.0) name_markup = GLib.markup_escape_text(ext["name"].lower().capitalize()) lbl_name.set_markup("<span size='medium'><b>"+name_markup+"</b></span>") lbl_desc = Gtk.Label(xalign=0.0) desc = GLib.markup_escape_text(ext["description"].lower().capitalize().split('\n')[0]) lbl_desc.set_markup("<span foreground='#A19C9C' size='small'>"+desc+"</span>") lbl_desc.props.ellipsize = Pango.EllipsizeMode.END vbox.pack_start(lbl_name, False, False, 0) vbox.pack_start(lbl_desc, False, False, 0) self.hbox.pack_start(vbox, True, True, 10) info = None warning = None sensitive = False if state == GnomeShell.EXTENSION_STATE["ENABLED"] or \ state == GnomeShell.EXTENSION_STATE["DISABLED"] or \ state == GnomeShell.EXTENSION_STATE["INITIALIZED"]: sensitive = True elif state == GnomeShell.EXTENSION_STATE["DOWNLOADING"]: info = _("Extension downloading") elif state == GnomeShell.EXTENSION_STATE["ERROR"]: warning = _("Error loading extension") elif state == GnomeShell.EXTENSION_STATE["OUT_OF_DATE"]: warning = _("Extension does not support shell version") else: warning = _("Unknown extension error") logging.critical(warning) sw.set_sensitive(sensitive) if info: inf = self.make_image("dialog-information-symbolic", info) self.hbox.pack_start(inf, False, False, 0) if warning: wg = self.make_image("dialog-warning-symbolic", warning) self.hbox.pack_start(wg, False, False, 0) if self._shell.SUPPORTS_EXTENSION_PREFS: prefs = os.path.join(ext['path'], "prefs.js") if os.path.exists(prefs): btn = Gtk.Button.new_from_icon_name("emblem-system-symbolic", Gtk.IconSize.BUTTON) btn.props.valign = Gtk.Align.CENTER btn.connect("clicked", self._on_configure_clicked, uuid) self.hbox.pack_start(btn, False, False, 0) btn = Gtk.Button(label=_("Remove")) btn.props.vexpand = False btn.props.valign = Gtk.Align.CENTER btn.set_sensitive(False) self.hbox.pack_start(btn, False, False, 0) if ext.get("type") == GnomeShell.EXTENSION_TYPE["PER_USER"]: btn.get_style_context().add_class("suggested-action") btn.set_sensitive(True) btn.connect("clicked", self._on_extension_delete, uuid, ext["name"]) self.deleteButton = btn de = DisableExtension() de.connect('disable-extension', self._on_disable_extension, sw) self.add(self.hbox) self.widget_for_size_group = None
def disable_cb(self, action, parameter): ds = DisableExtension() ds.disable()
def __init__(self, shell, ext, **options): Gtk.ListBoxRow.__init__(self) Tweak.__init__(self, ext["name"], ext.get("description", ""), **options) self.hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.hbox.props.border_width = 10 self.hbox.props.spacing = UI_BOX_SPACING self._shell = shell state = ext.get("state") uuid = ext["uuid"] sw = Gtk.Switch() sw.props.vexpand = False sw.props.valign = Gtk.Align.CENTER sw.set_active(self._shell.extension_is_active(state, uuid)) sw.connect('notify::active', self._on_extension_toggled, uuid) self.hbox.pack_start(sw, False, False, 0) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) lbl_name = Gtk.Label(xalign=0.0) lbl_name.set_markup("<span size='medium'><b>" + ext["name"].lower().capitalize() + "</b></span>") lbl_desc = Gtk.Label(xalign=0.0) desc = ext["description"].lower().capitalize().split('\n')[0] lbl_desc.set_markup("<span foreground='#A19C9C' size='small'>" + desc + "</span>") lbl_desc.props.ellipsize = Pango.EllipsizeMode.END vbox.pack_start(lbl_name, False, False, 0) vbox.pack_start(lbl_desc, False, False, 0) self.hbox.pack_start(vbox, True, True, 10) info = None warning = None sensitive = False if state == GnomeShell.EXTENSION_STATE["ENABLED"] or \ state == GnomeShell.EXTENSION_STATE["DISABLED"] or \ state == GnomeShell.EXTENSION_STATE["INITIALIZED"]: sensitive = True elif state == GnomeShell.EXTENSION_STATE["DOWNLOADING"]: info = _("Extension downloading") elif state == GnomeShell.EXTENSION_STATE["ERROR"]: warning = _("Error loading extension") elif state == GnomeShell.EXTENSION_STATE["OUT_OF_DATE"]: warning = _("Extension does not support shell version") else: warning = _("Unknown extension error") logging.critical(warning) sw.set_sensitive(sensitive) if info: inf = self.make_image("dialog-information-symbolic", info) self.hbox.pack_start(inf, False, False, 0) if warning: wg = self.make_image("dialog-warning-symbolic", warning) self.hbox.pack_start(wg, False, False, 0) if self._shell.SUPPORTS_EXTENSION_PREFS: prefs = os.path.join(ext['path'], "prefs.js") if os.path.exists(prefs): icon = Gtk.Image() icon.set_from_icon_name("emblem-system-symbolic", Gtk.IconSize.BUTTON) btn = Gtk.Button() btn.props.vexpand = False btn.props.valign = Gtk.Align.CENTER btn.add(icon) btn.connect("clicked", self._on_configure_clicked, uuid) self.hbox.pack_start(btn, False, False, 0) btn = Gtk.Button(_("Remove")) btn.props.vexpand = False btn.props.valign = Gtk.Align.CENTER btn.set_sensitive(False) self.hbox.pack_start(btn, False, False, 0) if ext.get("type") == GnomeShell.EXTENSION_TYPE["PER_USER"]: btn.get_style_context().add_class("suggested-action") btn.set_sensitive(True) btn.connect("clicked", self._on_extension_delete, uuid, ext["name"]) self.deleteButton = btn de = DisableExtension() de.connect('disable-extension', self._on_disable_extension, sw) self.add(self.hbox) self.widget_for_size_group = None