Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorSimon Schampijer <simon@laptop.org>2012-09-12 19:50:46 (GMT)
committer Simon Schampijer <simon@laptop.org>2012-09-13 15:25:04 (GMT)
commitaaa963cfae51a56c15f7f5075a7c41039ea61e72 (patch)
tree683849f756b5177c80a3f9ca3ca24b0def57ef22 /extensions
parent71ef2eb1411c0cb4c32ad9818001e3b2cf626ee1 (diff)
Port Sugar Palettes with mixed content to new API
As Palettes can either include a Gtk.Menu or a Gtk.Window we have to use a "false" menu when we want to have both functionality in a Palette. There is a new class PaletteMenuItem in the toolkit for that. Ported from the Frame: Journal Palette, Network Wireless Palette, Speaker Palette Signed-off-by: Simon Schampijer <simon@laptop.org> Acked-by: Manuel QuiƱones <manuq@laptop.org>
Diffstat (limited to 'extensions')
-rw-r--r--extensions/deviceicon/network.py19
-rw-r--r--extensions/deviceicon/speaker.py33
2 files changed, 31 insertions, 21 deletions
diff --git a/extensions/deviceicon/network.py b/extensions/deviceicon/network.py
index 51d3ac9..b4a5393 100644
--- a/extensions/deviceicon/network.py
+++ b/extensions/deviceicon/network.py
@@ -34,6 +34,8 @@ import dbus
from sugar3.graphics.icon import get_icon_state
from sugar3.graphics import style
from sugar3.graphics.palette import Palette
+from sugar3.graphics.palettemenuitem import PaletteMenuItem
+from sugar3.graphics.palettemenuitem import PaletteMenuItemSeparator
from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics.tray import TrayIcon
from sugar3.graphics.menuitem import MenuItem
@@ -76,6 +78,16 @@ class WirelessPalette(Palette):
self._info = Gtk.VBox()
+ self._disconnect_item = PaletteMenuItem(_('Disconnect'))
+ icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='media-eject')
+ self._disconnect_item.set_image(icon)
+ self._disconnect_item.connect('activate',
+ self.__disconnect_activate_cb)
+ self._info.add(self._disconnect_item)
+
+ separator = PaletteMenuItemSeparator()
+ self._info.pack_start(separator, True, True, 0)
+
def _padded(child, xalign=0, yalign=0.5):
padder = Gtk.Alignment.new(xalign=xalign, yalign=yalign,
xscale=1, yscale=0.33)
@@ -90,13 +102,6 @@ class WirelessPalette(Palette):
self._info.pack_start(_padded(self._ip_address_label), True, True, 0)
self._info.show_all()
- self._disconnect_item = MenuItem(_('Disconnect'))
- icon = Icon(icon_size=Gtk.IconSize.MENU, icon_name='media-eject')
- self._disconnect_item.set_image(icon)
- self._disconnect_item.connect('activate',
- self.__disconnect_activate_cb)
- self.menu.append(self._disconnect_item)
-
def set_connecting(self):
label = glib.markup_escape_text(_('Connecting...'))
self.props.secondary_text = label
diff --git a/extensions/deviceicon/speaker.py b/extensions/deviceicon/speaker.py
index cc2c4ef..4a09e7b 100644
--- a/extensions/deviceicon/speaker.py
+++ b/extensions/deviceicon/speaker.py
@@ -26,6 +26,8 @@ from sugar3.graphics.icon import get_icon_state, Icon
from sugar3.graphics.menuitem import MenuItem
from sugar3.graphics.tray import TrayIcon
from sugar3.graphics.palette import Palette
+from sugar3.graphics.palettemenuitem import PaletteMenuItem
+from sugar3.graphics.palettemenuitem import PaletteMenuItemSeparator
from sugar3.graphics.xocolor import XoColor
from jarabe.frame.frameinvoker import FrameWidgetInvoker
@@ -102,6 +104,17 @@ class SpeakerPalette(Palette):
self.set_content(vbox)
vbox.show()
+ self._mute_item = PaletteMenuItem('')
+ self._mute_icon = Icon(icon_size=Gtk.IconSize.MENU)
+ self._mute_item.set_image(self._mute_icon)
+ vbox.add(self._mute_item)
+ self._mute_item.show()
+ self._mute_item.connect('activate', self.__mute_activate_cb)
+
+ separator = PaletteMenuItemSeparator()
+ vbox.pack_start(separator, True, True, 0)
+ separator.show()
+
vol_step = sound.VOLUME_STEP
self._adjustment = Gtk.Adjustment(value=self._model.props.level,
lower=0,
@@ -112,16 +125,9 @@ class SpeakerPalette(Palette):
self._hscale = Gtk.HScale()
self._hscale.set_adjustment(self._adjustment)
self._hscale.set_digits(0)
- self._hscale.set_draw_value(False)
vbox.add(self._hscale)
self._hscale.show()
- self._mute_item = MenuItem('')
- self._mute_icon = Icon(icon_size=Gtk.IconSize.MENU)
- self._mute_item.set_image(self._mute_icon)
- self.menu.append(self._mute_item)
- self._mute_item.show()
-
self._adjustment_handler_id = \
self._adjustment.connect('value_changed',
self.__adjustment_changed_cb)
@@ -130,8 +136,6 @@ class SpeakerPalette(Palette):
self._model.connect('notify::level', self.__level_changed_cb)
self._model.connect('notify::muted', self.__muted_changed_cb)
- self._mute_item.connect('activate', self.__mute_activate_cb)
-
self.connect('popup', self.__popup_cb)
def _update_muted(self):
@@ -141,24 +145,25 @@ class SpeakerPalette(Palette):
else:
mute_item_text = _('Mute')
mute_item_icon_name = 'dialog-cancel'
- self._mute_item.get_child().set_text(mute_item_text)
+ self._mute_item.set_label(mute_item_text)
self._mute_icon.props.icon_name = mute_item_icon_name
+ self._mute_icon.show()
def _update_level(self):
- if self._adjustment.value != self._model.props.level:
+ if self._adjustment.props.value != self._model.props.level:
self._adjustment.handler_block(self._adjustment_handler_id)
try:
- self._adjustment.value = self._model.props.level
+ self._adjustment.props.value = self._model.props.level
finally:
self._adjustment.handler_unblock(self._adjustment_handler_id)
def __adjustment_changed_cb(self, adj_):
self._model.handler_block(self._model_notify_level_handler_id)
try:
- self._model.props.level = self._adjustment.value
+ self._model.props.level = self._adjustment.props.value
finally:
self._model.handler_unblock(self._model_notify_level_handler_id)
- self._model.props.muted = self._adjustment.value == 0
+ self._model.props.muted = self._adjustment.props.value == 0
def __level_changed_cb(self, pspec_, param_):
self._update_level()