#!/usr/bin/python3
"""
@file
@ingroup m1mongui
@copyright ESO - European Southern Observatory

@brief  m1 monitor gui startup

M1 MONITOR GUI
"""
import sys
import click
import taurus
import taurus.cli.common
from taurus.qt.qtgui.application import TaurusApplication

# pylint: disable=no-name-in-module
from m1mongui.applicationwindowcontroller import ApplicationWindowController
from m1mongui.applicationconfiguration import ApplicationConfiguration


@click.command("m1mongui")
@click.option(
    "--femon-address",
    "-a",
    default=ApplicationConfiguration.default_femon_address,
    type=str,
    help="name or ip address of the FE Mon application",
    show_default=True,
)
@click.option(
    "--perf-port",
    "-p",
    default=ApplicationConfiguration.default_perf_port,
    type=click.INT,
    help="port of the M1FEInfoMon Performances topic",
    show_default=True,
)
@click.option(
    "--tele-port",
    "-t",
    default=ApplicationConfiguration.default_tele_port,
    type=click.INT,
    help="port of the M1FEInfoMon Telemetrics topic",
    show_default=True,
)
@taurus.cli.common.log_level
def m1mongui(femon_address: str, perf_port: int, tele_port: int, log_level=taurus.cli.common.__log_choice):
    """M1 Monitor GUI displays parameters of M1 mirror"""
    configuration = ApplicationConfiguration()
    configuration.femon_address = femon_address
    configuration.perf_port = perf_port
    configuration.tele_port = tele_port
    configuration.log_level = getattr(taurus, log_level)
    taurus.setLogLevel(configuration.log_level)

    app = TaurusApplication(
        app_name="M1 Monitor GUI",
        app_version="0.4.0",
        org_name="ESO",
        org_domain="eso.org",
    )
    window = ApplicationWindowController(configuration)
    window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    # Start the gui
    m1mongui()  # pylint: disable=no-value-for-parameter
