Reviewers: ,
Please review this at http://codereview.tryton.org/304006/
Affected files:
M tryton/gui/window/view_form/model/field.py
M tryton/gui/window/view_form/view/form_gtk/float.py
M tryton/gui/window/view_form/view/form_gtk/float_time.py
M tryton/gui/window/view_form/view/form_gtk/progressbar.py
M tryton/gui/window/view_form/view/list_gtk/parser.py
Index: tryton/gui/window/view_form/model/field.py
===================================================================
--- a/tryton/gui/window/view_form/model/field.py
+++ b/tryton/gui/window/view_form/model/field.py
@@ -285,6 +285,11 @@
def get(self, record, check_load=True, readonly=True, modified=False):
return record.value.get(self.name, self._default)
+ def digits(self, record):
+ default = (16, 2)
+ return tuple(x or y for x, y in zip(
+ record.expr_eval(self.attrs.get('digits', default)),
default))
+
class FloatField(NumberField):
@@ -300,7 +305,7 @@
def get_client(self, record):
value = record.value.get(self.name)
if value is not None:
- digits = record.expr_eval(self.attrs.get('digits', (16, 2)))
+ digits = self.digits(record)
return locale.format('%.' + str(digits[1]) + 'f', value, True)
else:
return ''
@@ -320,7 +325,7 @@
def get_client(self, record):
value = record.value.get(self.name)
if value is not None:
- digits = record.expr_eval(self.attrs.get('digits', (16, 2)))
+ digits = self.digits(record)
return locale.format('%.' + str(digits[1]) + 'f', value, True)
else:
return ''
@@ -343,6 +348,9 @@
else:
return ''
+ def digits(self, record):
+ return (16, 0)
+
class BooleanField(CharField):
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
@@ -10,9 +10,7 @@
def __init__(self, field_name, model_name, attrs=None):
super(Float, self).__init__(field_name, model_name, attrs=attrs)
- self.digits = (16, 2)
self._default_value = ''
- self.entry.set_width_chars(sum(self.digits))
self.entry.connect('key-press-event', self.key_press_event)
def set_value(self, record, field):
@@ -23,8 +21,7 @@
if not field:
self.entry.set_text('')
return False
- self.digits = field.attrs.get('digits', (16, 2))
- digits = record.expr_eval(self.digits)
+ digits = field.digits(record)
self.entry.set_width_chars(sum(digits))
self.entry.set_text(field.get_client(record))
@@ -47,7 +44,7 @@
if new_value in ('-', decimal_point):
return
- digits = self.record.expr_eval(self.digits)
+ digits = self.field.digits(self.record)
try:
locale.atof(new_value)
Index: tryton/gui/window/view_form/view/form_gtk/float_time.py
===================================================================
--- a/tryton/gui/window/view_form/view/form_gtk/float_time.py
+++ b/tryton/gui/window/view_form/view/form_gtk/float_time.py
@@ -44,7 +44,7 @@
value = self.entry.get_text()
if not value:
return field.set_client(record, 0.0)
- digits = record.expr_eval(field.attrs.get('digits', (16, 2)))
+ digits = field.digits(record)
return field.set_client(record,
round(common.text_to_float_time(value, self.conv),
digits[1]))
Index: tryton/gui/window/view_form/view/form_gtk/progressbar.py
===================================================================
--- a/tryton/gui/window/view_form/view/form_gtk/progressbar.py
+++ b/tryton/gui/window/view_form/view/form_gtk/progressbar.py
@@ -28,7 +28,7 @@
self.widget.set_fraction(0.0)
return False
value = float(field.get(record) or 0.0)
- digits = record.expr_eval(field.attrs.get('digits', (16, 2)))
+ digits = field.digits(record)
self.widget.set_text(locale.format('%.' + str(digits[1]) + 'f',
value, True))
self.widget.set_fraction(value / 100.0)
Index: tryton/gui/window/view_form/view/list_gtk/parser.py
===================================================================
--- a/tryton/gui/window/view_form/view/list_gtk/parser.py
+++ b/tryton/gui/window/view_form/view/list_gtk/parser.py
@@ -466,7 +466,7 @@
super(Float, self).setter(column, cell, store, iter)
record = store.get_value(iter, 0)
field = record[self.field_name]
- digits = record.expr_eval(field.attrs.get('digits', (16, 2)))
+ digits = field.digits(record)
cell.digits = digits
@@ -485,7 +485,7 @@
def value_from_text(self, record, text, callback=None):
field = record[self.field_name]
- digits = record.expr_eval(field.attrs.get('digits', (16, 2)))
+ digits = field.digits(record)
field.set_client(record,
round(common.text_to_float_time(text, self.conv), digits[1]))
if callback:
@@ -934,9 +934,10 @@
@realized
def setter(self, column, cell, store, iter):
record = store.get_value(iter, 0)
+ field = record[self.field_name]
value = float(self.get_textual_value(record) or 0.0)
cell.set_property('value', value)
- digit = record.expr_eval(self.attrs.get('digits', (16, 2)))[1]
+ digit = field.digits(record)[1]
text = locale.format('%.' + str(digit) + 'f', value, True)
cell.set_property('text', text + '%')
--
[email protected] mailing list