Actualiser CenRa_AUTOMAP/CenRa_AutoMap.py

This commit is contained in:
Tom LAVEILLE 2024-09-26 16:49:35 +02:00
parent 30a58ad9fd
commit 5a2ee3b1c0

View File

@ -1,142 +1,142 @@
__copyright__ = "Copyright 2021, 3Liz" __copyright__ = "Copyright 2021, 3Liz"
__license__ = "GPL version 3" __license__ = "GPL version 3"
__email__ = "info@3liz.org" __email__ = "info@3liz.org"
from qgis.core import QgsApplication from qgis.core import QgsApplication
from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
from qgis.PyQt.QtGui import QDesktopServices, QIcon from qgis.PyQt.QtGui import QDesktopServices, QIcon
from qgis.PyQt.QtWidgets import QAction, QMessageBox from qgis.PyQt.QtWidgets import QAction, QMessageBox
from qgis.utils import iface from qgis.utils import iface
import qgis import qgis
#include <QSettings> #include <QSettings>
''' '''
from pg_metadata.connection_manager import ( from pg_metadata.connection_manager import (
store_connections, store_connections,
validate_connections_names, validate_connections_names,
) )
from pg_metadata.locator import LocatorFilter from pg_metadata.locator import LocatorFilter
from pg_metadata.processing.provider import PgMetadataProvider from pg_metadata.processing.provider import PgMetadataProvider
from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
''' '''
import os import os
from .tools.resources import ( from .tools.resources import (
plugin_path, plugin_path,
resources_path, resources_path,
maj_verif, maj_verif,
) )
from .editor import AutoMap_Editor from .editor import AutoMap_Editor
from .about_form import AutoMapAboutDialog from .about_form import AutoMapAboutDialog
from PyQt5.QtCore import * from PyQt5.QtCore import *
class PgAutoMap: class PgAutoMap:
def __init__(self): def __init__(self):
""" Constructor. """ """ Constructor. """
self.editor = None self.editor = None
# self.issues = None # self.issues = None
self.provider = None self.provider = None
self.locator_filter = None self.locator_filter = None
self.dock_action = None self.dock_action = None
self.help_action = None self.help_action = None
plugin_dir = os.path.dirname(__file__) plugin_dir = os.path.dirname(__file__)
end_find = plugin_dir.rfind('\\')+1 end_find = plugin_dir.rfind('\\')+1
global NAME global NAME
NAME = plugin_dir[end_find:] NAME = plugin_dir[end_find:]
maj_verif(NAME) maj_verif(NAME)
# Display About window on first use # Display About window on first use
version = qgis.utils.pluginMetadata('CenRa_AUTOMAP','version') version = qgis.utils.pluginMetadata('CenRa_AUTOMAP','version')
s = QSettings() s = QSettings()
versionUse = s.value("automap/version", 1, type=str) versionUse = s.value("automap/version", 1, type=str)
if str(versionUse) != str(version) : if str(versionUse) != str(version) :
s.setValue("automap/version", str(version)) s.setValue("automap/version", str(version))
print(versionUse,version) print(versionUse,version)
self.open_about_dialog() self.open_about_dialog()
def initGui(self): def initGui(self):
""" Build the plugin GUI. """ """ Build the plugin GUI. """
self.toolBar = iface.addToolBar("CenRa_AutoMap") self.toolBar = iface.addToolBar("CenRa_AutoMap")
self.toolBar.setObjectName("CenRa_AutoMap") self.toolBar.setObjectName("CenRa_AutoMap")
icon = QIcon(resources_path('icons', 'icon.png')) icon = QIcon(resources_path('icons', 'icon.png'))
# Open the online help # Open the online help
self.help_action = QAction(icon, 'CenRa_AutoMap', iface.mainWindow()) self.help_action = QAction(icon, 'CenRa_AutoMap', iface.mainWindow())
iface.pluginHelpMenu().addAction(self.help_action) iface.pluginHelpMenu().addAction(self.help_action)
self.help_action.triggered.connect(self.open_help) self.help_action.triggered.connect(self.open_help)
if not self.editor: if not self.editor:
self.editor = AutoMap_Editor() self.editor = AutoMap_Editor()
self.automap_action = QAction(icon, 'CenRa_AutoMap',None) self.automap_action = QAction(icon, 'CenRa_AutoMap',None)
self.toolBar.addAction(self.automap_action) self.toolBar.addAction(self.automap_action)
self.automap_action.triggered.connect(self.open_editor) self.automap_action.triggered.connect(self.open_editor)
''' '''
if not self.locator_filter: if not self.locator_filter:
self.locator_filter = LocatorFilter(iface) self.locator_filter = LocatorFilter(iface)
iface.registerLocatorFilter(self.locator_filter) iface.registerLocatorFilter(self.locator_filter)
@staticmethod @staticmethod
def check_invalid_connection_names(): def check_invalid_connection_names():
""" Check for invalid connection names in the QgsSettings. """ """ Check for invalid connection names in the QgsSettings. """
valid, invalid = validate_connections_names() valid, invalid = validate_connections_names()
n_invalid = len(invalid) n_invalid = len(invalid)
if n_invalid == 0: if n_invalid == 0:
return return
invalid_text = ', '.join(invalid) invalid_text = ', '.join(invalid)
msg = QMessageBox() msg = QMessageBox()
msg.setIcon(QMessageBox.Warning) msg.setIcon(QMessageBox.Warning)
msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available')) msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
msg.setText(tr( msg.setText(tr(
f'{n_invalid} connection(s) listed in PgMetadatas settings are invalid or ' f'{n_invalid} connection(s) listed in PgMetadatas settings are invalid or '
f'no longer available: {invalid_text}')) f'no longer available: {invalid_text}'))
msg.setInformativeText(tr( msg.setInformativeText(tr(
'Do you want to remove these connection(s) from the PgMetadata settings? ' 'Do you want to remove these connection(s) from the PgMetadata settings? '
'(You can also do this later with the “Set Connections” tool.)')) '(You can also do this later with the “Set Connections” tool.)'))
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
clicked = msg.exec() clicked = msg.exec()
if clicked == QMessageBox.Yes: if clicked == QMessageBox.Yes:
iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.')) iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
store_connections(valid) store_connections(valid)
if clicked == QMessageBox.No: if clicked == QMessageBox.No:
iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.')) iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
''' '''
def open_about_dialog(self): def open_about_dialog(self):
""" """
About dialog About dialog
""" """
dialog = AutoMapAboutDialog(iface) dialog = AutoMapAboutDialog(iface)
dialog.exec_() dialog.exec_()
def open_help(): def open_help():
""" Open the online help. """ """ Open the online help. """
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/')) QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
def open_editor(self): def open_editor(self):
self.editor.show() self.editor.show()
self.editor.raise_() self.editor.raise_()
def unload(self): def unload(self):
""" Unload the plugin. """ """ Unload the plugin. """
if self.editor: if self.editor:
iface.removePluginMenu('CenRa_AutoMap',self.automap_action) iface.removePluginMenu('CenRa_AutoMap',self.automap_action)
if self.provider: if self.provider:
QgsApplication.processingRegistry().removeProvider(self.provider) QgsApplication.processingRegistry().removeProvider(self.provider)
del self.provider del self.provider
if self.locator_filter: if self.locator_filter:
iface.deregisterLocatorFilter(self.locator_filter) iface.deregisterLocatorFilter(self.locator_filter)
del self.locator_filter del self.locator_filter
if self.help_action: if self.help_action:
iface.pluginHelpMenu().removeAction(self.help_action) iface.pluginHelpMenu().removeAction(self.help_action)
del self.help_action del self.help_action