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/

Attachment: pgpBgMwqpfLgM.pgp
Description: PGP signature

Reply via email to