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