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

Reply via email to