Add color on editing cell

This commit is contained in:
Cédric Krier committed 2008-09-04 19:18:51 +02:00
1 parent 9f9573ad00
commit 0f480930b7
3 files changed
+81 -2

No files matched your search

+12 -1
View File
@@ -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()
+67
View File
@@ -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