#!/usr/bin/env python

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import os.path
import optparse
import logging
import locale
import gettext
import sys

# Hack to force GIL creation
# See: https://bugzilla.gnome.org/show_bug.cgi?id=709223
import threading
threading.Thread(target=lambda: None).start()


import gi
gi.require_version("Gtk", "3.0")

import gtweak

if __name__ == '__main__':
    parser = optparse.OptionParser()
    parser.add_option("-t", "--test", action="store_true",
                  help="Enable test and debug code")
    parser.add_option("-l", "--load", action="store_true",
                  help="Load all tweaks")
    parser.add_option("-p", "--prefix",
                  help="Installation prefix (for gsettings schema, themes, etc)", metavar="[/, /usr]")
    parser.add_option("-v", "--verbose", action="store_true",
                  help="Print the names of settings modified")
    parser.add_option("-d", "--debug", action="store_true",
                  help="Enable debug output")
    options, args = parser.parse_args()

    try:
        from gtweak.defs import GSETTINGS_SCHEMA_DIR, TWEAK_DIR, DATA_DIR, PKG_DATA_DIR, LOCALE_DIR
        _defs_present = True
    except ImportError:
        GSETTINGS_SCHEMA_DIR = TWEAK_DIR = DATA_DIR = PKG_DATA_DIR = LOCALE_DIR = ""
        _defs_present = False

    #the supplied prefix always beats the contents of defs
    if options.prefix or not _defs_present:
        _prefix = options.prefix or "/usr"
        DATA_DIR = os.path.join(_prefix, "share")
        LOCALE_DIR = os.path.join(_prefix, "share", "locale")
        GSETTINGS_SCHEMA_DIR = os.path.join(_prefix, "share", "glib-2.0", "schemas")
        _me = os.path.abspath(os.path.dirname(__file__))
        TWEAK_DIR = os.path.join(_me, "gtweak", "tweaks")
        PKG_DATA_DIR = os.path.join(_me, "data")

    gtweak.GSETTINGS_SCHEMA_DIR = GSETTINGS_SCHEMA_DIR
    gtweak.TWEAK_DIR = TWEAK_DIR
    gtweak.DATA_DIR = DATA_DIR
    gtweak.PKG_DATA_DIR = PKG_DATA_DIR
    gtweak.LOCALE_DIR = LOCALE_DIR
    gtweak.ENABLE_TEST = options.test
    gtweak.ALL_TWEAKS = options.load
    gtweak.APP_NAME = "gnome-tweak-tool"
    gtweak.VERBOSE = options.verbose

    if options.debug:
        level=logging.DEBUG
    else:
        level=logging.INFO
    logging.basicConfig(format="%(levelname)-8s: %(message)s", level=level)

    locale.setlocale(locale.LC_ALL, None)
    gettext.install(gtweak.APP_NAME, LOCALE_DIR, names=('gettext', 'ngettext'))

    from gtweak.app import GnomeTweakTool
    app = GnomeTweakTool()
    exit_status = app.run(None)
    sys.exit(exit_status)

