From 69d5b478684a1cfe87f7f0451579bfab78bcf6e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 16 Jul 2015 22:53:05 +0200 Subject: [PATCH] Inherit from standard cellrenderer when possible issue3463 review15511002 --- tryton/common/cellrenderercombo.py | 91 ++++++++-------------------- tryton/common/cellrenderertext.py | 93 ++++++++--------------------- tryton/common/cellrenderertoggle.py | 77 ++++++++---------------- 3 files changed, 74 insertions(+), 187 deletions(-) diff --git a/tryton/common/cellrenderercombo.py b/tryton/common/cellrenderercombo.py index d7f7f5ec65..bf583578f1 100644 --- a/tryton/common/cellrenderercombo.py +++ b/tryton/common/cellrenderercombo.py @@ -2,99 +2,56 @@ # this repository contains the full copyright notices and license terms. import gtk import gobject -import pango from tryton.common.selection import selection_shortcuts -class CellRendererCombo(gtk.GenericCellRenderer): +class CellRendererCombo(gtk.CellRendererCombo): __gproperties__ = { - 'text': (gobject.TYPE_STRING, None, 'Text', - 'Text', gobject.PARAM_READWRITE), - 'foreground': (gobject.TYPE_STRING, None, 'Foreground', - 'Foreground', gobject.PARAM_WRITABLE), - 'foreground-set': (gobject.TYPE_INT, 'Foreground Set', - 'Foreground Set', 0, 10, 0, gobject.PARAM_READWRITE), - 'background': (gobject.TYPE_STRING, None, 'Background', - 'Background', gobject.PARAM_WRITABLE), - 'background-set': (gobject.TYPE_INT, 'Background Set', - 'Background Set', 0, 10, 0, gobject.PARAM_READWRITE), - 'editable': (gobject.TYPE_INT, 'Editable', - 'Editable', 0, 10, 0, gobject.PARAM_READWRITE), - 'xalign': (gobject.TYPE_FLOAT, 'XAlign', - 'XAlign', 0, 1, 0, gobject.PARAM_READWRITE), 'visible': (gobject.TYPE_INT, 'Visible', 'Visible', 0, 10, 0, gobject.PARAM_READWRITE), - 'has-entry': (gobject.TYPE_INT, 'Has Entry', - 'Has Entry', 0, 10, 0, gobject.PARAM_READWRITE), - 'model': (gobject.TYPE_OBJECT, 'Model', 'Model', - gobject.PARAM_READWRITE), - 'text-column': (gobject.TYPE_INT, 'Text Column', - 'Text Column', 0, 10, 0, gobject.PARAM_READWRITE), - 'strikethrough': (gobject.TYPE_BOOLEAN, 'Strikethrough', - 'Strikethrough', False, gobject.PARAM_WRITABLE), } def __init__(self): - self.__gobject_init__() - self._renderer = gtk.CellRendererCombo() - self.set_property("mode", self._renderer.get_property("mode")) - - self.text = self._renderer.get_property('text') - self.editable = self._renderer.get_property('editable') - self.visible = True + gtk.CellRendererCombo.__init__(self) + self.__visible = True def set_sensitive(self, value): - if hasattr(self._renderer, 'set_sensitive'): - return self._renderer.set_sensitive(value) - return self._renderer.set_property('sensitive', value) + self.set_property('sensitive', value) - def do_set_property(self, pspec, value): - setattr(self, pspec.name, value) - if pspec.name == 'visible': + def do_set_property(self, prop, value): + if prop.name == 'visible': + self.__visible = value return - self._renderer.set_property(pspec.name, value) - self.set_property("mode", self._renderer.get_property("mode")) + gtk.CellRendererCombo.do_set_property(self, prop, value) - def do_get_property(self, pspec): - return getattr(self, pspec.name) + def do_get_property(self, prop): + if prop.name == 'visible': + return self.__visible + return gtk.CellRendererCombo.do_get_property(self, prop) - def on_get_size(self, widget, cell_area): - return self._renderer.get_size(widget, cell_area) - - def on_render(self, window, widget, background_area, cell_area, + def do_render(self, window, widget, background_area, cell_area, expose_area, flags): - if not self.visible: + if not self.__visible: return - # Handle Pixmap window as pygtk failed - if type(window) == gtk.gdk.Pixmap: - layout = widget.create_pango_layout(self.text) - layout.set_font_description(widget.style.font_desc) - w, h = layout.get_size() - xalign = self._renderer.get_property('xalign') - x = int(cell_area.x + (cell_area.width - w / pango.SCALE) * xalign) - y = int(cell_area.y + (cell_area.height - h / pango.SCALE) / 2) - window.draw_layout(widget.style.text_gc[0], x, y, layout) - return - return self._renderer.render(window, widget, background_area, - cell_area, expose_area, flags) + gtk.CellRendererCombo.do_render(self, window, widget, + background_area, cell_area, expose_area, flags) - def on_activate(self, event, widget, path, background_area, cell_area, + def do_activate(self, event, widget, path, background_area, cell_area, flags): - if not self.visible: + if not self.__visible: return - return self._renderer.activate(event, widget, path, background_area, - cell_area, flags) + return gtk.CellRendererCombo.do_activate(self, event, widget, path, + background_area, cell_area, flags) - def on_start_editing(self, event, widget, path, background_area, + def do_start_editing(self, event, widget, path, background_area, cell_area, flags): - if not self.visible: + if not self.__visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.Tab) - editable = self._renderer.start_editing(event, widget, path, - background_area, cell_area, flags) - + editable = gtk.CellRendererCombo.do_start_editing(self, event, widget, + path, background_area, cell_area, flags) return selection_shortcuts(editable) gobject.type_register(CellRendererCombo) diff --git a/tryton/common/cellrenderertext.py b/tryton/common/cellrenderertext.py index 45ce74d316..9cf1b92ba9 100644 --- a/tryton/common/cellrenderertext.py +++ b/tryton/common/cellrenderertext.py @@ -2,97 +2,54 @@ # this repository contains the full copyright notices and license terms. import gtk import gobject -import pango -class CellRendererText(gtk.GenericCellRenderer): +class CellRendererText(gtk.CellRendererText): __gproperties__ = { - 'text': (gobject.TYPE_STRING, None, 'Text', - 'Text', gobject.PARAM_READWRITE), - 'foreground': (gobject.TYPE_STRING, None, 'Foreground', - 'Foreground', gobject.PARAM_WRITABLE), - 'foreground-set': (gobject.TYPE_INT, 'Foreground Set', - 'Foreground Set', 0, 10, 0, gobject.PARAM_READWRITE), - 'background': (gobject.TYPE_STRING, None, 'Background', - 'Background', gobject.PARAM_WRITABLE), - 'background-set': (gobject.TYPE_INT, 'Background Set', - 'Background Set', 0, 10, 0, gobject.PARAM_READWRITE), - 'editable': (gobject.TYPE_INT, 'Editable', - 'Editable', 0, 10, 0, gobject.PARAM_READWRITE), - 'xalign': (gobject.TYPE_FLOAT, 'XAlign', - 'XAlign', 0, 1, 0, gobject.PARAM_READWRITE), 'visible': (gobject.TYPE_INT, 'Visible', 'Visible', 0, 10, 0, gobject.PARAM_READWRITE), - 'strikethrough': (gobject.TYPE_BOOLEAN, 'Strikethrough', - 'Strikethrough', False, gobject.PARAM_WRITABLE), - 'single-paragraph-mode': (gobject.TYPE_BOOLEAN, - 'Single Paragraph Mode', 'Single Paragraph Mode', False, - gobject.PARAM_WRITABLE), } def __init__(self): - self.__gobject_init__() - self._renderer = gtk.CellRendererText() - self.set_property("mode", self._renderer.get_property("mode")) - - self.text = self._renderer.get_property('text') - self.editable = self._renderer.get_property('editable') - self.visible = True + gtk.CellRendererText.__init__(self) + self.__visible = True def set_sensitive(self, value): - if hasattr(self._renderer, 'set_sensitive'): - return self._renderer.set_sensitive(value) - return self._renderer.set_property('sensitive', value) + self.set_property('sensitive', value) - def do_set_property(self, pspec, value): - setattr(self, pspec.name, value) - if pspec.name == 'visible': + def do_set_property(self, prop, value): + if prop.name == 'visible': + self.__visible = value return - self._renderer.set_property(pspec.name, value) - self.set_property("mode", self._renderer.get_property("mode")) + gtk.CellRendererText.do_set_property(self, prop, value) - def do_get_property(self, pspec): - return getattr(self, pspec.name) + def do_get_property(self, prop): + if prop.name == 'visible': + return self.__visible + return gtk.CellRendererText.do_get_property(self, prop) - def on_get_size(self, widget, cell_area): - return self._renderer.get_size(widget, cell_area) - - def on_render(self, window, widget, background_area, cell_area, + def do_render(self, window, widget, background_area, cell_area, expose_area, flags): - if not self.visible: + if not self.__visible: return - # Handle Pixmap window as pygtk failed - if type(window) == gtk.gdk.Pixmap: - layout = widget.create_pango_layout(self.text) - layout.set_font_description(widget.style.font_desc) - w, h = layout.get_size() - xalign = self._renderer.get_property('xalign') - x = int(cell_area.x + (cell_area.width - w / pango.SCALE) * xalign) - y = int(cell_area.y + (cell_area.height - h / pango.SCALE) / 2) - window.draw_layout(widget.style.text_gc[0], x, y, layout) - return - return self._renderer.render(window, widget, background_area, - cell_area, expose_area, flags) + gtk.CellRendererText.do_render(self, window, widget, + background_area, cell_area, expose_area, flags) - def on_activate(self, event, widget, path, background_area, cell_area, + def do_activate(self, event, widget, path, background_area, cell_area, flags): - if not self.visible: + if not self.__visible: return - return self._renderer.activate(event, widget, path, background_area, - cell_area, flags) + return gtk.CellRendererText.activate(self, event, widget, path, + background_area, cell_area, flags) - def on_start_editing(self, event, widget, path, background_area, + def do_start_editing(self, event, widget, path, background_area, cell_area, flags): - if not self.visible: + if not self.__visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.Tab) - editable = gtk.Entry() - editable.set_property('shadow-type', gtk.SHADOW_NONE) - editable.set_text(self.text) - editable.grab_focus() - editable.show() - return editable + return gtk.CellRendererText.do_start_editing(self, event, widget, + path, background_area, cell_area, flags) class CellRendererTextCompletion(CellRendererText): @@ -101,7 +58,7 @@ class CellRendererTextCompletion(CellRendererText): super(CellRendererTextCompletion, self).__init__() self.set_completion = set_completion - def on_start_editing(self, event, widget, path, background_area, cell_area, + def do_start_editing(self, event, widget, path, background_area, cell_area, flags): editable = super(CellRendererTextCompletion, self).on_start_editing(event, widget, path, background_area, diff --git a/tryton/common/cellrenderertoggle.py b/tryton/common/cellrenderertoggle.py index 32f74be403..fa89fedbff 100644 --- a/tryton/common/cellrenderertoggle.py +++ b/tryton/common/cellrenderertoggle.py @@ -4,78 +4,51 @@ import gtk import gobject -class CellRendererToggle(gtk.GenericCellRenderer): +class CellRendererToggle(gtk.CellRendererToggle): __gproperties__ = { - 'activatable': (gobject.TYPE_INT, 'Activatable', - 'Activatable', 0, 10, 0, gobject.PARAM_READWRITE), 'visible': (gobject.TYPE_INT, 'Visible', 'Visible', 0, 10, 0, gobject.PARAM_READWRITE), } - __gsignals__ = { - 'toggled': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, - (gobject.TYPE_STRING, )), - } - def __init__(self): - self.__gobject_init__() - self._renderer = gtk.CellRendererToggle() - self._renderer.connect('toggled', self._sig_toggled) - self.set_property("mode", self._renderer.get_property("mode")) - - self.activatable = self._renderer.get_property('activatable') - self.visible = True + gtk.CellRendererToggle.__init__(self) + self.__visible = True def set_sensitive(self, value): - if hasattr(self._renderer, 'set_sensitive'): - return self._renderer.set_sensitive(value) - return self._renderer.set_property('sensitive', value) + self.set_property('sensitive', value) - def do_set_property(self, pspec, value): - setattr(self, pspec.name, value) - if pspec.name == 'visible': + def do_set_property(self, prop, value): + if prop.name == 'visible': + self.__visible = value return - self._renderer.set_property(pspec.name, value) - self.set_property("mode", self._renderer.get_property("mode")) + gtk.CellRendererToggle.do_set_property(self, prop, value) - def do_get_property(self, pspec): - return getattr(self, pspec.name) + def do_get_property(self, prop): + if prop.name == 'visible': + return self.__visible + return gtk.CellRendererToggle.do_get_property(self, prop) - def on_get_size(self, widget, cell_area): - return self._renderer.get_size(widget, cell_area) - - def on_render(self, window, widget, background_area, cell_area, + def do_render(self, window, widget, background_area, cell_area, expose_area, flags): - if not self.visible: + if not self.__visible: return - # Handle Pixmap window as pygtk failed - if type(window) == gtk.gdk.Pixmap: - return - return self._renderer.render(window, widget, background_area, - cell_area, expose_area, flags) + gtk.CellRendererToggle.do_render(self, window, widget, + background_area, cell_area, expose_area, flags) - def on_activate(self, event, widget, path, background_area, cell_area, + def do_activate(self, event, widget, path, background_area, cell_area, flags): - if not self.visible: + if not self.__visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.KP_Space) - return self._renderer.activate(event, widget, path, background_area, - cell_area, flags) + return gtk.CellRendererToggle.do_activate(self, event, widget, path, + background_area, cell_area, flags) - def on_start_editing(self, event, widget, path, background_area, + def do_start_editing(self, event, widget, path, background_area, cell_area, flags): - return self._renderer.start_editing(event, widget, path, - background_area, cell_area, flags) - - def get_active(self): - return self._renderer.get_active() - - def set_active(self, setting): - return self._renderer.set_active(setting) - - def _sig_toggled(self, renderer, path): - if self.activatable and self.visible: - self.emit('toggled', path) + if not self.__visible: + return + return gtk.CellRendererToggle.do_start_editing(event, widget, path, + background_area, cell_area, flags) gobject.type_register(CellRendererToggle)