__copyright__ = "Copyright 2021, 3Liz"
__license__ = "GPL version 3"
__email__ = "info@3liz.org"


from qgis.core import QgsApplication
from qgis.PyQt.QtCore import QUrl
# from qgis.PyQt.QtCore import Qt
from qgis.PyQt.QtGui import QDesktopServices, QIcon
from qgis.PyQt.QtWidgets import QAction
from qgis.utils import iface
import qgis


# include <QSettings>
'''
from pg_metadata.connection_manager import (
    store_connections,
    validate_connections_names,
)


from pg_metadata.locator import LocatorFilter
from pg_metadata.processing.provider import PgMetadataProvider
from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
'''
import os
from qgis.PyQt.QtCore import QSettings
from .about_form import AboutDialog
from .tools.resources import (
    # plugin_path,
    resources_path,
    pyperclip,
    maj_verif,
)
pyperclip()

try:
    from .canvas_editor import AutoMap_Editor
#    from .style_invoke import AutoMap_Style
except NameError:
    print('404')


class PgAutoMap:
    def __init__(self):
        """ Constructor. """
        self.canvas_editor = None
        self.style_dock = None
#        self.issues = None
        self.provider = None
        self.locator_filter = None
        self.dock_action = None
        self.help_action = None
        plugin_dir = os.path.dirname(__file__)
        end_find = plugin_dir.rfind('\\') + 1
        global NAME
        NAME = plugin_dir[end_find:]
        maj_verif(NAME)

        # Display About window on first use
        version = qgis.utils.pluginMetadata('CenRa_AUTOMAP', 'version')
        s = QSettings()
        versionUse = s.value("automap/version", 1, type=str)
        if str(versionUse) != str(version):
            s.setValue("automap/version", str(version))
            print(versionUse, version)
            self.open_about_dialog()

    def initGui(self):
        """ Build the plugin GUI. """

        self.toolBar = iface.addToolBar("CenRa_AutoMap")
        self.toolBar.setObjectName("CenRa_AutoMap")

        icon = QIcon(resources_path('icons', 'icon.png'))

        # Open the online help
        self.help_action = QAction(icon, 'CenRa_AutoMap', iface.mainWindow())
        iface.pluginHelpMenu().addAction(self.help_action)
        self.help_action.triggered.connect(self.open_help)
        if not self.canvas_editor:
            self.canvas_editor = AutoMap_Editor()

            self.automap_action = QAction(icon, 'CenRa_AutoMap', None)
            self.toolBar.addAction(self.automap_action)
            self.automap_action.triggered.connect(self.open_editor)

        # if not self.style_dock:
        #    self.style_dock = AutoMap_Style()

        # if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
        #    iface.addDockWidget(Qt.DockWidgetArea(0x1), self.style_dock)

    def open_about_dialog(self):
        """
        About dialog
        """
        dialog = AboutDialog(iface)
        dialog.exec()

    def open_help():
        """ Open the online help. """
        QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))

    def open_editor(self):
        self.canvas_editor.show()
        self.canvas_editor.raise_()

    def unload(self):
        """ Unload the plugin. """
        if self.canvas_editor:
            iface.removePluginMenu('CenRa_AutoMap', self.automap_action)

        if self.provider:
            QgsApplication.processingRegistry().removeProvider(self.provider)
            del self.provider

        if self.locator_filter:
            iface.deregisterLocatorFilter(self.locator_filter)
            del self.locator_filter

        if self.help_action:
            iface.pluginHelpMenu().removeAction(self.help_action)
            del self.help_action
