From 3f792924ddf4dba301d06e496ac6e29296fbd4e9 Mon Sep 17 00:00:00 2001 From: flavio Date: Fri, 09 Nov 2012 23:58:22 +0000 Subject: Gtk 3 Port Base --- (limited to 'toolkit/radiopalette.py') diff --git a/toolkit/radiopalette.py b/toolkit/radiopalette.py index 9c902b1..ccbaa6e 100644 --- a/toolkit/radiopalette.py +++ b/toolkit/radiopalette.py @@ -15,16 +15,18 @@ # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. -import gtk +import gi +from gi.repository import Gtk -from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.palette import Palette +from sugar3.graphics.toolbutton import ToolButton +from sugar3.graphics.palette import Palette class RadioMenuButton(ToolButton): - def __init__(self, **kwargs): - ToolButton.__init__(self, **kwargs) + def __init__(self): + + ToolButton.__init__(self) self.selected_button = None if self.props.palette: @@ -34,18 +36,23 @@ class RadioMenuButton(ToolButton): self.connect('notify::palette', self.__palette_cb) def _do_clicked(self): + if self.palette is None: return + if self.palette.is_up() and \ self.palette.palette_state == Palette.SECONDARY: self.palette.popdown(immediate=True) + else: self.palette.popup(immediate=True) self.palette.props.invoker.emit('right-click') def __palette_cb(self, widget, pspec): + if not isinstance(self.props.palette, RadioPalette): return + self.props.palette.update_button() def __clicked_cb(self, button): @@ -54,10 +61,12 @@ class RadioMenuButton(ToolButton): class RadioToolsButton(RadioMenuButton): - def __init__(self, **kwargs): - RadioMenuButton.__init__(self, **kwargs) + def __init__(self): + + RadioMenuButton.__init__(self) def _do_clicked(self): + if not self.selected_button: return self.selected_button.emit('clicked') @@ -65,14 +74,16 @@ class RadioToolsButton(RadioMenuButton): class RadioPalette(Palette): - def __init__(self, **kwargs): - Palette.__init__(self, **kwargs) + def __init__(self): + + Palette.__init__(self) - self.button_box = gtk.HBox() + self.button_box = Gtk.HBox() self.button_box.show() self.set_content(self.button_box) def append(self, button, label): + children = self.button_box.get_children() if button.palette is not None: @@ -80,17 +91,19 @@ class RadioPalette(Palette): button.show() button.connect('clicked', self.__clicked_cb) - self.button_box.pack_start(button, fill=False) + self.button_box.pack_start(button, False, False, 0) button.palette_label = label if not children: self.__clicked_cb(button) def update_button(self): + for i in self.button_box.get_children(): self.__clicked_cb(i) def __clicked_cb(self, button): + if not button.get_active(): return @@ -99,8 +112,10 @@ class RadioPalette(Palette): if self.props.invoker is not None: parent = self.props.invoker.parent + else: parent = None + if not isinstance(parent, RadioMenuButton): return -- cgit v0.9.1