From c8cf74f88e498bd4819fbc351a09b0df43440350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 29 Mar 2011 16:01:44 +0200 Subject: [PATCH] Made numpad locale aware --- CHANGELOG | 1 + tryton/common/cellrendererfloat.py | 16 +++++++++++++++- .../gui/window/view_form/view/form_gtk/float.py | 10 +++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0539bd9a2a..dc78cf48bb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Made numpad locale aware * Add open button on binary and image widgets * Hide buttons on image widget if readonly * Added a connection manager à la gajim diff --git a/tryton/common/cellrendererfloat.py b/tryton/common/cellrendererfloat.py index 9c527696c7..b919baf819 100644 --- 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 -from cellrendererinteger import CellRendererInteger import locale +from cellrendererinteger import CellRendererInteger class CellRendererFloat(CellRendererInteger): @@ -11,6 +12,19 @@ class CellRendererFloat(CellRendererInteger): 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() diff --git a/tryton/gui/window/view_form/view/form_gtk/float.py b/tryton/gui/window/view_form/view/form_gtk/float.py index 0c53fab508..71740ca7de 100644 --- 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. -from integer import Integer +import gtk import locale +from integer import Integer class Float(Integer): @@ -11,6 +12,7 @@ class Float(Integer): 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 @@ class Float(Integer): 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()