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/combobox.py') diff --git a/toolkit/combobox.py b/toolkit/combobox.py index d021106..ff0ab3f 100644 --- a/toolkit/combobox.py +++ b/toolkit/combobox.py @@ -20,22 +20,26 @@ STABLE. """ -import gobject -import gtk +import gi +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import GdkPixbuf +# FIXME: This class is not being used. -class ComboBox(gtk.ComboBox): +class ComboBox(Gtk.ComboBox): def __init__(self): - gtk.ComboBox.__init__(self) + + Gtk.ComboBox.__init__(self) self._text_renderer = None self._icon_renderer = None - model = gtk.ListStore(gobject.TYPE_PYOBJECT, - gobject.TYPE_STRING, - gtk.gdk.Pixbuf, - gobject.TYPE_BOOLEAN) + model = Gtk.ListStore(GObject.TYPE_PYOBJECT, + GObject.TYPE_STRING, + GdkPixbuf.Pixbuf, + GObject.TYPE_BOOLEAN) self.set_model(model) self.set_row_separator_func(self._is_separator) @@ -56,15 +60,18 @@ class ComboBox(gtk.ComboBox): return None return row[0] - value = gobject.property( + value = GObject.property( type=object, getter=get_value, setter=None) def _get_real_name_from_theme(self, name, size): - icon_theme = gtk.icon_theme_get_default() - width, height = gtk.icon_size_lookup(size) + + icon_theme = Gtk.icon_theme_get_default() + width, height = Gtk.icon_size_lookup(size) info = icon_theme.lookup_icon(name, max(width, height), 0) + if not info: raise ValueError("Icon '" + name + "' not found.") + fname = info.get_filename() del info return fname @@ -90,62 +97,71 @@ class ComboBox(gtk.ComboBox): self.get_model().append(item) def set_item(self, action_id, text=None, icon_name=None, file_name=None): + for i, value in enumerate(self.get_model()): if value[0] == action_id: item = self._item_new(action_id, text, icon_name, file_name) iter = self.get_model().iter_nth_child(None, i) + if text is not None: self.get_model().set(iter, 1, item[1]) + if icon_name is not None or file_name is not None: self.get_model().set(iter, 2, item[2]) + return True return False def select(self, action_id=None, text=None): + if action_id is not None: column = 0 value = action_id + elif text is not None: column = 1 value = text + else: return for i, item in enumerate(self.get_model()): if item[column] != value: continue + self.set_active(i) break def _item_new(self, action_id, text, icon_name, file_name): + if not self._icon_renderer and (icon_name or file_name): - self._icon_renderer = gtk.CellRendererPixbuf() + self._icon_renderer = Gtk.CellRendererPixbuf() settings = self.get_settings() - w, h = gtk.icon_size_lookup_for_settings( - settings, gtk.ICON_SIZE_MENU) + w, h = Gtk.icon_size_lookup_for_settings( + settings, Gtk.IconSize.MENU) self._icon_renderer.props.stock_size = max(w, h) - self.pack_start(self._icon_renderer, False) + self.pack_start(self._icon_renderer, False, False, 0) self.add_attribute(self._icon_renderer, 'pixbuf', 2) if not self._text_renderer and text: - self._text_renderer = gtk.CellRendererText() - self.pack_end(self._text_renderer, True) + self._text_renderer = Gtk.CellRendererText() + self.pack_end(self._text_renderer, True, True, 0) self.add_attribute(self._text_renderer, 'text', 1) if icon_name or file_name: if text: - size = gtk.ICON_SIZE_MENU + size = Gtk.IconSize.MENU else: - size = gtk.ICON_SIZE_LARGE_TOOLBAR - width, height = gtk.icon_size_lookup(size) + size = Gtk.IconSize.LARGE_TOOLBAR + width, height = Gtk.icon_size_lookup(size) if icon_name: file_name = self._get_real_name_from_theme(icon_name, size) - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( - file_name, width, height) + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size( + file_name, width, height) else: pixbuf = None -- cgit v0.9.1