[gnome-shell-extensions] StatusMenu: update to latest GNOME Shell API



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]