Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-02-18 18:19:42 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-02-18 18:19:42 (GMT)
commit0ad5327f664e49ce7e32fee4deb307165c5e7732 (patch)
treea06f8ef50c5408265a02baa22ea2d56386fa8379 /src
parentd7336f7358eba894616f47e32d8061bad6a3e4f0 (diff)
Convert ZoomTray to use radio buttons.
Diffstat (limited to 'src')
-rw-r--r--src/view/frame/frame.py6
-rw-r--r--src/view/frame/zoomtray.py88
2 files changed, 43 insertions, 51 deletions
diff --git a/src/view/frame/frame.py b/src/view/frame/frame.py
index 578db88..0b95db8 100644
--- a/src/view/frame/frame.py
+++ b/src/view/frame/frame.py
@@ -166,9 +166,9 @@ class Frame(object):
def _create_top_panel(self):
panel = self._create_panel(gtk.POS_TOP)
- tray = ZoomTray(self._shell)
- panel.append(hippo.CanvasWidget(widget=tray))
- tray.show()
+ zoom_tray = ZoomTray(self._shell)
+ panel.append(hippo.CanvasWidget(widget=zoom_tray), hippo.PACK_EXPAND)
+ zoom_tray.show()
return panel
diff --git a/src/view/frame/zoomtray.py b/src/view/frame/zoomtray.py
index ff13a5d..bc415d9 100644
--- a/src/view/frame/zoomtray.py
+++ b/src/view/frame/zoomtray.py
@@ -16,69 +16,61 @@
from gettext import gettext as _
-import gtk
-
from sugar.graphics.palette import Palette
-from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.radiotoolbutton import RadioToolButton
+from sugar.graphics.tray import HTray
from view.frame.frameinvoker import FrameWidgetInvoker
from model.shellmodel import ShellModel
-class ZoomTray(gtk.Toolbar):
+class ZoomTray(HTray):
def __init__(self, shell):
- gtk.Toolbar.__init__(self)
+ HTray.__init__(self)
self._shell = shell
- self.set_show_arrow(False)
-
- button = ToolButton(icon_name='zoom-neighborhood')
- button.connect('clicked',
- self._level_clicked_cb,
- ShellModel.ZOOM_MESH)
- self.insert(button, -1)
+ shell_model = shell.get_model()
+ shell_model.connect('notify::zoom-level', self.__notify_zoom_level_cb)
+
+ self._mesh_button = self._add_button('zoom-neighborhood',
+ _('Neighborhood'), ShellModel.ZOOM_MESH)
+ self._groups_button = self._add_button('zoom-groups',
+ _('Group'), ShellModel.ZOOM_FRIENDS)
+ self._home_button = self._add_button('zoom-home',
+ _('Home'), ShellModel.ZOOM_HOME)
+ self._activity_button = self._add_button('zoom-activity',
+ _('Activity'), ShellModel.ZOOM_ACTIVITY)
+
+ def _add_button(self, icon_name, label, zoom_level):
+ if self.get_children():
+ group = self.get_children()[0]
+ else:
+ group = None
+
+ button = RadioToolButton(named_icon=icon_name, group=group)
+ button.connect('clicked', self._level_clicked_cb, zoom_level)
+ self.add_item(button)
button.show()
- palette = Palette(_('Neighborhood'))
+ palette = Palette(label)
palette.props.invoker = FrameWidgetInvoker(button)
palette.set_group_id('frame')
button.set_palette(palette)
+
+ return button
- button = ToolButton(icon_name='zoom-groups')
- button.connect('clicked',
- self._level_clicked_cb,
- ShellModel.ZOOM_FRIENDS)
- self.insert(button, -1)
- button.show()
-
- palette = Palette(_('Group'))
- palette.props.invoker = FrameWidgetInvoker(button)
- palette.set_group_id('frame')
- button.set_palette(palette)
-
- button = ToolButton(icon_name='zoom-home')
- button.connect('clicked',
- self._level_clicked_cb,
- ShellModel.ZOOM_HOME)
- self.insert(button, -1)
- button.show()
-
- palette = Palette(_('Home'))
- palette.props.invoker = FrameWidgetInvoker(button)
- palette.set_group_id('frame')
- button.set_palette(palette)
+ def _level_clicked_cb(self, button, level):
+ self._shell.set_zoom_level(level)
- button = ToolButton(icon_name='zoom-activity')
- button.connect('clicked',
- self._level_clicked_cb,
- ShellModel.ZOOM_ACTIVITY)
- self.insert(button, -1)
- button.show()
+ def __notify_zoom_level_cb(self, model, pspec):
+ new_level = model.props.zoom_level
- palette = Palette(_('Activity'))
- palette.props.invoker = FrameWidgetInvoker(button)
- palette.set_group_id('frame')
- button.set_palette(palette)
+ if new_level == ShellModel.ZOOM_MESH:
+ self._mesh_button.props.active = True
+ elif new_level == ShellModel.ZOOM_FRIENDS:
+ self._groups_button.props.active = True
+ elif new_level == ShellModel.ZOOM_HOME:
+ self._home_button.props.active = True
+ elif new_level == ShellModel.ZOOM_ACTIVITY:
+ self._activity_button.props.active = True
- def _level_clicked_cb(self, button, level):
- self._shell.set_zoom_level(level)