Simplify cellrenderer's

It is not needed to create fake event.
The binary should be activatable instead of editable.

issue7658
review56341002
This commit is contained in:
Cédric Krier committed 2018-09-01 00:36:09 +02:00
1 parent 915eeae9af
commit ed6a930aca
4 files changed
+12 -75

No files matched your search

+9 -20
View File
@@ -34,9 +34,8 @@ class CellRendererBinary(gtk.GenericCellRenderer):
self.__gobject_init__()
self.visible = True
self.editable = False
self.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE)
self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE)
self.use_filename = use_filename
self.clicking = ''
self.images = {}
for key, icon in (
('select', 'tryton-search'),
@@ -84,10 +83,10 @@ class CellRendererBinary(gtk.GenericCellRenderer):
cell_area.width, cell_area.height)
do_get_size = on_get_size
def on_start_editing(self, event, widget, path, background_area,
def on_activate(self, event, widget, path, background_area,
cell_area, flags):
if event is None:
return
return True
button_width = self.button_width()
for index, button_name in enumerate(self.buttons):
@@ -105,20 +104,15 @@ class CellRendererBinary(gtk.GenericCellRenderer):
else:
button_name = None
if not self.visible or not button_name:
return
return True
if not self.editable and button_name in ('select', 'clear'):
return
if not self.size and button_name == 'save':
return
return True
if not self.size and button_name in {'open', 'save'}:
return True
if event.type == gtk.gdk.BUTTON_PRESS:
self.clicking = button_name
self.emit(button_name, path)
def timeout(self, widget):
self.clicking = ''
widget.queue_draw()
gobject.timeout_add(60, timeout, self, widget)
do_start_editing = on_start_editing
return True
do_activate = on_activate
def do_render(self, cr, widget, background_area, cell_area, flags):
if not self.visible:
@@ -165,13 +159,8 @@ class CellRendererBinary(gtk.GenericCellRenderer):
for index, button_name in enumerate(self.buttons):
pxbf_sens, pxbf_insens, pxbf_width, pxbf_height = \
self.images[button_name]
state = gtk.StateFlags.NORMAL
if (self.clicking == button_name
and flags & gtk.CELL_RENDERER_SELECTED):
state = gtk.StateFlags.ACTIVE
if (not self.editable and button_name in {'select', 'clear'}
or not self.size and button_name in {'open', 'save'}):
state = gtk.StateFlags.INSENSITIVE
pixbuf = pxbf_insens
else:
pixbuf = pxbf_sens
+1 -17
View File
@@ -8,27 +8,11 @@ from tryton.common.selection import selection_shortcuts
class CellRendererCombo(gtk.CellRendererCombo):
def set_sensitive(self, value):
self.set_property('sensitive', value)
def do_activate(self, event, widget, path, background_area, cell_area,
flags):
if not self.props.visible:
return
return gtk.CellRendererCombo.do_activate(self, event, widget, path,
background_area, cell_area, flags)
def do_start_editing(self, event, widget, path, background_area,
cell_area, flags):
if not self.props.visible:
return
if not event:
if hasattr(gtk.gdk.Event, 'new'):
event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS)
else:
event = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
editable = gtk.CellRendererCombo.do_start_editing(self, event, widget,
path, background_area, cell_area, flags)
return selection_shortcuts(editable)
gobject.type_register(CellRendererCombo)
+1 -17
View File
@@ -6,25 +6,8 @@ import gobject
class CellRendererText(gtk.CellRendererText):
def set_sensitive(self, value):
self.set_property('sensitive', value)
def do_activate(self, event, widget, path, background_area, cell_area,
flags):
if not self.props.visible:
return
return gtk.CellRendererText.activate(self, event, widget, path,
background_area, cell_area, flags)
def do_start_editing(self, event, widget, path, background_area,
cell_area, flags):
if not self.props.visible:
return
if not event:
if hasattr(gtk.gdk.Event, 'new'):
event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS)
else:
event = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
return gtk.CellRendererText.do_start_editing(self, event, widget,
path, background_area, cell_area, flags)
@@ -43,5 +26,6 @@ class CellRendererTextCompletion(CellRendererText):
self.set_completion(editable, path)
return editable
gobject.type_register(CellRendererText)
gobject.type_register(CellRendererTextCompletion)
+1 -21
View File
@@ -5,27 +5,7 @@ import gobject
class CellRendererToggle(gtk.CellRendererToggle):
pass
def set_sensitive(self, value):
self.set_property('sensitive', value)
def do_activate(self, event, widget, path, background_area, cell_area,
flags):
if not self.props.visible:
return
if not event:
if hasattr(gtk.gdk.Event, 'new'):
event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS)
else:
event = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
return gtk.CellRendererToggle.do_activate(self, event, widget, path,
background_area, cell_area, flags)
def do_start_editing(self, event, widget, path, background_area,
cell_area, flags):
if not self.props.visible:
return
return gtk.CellRendererToggle.do_start_editing(self, event, widget,
path, background_area, cell_area, flags)
gobject.type_register(CellRendererToggle)