[gnome-shell-extensions] StatusMenu: update to latest GNOME Shell API
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell-extensions] StatusMenu: update to latest GNOME Shell API
- Date: Tue, 26 Apr 2011 13:36:17 +0000 (UTC)
commit 6756ad4630ea6fb28281c099e0387bff6e8de674
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Tue Apr 26 15:11:00 2011 +0200
StatusMenu: update to latest GNOME Shell API
The hook to access the status menu was changed in panel.js. Also
replace the alternating menu item with two separate menu items (which
side-steps bug 643631) and use own translations instead of those
provided by gnome-shell (so Hibernate is translated)
extensions/alternative-status-menu/extension.js | 71 ++++++++++------------
1 files changed, 32 insertions(+), 39 deletions(-)
---
diff --git a/extensions/alternative-status-menu/extension.js b/extensions/alternative-status-menu/extension.js
index 10616fe..25a9025 100644
--- a/extensions/alternative-status-menu/extension.js
+++ b/extensions/alternative-status-menu/extension.js
@@ -2,48 +2,35 @@
const Lang = imports.lang;
const St = imports.gi.St;
-
const Main = imports.ui.main;
const PopupMenu = imports.ui.popupMenu;
const GnomeSession = imports.misc.gnomeSession;
-const Gettext = imports.gettext.domain('gnome-shell');
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;
-function updateSuspendOrHibernate(object, pspec, item) {
- let canSuspend = this._upClient.get_can_suspend();
- let canHibernate = this._upClient.get_can_hibernate();
-
- if (!canSuspend && !canHibernate) {
- item.actor.hide();
- return;
- } else
- item.actor.show();
- if (!canSuspend && canHibernate) {
- item.updateText(_("Hibernate"), null);
- return;
- }
- let suspendText = _("Suspend");
- let hibernateText = canHibernate ? _("Hibernate") : null;
- item.updateText(suspendText, hibernateText);
+function updateSuspend(object, pspec, item) {
+ item.actor.visible = object.get_can_suspend();
+}
+
+function updateHibernate(object, pspec, item) {
+ item.actor.visible = object.get_can_hibernate();
+}
+
+function onSuspendActivate(item) {
+ Main.overview.hide();
+
+ this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
+ this._upClient.suspend_sync(null);
+ }));
}
-function onSuspendOrHibernateActivate(item) {
+function onHibernateActivate(item) {
Main.overview.hide();
- let haveSuspend = this._upClient.get_can_suspend();
- let haveHibernate = this._upClient.get_can_hibernate();
-
- if (haveSuspend &&
- item.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
- this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
- this._upClient.suspend_sync(null);
- }));
- } else {
- this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
- this._upClient.hibernate_sync(null);
- }));
- }
+ this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
+ this._upClient.hibernate_sync(null);
+ }));
}
function createSubMenu() {
@@ -89,13 +76,17 @@ function createSubMenu() {
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
- item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
- _("Hibernate"));
+ item = new PopupMenu.PopupMenuItem(_("Suspend"));
+ item.connect('activate', Lang.bind(this, onSuspendActivate));
+ this._upClient.connect('notify::can-suspend', Lang.bind(this, updateSuspend, item));
+ updateSuspend(this._upClient, null, item);
+ this.menu.addMenuItem(item);
+
+ item = new PopupMenu.PopupMenuItem(_("Hibernate"));
+ item.connect('activate', Lang.bind(this, onHibernateActivate));
+ this._upClient.connect('notify::can-hibernate', Lang.bind(this, updateHibernate, item));
+ updateHibernate(this._upClient, null, item);
this.menu.addMenuItem(item);
- item.connect('activate', Lang.bind(this, onSuspendOrHibernateActivate));
- this._upClient.connect('notify::can-suspend', Lang.bind(this, updateSuspendOrHibernate, item));
- this._upClient.connect('notify::can-hibernate', Lang.bind(this, updateSuspendOrHibernate, item));
- updateSuspendOrHibernate.call(this, null, null, item);
item = new PopupMenu.PopupMenuItem(_("Power Off..."));
item.connect('activate', Lang.bind(this, function() {
@@ -106,7 +97,9 @@ function createSubMenu() {
// Put your extension initialization code here
function main(metadata) {
- let statusMenu = Main.panel._statusmenu;
+ imports.gettext.bindtextdomain('gnome-shell-extensions', metadata.localedir);
+
+ let statusMenu = Main.panel._userMenu;
statusMenu.menu.removeAll();
createSubMenu.call(statusMenu);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]