Inherit from standard cellrenderer when possible
issue3463 review15511002
This commit is contained in:
1 parent
93a687838d
commit
69d5b47868
3 files changed
+74
-187
No files matched your search
@@ -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)
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
Reference in new issue
Block a user