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