From b7bb3c9c422fda1467c79bc58332a57a894018f3 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 25 Jul 2008 12:04:40 +0200 Subject: [PATCH] gestion du widget 'picture' [openobject-client @ christophe@tinyerp.com-20080725100440-djde83ntf5h0ulqi] --- bin/widget/view/form_gtk/picture.py | 44 ++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/bin/widget/view/form_gtk/picture.py b/bin/widget/view/form_gtk/picture.py index 7ad84992..5160f212 100644 --- a/bin/widget/view/form_gtk/picture.py +++ b/bin/widget/view/form_gtk/picture.py @@ -29,12 +29,8 @@ ############################################################################## import gtk -import gettext - +import base64 import interface -import os - -import common class wid_picture(interface.widget_interface): def __init__(self, window, parent, model, attrs={}): @@ -44,27 +40,39 @@ class wid_picture(interface.widget_interface): self.wid_picture = gtk.Image() self.widget.pack_start(self.wid_picture, expand=True, fill=True) - self.value=False + self._value=False - def value_set(self, model, model_field): - self.model_field.set( model, self._value ) + def set_value(self, model, model_field): + model_field.set( model, self._value ) def display(self, model, model_field): if not model_field: return False - super(wid_picture, self).display(model_field) + super(wid_picture, self).display(model, model_field) value = model_field.get(model) - import base64 self._value = value - if self._value: - value = base64.decodestring(self._value) - loader = gtk.gdk.PixbufLoader('jpeg') - loader.write (value, len(value)) - pixbuf = loader.get_pixbuf() - loader.close() - self.wid_picture.set_from_pixbuf(pixbuf) + if isinstance(value, tuple): + type, data = value else: - self.wid_picture.set_from_pixbuf(None) + type, data = 'jpeg', value + + self.wid_picture.set_from_pixbuf(None) + self.wid_picture.set_from_stock('', gtk.ICON_SIZE_MENU) + if data: + if type == 'stock': + stock, size = data + if stock.startswith('STOCK_'): + stock = getattr(gtk, stock) or '' + size = getattr(gtk, size) + self.wid_picture.set_from_stock(stock, size) + else: + value = base64.decodestring(data) + loader = gtk.gdk.PixbufLoader(type) + loader.write (value, len(value)) + pixbuf = loader.get_pixbuf() + loader.close() + self.wid_picture.set_from_pixbuf(pixbuf) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -- 2.11.4.GIT