/usr/lib/python2.7/dist-packages/tryton/gui/window/view_form/view/form_gtk/float.py is in tryton-client 3.8.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # 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
class Float(Integer):
"Float"
def __init__(self, view, attrs):
super(Float, self).__init__(view, attrs)
self.entry.connect('key-press-event', self.key_press_event)
def display(self, record, field):
super(Float, self).display(record, field)
if field:
digits = field.digits(record, factor=self.factor)
if digits:
self.entry.set_width_chars(sum(digits))
else:
self.entry.set_width_chars(18)
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):
if not self.record:
entry.stop_emission('insert-text')
return
value = entry.get_text()
position = entry.get_position()
new_value = value[:position] + new_text + value[position:]
decimal_point = locale.localeconv()['decimal_point']
if new_value in ('-', decimal_point):
return
digits = self.field.digits(self.record, factor=self.factor)
try:
locale.atof(new_value)
except ValueError:
entry.stop_emission('insert-text')
return
new_int = new_value
new_decimal = ''
if decimal_point in new_value:
new_int, new_decimal = new_value.rsplit(decimal_point, 1)
if (digits
and (len(new_int) > digits[0]
or len(new_decimal) > digits[1])):
entry.stop_emission('insert-text')
|