|
|
445904 |
From b6497ea5d0e099c27b7699b936f61c257403e535 Mon Sep 17 00:00:00 2001
|
|
|
445904 |
From: Rui Matos <tiagomatos@gmail.com>
|
|
|
445904 |
Date: Thu, 7 Nov 2013 13:06:23 +0100
|
|
|
445904 |
Subject: [PATCH 3/8] shell_extensions: Add/remove tweaks as extensions are
|
|
|
445904 |
added/removed
|
|
|
445904 |
|
|
|
445904 |
---
|
|
|
445904 |
gtweak/gshellwrapper.py | 3 +++
|
|
|
445904 |
gtweak/tweaks/tweak_group_shell_extensions.py | 33 ++++++++++++++++++++++++++-
|
|
|
445904 |
2 files changed, 35 insertions(+), 1 deletion(-)
|
|
|
445904 |
|
|
|
445904 |
diff --git a/gtweak/gshellwrapper.py b/gtweak/gshellwrapper.py
|
|
|
445904 |
index 22725df..8c7e2ac 100644
|
|
|
445904 |
--- a/gtweak/gshellwrapper.py
|
|
|
445904 |
+++ b/gtweak/gshellwrapper.py
|
|
|
445904 |
@@ -184,6 +184,9 @@ class GnomeShell36(GnomeShell34):
|
|
|
445904 |
def install_remote_extension(self, uuid, reply_handler, error_handler, user_data):
|
|
|
445904 |
self._proxy.proxy_extensions.InstallRemoteExtension('(s)', uuid, result_handler=reply_handler, error_handler=error_handler, user_data=user_data)
|
|
|
445904 |
|
|
|
445904 |
+ def get_extension_info(self, uuid):
|
|
|
445904 |
+ return self._proxy.proxy_extensions.GetExtensionInfo('(s)', uuid)
|
|
|
445904 |
+
|
|
|
445904 |
@gtweak.utils.singleton
|
|
|
445904 |
class GnomeShellFactory:
|
|
|
445904 |
def __init__(self):
|
|
|
445904 |
diff --git a/gtweak/tweaks/tweak_group_shell_extensions.py b/gtweak/tweaks/tweak_group_shell_extensions.py
|
|
|
445904 |
index e33966f..fce8abf 100644
|
|
|
445904 |
--- a/gtweak/tweaks/tweak_group_shell_extensions.py
|
|
|
445904 |
+++ b/gtweak/tweaks/tweak_group_shell_extensions.py
|
|
|
445904 |
@@ -155,7 +155,7 @@ class _ShellExtensionTweak(Gtk.ListBoxRow, Tweak):
|
|
|
445904 |
btn.set_label(_("Updating"))
|
|
|
445904 |
self.set_sensitive(False)
|
|
|
445904 |
self._shell.install_remote_extension(uuid,self.reply_handler, self.error_handler, btn)
|
|
|
445904 |
-
|
|
|
445904 |
+
|
|
|
445904 |
def reply_handler(self, proxy_object, result, user_data):
|
|
|
445904 |
if result == 's':
|
|
|
445904 |
self.deleteButton.show()
|
|
|
445904 |
@@ -265,14 +265,22 @@ class _ShellExtensionInstallerTweak(Gtk.Box, Tweak):
|
|
|
445904 |
|
|
|
445904 |
class ShellExtensionTweakGroup(ListBoxTweakGroup):
|
|
|
445904 |
def __init__(self):
|
|
|
445904 |
+ self._shell = None
|
|
|
445904 |
+ self._uuids = dict()
|
|
|
445904 |
+
|
|
|
445904 |
extension_tweaks = []
|
|
|
445904 |
sg = build_horizontal_sizegroup()
|
|
|
445904 |
+ self._sg = sg
|
|
|
445904 |
|
|
|
445904 |
#check the shell is running
|
|
|
445904 |
try:
|
|
|
445904 |
shell = GnomeShellFactory().get_shell()
|
|
|
445904 |
if shell is None:
|
|
|
445904 |
raise Exception("Shell not running or DBus service not available")
|
|
|
445904 |
+ else:
|
|
|
445904 |
+ self._shell = shell
|
|
|
445904 |
+
|
|
|
445904 |
+ shell.connect('extension-status-changed', self._on_extension_status_changed)
|
|
|
445904 |
|
|
|
445904 |
version = tuple(shell.version.split("."))
|
|
|
445904 |
ego = ExtensionsDotGnomeDotOrg(version)
|
|
|
445904 |
@@ -283,6 +291,7 @@ class ShellExtensionTweakGroup(ListBoxTweakGroup):
|
|
|
445904 |
try:
|
|
|
445904 |
extension_widget = _ShellExtensionTweak(shell, extension, size_group=sg)
|
|
|
445904 |
extension_tweaks.append(extension_widget)
|
|
|
445904 |
+ self._uuids[extension["uuid"]] = extension_widget
|
|
|
445904 |
if extension.get("type") == GnomeShell.EXTENSION_TYPE["PER_USER"]:
|
|
|
445904 |
ego.connect("got-extension-info", self._got_info, extension, extension_widget)
|
|
|
445904 |
ego.query_extension_info(extension["uuid"])
|
|
|
445904 |
@@ -323,6 +332,28 @@ class ShellExtensionTweakGroup(ListBoxTweakGroup):
|
|
|
445904 |
if before and not row.get_header():
|
|
|
445904 |
row.set_header (Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL))
|
|
|
445904 |
|
|
|
445904 |
+ def _on_extension_status_changed(self, shell, uuid, state, error):
|
|
|
445904 |
+ if uuid not in self._uuids:
|
|
|
445904 |
+ self._add_extension(uuid)
|
|
|
445904 |
+ return
|
|
|
445904 |
+
|
|
|
445904 |
+ if state == GnomeShell.EXTENSION_STATE["UNINSTALLED"]:
|
|
|
445904 |
+ self.remove(self._uuids[uuid])
|
|
|
445904 |
+ del self._uuids[uuid]
|
|
|
445904 |
+
|
|
|
445904 |
+ def _add_extension(self, uuid):
|
|
|
445904 |
+ try:
|
|
|
445904 |
+ extension = self._shell.get_extension_info(uuid)
|
|
|
445904 |
+ except:
|
|
|
445904 |
+ logging.warning("Error getting extension info", exc_info=True)
|
|
|
445904 |
+ return
|
|
|
445904 |
+
|
|
|
445904 |
+ t = _ShellExtensionTweak(self._shell, extension, size_group=self._sg)
|
|
|
445904 |
+ t.show_all()
|
|
|
445904 |
+ self.add_tweak_row(t)
|
|
|
445904 |
+ self._uuids[uuid] = t
|
|
|
445904 |
+
|
|
|
445904 |
+
|
|
|
445904 |
TWEAK_GROUPS = [
|
|
|
445904 |
ShellExtensionTweakGroup(),
|
|
|
445904 |
]
|
|
|
445904 |
--
|
|
|
445904 |
2.9.3
|
|
|
445904 |
|