trouble with ColumnSorterMixin

Hi,

I am using the ColumnSorterMixin under wxp 3.0.1.1

  2014-12-18 13:29:42 DEBUG gm.main (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/wxpython/gmGuiMain.py::<module>() #35): wxPython versions available on this machine: ['3.0-gtk2', '2.8-gtk2-unicode']
  2014-12-18 13:29:42 INFO gm.main (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/wxpython/gmGuiMain.py::<module>() #49): wxPython version loaded: 3.0.1.1 ('__WXGTK__', 'wxGTK', 'unicode', 'gtk2', 'wx-assertions-on', 'SWIG-1.3.29')

and Python 2.7

  2014-12-18 13:29:42 INFO gm.launcher (gnumed.py::log_startup_info() #280): Platform: ('Linux', 'hermes', '3.16.0-4-686-pae', '#1 SMP Debian 3.16.7-ckt2-1 (2014-12-08)', 'i686', '')
  2014-12-18 13:29:42 INFO gm.launcher (gnumed.py::log_startup_info() #281): Python 2.7.8 (default, Oct 18 2014, 16:20:11)

in a list ctrl with report mode. All my list items are forced
to be unicode strings upon insertion. My locale settings are
"de_DE.UTF-8" everywhere:

  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #122): unmodified startup locale settings (should be [C])
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #124): current locale settings:
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #125): locale.get_locale(): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_NUMERIC): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_MESSAGES): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_MONETARY): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_COLLATE): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_CTYPE): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_TIME): (None, None)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_NUMERIC): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_MESSAGES): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_MONETARY): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_COLLATE): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_CTYPE): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_ALL): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_TIME): C)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #133): locale.getdefaultlocale() - default (user) locale: ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #137): encoding sanity check (also check "locale.nl_langinfo(CODESET)" below):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #142): sys.getdefaultencoding(): [ascii]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #143): locale.getpreferredencoding(): [ANSI_X3.4-1968]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #144): locale.getlocale()[1]: [None]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #145): sys.getfilesystemencoding(): [UTF-8]
  2014-12-18 13:29:42 WARNING gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #152): encoding suggested by locale (ANSI_X3.4-1968) does not match encoding currently set in locale (None)
  2014-12-18 13:29:42 WARNING gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #153): this might lead to encoding errors
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [ANSI_X3.4-1968]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [ascii]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #161): on Linux you can determine a likely candidate for the encoding by running "locale charmap"
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #163): locale related environment variables (${LANG} is typically used):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #166): ${LANGUAGE}=
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #168): ${LC_ALL} not set
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #168): ${LC_CTYPE} not set
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #166): ${LANG}=de_DE.UTF-8
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #170): database of locale conventions:
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(mon_decimal_point):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(int_frac_digits): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(p_sep_by_space): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(frac_digits): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(thousands_sep):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(n_sign_posn): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(decimal_point): .
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(int_curr_symbol):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(n_cs_precedes): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(p_sign_posn): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(mon_thousands_sep):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(negative_sign):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(currency_symbol):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(n_sep_by_space): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(mon_grouping): []
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(p_cs_precedes): 127
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(positive_sign):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #174): locale.localeconv(grouping): []
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(D_FMT): %m/%d/%y
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(D_T_FMT): %a %b %e %H:%M:%S %Y
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(YESEXPR): ^[yY]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(ALT_DIGITS):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(T_FMT_AMPM): %I:%M:%S %p
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(RADIXCHAR): .
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(ERA_D_FMT):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(T_FMT): %H:%M:%S
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(NOEXPR): ^[nN]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(CRNCYSTR): -
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(ERA):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(CODESET): ANSI_X3.4-1968
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(THOUSEP):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #189): locale.nl_langinfo(ERA_D_T_FMT):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::get_encoding() #418): *actual* encoding of locale is None, using encoding *recommended* by locale
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #198): gmI18N.get_encoding(): ANSI_X3.4-1968
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::activate_locale() #249): activating user-default locale with <locale.setlocale(locale.LC_ALL, '')> returns: [de_DE.UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #122): locale settings after activating user-default locale
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #124): current locale settings:
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #125): locale.get_locale(): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_NUMERIC): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_MESSAGES): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_MONETARY): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_COLLATE): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_CTYPE): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #127): locale.get_locale(LC_TIME): ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_NUMERIC): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_MESSAGES): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_MONETARY): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_COLLATE): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_CTYPE): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_ALL): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #130): (locale.set_locale(LC_TIME): de_DE.UTF-8)
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #133): locale.getdefaultlocale() - default (user) locale: ('de_DE', 'UTF-8')
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #137): encoding sanity check (also check "locale.nl_langinfo(CODESET)" below):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #142): sys.getdefaultencoding(): [ascii]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #143): locale.getpreferredencoding(): [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #144): locale.getlocale()[1]: [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #145): sys.getfilesystemencoding(): [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [ascii]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #158): <codecs> module CAN handle encoding [UTF-8]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #161): on Linux you can determine a likely candidate for the encoding by running "locale charmap"
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #163): locale related environment variables (${LANG} is typically used):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #166): ${LANGUAGE}=
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #168): ${LC_ALL} not set
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #168): ${LC_CTYPE} not set
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #166): ${LANG}=de_DE.UTF-8
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #170): database of locale conventions:
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(mon_decimal_point): ,
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(int_frac_digits): 2
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(p_sep_by_space): 1
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(frac_digits): 2
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(thousands_sep): .
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(n_sign_posn): 1
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(decimal_point): ,
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(int_curr_symbol): EUR
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(n_cs_precedes): 0
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(p_sign_posn): 1
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(mon_thousands_sep): .
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(negative_sign): -
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #179): locale.localeconv(currency_symbol): €
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(n_sep_by_space): 1
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(mon_grouping): [3, 3, 0]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(p_cs_precedes): 0
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(positive_sign):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #177): locale.localeconv(grouping): [3, 3, 0]
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(D_FMT): %d.%m.%Y
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(D_T_FMT): %a %d %b %Y %T %Z
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(YESEXPR): ^[jJyY].*
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(ALT_DIGITS):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(T_FMT_AMPM):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(RADIXCHAR): ,
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(ERA_D_FMT):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(T_FMT): %T
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(NOEXPR): ^[nN].*
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #194): locale.nl_langinfo(CRNCYSTR): +€
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(ERA):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(CODESET): UTF-8
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(THOUSEP): .
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #192): locale.nl_langinfo(ERA_D_T_FMT):
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__log_locale_settings() #198): gmI18N.get_encoding(): UTF-8
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__split_locale_into_levels() #95): splitting canonical locale [de_DE] into levels
  2014-12-18 13:29:42 DEBUG gm.i18n (/home/ncq/Projekte/gm-git/gnumed/gnumed/Gnumed/pycommon/gmI18N.py::__split_locale_into_levels() #104): system locale levels: {'country': 'de_DE', 'full': 'de_DE', 'language': 'de'}

According to

  http://trac.wxwidgets.org/ticket/10999

there might be a problem with the mixin sorting unicode
strings. Hence I created my own sorter like so:

screenshot_001.png

screenshot_002.png

···

#------------------------------------------------------------
  def _unicode_aware_column_sorter(self, item1, item2):
    sort_col, is_ascending = self.GetSortState()
    data1 = self.itemDataMap[item1][sort_col]
    data2 = self.itemDataMap[item2][sort_col]

    if type(data1) == type(u'') and type(data2) == type(u''):
      cmp_result = locale.strcoll(data1, data2)
    elif type(data1) == type('') or type(data2) == type(''):
      cmp_result = locale.strcoll(str(data1), str(data2))
    else:
      cmp_result = cmp(data1, data2)

    direction = u'ASC'
    if not is_ascending:
      cmp_result = -1 * cmp_result
      direction = u'DESC'
    # debug:
    if cmp_result < 0:
      op1 = u'\u2191 ' # up
      op2 = u'\u2193' # down
    elif cmp_result > 0:
      op2 = u'\u2191 ' # up
      op1 = u'\u2193' # down
    else:
      op1 = u' = '
      op2 = u''

    print u'%s: [%s]%s[%s]%s (%s)' % (direction, data1, op1, data2, op2, cmp_result)
    return cmp_result

  def GetColumnSorter(self):
    return self._unicode_aware_column_sorter
  #------------------------------------------------------------

which, however, generates a sort order which I don't
understand (see the screenshots). It looks like strcoll is
ignoring the "writing hand" \u270d part ?

The following code (with the same locale initialization)

  #----------------------------------------------------------------------
  def test_strcoll():
    candidates = [
      (u'\u270d', u'\u270d'),
      (u'4', u'\u270d' + u'4'),
      (u'4.4', u'\u270d' + u'4.4'),
      (u'4', u'\u270d' + u'9'),
      (u'4', u'\u270d' + u'2'),
    ]
    for cands in candidates:
      print cands[0], u'<vs>', cands[1], '=', locale.strcoll(cands[0], cands[1])

  #----------------------------------------------------------------------

shows rather interesting results as well: Notice the lines
with 4 and 4.4, respectively, which - regardless of whether
certain unicode code points are ignored or not - seems like
an outright bug (as opposed to 4 vs 9 and 4 vs 2 which makes
sense if the unicode character is simply ignored before
comparison).

Does anyone know how to do better ?

Karsten
--
GPG key ID E4071346 @ eu.pool.sks-keyservers.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346

Trying again:

The ColumnSorterMixin does not seem to "properly" sort
non-alphanumeric unicode code points.

Anyone knows a workaround ?

Karsten

···

--
GPG key ID E4071346 @ eu.pool.sks-keyservers.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346

Karsten Hilbert wrote:

The ColumnSorterMixin does not seem to "properly" sort
non-alphanumeric unicode code points.

How would you properly sort a non-alphanumeric Unicode code point? Is
the "spade" suit symbol greater than or less than the finite integral
symbol?

···

--
Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.

Karsten Hilbert wrote:
> The ColumnSorterMixin does not seem to "properly" sort
> non-alphanumeric unicode code points.

How would you properly sort a non-alphanumeric Unicode code point? Is
the "spade" suit symbol greater than or less than the finite integral
symbol?

Yeah, I know, that's why I quoted the "properly".

One idea would be by value-of-codepoint. Another one by UCA.

   UTS #10: Unicode Collation Algorithm

Also, one might hope to expect to get identical codepoints lined up next to each other :slight_smile:

Yet another surprise: u"\SPADE"+u"2" can sort before u"\SPADE"+u"4" but after u"SPADE"+9 ...
(for an example of that using locale.strcoll see my initial detailed post.

Karsten