1# Copyright 2004-2005 Joe Wreschnig, Niklas Janlert 2# 2012 Christoph Reiter 3# 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 2 of the License, or 7# (at your option) any later version. 8 9import os 10 11from senf import fsnative, argv as sys_argv 12 13from quodlibet import _ 14from quodlibet import app 15from quodlibet import util 16from quodlibet import const 17from quodlibet import config 18 19 20def main(argv=None): 21 if argv is None: 22 argv = sys_argv 23 24 import quodlibet 25 26 config_file = os.path.join(quodlibet.get_user_dir(), "config") 27 quodlibet.init(config_file=config_file) 28 29 from quodlibet.qltk import add_signal_watch 30 add_signal_watch(app.quit) 31 32 opts = util.OptionParser( 33 "Ex Falso", const.VERSION, 34 _("an audio tag editor"), "[%s]" % _("directory")) 35 36 argv.append(os.path.abspath(fsnative(u"."))) 37 opts, args = opts.parse(argv[1:]) 38 args[0] = os.path.realpath(args[0]) 39 40 app.name = "Ex Falso" 41 app.description = _("Audio metadata editor") 42 app.id = "io.github.quodlibet.ExFalso" 43 app.process_name = "exfalso" 44 quodlibet.set_application_info(app) 45 46 import quodlibet.library 47 import quodlibet.player 48 app.library = quodlibet.library.init() 49 app.player = quodlibet.player.init_player("nullbe", app.librarian) 50 from quodlibet.qltk.songlist import PlaylistModel 51 app.player.setup(PlaylistModel(), None, 0) 52 pm = quodlibet.init_plugins() 53 pm.rescan() 54 55 from quodlibet.qltk.exfalsowindow import ExFalsoWindow 56 dir_ = args[0] 57 app.window = ExFalsoWindow(app.library, dir_) 58 app.window.init_plugins() 59 60 from quodlibet.util.cover import CoverManager 61 app.cover_manager = CoverManager() 62 app.cover_manager.init_plugins() 63 64 from quodlibet import session 65 session_client = session.init(app) 66 67 quodlibet.enable_periodic_save(save_library=False) 68 quodlibet.run(app.window) 69 quodlibet.finish_first_session("exfalso") 70 config.save() 71 72 session_client.close() 73 74 util.print_d("Finished shutdown.") 75