extensionSystem: Add 'extension-status-changed' signal

https://bugzilla.gnome.org/show_bug.cgi?id=654770
This commit is contained in:
Jasper St. Pierre 2011-06-27 22:21:02 -04:00
parent d8a98e5467
commit a56cd3c3d6
2 changed files with 20 additions and 2 deletions

View File

@ -182,6 +182,7 @@ function disableExtension(uuid) {
} }
meta.state = ExtensionState.DISABLED; meta.state = ExtensionState.DISABLED;
_signals.emit('extension-state-changed', meta);
} }
function enableExtension(uuid) { function enableExtension(uuid) {
@ -202,12 +203,16 @@ function enableExtension(uuid) {
} }
meta.state = ExtensionState.ENABLED; meta.state = ExtensionState.ENABLED;
_signals.emit('extension-state-changed', meta);
} }
function logExtensionError(uuid, message) { function logExtensionError(uuid, message) {
if (!errors[uuid]) errors[uuid] = []; if (!errors[uuid]) errors[uuid] = [];
errors[uuid].push(message); errors[uuid].push(message);
global.logError('Extension "%s" had error: %s'.format(uuid, message)); global.logError('Extension "%s" had error: %s'.format(uuid, message));
_signals.emit('extension-state-changed', { uuid: uuid,
error: message,
state: ExtensionState.ERROR });
} }
function loadExtension(dir, enabled, type) { function loadExtension(dir, enabled, type) {
@ -268,6 +273,7 @@ function loadExtension(dir, enabled, type) {
extensionMeta[uuid] = meta; extensionMeta[uuid] = meta;
meta.type = type; meta.type = type;
meta.path = dir.get_path(); meta.path = dir.get_path();
meta.error = '';
// Default to error, we set success as the last step // Default to error, we set success as the last step
meta.state = ExtensionState.ERROR; meta.state = ExtensionState.ERROR;
@ -335,6 +341,7 @@ function loadExtension(dir, enabled, type) {
enableExtension(uuid); enableExtension(uuid);
_signals.emit('extension-loaded', meta.uuid); _signals.emit('extension-loaded', meta.uuid);
_signals.emit('extension-state-changed', meta);
global.log('Loaded extension ' + meta.uuid); global.log('Loaded extension ' + meta.uuid);
} }

View File

@ -1,6 +1,7 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionSystem = imports.ui.extensionSystem; const ExtensionSystem = imports.ui.extensionSystem;
@ -49,7 +50,8 @@ const GnomeShellIface = {
outSignature: '' outSignature: ''
} }
], ],
signals: [], signals: [{ name: 'ExtensionStatusChanged',
inSignature: 'sis' }],
properties: [{ name: 'OverviewActive', properties: [{ name: 'OverviewActive',
signature: 'b', signature: 'b',
access: 'readwrite' }, access: 'readwrite' },
@ -68,6 +70,8 @@ function GnomeShell() {
GnomeShell.prototype = { GnomeShell.prototype = {
_init: function() { _init: function() {
DBus.session.exportObject('/org/gnome/Shell', this); DBus.session.exportObject('/org/gnome/Shell', this);
ExtensionSystem.connect('extension-state-changed',
Lang.bind(this, this._extensionStateChanged));
}, },
/** /**
@ -187,7 +191,14 @@ GnomeShell.prototype = {
ApiVersion: 1, ApiVersion: 1,
ShellVersion: Config.PACKAGE_VERSION ShellVersion: Config.PACKAGE_VERSION,
_extensionStateChanged: function(_, newState) {
DBus.session.emit_signal('/org/gnome/Shell',
'org.gnome.Shell',
'ExtensionStatusChanged', 'sis',
[newState.uuid, newState.state, newState.error]);
}
}; };
DBus.conformExport(GnomeShell.prototype, GnomeShellIface); DBus.conformExport(GnomeShell.prototype, GnomeShellIface);