#!/usr/bin/python3
"""
@file
@ingroup fredaGui
@copyright ESO - European Southern Observatory
@author Diego del Valle

@brief fredaGui `main` source file

The fredaGui provides a user interface to interact with FREDA cameras
"""
import sys


from taurus.qt.qtgui.application import TaurusApplication
import click

from freda.gui.exe.fredaguimainwindow import FredaGuiMainWindow
import ifw.core.stooUtils.consul as consul_utils


@click.command()
@click.option('-n', '--name', default='ccf-req', help='Registered FREDA name in Consul')
@click.option('-u', '--uri', default='none', help='Service URI. E.g. zpb.rr://127.0.0.1:12091')
@click.option('-l', '--log-level', default='ERROR', help='Debugging level',
              type=click.Choice(['ERROR', 'INFO', 'DEBUG'], case_sensitive=False))
@click.pass_context
def main(ctx, name, uri, log_level):
    """
    @brief Entry point of main

    @ingroup ccfgui
    """

    description = "fredaGui: User interface for FREDA cameras."

    """Main function."""
    try:
        if uri == "none":
            cons = consul_utils.ConsulClient()
            uri = cons.get_uri(name)
    except Exception as e:
        print(e)
        raise SystemExit


    app = TaurusApplication(
        app_name="fredaGui",
        app_version="1.0.0",
        org_name="ESO",
        org_domain="eso.org"
    )


    window = FredaGuiMainWindow(ctx, get_uri(ctx))
    window.setWindowTitle("FREDA GUI")
    window.show()
    sys.exit(app.exec_())

def get_uri(cmd_line_ctx):
    name = cmd_line_ctx.params.get("name")
    uri = cmd_line_ctx.params.get("uri")
    if (uri == None):
        cons = consul_utils.ConsulClient()
        uri = cons.get_uri(name)
    else:
        """ removes any quotes an user may add """
        uri = uri.strip(' " " ')
        uri = uri.strip(' \' \' ')
        """ remove / from the uri because it creates problem with MAL """
        if uri.endswith('/'):
            uri = uri[:-1]
    return uri

if __name__ == "__main__":
    main()
