summaryrefslogtreecommitdiff
path: root/community/onboard/fix_encoding_mismatch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/onboard/fix_encoding_mismatch.patch')
-rw-r--r--community/onboard/fix_encoding_mismatch.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/community/onboard/fix_encoding_mismatch.patch b/community/onboard/fix_encoding_mismatch.patch
new file mode 100644
index 000000000..01750598c
--- /dev/null
+++ b/community/onboard/fix_encoding_mismatch.patch
@@ -0,0 +1,187 @@
+Subject: Fix string encodings so as to not have a mismatch without mousetweaks
+Author: marmuta
+Origin: upstream, http://bazaar.launchpad.net/~onboard/onboard/0.91/revision/764
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/958385
+
+---
+ Onboard/Config.py | 9 +++++----
+ Onboard/ConfigUtils.py | 9 ++++++---
+ Onboard/Exceptions.py | 5 +++--
+ Onboard/OnboardGtk.py | 5 +++--
+ Onboard/settings.py | 7 ++++---
+ Onboard/utils.py | 16 ++++++++++++++++
+ 6 files changed, 37 insertions(+), 14 deletions(-)
+
+Index: onboard-0.97.0/Onboard/Config.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/Config.py
++++ onboard-0.97.0/Onboard/Config.py
+@@ -12,7 +12,7 @@
+
+ from gi.repository import GLib, Gtk
+
+-from Onboard.utils import show_confirmation_dialog, Version
++from Onboard.utils import show_confirmation_dialog, Version, unicode_str
+ from Onboard.WindowUtils import Handle
+ from Onboard.ConfigUtils import ConfigObject
+ from Onboard.MouseControl import Mousetweaks, ClickMapper
+@@ -209,7 +209,7 @@
+ try:
+ ConfigObject.__init__(self)
+ except SchemaError as e:
+- _logger.error(str(e))
++ _logger.error(unicode_str(e))
+ sys.exit()
+
+ # init paths
+@@ -225,7 +225,8 @@
+ try:
+ copytree(old_user_dir, user_dir)
+ except OSError as ex: # python >2.5
+- _logger.error(_("Failed to migrate user directory. ") + str(ex))
++ _logger.error(_("Failed to migrate user directory. ") + \
++ unicode_str(ex))
+
+ # Load system defaults (if there are any, not required).
+ # Used for distribution specific settings, aka branding.
+@@ -347,7 +348,7 @@
+ self.mousetweaks = Mousetweaks()
+ self.children.append(self.mousetweaks)
+ except (SchemaError, ImportError) as e:
+- _logger.warning(str(e))
++ _logger.warning(unicode_str(e))
+ self.mousetweaks = None
+
+ self.clickmapper = ClickMapper()
+Index: onboard-0.97.0/Onboard/ConfigUtils.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/ConfigUtils.py
++++ onboard-0.97.0/Onboard/ConfigUtils.py
+@@ -22,7 +22,8 @@
+ from gi.repository import Gio
+
+ from Onboard.Exceptions import SchemaError
+-from Onboard.utils import pack_name_value_list, unpack_name_value_list
++from Onboard.utils import pack_name_value_list, unpack_name_value_list, \
++ unicode_str
+
+ _CAN_SET_HOOK = "_can_set_" # return true if value is valid
+ _GSETTINGS_GET_HOOK = "_gsettings_get_" # retrieve from gsettings
+@@ -388,7 +389,8 @@
+ try:
+ filename = parser.read(paths)
+ except configparser.ParsingError as ex:
+- _logger.error(_("Failed to read system defaults. " + str(ex)))
++ _logger.error(_("Failed to read system defaults. " + \
++ unicode_str(ex)))
+
+ if not filename:
+ _logger.info(_("No system defaults found."))
+@@ -501,7 +503,8 @@
+ value = self.settings[self.key]
+
+ except KeyError as ex:
+- _logger.error(_("Failed to get gsettings value. ") + str(ex))
++ _logger.error(_("Failed to get gsettings value. ") + \
++ unicode_str(ex))
+
+ return value
+
+Index: onboard-0.97.0/Onboard/Exceptions.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/Exceptions.py
++++ onboard-0.97.0/Onboard/Exceptions.py
+@@ -4,6 +4,7 @@
+
+ from traceback import format_tb
+ import sys
++from Onboard.utils import unicode_str
+
+ class ChainableError(Exception):
+ """
+@@ -40,10 +41,10 @@
+ traceback = property(_get_traceback)
+
+ def __str__(self):
+- message = self._message + "\n"
++ message = unicode_str(self._message) + "\n"
+ if self.chained_exception:
+ message += "%s: %s" % (type(self.chained_exception).__name__,
+- str(self.chained_exception))
++ unicode_str(self.chained_exception))
+ return message
+
+ class SVGSyntaxError(ChainableError):
+Index: onboard-0.97.0/Onboard/OnboardGtk.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/OnboardGtk.py
++++ onboard-0.97.0/Onboard/OnboardGtk.py
+@@ -26,7 +26,8 @@
+ from Onboard.KeyGtk import *
+ from Onboard.KbdWindow import KbdWindow, KbdPlugWindow
+ from Onboard.KeyboardSVG import KeyboardSVG
+-from Onboard.utils import show_confirmation_dialog, CallOnce, timeit
++from Onboard.utils import show_confirmation_dialog, CallOnce, timeit, \
++ unicode_str
+ from Onboard.Appearance import Theme
+
+ ### Config Singleton ###
+@@ -485,7 +486,7 @@
+ except virtkey.error as e:
+ t = time.time()
+ if t > self._vk_error_time + .2: # rate limit to once per 200ms
+- _logger.warning("vk: "+str(e))
++ _logger.warning("vk: " + unicode_str(e))
+ self._vk_error_time = t
+
+ return self._vk
+Index: onboard-0.97.0/Onboard/settings.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/settings.py
++++ onboard-0.97.0/Onboard/settings.py
+@@ -24,7 +24,8 @@
+ from Onboard.Appearance import Theme, ColorScheme
+ from Onboard.Scanner import ScanMode, ScanDevice
+ from Onboard.utils import show_ask_string_dialog, \
+- show_confirmation_dialog
++ show_confirmation_dialog, \
++ unicode_str
+
+ from virtkey import virtkey
+ from osk import Devices
+@@ -400,8 +401,8 @@
+ try:
+ Popen([filename, "universal-access"])
+ except OSError as e:
+- _logger.warning(_("System settings not found"
+- " ({}): {}").format(filename, str(e)))
++ _logger.warning(_("System settings not found ({}): {}") \
++ .format(filename, unicode_str(e)))
+
+ def update_num_resize_handles_combobox(self):
+ self.num_resize_handles_list = Gtk.ListStore(str, int)
+Index: onboard-0.97.0/Onboard/utils.py
+===================================================================
+--- onboard-0.97.0.orig/Onboard/utils.py
++++ onboard-0.97.0/Onboard/utils.py
+@@ -961,4 +961,20 @@
+ return 1
+ return 0
+
++def unicode_str(obj, encoding = "utf-8"):
++ """
++ Safe str() function that always returns an unicode string.
++ Do nothing if the string was already unicode.
++ """
++ if sys.version_info.major >= 3: # python 3?
++ return str(obj)
++
++ if type(obj) == unicode: # unicode string?
++ return obj
++
++ if hasattr(obj, "__unicode__"): # Exception object?
++ return unicode(obj)
++
++ return str(obj).decode("utf-8") # strings, numbers, ...
++
+