From 7b6e77d17ee23e2e63144d1c45650a014d2e8273 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 7 Oct 2024 17:16:57 +0200 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"CenRa=5FMetabase"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CenRa_Metabase/CenRa_Metabase.py | 419 ++++++++++++++++--------------- CenRa_Metabase/editor.py | 10 +- CenRa_Metabase/metadata.txt | 96 +++---- 3 files changed, 273 insertions(+), 252 deletions(-) diff --git a/CenRa_Metabase/CenRa_Metabase.py b/CenRa_Metabase/CenRa_Metabase.py index fa85e93..1a61b71 100644 --- a/CenRa_Metabase/CenRa_Metabase.py +++ b/CenRa_Metabase/CenRa_Metabase.py @@ -1,199 +1,220 @@ -__copyright__ = "Copyright 2021, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" - - -from qgis.core import QgsApplication -from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl -from qgis.PyQt.QtGui import QDesktopServices, QIcon -from qgis.PyQt.QtWidgets import QAction, QMessageBox -from qgis.utils import iface -''' -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 -''' -from CenRa_Metabase.resources.i18n import setup_translation, tr -import os -from CenRa_Metabase.resources.resources import ( - plugin_path, - resources_path, - maj_verif, -) -from CenRa_Metabase.dock import CenRa_Metabase -from CenRa_Metabase.editor import Metabase_Editor -#from CenRa_Metabase.issues import CenRa_Issues - - -class PgMetadata: - def __init__(self): - """ Constructor. """ - self.dock = None - self.editor = 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) -# setup_logger('pg_metadata') - - locale, file_path = setup_translation( - folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm") - if file_path: - self.translator = QTranslator() - self.translator.load(file_path) - # noinspection PyCallByClass,PyArgumentList - QCoreApplication.installTranslator(self.translator) - - # noinspection PyPep8Naming - #def initProcessing(self): - #""" Add the QGIS Processing provider. """ - #if not self.provider: - #self.provider = PgMetadataProvider() - #QgsApplication.processingRegistry().addProvider(self.provider) - - # noinspection PyPep8Naming - def initGui(self): - """ Build the plugin GUI. """ - #self.initProcessing() - - #self.check_invalid_connection_names() - - self.toolBar = iface.addToolBar("CenRa_Metabase") - self.toolBar.setObjectName("CenRa_Metabase") - - icon = QIcon(resources_path('icons', 'icon.png')) - icon2 = QIcon(resources_path('icons', 'icon_2.png')) - - # Open the online help - self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow()) - iface.pluginHelpMenu().addAction(self.help_action) - self.help_action.triggered.connect(self.open_help) - if not self.editor: - self.editor = Metabase_Editor() - - - self.editor_action = QAction(icon2, 'CenRa_Metabase',None) - self.toolBar.addAction(self.editor_action) - self.editor_action.triggered.connect(self.open_editor) - - if not self.dock: - self.dock = CenRa_Metabase() - iface.addDockWidget(Qt.RightDockWidgetArea, self.dock) - - # Open/close the dock from plugin menu - self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow()) - iface.pluginMenu().addAction(self.dock_action) - self.dock_action.triggered.connect(self.open_dock) -# if not self.issues: -# self.issues = CenRa_Issues() - - -# self.issues_action = QAction(icon, 'CenRa_Metabase',None) -# self.toolBar.addAction(self.issues_action) -# self.issues_action.triggered.connect(self.open_issues) - ''' - if not self.locator_filter: - self.locator_filter = LocatorFilter(iface) - iface.registerLocatorFilter(self.locator_filter) - - @staticmethod - def check_invalid_connection_names(): - """ Check for invalid connection names in the QgsSettings. """ - valid, invalid = validate_connections_names() - n_invalid = len(invalid) - - if n_invalid == 0: - return - - invalid_text = ', '.join(invalid) - msg = QMessageBox() - msg.setIcon(QMessageBox.Warning) - msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available')) - msg.setText(tr( - f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or ' - f'no longer available: {invalid_text}')) - msg.setInformativeText(tr( - 'Do you want to remove these connection(s) from the PgMetadata settings? ' - '(You can also do this later with the “Set Connections” tool.)')) - msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) - clicked = msg.exec() - - if clicked == QMessageBox.Yes: - iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.')) - store_connections(valid) - if clicked == QMessageBox.No: - iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.')) - ''' - - def open_help(): - """ Open the online help. """ - QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/')) - - def open_dock(self): - """ Open the dock. """ - self.dock.show() - self.dock.raise_() - - def open_editor(self): - self.editor.show() - self.editor.raise_() - -# def open_issues(self): -# self.issues.show() -# self.issues.raise_() - - def unload(self): - """ Unload the plugin. """ - if self.editor: - iface.removePluginMenu(tr('CenRa_Metabase'),self.editor_action) - #self.editor.removeToolBarIcon(self.editor_action) - - - - if self.dock: - iface.removeDockWidget(self.dock) - self.dock.deleteLater() - - 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.dock_action: - iface.pluginMenu().removeAction(self.dock_action) - del self.dock_action - - if self.help_action: - iface.pluginHelpMenu().removeAction(self.help_action) - del self.help_action - - @staticmethod - def run_tests(pattern='test_*.py', package=None): - """Run the test inside QGIS.""" - try: - from pathlib import Path - - from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import ( - test_package, - ) - if package is None: - package = '{}.__init__'.format(Path(__file__).parent.name) - test_package(package, pattern) - except (AttributeError, ModuleNotFoundError): - message = 'Could not load tests. Are you using a production package?' - print(message) # NOQA +__copyright__ = "Copyright 2021, 3Liz" +__license__ = "GPL version 3" +__email__ = "info@3liz.org" + + +from qgis.core import QgsApplication +from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl +from qgis.PyQt.QtGui import QDesktopServices, QIcon +from qgis.PyQt.QtWidgets import QAction, QMessageBox +from qgis.utils import iface +import qgis + + +#include +''' +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 .tools.resources import ( + plugin_path, + resources_path, + maj_verif, +) +from .dock import CenRa_Metabase +from .editor import Metabase_Editor +from .about_form import MetabaseAboutDialog +#from CenRa_Metabase.issues import CenRa_Issues + +from PyQt5.QtCore import * + + + +class PgMetadata: + def __init__(self): + """ Constructor. """ + self.dock = None + self.editor = 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_METABASE','version') + s = QSettings() + versionUse = s.value("metadata/version", 1, type=str) + if str(versionUse) != str(version) : + s.setValue("metadata/version", str(version)) + print(versionUse,version) + self.open_about_dialog() +# setup_logger('pg_metadata') + + #locale, file_path = setup_translation( + # folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm") + #if file_path: + # self.translator = QTranslator() + # self.translator.load(file_path) + # noinspection PyCallByClass,PyArgumentList + # QCoreApplication.installTranslator(self.translator) + + # noinspection PyPep8Naming + #def initProcessing(self): + #""" Add the QGIS Processing provider. """ + #if not self.provider: + #self.provider = PgMetadataProvider() + #QgsApplication.processingRegistry().addProvider(self.provider) + + # noinspection PyPep8Naming + def initGui(self): + """ Build the plugin GUI. """ + #self.initProcessing() + + #self.check_invalid_connection_names() + + self.toolBar = iface.addToolBar("CenRa_Metabase") + self.toolBar.setObjectName("CenRa_Metabase") + + icon = QIcon(resources_path('icons', 'icon.png')) + icon2 = QIcon(resources_path('icons', 'icon_2.png')) + + # Open the online help + self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow()) + iface.pluginHelpMenu().addAction(self.help_action) + self.help_action.triggered.connect(self.open_help) + if not self.editor: + self.editor = Metabase_Editor() + + + self.editor_action = QAction(icon2, 'CenRa_Metabase',None) + self.toolBar.addAction(self.editor_action) + self.editor_action.triggered.connect(self.open_editor) + + if not self.dock: + self.dock = CenRa_Metabase() + iface.addDockWidget(Qt.RightDockWidgetArea, self.dock) + + # Open/close the dock from plugin menu + self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow()) + iface.pluginMenu().addAction(self.dock_action) + self.dock_action.triggered.connect(self.open_dock) +# if not self.issues: +# self.issues = CenRa_Issues() + + +# self.issues_action = QAction(icon, 'CenRa_Metabase',None) +# self.toolBar.addAction(self.issues_action) +# self.issues_action.triggered.connect(self.open_issues) + ''' + if not self.locator_filter: + self.locator_filter = LocatorFilter(iface) + iface.registerLocatorFilter(self.locator_filter) + + @staticmethod + def check_invalid_connection_names(): + """ Check for invalid connection names in the QgsSettings. """ + valid, invalid = validate_connections_names() + n_invalid = len(invalid) + + if n_invalid == 0: + return + + invalid_text = ', '.join(invalid) + msg = QMessageBox() + msg.setIcon(QMessageBox.Warning) + msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available')) + msg.setText(tr( + f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or ' + f'no longer available: {invalid_text}')) + msg.setInformativeText(tr( + 'Do you want to remove these connection(s) from the PgMetadata settings? ' + '(You can also do this later with the “Set Connections” tool.)')) + msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) + clicked = msg.exec() + + if clicked == QMessageBox.Yes: + iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.')) + store_connections(valid) + if clicked == QMessageBox.No: + iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.')) + ''' + def open_about_dialog(self): + """ + About dialog + """ + dialog = MetabaseAboutDialog(iface) + dialog.exec_() + def open_help(): + """ Open the online help. """ + QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/')) + + def open_dock(self): + """ Open the dock. """ + self.dock.show() + self.dock.raise_() + + def open_editor(self): + self.editor.show() + self.editor.raise_() + +# def open_issues(self): +# self.issues.show() +# self.issues.raise_() + + def unload(self): + """ Unload the plugin. """ + if self.editor: + iface.removePluginMenu('CenRa_Metabase',self.editor_action) + #self.editor.removeToolBarIcon(self.editor_action) + + + + if self.dock: + iface.removeDockWidget(self.dock) + self.dock.deleteLater() + + 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.dock_action: + iface.pluginMenu().removeAction(self.dock_action) + del self.dock_action + + if self.help_action: + iface.pluginHelpMenu().removeAction(self.help_action) + del self.help_action + + @staticmethod + def run_tests(pattern='test_*.py', package=None): + """Run the test inside QGIS.""" + try: + from pathlib import Path + + from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import ( + test_package, + ) + if package is None: + package = '{}.__init__'.format(Path(__file__).parent.name) + test_package(package, pattern) + except (AttributeError, ModuleNotFoundError): + message = 'Could not load tests. Are you using a production package?' + print(message) # NOQA diff --git a/CenRa_Metabase/editor.py b/CenRa_Metabase/editor.py index 5a7cced..0ca8913 100644 --- a/CenRa_Metabase/editor.py +++ b/CenRa_Metabase/editor.py @@ -18,6 +18,7 @@ from qgis.core import ( QgsSettings, QgsVectorLayer, QgsGeometry, + QgsWkbTypes, ) from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime from qgis.PyQt.QtGui import QDesktopServices, QIcon @@ -35,15 +36,14 @@ from qgis.PyQt.QtWidgets import ( QTableWidgetItem, ) from qgis.utils import iface -from CenRa_Metabase.resources.i18n import tr -from CenRa_Metabase.resources.resources import ( +from .tools.resources import ( load_ui, resources_path, login_base, send_issues, ) -from CenRa_Metabase.issues import CenRa_Issues +from .issues import CenRa_Issues EDITOR_CLASS = load_ui('CenRa_Metabase_editorwidget_base.ui') LOGGER = logging.getLogger('CenRa_Metabase') @@ -55,7 +55,6 @@ class Metabase_Editor(QDialog, EDITOR_CLASS): super().__init__() self.setupUi(self) self.settings = QgsSettings() - self.import_xml.setAutoRaise(True) self.import_xml.setText('') self.import_xml.setIcon(QIcon(QgsApplication.iconPath('mActionAddHtml.svg'))) @@ -207,6 +206,7 @@ class Metabase_Editor(QDialog, EDITOR_CLASS): iface.layerTreeView().setCurrentLayer(layer) def raise_(self): + self.activateWindow() global layer layer = iface.activeLayer() global uid_delete_list_link,uid_delete_list_contact,array_link,array_contact @@ -354,7 +354,7 @@ class Metabase_Editor(QDialog, EDITOR_CLASS): if qgstype != 'Raster' : count_layers = str(layer.featureCount()) - geomtype = str(layer.wkbType())[8:] + geomtype = QgsWkbTypes.displayString(layer.wkbType()) elif qgstype == 'Raster': count_layers = str(layer.dataProvider().bandCount()) geomtype = qgstype diff --git a/CenRa_Metabase/metadata.txt b/CenRa_Metabase/metadata.txt index d0b312c..61bc9b7 100644 --- a/CenRa_Metabase/metadata.txt +++ b/CenRa_Metabase/metadata.txt @@ -1,48 +1,48 @@ -# This file contains metadata for your plugin. - -# This file should be included when you package your plugin.# Mandatory items: - -[general] -name=CenRa_Metabase -qgisMinimumVersion=3.0 -description=CenRa_Metabase -version=1.0 -author=Conservatoire d'Espaces Naturels de Rhône-Alpes -email=si_besoin@cen-rhonealpes.fr - -about=Permet de saisire et de visualisé les information lier à la metadonné d'une couche ce trouvent sur PostgreSQL - -repository=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS -homepage=https://plateformesig.cenra-outils.org/ -tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues -# End of mandatory metadata - -# Recommended items: - -hasProcessingProvider=no -# Uncomment the following line and add your changelog: -# changelog= - -# Tags are comma separated with spaces allowed -tags=python - - -category=Plugins -icon=icon.png -# experimental flag -experimental=False - -# deprecated flag (applies to the whole plugin, not just a single version) -deprecated=False - -# Since QGIS 3.8, a comma separated list of plugins to be installed -# (or upgraded) can be specified. -# Check the documentation for more information. -# plugin_dependencies= - -Category of the plugin: Raster, Vector, Database or Web -# category=cenra,database,metadata - -# If the plugin can run on QGIS Server. -server=False - +# This file contains metadata for your plugin. + +# This file should be included when you package your plugin.# Mandatory items: + +[general] +name=CenRa_Metabase +qgisMinimumVersion=3.0 +description=CenRa_METABASE +version=1.2 +author=Conservatoire d'Espaces Naturels de Rhône-Alpes +email=si_besoin@cen-rhonealpes.fr + +about=Permet de saisire et de visualisé les information lier à la metadonné d'une couche ce trouvent sur PostgreSQL + +repository=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS +homepage=https://plateformesig.cenra-outils.org/ +tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues +# End of mandatory metadata + +# Recommended items: + +hasProcessingProvider=no +# Uncomment the following line and add your changelog: +changelog=

CenRa_Metabase:


07/10/2024 - Version 1.2:

- Correctif de bug.


03/10/2024 - Version 1.1:

- Remonte la fênetre dans la pille.


26/08/2024 - Version 1.0:

- Lancement du plugin CenRa_Metabase


+ +# Tags are comma separated with spaces allowed +tags=python + + +category=Plugins +icon=icon.png +# experimental flag +experimental=False + +# deprecated flag (applies to the whole plugin, not just a single version) +deprecated=False + +# Since QGIS 3.8, a comma separated list of plugins to be installed +# (or upgraded) can be specified. +# Check the documentation for more information. +# plugin_dependencies= + +Category of the plugin: Raster, Vector, Database or Web +# category=cenra,database,metadata + +# If the plugin can run on QGIS Server. +server=False +