#!/usr/local/bin/python2.7

# 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 gi
gi.require_version("Gtk", "3.0")

from gi.repository import Gtk

import gtweak
from gtweak.tweakmodel import TweakModel
from gtweak.tweakview import TweakView

class MainWindow:
    def __init__(self):
        builder = Gtk.Builder()

        assert(os.path.exists(gtweak.PKG_DATA_DIR))

        filename = os.path.join(gtweak.PKG_DATA_DIR, 'shell.ui')
        builder.add_from_file(filename)
        
        welcome = builder.get_object('welcome_image')
        welcome.set_from_file(os.path.join(gtweak.PKG_DATA_DIR, 'welcome.png'))

        toolbar = builder.get_object('toolbar')
        toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
        
        model = TweakModel()
        view = TweakView(
                    builder,
                    model)
        builder.get_object('overview_sw').add(view.treeview)

        view.run()
        
if __name__ == '__main__':
    parser = optparse.OptionParser()
    parser.add_option("-t", "--test", action="store_true",
                  help="Enable test and debug code")
    parser.add_option("-p", "--prefix",
                  help="Installation prefix (for gsettings schema, themes, etc)", metavar="[/, /usr]")
    options, args = parser.parse_args()

    try:
        from gtweak.defs import GSETTINGS_SCHEMA_DIR, TWEAK_DIR, DATA_DIR, PKG_DATA_DIR
        _defs_present = True
    except ImportError:
        GSETTINGS_SCHEMA_DIR = TWEAK_DIR = DATA_DIR = PKG_DATA_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")
        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.ENABLE_TEST = options.test

    logging.basicConfig(format="%(levelname)-8s: %(message)s", level=logging.INFO)

    MainWindow()

