diff options
Diffstat (limited to 'Utils.py')
-rw-r--r-- | Utils.py | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -12,6 +12,11 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import gtk + +from Theme import * +import sugar.graphics + class FileInstanceVariable: def __init__(self, value = None): self.value = value @@ -24,3 +29,46 @@ class FileInstanceVariable: def __getitem__(self, key): return self.value[key] + +class ComboBox(sugar.graphics.combobox.ComboBox): + def __init__(self): + sugar.graphics.combobox.ComboBox.__init__(self) + self.set_name('we-really-need-it-to-use-custom-combobox-colors') + + def append_item(self, action_id, text = None, icon_name = None, size = None, + pixbuf = None, position = None): + + if not self._icon_renderer and (icon_name or pixbuf): + self._icon_renderer = gtk.CellRendererPixbuf() + + settings = self.get_settings() + w, h = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_MENU) + self._icon_renderer.props.stock_size = w + + self._icon_renderer.props.xpad = 4 + self._icon_renderer.props.ypad = 4 + + self.pack_start(self._icon_renderer, False) + 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.add_attribute(self._text_renderer, 'text', 1) + + if not pixbuf: + if icon_name: + if not size: + size = gtk.ICON_SIZE_LARGE_TOOLBAR + width, height = gtk.icon_size_lookup(size) + else: + width, height = size + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_name, + width, height) + else: + pixbuf = None + + if position: + self._model.insert(position, [action_id, text, pixbuf, False]) + else: + self._model.append([action_id, text, pixbuf, False]) |