Add color on editing cell
This commit is contained in:
1 parent
9f9573ad00
commit
0f480930b7
3 files changed
+81
-2
No files matched your search
@@ -1,7 +1,6 @@
|
||||
#This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms.
|
||||
import gtk
|
||||
import gobject
|
||||
import pango
|
||||
from date_widget import mapping, DateEntry, compute_date
|
||||
import re
|
||||
import time
|
||||
@@ -58,6 +57,18 @@ class CellRendererDate(gtk.GenericCellRenderer):
|
||||
def on_start_editing(self, event, widget, path, background_area,
|
||||
cell_area, flags):
|
||||
editable = DateEntry(self.format, self._date_cb, self._process_cb)
|
||||
|
||||
colormap = editable.get_colormap()
|
||||
if hasattr(self, 'background'):
|
||||
colour = colormap.alloc_color(getattr(self, 'background'))
|
||||
else:
|
||||
colour = colormap.alloc_color('white')
|
||||
editable.modify_bg(gtk.STATE_ACTIVE, colour)
|
||||
editable.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
|
||||
editable.modify_base(gtk.STATE_NORMAL, colour)
|
||||
editable.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
|
||||
editable.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("black"))
|
||||
|
||||
editable.set_text(self.text)
|
||||
editable.grab_focus()
|
||||
editable.show()
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
#This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms.
|
||||
import gtk
|
||||
import gobject
|
||||
|
||||
|
||||
class CellRendererText(gtk.GenericCellRenderer):
|
||||
__gproperties__ = {
|
||||
'text': (gobject.TYPE_STRING, None, 'Text',
|
||||
'Text', gobject.PARAM_READWRITE),
|
||||
'foreground': (gobject.TYPE_STRING, None, 'Foreground',
|
||||
'Foreground', gobject.PARAM_READWRITE),
|
||||
'background': (gobject.TYPE_STRING, None, 'Background',
|
||||
'Background', gobject.PARAM_READWRITE),
|
||||
'editable': (gobject.TYPE_INT, 'Editable',
|
||||
'Editable', 0, 10, 0, gobject.PARAM_READWRITE),
|
||||
}
|
||||
|
||||
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')
|
||||
|
||||
def do_set_property(self, pspec, value):
|
||||
setattr(self, pspec.name, value)
|
||||
self._renderer.set_property(pspec.name, value)
|
||||
self.set_property("mode", self._renderer.get_property("mode"))
|
||||
|
||||
def do_get_property(self, pspec):
|
||||
return getattr(self, pspec.name)
|
||||
|
||||
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,
|
||||
expose_area, flags):
|
||||
return self._renderer.render(window, widget, background_area,
|
||||
cell_area, expose_area, flags)
|
||||
|
||||
def on_activate(self, event, widget, path, background_area, cell_area,
|
||||
flags):
|
||||
return self._renderer.activate(event, widget, path, background_area,
|
||||
cell_area, flags)
|
||||
|
||||
def on_start_editing(self, event, widget, path, background_area,
|
||||
cell_area, flags):
|
||||
if not event:
|
||||
event = gtk.gdk.Event(gtk.keysyms.Tab)
|
||||
editable = self._renderer.start_editing(event, widget, path,
|
||||
background_area, cell_area, flags)
|
||||
|
||||
colormap = editable.get_colormap()
|
||||
if hasattr(self, 'background'):
|
||||
colour = colormap.alloc_color(getattr(self, 'background'))
|
||||
else:
|
||||
colour = colormap.alloc_color('white')
|
||||
editable.modify_bg(gtk.STATE_ACTIVE, colour)
|
||||
editable.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
|
||||
editable.modify_base(gtk.STATE_NORMAL, colour)
|
||||
editable.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
|
||||
editable.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("black"))
|
||||
|
||||
return editable
|
||||
|
||||
gobject.type_register(CellRendererText)
|
||||
@@ -22,6 +22,7 @@ from tryton.common import DT_FORMAT, DHM_FORMAT, COLORS, node_attributes, \
|
||||
import tryton.common as common
|
||||
from tryton.common.cellrendererbutton import CellRendererButton
|
||||
from tryton.common.cellrendererdate import CellRendererDate
|
||||
from tryton.common.cellrenderertext import CellRendererText
|
||||
from tryton.action import Action
|
||||
from tryton.translate import date_format
|
||||
|
||||
@@ -237,7 +238,7 @@ class Char(object):
|
||||
self.field_name = field_name
|
||||
self.model = model
|
||||
self.attrs = attrs or {}
|
||||
self.renderer = gtk.CellRendererText()
|
||||
self.renderer = CellRendererText()
|
||||
self.treeview = treeview
|
||||
self.window = window
|
||||
|
||||
|
||||
Reference in new issue
Block a user