Please review this at http://codereview.appspot.com/4277071/
Affected files:
M tryton/common/cellrendererfloat.py
M tryton/gui/window/view_form/view/form_gtk/float.py
Index: tryton/common/cellrendererfloat.py
===================================================================
--- a/tryton/common/cellrendererfloat.py
+++ b/tryton/common/cellrendererfloat.py
@@ -1,8 +1,9 @@
#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 locale
from cellrendererinteger import CellRendererInteger
-import locale
class CellRendererFloat(CellRendererInteger):
@@ -11,6 +12,19 @@
super(CellRendererFloat, self).__init__()
self.digits = (16, 2)
+ def on_start_editing(self, event, widget, path, background_area,
+ cell_area, flags):
+ editable = super(CellRendererInteger, self).on_start_editing(event,
+ widget, path, background_area, cell_area, flags)
+ editable.connect('key-press-event', self.key_press_event)
+ return editable
+
+ def key_press_event(self, widget, event):
+ for name in ('KP_Decimal', 'KP_Separator'):
+ if event.keyval == gtk.gdk.keyval_from_name(name):
+ event.keyval = int(gtk.gdk.unicode_to_keyval(
+ ord(locale.localeconv()['decimal_point'])))
+
def sig_insert_text(self, entry, new_text, new_text_length, position):
value = entry.get_text()
position = entry.get_position()
Index: tryton/gui/window/view_form/view/form_gtk/float.py
===================================================================
--- a/tryton/gui/window/view_form/view/form_gtk/float.py
+++ b/tryton/gui/window/view_form/view/form_gtk/float.py
@@ -1,7 +1,8 @@
#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 locale
from integer import Integer
-import locale
class Float(Integer):
@@ -11,6 +12,7 @@
super(Float, self).__init__(field_name, model_name, window,
attrs=attrs)
self.digits = (16, 2)
+ self.entry.connect('key-press-event', self.key_press_event)
def set_value(self, record, field):
try:
@@ -32,6 +34,12 @@
self.entry.set_text(locale.format('%.' + str(digits[1]) + 'f',
field.get(record) or 0.0, True))
+ def key_press_event(self, widget, event):
+ for name in ('KP_Decimal', 'KP_Separator'):
+ if event.keyval == gtk.gdk.keyval_from_name(name):
+ event.keyval = int(gtk.gdk.unicode_to_keyval(
+ ord(locale.localeconv()['decimal_point'])))
+
def sig_insert_text(self, entry, new_text, new_text_length, position):
value = entry.get_text()
position = entry.get_position()
--
Cédric Krier
B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 472 54 46 59
Email/Jabber: [email protected]
Website: http://www.b2ck.com/
pgpBgMwqpfLgM.pgp
Description: PGP signature
