diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2008-12-22 10:01:45 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2008-12-22 10:01:45 (GMT) |
commit | bd4351a477810b1a8b37c696a62b34fcd600a7e8 (patch) | |
tree | ff7d69ba35ac4947fbf3b38b3116f82b3f6de0a0 /extensions | |
parent | 119b8bf680d19e2bd2aabac3aa1ba86d9ef78ca0 (diff) |
Add system palette to the frame (Ryan Kabir)
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/deviceicon/xomenu.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/extensions/deviceicon/xomenu.py b/extensions/deviceicon/xomenu.py new file mode 100644 index 0000000..2f3f425 --- /dev/null +++ b/extensions/deviceicon/xomenu.py @@ -0,0 +1,98 @@ +# Copyright (C) 2008 Ryan Kabir +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +from gettext import gettext as _ +import gconf + +import gobject +import gtk +import hippo + +from sugar.graphics import style +from sugar.graphics.menuitem import MenuItem +from sugar.graphics.tray import TrayIcon +from sugar.graphics.palette import Palette +from sugar.graphics.xocolor import XoColor + +from jarabe.frame.frameinvoker import FrameWidgetInvoker +from jarabe.controlpanel.gui import ControlPanel +from jarabe.model.session import get_session_manager + +_ICON_NAME = 'computer-xo' + + +class SystemView(TrayIcon): + + FRAME_POSITION_RELATIVE = 800 + + def __init__(self): + client = gconf.client_get_default() + self._color = XoColor(client.get_string('/desktop/sugar/user/color')) + + TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=self._color) + + self.palette = SystemPalette(_('System functions') ) + self.palette.props.invoker = FrameWidgetInvoker(self) + self.palette.set_group_id('frame') + + name = _ICON_NAME + self.icon.props.icon_name = _ICON_NAME + + def controlpanel_activate_cb(self, *args): + panel = ControlPanel() + panel.set_transient_for(self.get_toplevel()) + panel.show() + + +class SystemPalette(Palette): + def __init__(self, primary_text): + Palette.__init__(self, label=primary_text) + vbox = gtk.VBox() + self.set_content(vbox) + vbox.show() + + item = MenuItem(_('Settings'), 'preferences-system') + item.connect('activate', self.__controlpanel_activate_cb) + self.menu.append(item) + item.show() + + item = MenuItem(_('Restart'), 'system-restart') + item.connect('activate', self._reboot_activate_cb) + self.menu.append(item) + item.show() + + item = MenuItem(_('Shutdown'), 'system-shutdown') + item.connect('activate', self._shutdown_activate_cb) + self.menu.append(item) + item.show() + + + def _reboot_activate_cb(self, menuitem): + session_manager = get_session_manager() + session_manager.reboot() + + def _shutdown_activate_cb(self, menuitem): + session_manager = get_session_manager() + session_manager.shutdown() + + def __controlpanel_activate_cb(self, menuitem): + panel = ControlPanel() + panel.set_transient_for(self.get_toplevel()) + panel.show() + + +def setup(tray): + tray.add_device(SystemView()) |