Philipp Hörist pushed to branch master at gajim / gajim
Commits: 52fa5779 by Philipp Hörist at 2018-02-22T00:37:54+01:00 Better emoticon theme fallback strategy
Fallback must be happening in init_emoticon() instead of PreferencesWindow
- - - - -
3 changed files:
- gajim/common/helpers.py - gajim/config.py - gajim/gui_interface.py
Changes:
===================================== gajim/common/helpers.py ===================================== --- a/gajim/common/helpers.py +++ b/gajim/common/helpers.py @@ -1596,15 +1596,31 @@ def version_condition(current_version, required_version): def get_available_emoticon_themes(): emoticons_themes = [] emoticons_data_path = os.path.join(app.DATA_DIR, 'emoticons') + font_theme_path = os.path.join( + app.DATA_DIR, 'emoticons', 'font-emoticons', 'emoticons_theme.py')
folders = os.listdir(emoticons_data_path) if os.path.isdir(app.MY_EMOTS_PATH): folders += os.listdir(app.MY_EMOTS_PATH)
+ file = 'emoticons_theme.py' + if os.name == 'nt' and not os.path.exists(font_theme_path): + # When starting Gajim from source .py files are available + # We test this with font-emoticons and fallback to .pyc files otherwise + file = 'emoticons_theme.pyc' + for theme in folders: - theme_path = os.path.join( - emoticons_data_path, theme, 'emoticons_theme.py') + theme_path = os.path.join(emoticons_data_path, theme, file) if os.path.exists(theme_path): emoticons_themes.append(theme) emoticons_themes.sort() return emoticons_themes + +def get_emoticon_theme_path(theme): + emoticons_data_path = os.path.join(app.DATA_DIR, 'emoticons', theme) + if os.path.exists(emoticons_data_path): + return emoticons_data_path + + emoticons_user_path = os.path.join(app.MY_EMOTS_PATH, theme) + if os.path.exists(emoticons_user_path): + return emoticons_user_path
===================================== gajim/config.py ===================================== --- a/gajim/config.py +++ b/gajim/config.py @@ -151,13 +151,10 @@ class PreferencesWindow:
config_theme = app.config.get('emoticons_theme') if config_theme not in emoticon_themes: - # Fallback theme - config_theme = 'font-emoticons' - app.config.set('emoticons_theme', 'font-emoticons') + config_theme = _('Disabled') emoticons_combobox.set_id_column(0) emoticons_combobox.set_active_id(config_theme)
- # Set default for single window type choices = c_config.opt_one_window_types type_ = app.config.get('one_message_window')
===================================== gajim/gui_interface.py ===================================== --- a/gajim/gui_interface.py +++ b/gajim/gui_interface.py @@ -1996,18 +1996,16 @@ class Interface: if 'preferences' in app.interface.instances: transient_for = app.interface.instances['preferences'].window
- path = os.path.join(app.DATA_DIR, 'emoticons', emot_theme) - if not os.path.exists(path): - # It's maybe a user theme - path = os.path.join(app.MY_EMOTS_PATH, emot_theme) - if not os.path.exists(path): - # theme doesn't exist, disable emoticons - dialogs.WarningDialog(_('Emoticons disabled'), - _('Your configured emoticons theme has not been found, so ' - 'emoticons have been disabled.'), - transient_for=transient_for) + themes = helpers.get_available_emoticon_themes() + if emot_theme not in themes: + if 'font-emoticons' in themes: + emot_theme = 'font-emoticons' + app.config.set('emoticons_theme', 'font-emoticons') + else: app.config.set('emoticons_theme', '') return + + path = helpers.get_emoticon_theme_path(emot_theme) if not emoticons.load(path, ascii_emoticons): dialogs.WarningDialog( _('Emoticons disabled'),
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/52fa57795ac04fb273c3686f05adb3d766f...
--- View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/52fa57795ac04fb273c3686f05adb3d766f... You're receiving this email because of your account on dev.gajim.org.