muu |
|
Темы:
8
Сообщения:
476
Участник с: 16 ноября 2008
|
Так, проблему локализовал, осталось только решение найти. Фишка в следующем: настраивал я когда-то расширенный ввод (мне нужна была диакритика, кое-какие знаки препинания, валют и т.п.) - подробности описывал здесь. Так вот, чтобы это работало везде, в том числе в GTK-приложениях, понадобилось мне глобально установить переменную окружения GTK_IM_METHOD=xim (в QT4 xim и так по дефолту). Соната, как выяснилось, с этим методом ввода не дружит (что, имхо, неправильно: другие приложения на python+GTK такой проблемы не имеют, например terminator или gajim). Убрал я эту переменную - кириллица начала вводиться и сохраняться. Но это, увы, не решение проблемы: мне расширенный ввод сильно нужен, мне нужна диакритика, отключить не могу. Короче, выбор у меня небогатый - либо все-таки отказаться от использования сонаты в пользу какого-либо аналога (а очень не хочется, она идельно меня устраивает во всем остальном, а вот аналоги - не устраивают), либо… поставить пива тому доброму человеку, который подружит сонату с xim. :) |
ulis |
|
Темы:
2
Сообщения:
67
Участник с: 28 ноября 2008
|
Пока могу предложить только костыль (не работал никогда с pygtk). При правке тегов для sonata (для других приложений - нет) будет сбрасываться переменная среды, потом (при закрытии окна правки) восстанавливаться. Конечно диакритические знаки в теги записать будет невозможно. usr/lib/python2.6/site-packages/sonata/tagedit.py стр 26 def __init__(self, window, tags_mpd_update, tags_set_use_mpdpath): self.window = window self.tags_mpd_update = tags_mpd_update self.tags_set_use_mpdpath = tags_set_use_mpdpath self.filelabel = None self.curr_mpdpath = None self.tagnum = None self.use_mpdpaths = None os.environ['GTK_IM_MODULE'] = "" os.environ.update() def tags_win_hide(self, window, _data, tags): tag_paths = (tag['mpdpath'] for tag in tags[:self.tagnum]) gobject.idle_add(self.tags_mpd_update, tag_paths) window.destroy() self.tags_set_use_mpdpath(self.use_mpdpaths) os.environ['GTK_IM_MODULE'] = "xim" os.environ.update() |
muu |
|
Темы:
8
Сообщения:
476
Участник с: 16 ноября 2008
|
Костыль рабочий, спасибо. Собственно, именно в тегах мне диакритика и спецсимволы не особенно-то и нужны. Готов проставиться пивом. P.S. Написал багрепорт разработчикам sonata - надеюсь, пофиксят. А пока похожу с костылем. |
muu |
|
Темы:
8
Сообщения:
476
Участник с: 16 ноября 2008
|
В багтрекере сонаты предложили более удобное решение: В файле /usr/lib/python2.6/site-packages/sonata/misc.py надо найти вот это (221-223 строка): # XXX this makes python-mpd correctly return lowercase # keys for, e.g., playlistinfo() with a turkish locale: locale.setlocale(locale.LC_CTYPE, "C") После этого русский в тегах вводится без проблем + дополнительные символы из .XCompose тоже начинают вводиться. |
ulis |
|
Темы:
2
Сообщения:
67
Участник с: 28 ноября 2008
|
Эту строчку видел. Возник вопрос - зачем? Но ответ был тут же - нужна турецким пользователям sonata. :) Ну да так проще. Кстати, пропала нужда в том, что я описывал в своем первом посте. |
muu |
|
Темы:
8
Сообщения:
476
Участник с: 16 ноября 2008
|
UlisНу да, я ж говорю - расширенные символы тоже начали вводиться. |
ulis |
|
Темы:
2
Сообщения:
67
Участник с: 28 ноября 2008
|
ЯMuuЯ имел ввиду что можно править теги файлов с русскоязычными путями без encode('utf-8'). Походу FileRef на основании локали пыталась Unicode декодировать. |
muu |
|
Темы:
8
Сообщения:
476
Участник с: 16 ноября 2008
|
А, понял. |