#!/usr/bin/env python3
# *****************************************************************************
# NICOS, the Networked Instrument Control System of the MLZ
# Copyright (c) 2009-2025 by the NICOS contributors (see AUTHORS)
#
# 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 2 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, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# Module authors:
#   Andreas Schulz <andreas.schulz@frm2.tum.de>
#
# *****************************************************************************
# isort:skip_file

import argparse
import sys
from os import path

try:
    from nicos.guisupport.qt import QApplication
except ImportError:
    sys.path.insert(0, path.dirname(path.dirname(path.realpath(__file__))))
    from nicos.guisupport.qt import QApplication

from nicos import config
from nicostools.setupfiletool.mainwindow import MainWindow

config.apply()


def main(argv=None):
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '-f', '--facility', dest='facility', action='store', default='demo',
        type=str, help='Name of the facility', metavar='FACILITY'
    )
    parser.add_argument(
        '-i', '--instrument', dest='instrument', action='store', default='',
        type=str, help='Name of the instrument', metavar='INSTRUMENT'
    )

    opts = parser.parse_args()

    if opts.facility:
        facility = opts.facility
    elif config.setup_package and config.setup_package.find('_') != -1:
        facility = config.setup_package.split('_')[1]
    else:
        raise Exception('No facility given')

    if opts.instrument:
        instrument = opts.instrument
    # 'demo' is default for nicos_demo facility
    elif 'demo' not in [config.instrument, facility]:
        instrument = config.instrument
    else:
        instrument = ''

    if not argv:
        argv = sys.argv

    app = QApplication(argv)
    window = MainWindow(facility.lower(), instrument.lower())
    window.show()
    return app.exec()


if __name__ == '__main__':
    sys.exit(main(sys.argv))
