Reviewers: ,


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

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


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

--- a/tryton/gui/window/view_form/view/form_gtk/richtextbox.py
+++ b/tryton/gui/window/view_form/view/form_gtk/richtextbox.py
@@ -151,7 +151,8 @@
                 self.action_prop_font, tag)
         self.tool_ids['markup'] = self.tools['markup'].connect('toggled',
             self.edit_text_markup)
-        self.text_buffer.connect_after('insert-text', self.persist_style)
+        self.insert_text_id = self.text_buffer.connect_after('insert-text',
+            self.persist_style)
         # Tooltip text
         self.tools['bold'].set_tooltip_text(_('Change text to bold'))
         self.tools['italic'].set_tooltip_text(_('Change text to italic'))
@@ -170,15 +171,15 @@
             _('Change the background text'))
self.tools['markup'].set_tooltip_text(_('Change the markup text view'))
         # Packing widgets
-        tool_bar = gtk.Toolbar()
+        self.tool_bar = gtk.Toolbar()

-        tool_bar.set_style(gtk.TOOLBAR_ICONS)
+        self.tool_bar.set_style(gtk.TOOLBAR_ICONS)
         for tag in tags:
-            tool_bar.insert(self.tools[tag], -1)
+            self.tool_bar.insert(self.tools[tag], -1)
         separator = gtk.SeparatorToolItem
         for local in (3, 6, 11, 14):
-            tool_bar.insert(separator(), local)
-        self.widget.pack_start(tool_bar, False)
+            self.tool_bar.insert(separator(), local)
+        self.widget.pack_start(self.tool_bar, False)
         self.widget.connect('enter-notify-event', self.enter)

     def get_value_markup(self):
@@ -199,6 +200,7 @@
             field.set_client(record, self.get_value_markup())

     def set_buffer(self, value):
+        self.text_buffer.handler_block(self.insert_text_id)
         if self.tools['markup'].get_active():
             super(RichTextBox, self).set_buffer(value)
         else:
@@ -208,6 +210,7 @@
                 text_buffer.serialize(text_buffer,
                     "application/x-gtk-text-buffer-rich-text",
text_buffer.get_start_iter(), text_buffer.get_end_iter()))
+        self.text_buffer.handler_unblock(self.insert_text_id)

     def _focus_out(self):
         if not self.focus_out:
@@ -221,6 +224,12 @@
                 return
         super(RichTextBox, self)._focus_out()

+    def _readonly_set(self, value):
+        super(RichTextBox, self)._readonly_set(value)
+        self.tool_bar.set_sensitive(not value)
+        if value and self.tools['markup'].get_active():
+            self.tools['markup'].set_active(False)
+
     def edit_text_markup(self, widget):
         '''on/off all buttons and call the appropriate parser'''
         tags = [tag for tag in self.tools if tag != 'markup']
@@ -234,7 +243,7 @@
             for tag in tags:
                 self.tools[tag].set_sensitive(True)
text = self.text_buffer.get_text(self.text_buffer.get_start_iter(),
-                self.text_buffer.get_end_iter())
+                self.text_buffer.get_end_iter()).decode('utf-8')
         self.set_buffer(text)

     def parser_to_text_markup(self, buffer_):
@@ -288,7 +297,7 @@
             if not imark.forward_to_tag_toggle(None):
                 break
         text = text_buffer.get_text(text_buffer.get_start_iter(),
-            text_buffer.get_end_iter())
+            text_buffer.get_end_iter()).decode('utf-8')
         return formalize_text_markup(text)

     def parser_from_text_markup(self, text):

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
@@ -68,7 +68,8 @@
     def translate_widget_get(widget):
         textview = widget.get_child()
         buf = textview.get_buffer()
- return buf.get_text(buf.get_start_iter(), buf.get_end_iter(), False)
+        return buf.get_text(buf.get_start_iter(), buf.get_end_iter(),
+            False).decode('utf-8')

     @staticmethod
     def translate_widget_set_readonly(widget, value):
@@ -128,7 +129,7 @@
         buf = self.textview.get_buffer()
         iter_start = buf.get_start_iter()
         iter_end = buf.get_end_iter()
-        return buf.get_text(iter_start, iter_end, False)
+        return buf.get_text(iter_start, iter_end, False).decode('utf-8')

     def set_value(self, record, field):
         field.set_client(record, self.get_value())



--
[email protected] mailing list

Reply via email to