Author: asterix Date: 2009-05-10 21:32:57 +0200 (Sun, 10 May 2009) New Revision: 11277
Modified: trunk/configure.ac trunk/src/common/config.py trunk/src/common/defs.py trunk/src/common/helpers.py trunk/src/common/optparser.py trunk/src/config.py trunk/src/dialogs.py Log: [brubru] better sound file managment, Fixes #5016 Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/configure.ac 2009-05-10 19:32:57 UTC (rev 11277) @@ -1,5 +1,5 @@ AC_INIT([Gajim - A Jabber Instant Messager], - [0.12.1.4-svn],[http://trac.gajim.org/],[gajim]) + [0.12.1.5-svn],[http://trac.gajim.org/],[gajim]) AC_PREREQ([2.59]) AC_CONFIG_HEADER(config.h) Modified: trunk/src/common/config.py =================================================================== --- trunk/src/common/config.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/common/config.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -457,15 +457,15 @@ } soundevents_default = { - 'first_message_received': [ True, '../data/sounds/message1.wav' ], - 'next_message_received_focused': [ True, '../data/sounds/message2.wav' ], - 'next_message_received_unfocused': [ True, '../data/sounds/message2.wav' ], - 'contact_connected': [ True, '../data/sounds/connected.wav' ], - 'contact_disconnected': [ True, '../data/sounds/disconnected.wav' ], - 'message_sent': [ True, '../data/sounds/sent.wav' ], - 'muc_message_highlight': [ True, '../data/sounds/gc_message1.wav', _('Sound to play when a group chat message contains one of the words in muc_highlight_words, or when a group chat message contains your nickname.')], - 'muc_message_received': [ False, '../data/sounds/gc_message2.wav', _('Sound to play when any MUC message arrives.') ], - 'gmail_received': [ False, '../data/sounds/message1.wav' ], + 'first_message_received': [ True, 'message1.wav' ], + 'next_message_received_focused': [ True, 'message2.wav' ], + 'next_message_received_unfocused': [ True, 'message2.wav' ], + 'contact_connected': [ True, 'connected.wav' ], + 'contact_disconnected': [ True, 'disconnected.wav' ], + 'message_sent': [ True, 'sent.wav' ], + 'muc_message_highlight': [ True, 'gc_message1.wav', _('Sound to play when a group chat message contains one of the words in muc_highlight_words, or when a group chat message contains your nickname.')], + 'muc_message_received': [ False, 'gc_message2.wav', _('Sound to play when any MUC message arrives.') ], + 'gmail_received': [ False, 'message1.wav' ], } themes_default = { Modified: trunk/src/common/defs.py =================================================================== --- trunk/src/common/defs.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/common/defs.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -27,7 +27,7 @@ datadir = '../' localedir = '../po' -version = '0.12.1.4-svn' +version = '0.12.1.5-svn' import sys, os.path for base in ('.', 'common'): Modified: trunk/src/common/helpers.py =================================================================== --- trunk/src/common/helpers.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/common/helpers.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -773,11 +773,52 @@ path_to_soundfile = gajim.config.get_per('soundevents', event, 'path') play_sound_file(path_to_soundfile) +def check_soundfile_path(file, + dirs=(gajim.gajimpaths.root, gajim.DATA_DIR)): + '''Check if the sound file exists. + :param file: the file to check, absolute or relative to 'dirs' path + :param dirs: list of knows paths to fallback if the file doesn't exists + (eg: ~/.gajim/sounds/, DATADIR/sounds...). + :return the path to file or None if it doesn't exists.''' + if not file: + return None + elif os.path.exists(file): + return file + + for d in dirs: + d = os.path.join(d, 'sounds', file) + if os.path.exists(d): + return d + return None + +def strip_soundfile_path(file, + dirs=(gajim.gajimpaths.root, gajim.DATA_DIR), + abs=True): + '''Remove knowns paths from a sound file: + Filechooser returns absolute path. If path is a known fallback path, we remove it. + So config have no hardcoded path to DATA_DIR and text in textfield is shorther. + param: file: the filename to strip. + param: dirs: list of knowns paths from which the filename should be stripped. + param: abs: force absolute path on dirs + ''' + if not file: + return None + + name = os.path.basename(file) + for d in dirs: + d = os.path.join(d, 'sounds', name) + if abs: + d = os.path.abspath(d) + if file == d: + return name + return file + def play_sound_file(path_to_soundfile): if path_to_soundfile == 'beep': exec_command('beep') return - if path_to_soundfile is None or not os.path.exists(path_to_soundfile): + path_to_soundfile = check_soundfile_path(path_to_soundfile) + if path_to_soundfile is None: return if sys.platform == 'darwin': try: Modified: trunk/src/common/optparser.py =================================================================== --- trunk/src/common/optparser.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/common/optparser.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -30,6 +30,7 @@ import locale import re from common import gajim +from common import helpers import exceptions try: @@ -195,6 +196,8 @@ self.update_config_to_01213() if old < [0, 12, 1, 4] and new >= [0, 12, 1, 4]: self.update_config_to_01214() + if old < [0, 12, 1, 5] and new >= [0, 12, 1, 5]: + self.update_config_to_01215() gajim.logger.init_vars() gajim.config.set('version', new_version) @@ -657,4 +660,15 @@ self.old_values['last_status_msg_' + status]) gajim.config.set('version', '0.12.1.4') + def update_config_to_01215(self): + '''Remove hardcoded ../data/sounds from config''' + dirs = ('../data', gajim.gajimpaths.root, gajim.DATA_DIR) + for evt in gajim.config.get_per('soundevents'): + path = gajim.config.get_per('soundevents', evt ,'path') + # absolute and relative passes are necessary + path = helpers.strip_soundfile_path(path, dirs, abs=False) + path = helpers.strip_soundfile_path(path, dirs, abs=True) + gajim.config.set_per('soundevents', evt, 'path', path) + gajim.config.set('version', '0.12.1.5') + # vim: se ts=3: Modified: trunk/src/config.py =================================================================== --- trunk/src/config.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/config.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -3647,6 +3647,7 @@ return directory = os.path.dirname(path_to_snd_file) gajim.config.set('last_sounds_dir', directory) + path_to_snd_file = helpers.strip_soundfile_path(path_to_snd_file) self.xml.get_widget('sounds_entry').set_text(path_to_snd_file) model[iter_][2] = path_to_snd_file # set new path to sounds_model @@ -3654,12 +3655,8 @@ def on_cancel(widget): self.dialog.destroy() - model, iter_ = self.sound_tree.get_selection().get_selected() - model[iter_][2] = '' - model[iter_][0] = False path_to_snd_file = model[iter_][2].decode('utf-8') - path_to_snd_file = os.path.join(os.getcwd(), path_to_snd_file) self.dialog = dialogs.SoundChooserDialog(path_to_snd_file, on_ok, on_cancel) Modified: trunk/src/dialogs.py =================================================================== --- trunk/src/dialogs.py 2009-05-07 11:32:02 UTC (rev 11276) +++ trunk/src/dialogs.py 2009-05-10 19:32:57 UTC (rev 11277) @@ -3165,7 +3165,10 @@ self.add_filter(filter_) self.set_filter(filter_) + path_to_snd_file = helpers.check_soundfile_path(path_to_snd_file) if path_to_snd_file: + # set_filename accept only absolute path + path_to_snd_file = os.path.abspath(path_to_snd_file) self.set_filename(path_to_snd_file) class ImageChooserDialog(FileChooserDialog): _______________________________________________ Commits mailing list [email protected] http://lists.gajim.org/cgi-bin/listinfo/commits
