Reviewers: ,


Please review this at http://codereview.tryton.org/243003/

Affected files:
  M tryton/gui/window/view_form/view/form_gtk/char.py
  M tryton/gui/window/view_form/view/form_gtk/interface.py
  M tryton/gui/window/view_form/view/form_gtk/textbox.py


Index: tryton/gui/window/view_form/view/form_gtk/char.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/char.py
+++ b/tryton/gui/window/view_form/view/form_gtk/char.py
@@ -62,6 +62,11 @@
     def translate_widget_get(widget):
         return widget.get_text()

+    @staticmethod
+    def translate_widget_set_readonly(widget, value):
+        widget.set_editable(not value)
+        widget.props.sensitive = not value
+
     def _color_widget(self):
         if self.autocomplete:
             return self.entry.get_child()

Index: tryton/gui/window/view_form/view/form_gtk/interface.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/interface.py
+++ b/tryton/gui/window/view_form/view/form_gtk/interface.py
@@ -185,8 +185,10 @@
             'clicked', self.accel_group, gtk.keysyms.Return,
             gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

+        tooltips = common.Tooltips()
+
         self.widgets = {}
-        table = gtk.Table(len(languages), 2)
+        table = gtk.Table(len(languages), 4)
         table.set_homogeneous(False)
         table.set_col_spacings(3)
         table.set_row_spacings(2)
@@ -202,6 +204,7 @@

             context = rpc.CONTEXT.copy()
             context['language'] = language['code']
+            context['fuzzy_translation'] = False
             try:
                 value = rpc.execute('model', self.widget.record.model_name,
'read', self.widget.record.id, [self.widget.field_name],
@@ -209,11 +212,31 @@
             except TrytonServerError, exception:
                 common.process_exception(exception)
                 return
+            context['fuzzy_translation'] = True
+            try:
+                fuzzy_value = rpc.execute('model',
+                    self.widget.record.model_name, 'read',
+                    self.widget.record.id, [self.widget.field_name],
+                    context)[self.widget.field_name]
+            except TrytonServerError, exception:
+                common.process_exception(exception)
+                return
             widget = self.widget.translate_widget()
-            self.widgets[language['code']] = (widget, value)
-            self.widget.translate_widget_set(widget, value)
+            self.widget.translate_widget_set(widget, fuzzy_value)
+            self.widget.translate_widget_set_readonly(widget, True)
             table.attach(widget, 1, 2, i, i + 1)
+            editing = gtk.CheckButton()
+            editing.connect('toggled', self.editing_toggled, widget)
+            tooltips.set_tip(editing, _('Edit'))
+            table.attach(editing, 2, 3, i, i + 1, xoptions=gtk.FILL)
+            fuzzy = gtk.CheckButton()
+            fuzzy.set_active(value != fuzzy_value)
+            fuzzy.props.sensitive = False
+            tooltips.set_tip(fuzzy, _('Fuzzy'))
+            table.attach(fuzzy, 4, 5, i, i + 1, xoptions=gtk.FILL)
+            self.widgets[language['code']] = (widget, editing, fuzzy)

+        tooltips.enable()
         vbox = gtk.VBox()
         vbox.pack_start(table, False, True)
         viewport = gtk.Viewport()
@@ -233,19 +256,23 @@
         self.win.show_all()
         common.center_window(self.win, self.parent, self.sensible_widget)

+    def editing_toggled(self, editing, widget):
+        self.widget.translate_widget_set_readonly(widget,
+            not editing.get_active())
+
     def response(self, win, response):
         if response == gtk.RESPONSE_OK:
             for code, widget in self.widgets.iteritems():
-                widget, old_value = widget
-                new_value = self.widget.translate_widget_get(widget)
-                if new_value == old_value:
+                widget, editing, fuzzy = widget
+                if not editing.get_active():
                     continue
+                value = self.widget.translate_widget_get(widget)
                 context = rpc.CONTEXT.copy()
                 context['language'] = code
                 context['fuzzy_translation'] = False
                 args = ('model', self.widget.record.model_name, 'write',
                     self.widget.record.id, {
-                        self.widget.field_name: new_value,
+                        self.widget.field_name: value,
                         }, context)
                 try:
                     rpc.execute(*args)
@@ -307,3 +334,7 @@
     @staticmethod
     def translate_widget_get(widget):
         raise NotImplemented
+
+    @staticmethod
+    def translate_widget_set_readonly(widget, value):
+        raise NotImplemented

Index: tryton/gui/window/view_form/view/form_gtk/textbox.py
===================================================================

--- a/tryton/gui/window/view_form/view/form_gtk/textbox.py
+++ b/tryton/gui/window/view_form/view/form_gtk/textbox.py
@@ -70,6 +70,12 @@
         buf = textview.get_buffer()
return buf.get_text(buf.get_start_iter(), buf.get_end_iter(), False)

+    @staticmethod
+    def translate_widget_set_readonly(widget, value):
+        textview = widget.get_child()
+        textview.set_editable(not value)
+        textview.props.sensitive = not value
+
     def grab_focus(self):
         return self.textview.grab_focus()




--
[email protected] mailing list

Reply via email to