From 910ba14dc9e687110b7e3510d36515d233d5e735 Mon Sep 17 00:00:00 2001 From: tlaveille Date: Fri, 9 Jan 2026 10:07:07 +0100 Subject: [PATCH] test maj new pc --- CenRa_AUTOMAP/canvas_editor.py | 50 +- CenRa_AUTOMAP/metadata.txt | 4 +- .../NATURA 2000_logo_générique_RVB_blanc.png | Bin 0 -> 116031 bytes .../tools/logo_library/Natura_2000.png | Bin 0 -> 47149 bytes .../tools/mises_en_pages/carto_standard.py | 354 +-- .../tools/mises_en_pages/full_page.py | 359 +-- .../tools/mises_en_pages/left_corner.py | 362 +-- .../tools/mises_en_pages/n2000.py | 230 +- .../tools/mises_en_pages/n2000_comparaison.py | 197 ++ CenRa_FLUX/flux_editor.py | 23 +- CenRa_FLUX/metadata.txt | 4 +- CenRa_METABASE/CenRa_Metabase.py | 217 -- CenRa_METABASE/README.md | 1 - CenRa_METABASE/__init__.py | 10 - CenRa_METABASE/about_form.py | 46 - CenRa_METABASE/dock.py | 453 ---- CenRa_METABASE/editor.py | 775 ------- CenRa_METABASE/icon.png | Bin 4977 -> 0 bytes CenRa_METABASE/issues.py | 89 - CenRa_METABASE/metadata.txt | 49 - CenRa_METABASE/tools/css/dock.css | 61 - CenRa_METABASE/tools/html/contact.html | 7 - CenRa_METABASE/tools/html/link.html | 7 - CenRa_METABASE/tools/html/main.html | 123 -- CenRa_METABASE/tools/icons/CEN_RA.png | Bin 8893 -> 0 bytes CenRa_METABASE/tools/icons/auto_add.png | Bin 42290 -> 0 bytes CenRa_METABASE/tools/icons/icon.png | Bin 15984 -> 0 bytes CenRa_METABASE/tools/icons/icon_2.png | Bin 27716 -> 0 bytes .../tools/images/must_be_a_file.png | Bin 25798 -> 0 bytes CenRa_METABASE/tools/resources.py | 184 -- CenRa_METABASE/tools/ui/CenRa_IssuesSend.ui | 332 --- .../ui/CenRa_Metabase_dockwidget_base.ui | 74 - .../ui/CenRa_Metabase_editorwidget_base.ui | 1946 ----------------- CenRa_METABASE/tools/ui/CenRa_about_form.ui | 81 - CenRa_METABASE/tools/xml/dcat.xml | 26 - CenRa_METABASE/tools/xml/distribution.xml | 9 - CenRa_METABASE/tools/xml/publisher.xml | 6 - CenRa_PAGERENDER/CenRa_PageRender.py | 141 -- CenRa_PAGERENDER/README.md | 1 - CenRa_PAGERENDER/__init__.py | 10 - CenRa_PAGERENDER/about_form.py | 46 - CenRa_PAGERENDER/canvas_editor.py | 512 ----- CenRa_PAGERENDER/icon.png | Bin 4977 -> 0 bytes CenRa_PAGERENDER/issues.py | 89 - CenRa_PAGERENDER/metadata.txt | 49 - CenRa_PAGERENDER/tools/icons/CEN_RA.png | Bin 8893 -> 0 bytes CenRa_PAGERENDER/tools/icons/icon.png | Bin 45060 -> 0 bytes CenRa_PAGERENDER/tools/resources.py | 174 -- CenRa_PAGERENDER/tools/ui/CenRa_IssuesSend.ui | 332 --- .../tools/ui/CenRa_PageRender_base.ui | 698 ------ CenRa_PAGERENDER/tools/ui/CenRa_about_form.ui | 81 - CenRa_PAGERENDER/tools/ui/rotate.png | Bin 19524 -> 0 bytes CenRa_PAGERENDER/tools/ui/size.png | Bin 17021 -> 0 bytes CenRa_PAGERENDER/tools/ui/size_0.png | Bin 17730 -> 0 bytes plugins.xml | 12 +- 55 files changed, 975 insertions(+), 7249 deletions(-) create mode 100644 CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png create mode 100644 CenRa_AUTOMAP/tools/logo_library/Natura_2000.png rename CenRa_PAGERENDER/demoV2.py => CenRa_AUTOMAP/tools/mises_en_pages/n2000.py (58%) create mode 100644 CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py delete mode 100644 CenRa_METABASE/CenRa_Metabase.py delete mode 100644 CenRa_METABASE/README.md delete mode 100644 CenRa_METABASE/__init__.py delete mode 100644 CenRa_METABASE/about_form.py delete mode 100644 CenRa_METABASE/dock.py delete mode 100644 CenRa_METABASE/editor.py delete mode 100644 CenRa_METABASE/icon.png delete mode 100644 CenRa_METABASE/issues.py delete mode 100644 CenRa_METABASE/metadata.txt delete mode 100644 CenRa_METABASE/tools/css/dock.css delete mode 100644 CenRa_METABASE/tools/html/contact.html delete mode 100644 CenRa_METABASE/tools/html/link.html delete mode 100644 CenRa_METABASE/tools/html/main.html delete mode 100644 CenRa_METABASE/tools/icons/CEN_RA.png delete mode 100644 CenRa_METABASE/tools/icons/auto_add.png delete mode 100644 CenRa_METABASE/tools/icons/icon.png delete mode 100644 CenRa_METABASE/tools/icons/icon_2.png delete mode 100644 CenRa_METABASE/tools/images/must_be_a_file.png delete mode 100644 CenRa_METABASE/tools/resources.py delete mode 100644 CenRa_METABASE/tools/ui/CenRa_IssuesSend.ui delete mode 100644 CenRa_METABASE/tools/ui/CenRa_Metabase_dockwidget_base.ui delete mode 100644 CenRa_METABASE/tools/ui/CenRa_Metabase_editorwidget_base.ui delete mode 100644 CenRa_METABASE/tools/ui/CenRa_about_form.ui delete mode 100644 CenRa_METABASE/tools/xml/dcat.xml delete mode 100644 CenRa_METABASE/tools/xml/distribution.xml delete mode 100644 CenRa_METABASE/tools/xml/publisher.xml delete mode 100644 CenRa_PAGERENDER/CenRa_PageRender.py delete mode 100644 CenRa_PAGERENDER/README.md delete mode 100644 CenRa_PAGERENDER/__init__.py delete mode 100644 CenRa_PAGERENDER/about_form.py delete mode 100644 CenRa_PAGERENDER/canvas_editor.py delete mode 100644 CenRa_PAGERENDER/icon.png delete mode 100644 CenRa_PAGERENDER/issues.py delete mode 100644 CenRa_PAGERENDER/metadata.txt delete mode 100644 CenRa_PAGERENDER/tools/icons/CEN_RA.png delete mode 100644 CenRa_PAGERENDER/tools/icons/icon.png delete mode 100644 CenRa_PAGERENDER/tools/resources.py delete mode 100644 CenRa_PAGERENDER/tools/ui/CenRa_IssuesSend.ui delete mode 100644 CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui delete mode 100644 CenRa_PAGERENDER/tools/ui/CenRa_about_form.ui delete mode 100644 CenRa_PAGERENDER/tools/ui/rotate.png delete mode 100644 CenRa_PAGERENDER/tools/ui/size.png delete mode 100644 CenRa_PAGERENDER/tools/ui/size_0.png diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index e0a3fb5..93a7b21 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -14,6 +14,7 @@ from qgis.core import ( QgsLayoutItemLabel, QgsLayoutItemPicture, QgsLayoutItemLegend, + QgsLayoutItem, QgsLegendStyle, QgsLayoutItemScaleBar, QgsLayerTreeGroup, @@ -116,15 +117,19 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): 'Carte_size': None, 'Carte_locals': None, 'Carte_rotate': None, + 'Carte_frame': None, 'Carte_2_size': None, 'Carte_2_locals': None, 'Carte_2_rotate': None, 'Legande_size': None, 'Legande_locals': None, 'Legande_rotate': None, + 'Legande_frame': None, 'Arrow_size': None, 'Arrow_locals': None, 'Arrow_rotate': None, + 'Arrow_background': None, + 'Arrow_path': None, 'Echelle_size': None, 'Echelle_locals': None, 'Echelle_rotate': None, @@ -140,9 +145,11 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): 'Credit_size': None, 'Credit_locals': None, 'Credit_rotate': None, + 'Credit_alignment': None, 'Source_size': None, 'Source_locals': None, 'Source_rotate': None, + 'Source_alignment': None, 'Logo_2_size': None, 'Logo_2_locals': None, 'Logo_2_rotate': None, @@ -459,7 +466,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.map_modele_test.setExtent(iface.mapCanvas().extent()) # Position de la carte dans le composeur - self.map_modele_test.setItemRotation(self.template_parameters['Carte_rotate']) + self.map_modele_test.setMapRotation(self.template_parameters['Carte_rotate']) self.map_modele_test.attemptResize(self.template_parameters['Carte_size']) self.map_modele_test.attemptMove(self.template_parameters['Carte_locals']) # on dimensionne le rendu de la carte (pour référence la page totale est une page A4 donc 297*210) @@ -473,7 +480,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): if self.radioButton_12.isChecked() == 1: self.position_map = QgsLayoutItemMap(self.layout) self.position_map.setRect(20, 20, 20, 20) - self.position_map.setExtent(QgsRectangle(641552, 6647386, 995856, 6331104)) + self.position_map.setExtent(QgsRectangle(618704, 6329245, 1018704, 6649245)) + # self.position_map.setExtent(QgsRectangle(641552, 6647386, 995856, 6331104)) self.position_map.setFollowVisibilityPreset(True) self.position_map.setFollowVisibilityPresetName(self.comboBox_6.currentText()) self.position_map.setItemRotation(self.template_parameters['Carte_2_rotate']) @@ -487,13 +495,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # overviewitem.addOverview(map_overview) self.position_map.refresh() - self.map_modele_test.setFrameEnabled(True) + self.map_modele_test.setFrameEnabled(self.template_parameters['Carte_frame']) + self.position_map.setFrameEnabled(self.template_parameters['Carte_2_frame']) self.layout.addLayoutItem(self.position_map) self.position_map.setId("Carte_locals") self.map_modele_test.refresh() self.map_modele_test.setBackgroundColor(QColor(255, 255, 255, 255)) - self.map_modele_test.setFrameEnabled(True) + self.map_modele_test.setFrameEnabled(self.template_parameters['Carte_frame']) if self.radioButton_9.isChecked() == 1: self.map_modele_test.setAtlasDriven(True) self.layout.addLayoutItem(self.map_modele_test) @@ -504,7 +513,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.layout.addLayoutItem(title) titre = titre_layout_name title.setText(titre) - title.setFont(QFont("Calibri", 15, False)) + Font = QFont("Calibri", 15, False) + Font.setBold(True) + title.setFont(Font) title.setItemRotation(self.template_parameters['Titre_rotate']) title.attemptResize(self.template_parameters['Titre_size']) title.attemptMove(self.template_parameters['Titre_locals']) @@ -537,6 +548,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # Ajout du logo CEN NA en haut à gauche de la page logo = QgsLayoutItemPicture(self.layout) logo.setResizeMode(QgsLayoutItemPicture.Zoom) + logo.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) logo.setMode(QgsLayoutItemPicture.FormatRaster) logo.setItemRotation(self.template_parameters['Logo_rotate']) logo.setFixedSize(self.template_parameters['Logo_size']) @@ -551,7 +563,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): legend.setId('legende_model1') # legend.setTitle('Legende') legend.adjustBoxSize() - legend.setFrameEnabled(False) + legend.setFrameEnabled(self.template_parameters['Legande_frame']) legend.setAutoUpdateModel(False) legend.setLinkedMap(self.map_modele_test) @@ -608,6 +620,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): legend.rstyle(QgsLegendStyle.Group).setMargin(QgsLegendStyle.Top, 3) legend.rstyle(QgsLegendStyle.Subgroup).setMargin(QgsLegendStyle.Top, 3) legend.setColumnCount(self.spinBox.value()) + legend.setItemRotation(self.template_parameters['Legande_rotate']) legend.adjustBoxSize() legend.setBackgroundEnabled(True) @@ -628,9 +641,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0) self.scalebarnumeric_qpt.setFont(QFont("Calibri", 12)) + self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate']) self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals']) self.scalebarnumeric_qpt.attemptResize(self.template_parameters['Echelle_size']) - self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate']) self.scalebarnumeric_qpt.setAlignment(QgsScaleBarSettings.Alignment(1)) self.scalebarnumeric_qpt.setBackgroundEnabled(True) self.scalebarnumeric_qpt.setBackgroundColor(QColor(255, 255, 255, 130)) @@ -641,6 +654,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebar_qpt = QgsLayoutItemScaleBar(self.layout) self.scalebar_qpt.setStyle('Single Box') self.scalebar_qpt.setLinkedMap(self.map_modele_test) + self.scalebar_qpt.setFillColor(QColor(144, 144, 144, 255)) self.scalebar_qpt.applyDefaultSize() self.scalebar_qpt.applyDefaultSettings() @@ -648,9 +662,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebar_qpt.setNumberOfSegmentsLeft(0) self.scalebar_qpt.setFont(QFont("Calibri", 12)) + self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate']) self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals']) self.scalebar_qpt.attemptResize(self.template_parameters['Echelle_2_size']) - self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate']) self.scalebar_qpt.setAlignment(QgsScaleBarSettings.Alignment(1)) self.scalebar_qpt.setBackgroundEnabled(True) self.scalebar_qpt.setBackgroundColor(QColor(255, 255, 255, 130)) @@ -660,12 +674,16 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # ajout de la fleche du Nord north = QgsLayoutItemPicture(self.layout) - north.setPicturePath(resources_path("mises_en_pages", "NorthArrow_02.svg")) + north.setPicturePath(resources_path("mises_en_pages", self.template_parameters['Arrow_path'])) + north.setLinkedMap(self.map_modele_test) self.layout.addLayoutItem(north) + north.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) + north.setItemRotation(self.template_parameters['Arrow_rotate']) north.attemptMove(self.template_parameters['Arrow_locals']) north.attemptResize(self.template_parameters['Arrow_size']) - north.setItemRotation(self.template_parameters['Arrow_rotate']) - north.setBackgroundEnabled(True) + north.setSvgStrokeColor(QColor(255, 255, 255, 255)) + north.setSvgFillColor(QColor(76, 76, 76, 255)) + north.setBackgroundEnabled(self.template_parameters['Arrow_background']) north.setBackgroundColor(QColor(255, 255, 255, 130)) if self.radioButton_10.isChecked() == 1: @@ -686,15 +704,17 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): credit_text = QgsLayoutItemLabel(self.layout) credit_text.setText(info[0]) credit_text.setFont(QFont("Calibri", 9)) - credit_text.setHAlign(Qt.AlignmentFlag(0x0002)) + credit_text.setHAlign(Qt.AlignmentFlag(self.template_parameters['Credit_alignment'])) credit_text.setVAlign(Qt.AlignmentFlag(0x0080)) + credit_text.setMarginX(2) credit_text.setBackgroundEnabled(True) credit_text.setBackgroundColor(QColor(255, 255, 255, 130)) credit_text2 = QgsLayoutItemLabel(self.layout) credit_text2.setText(info_text) credit_text2.setFont(QFont("Calibri", 9)) - credit_text2.setHAlign(Qt.AlignmentFlag(0x0002)) + credit_text2.setHAlign(Qt.AlignmentFlag(self.template_parameters['Source_alignment'])) credit_text2.setVAlign(Qt.AlignmentFlag(0x0080)) + credit_text2.setMarginX(2) credit_text.setItemRotation(self.template_parameters['Credit_rotate']) credit_text.attemptResize(self.template_parameters['Credit_size']) credit_text.attemptMove(self.template_parameters['Credit_locals']) @@ -711,11 +731,11 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): for logo_run in self.mComboBox_4.checkedItems(): logo_credit = QgsLayoutItemPicture(self.layout) logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom) + logo_credit.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) logo_credit.setMode(QgsLayoutItemPicture.FormatRaster) cur_x = self.template_parameters['Logo_2_locals'].x() + logo_credit.setItemRotation(self.template_parameters['Logo_2_rotate']) logo_credit.attemptMove(self.template_parameters['Logo_2_locals']) - print(logo_credit.pictureAnchor()) - # logo_credit.setPictureAnchor(4) self.template_parameters['Logo_2_locals'].setX(cur_x + (logo_div / len_item)) logo_credit.setFixedSize(self.template_parameters['Logo_2_size']) if logo_run[0] == ' ': diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index b7e0984..ee4d58e 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.1 +version=2.7 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

- Fenêtre redimensionnable avec déplaçable avec la mollette sourit.


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

- Version releases.
- Ajoute un message d'avertissement au moment d'écraser la mise en page.
- Ajoute prénom et nom dans la réalisation.
- Utilisation de Calibri.


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

- Nouvelle mise en page.
- Incrémentation automatique de nouveau modele de mise en page.
- Correctif de bug.


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

- Remonte la fênetre dans la pille.
- Gestion du nombre de colonne dans la légend.


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

- Récupération du titre et sous-titre pour mise en page existente.
- Integration de bibliotheque de logo.
- Integration de gestionaire pour les source de donnée.
- Mise en place d'une bar d'echelle adaptative.


30/09/2024 - Version 0.1.2:

- Activation du thème.
- Ajouter une carte de suivie.


27/09/2024 - Version 0.1.1:

- Ajout d'une liste déroulante pour les sources de données.
- Bouton pour ajouter des fonts de carte customisés.
- Fonctionnalité de génération d'atlas.


26/09/2024 - Version 0.1.0:

- Lancement du plugin CenRa_AutoMap avec une seul mise en page.


+changelog=

CenRa_AUTOMAP:


18/12/2025 - Version 2.7:

- fix de bug gitea.


18/12/2025 - Version 2.6:

- ajoue du logo n2000 et region.


17/12/2025 - Version 2.5:

- Carte n2000 mise a jour landscape et portrait.


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

- Fenêtre redimensionnable avec déplaçable avec la mollette sourit.


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

- Version releases.
- Ajoute un message d'avertissement au moment d'écraser la mise en page.
- Ajoute prénom et nom dans la réalisation.
- Utilisation de Calibri.


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

- Nouvelle mise en page.
- Incrémentation automatique de nouveau modele de mise en page.
- Correctif de bug.


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

- Remonte la fênetre dans la pille.
- Gestion du nombre de colonne dans la légend.


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

- Récupération du titre et sous-titre pour mise en page existente.
- Integration de bibliotheque de logo.
- Integration de gestionaire pour les source de donnée.
- Mise en place d'une bar d'echelle adaptative.


30/09/2024 - Version 0.1.2:

- Activation du thème.
- Ajouter une carte de suivie.


27/09/2024 - Version 0.1.1:

- Ajout d'une liste déroulante pour les sources de données.
- Bouton pour ajouter des fonts de carte customisés.
- Fonctionnalité de génération d'atlas.


26/09/2024 - Version 0.1.0:

- Lancement du plugin CenRa_AutoMap avec une seul mise en page.


# Tags are comma separated with spaces allowed tags=python diff --git a/CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png b/CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png new file mode 100644 index 0000000000000000000000000000000000000000..e034b197898678e69550d6d7041c28e5c144cbf7 GIT binary patch literal 116031 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 literal 0 HcmV?d00001 diff --git a/CenRa_AUTOMAP/tools/logo_library/Natura_2000.png b/CenRa_AUTOMAP/tools/logo_library/Natura_2000.png new file mode 100644 index 0000000000000000000000000000000000000000..f319b760f3d61882c96c8ee2a8e540a155becd3f GIT binary patch literal 47149 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 1: for typegeom in list_typegeom: if typegeom[0] == 'MultiPolygon': @@ -547,9 +553,12 @@ class Flux_Editor(QDialog, EDITOR_CLASS): # Ajout de la couche au canevas QGIS QgsProject.instance().addMapLayer(layer) else: - layer = QgsVectorLayer(uri.uri(), table, "postgres") - # Ajout de la couche au canevas QGIS - QgsProject.instance().addMapLayer(layer) + if UndefinedTable: + layer = QgsVectorLayer(uri.uri(), table, "postgres") + # Ajout de la couche au canevas QGIS + QgsProject.instance().addMapLayer(layer) + else: + self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "La couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» semble ne pas avoir le même nom dans la BD, merci de contacter votre administrateur pour régler le problème !", QMessageBox.StandardButton(0x00004000)) else: self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "La couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» ne ce trouve pas dans cette BD !", QMessageBox.StandardButton(0x00004000)) diff --git a/CenRa_FLUX/metadata.txt b/CenRa_FLUX/metadata.txt index 1dc5ec3..b8635a7 100644 --- a/CenRa_FLUX/metadata.txt +++ b/CenRa_FLUX/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_FLUX qgisMinimumVersion=3.0 supportsQt6=True description=Permet d'ouvrire une table dans la base PostGis -version=3.14 +version=3.15 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -32,7 +32,7 @@ icon=icon.png # experimental flag experimental=False -changelog=

CenRa_FLUX:


08/12/2025 - Version 3.14:

- message d'erreur pour les drois de couche sur la DB.


08/12/2025 - Version 3.13:

- Detection des droit utilisateur.


25/09/2025 - Version 3.12:

- version +1.


25/09/2025 - Version 3.11:

- Correctife sur les code 00.


24/09/2025 - Version 3.10:

- Erreur sur l ouverture des couche raster.


24/09/2025 - Version 3.9:

- bugfix lier aux extention pgsql.


09/09/2025 - Version 3.8:

- Bug REF fix.


05/09/2025 - Version 3.7:

- Ouverture de projet QGIS contenue dans la base de donnees.


30/07/2025 - Version 3.6:

- Correctife de bug.


29/07/2025 - Version 3.5:

- Bug fix sur les donnee raster.


23/07/2025 - Version 3.4:

- Ouverture raster dans la base SIG.


23/07/2025 - Version 3.3:

- Optimisation des chargement.


22/07/2025 - Version 3.2:

- Visualisation des format raster et vecteur dans REF.


21/07/2025 - Version 3.1:

- Bug fix pour l'ouverture de plus de 5 couches.


19/05/2025 - Version 3.0:

- Compatible PyQt5 et PyQt6.


09/04/2025 - Version 2.9:

- Correctif bug en TT.


09/04/2025 - Version 2.8:

- Optimisation pour le TT.


07/04/2025 - Version 2.7:

- mode debug.


03/04/2025 - Version 2.6:

- Mise a jour de securite.


20/03/2025 - Version 2.5:

- Visualisation distincte des couches ne se trouvant pas dans l'antenne.


13/02/2025 - Version 2.4:

- Ajoute redimensionnement et déplacement mollette.


05/02/2025 - Version 2.3:

- Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.


07/01/2025 - Version 2.2:

- ByPass du certif ssl ci erreur.


22/10/2024 - Version 2.1:

- Correctif de bug.
- Evolution de la limit de 3 à 5.


22/10/2024 - Version 2.0:

- Reformatage du code.


03/10/2024 - Version 1.14:

- Remonte la fênetre dans la pille.

13/09/2024 - Version 1.13:

- MAJ sur le lien du changelog
- Bug-fix: Ouvre MultiPolygone et Polygon séparément.


10/09/2024 - Version 1.11:

- Ouverture de table contenant plusieurs géométries.


26/08/2024 - Version 1.10:

- Ajoute d'un changelog et vérification de mise à jour.

+changelog=

CenRa_FLUX:


15/12/2025 - Version 3.15:

- information visuel des droit d access a la donnee sur tout les base.


08/12/2025 - Version 3.14:

- message d erreur pour les drois de couche sur la DB.


08/12/2025 - Version 3.13:

- Detection des droit utilisateur.


25/09/2025 - Version 3.12:

- version +1.


25/09/2025 - Version 3.11:

- Correctife sur les code 00.


24/09/2025 - Version 3.10:

- Erreur sur l ouverture des couche raster.


24/09/2025 - Version 3.9:

- bugfix lier aux extention pgsql.


09/09/2025 - Version 3.8:

- Bug REF fix.


05/09/2025 - Version 3.7:

- Ouverture de projet QGIS contenue dans la base de donnees.


30/07/2025 - Version 3.6:

- Correctife de bug.


29/07/2025 - Version 3.5:

- Bug fix sur les donnee raster.


23/07/2025 - Version 3.4:

- Ouverture raster dans la base SIG.


23/07/2025 - Version 3.3:

- Optimisation des chargement.


22/07/2025 - Version 3.2:

- Visualisation des format raster et vecteur dans REF.


21/07/2025 - Version 3.1:

- Bug fix pour l'ouverture de plus de 5 couches.


19/05/2025 - Version 3.0:

- Compatible PyQt5 et PyQt6.


09/04/2025 - Version 2.9:

- Correctif bug en TT.


09/04/2025 - Version 2.8:

- Optimisation pour le TT.


07/04/2025 - Version 2.7:

- mode debug.


03/04/2025 - Version 2.6:

- Mise a jour de securite.


20/03/2025 - Version 2.5:

- Visualisation distincte des couches ne se trouvant pas dans l'antenne.


13/02/2025 - Version 2.4:

- Ajoute redimensionnement et déplacement mollette.


05/02/2025 - Version 2.3:

- Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.


07/01/2025 - Version 2.2:

- ByPass du certif ssl ci erreur.


22/10/2024 - Version 2.1:

- Correctif de bug.
- Evolution de la limit de 3 à 5.


22/10/2024 - Version 2.0:

- Reformatage du code.


03/10/2024 - Version 1.14:

- Remonte la fênetre dans la pille.

13/09/2024 - Version 1.13:

- MAJ sur le lien du changelog
- Bug-fix: Ouvre MultiPolygone et Polygon séparément.


10/09/2024 - Version 1.11:

- Ouverture de table contenant plusieurs géométries.


26/08/2024 - Version 1.10:

- Ajoute d'un changelog et vérification de mise à jour.

# deprecated flag (applies to the whole plugin, not just a single version) deprecated=False diff --git a/CenRa_METABASE/CenRa_Metabase.py b/CenRa_METABASE/CenRa_Metabase.py deleted file mode 100644 index d1e265a..0000000 --- a/CenRa_METABASE/CenRa_Metabase.py +++ /dev/null @@ -1,217 +0,0 @@ -__copyright__ = "Copyright 2021, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" - - -from qgis.core import QgsApplication -from qgis.PyQt.QtCore import Qt, QUrl, QSettings -from qgis.PyQt.QtGui import QDesktopServices, QIcon -from qgis.PyQt.QtWidgets import QAction -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 .about_form import MetabaseAboutDialog -from .tools.resources import ( - # plugin_path, - pyperclip, - resources_path, - maj_verif, -) -pyperclip() -from .dock import CenRa_Metabase -from .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) - - # 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.DockWidgetArea(0x2), 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.help_action: - iface.pluginHelpMenu().removeAction(self.help_action) - del self.help_action - - if self.dock_action: - iface.pluginMenu().removeAction(self.dock_action) - del self.dock_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/README.md b/CenRa_METABASE/README.md deleted file mode 100644 index 86abd18..0000000 --- a/CenRa_METABASE/README.md +++ /dev/null @@ -1 +0,0 @@ -# CenRa_Metabase \ No newline at end of file diff --git a/CenRa_METABASE/__init__.py b/CenRa_METABASE/__init__.py deleted file mode 100644 index 4eaf7d0..0000000 --- a/CenRa_METABASE/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -__copyright__ = "Copyright 2021, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" - - -# noinspection PyPep8Naming -def classFactory(iface): # pylint: disable=invalid-name - _ = iface - from CenRa_METABASE.CenRa_Metabase import PgMetadata - return PgMetadata() diff --git a/CenRa_METABASE/about_form.py b/CenRa_METABASE/about_form.py deleted file mode 100644 index b9fa5a7..0000000 --- a/CenRa_METABASE/about_form.py +++ /dev/null @@ -1,46 +0,0 @@ -import os.path - -from pathlib import Path - -from qgis.PyQt import uic -# from qgis.PyQt.QtGui import QPixmap -from qgis.PyQt.QtWidgets import QDialog - -from .tools.resources import devlog - -ABOUT_FORM_CLASS, _ = uic.loadUiType( - os.path.join( - str(Path(__file__).resolve().parent), - 'tools/ui', - 'CenRa_about_form.ui' - ) -) - - -class MetabaseAboutDialog(QDialog, ABOUT_FORM_CLASS): - - """ About - Let the user display the about dialog. """ - - def __init__(self, iface, parent=None): - super().__init__(parent) - self.iface = iface - self.setupUi(self) - - self.viewer.setHtml(devlog('CenRa_METABASE')) - - self.rejected.connect(self.onReject) - self.buttonBox.rejected.connect(self.onReject) - self.buttonBox.accepted.connect(self.onAccept) - - def onAccept(self): - """ - Save options when pressing OK button - """ - self.accept() - - def onReject(self): - """ - Run some actions when - the user closes the dialog - """ - self.close() diff --git a/CenRa_METABASE/dock.py b/CenRa_METABASE/dock.py deleted file mode 100644 index a2979e2..0000000 --- a/CenRa_METABASE/dock.py +++ /dev/null @@ -1,453 +0,0 @@ -"""Dock file.""" - -__copyright__ = 'Copyright 2020, 3Liz' -__license__ = 'GPL version 3' -__email__ = 'info@3liz.org' - -import logging -import os - -from collections import namedtuple -from enum import Enum -from functools import partial -from pathlib import Path -from xml.dom.minidom import parseString - -from qgis.core import ( - QgsApplication, - QgsProviderRegistry, - QgsSettings, -) -from qgis.PyQt.QtCore import QLocale, QUrl -from qgis.PyQt.QtGui import QDesktopServices, QIcon -from qgis.PyQt.QtPrintSupport import QPrinter -# from qgis.PyQt.QtWebKitWidgets import QWebPage -from qgis.PyQt.QtWidgets import ( - QAction, - QDockWidget, - QFileDialog, - QMenu, - QToolButton, -) -from qgis.utils import iface -import qgis -from .tools.resources import ( - load_ui, - resources_path, -) -try: - from .tools.PythonSQL import login_base -except ValueError: - print('Pas de fichier PythonSQL') - -DOCK_CLASS = load_ui('CenRa_Metabase_dockwidget_base.ui') -LOGGER = logging.getLogger('CenRa_Metabase') - - -class Format(namedtuple('Format', ['label', 'ext'])): - """ Format available for exporting metadata. """ - pass - - -class OutputFormats(Format, Enum): - """ Output format for a metadata sheet. """ - PDF = Format(label='PDF', ext='pdf') - HTML = Format(label='HTML', ext='html') - DCAT = Format(label='DCAT', ext='xml') - - -class CenRa_Metabase(QDockWidget, DOCK_CLASS): - - def __init__(self, parent=None): - _ = parent - super().__init__() - self.setupUi(self) - self.settings = QgsSettings() - - self.current_datasource_uri = None - self.current_connection = None - - # self.viewer.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) - # self.viewer.page().linkClicked.connect(self.open_link) - - # Help button - self.external_help.setText('') - self.external_help.setIcon(QIcon(QgsApplication.iconPath('mActionHelpContents.svg'))) - self.external_help.clicked.connect(self.open_external_help) - - # Flat table button - self.flatten_dataset_table.setText('') - # self.flatten_dataset_table.setToolTip(tr("Add the catalog table")) - self.flatten_dataset_table.setIcon(QgsApplication.getThemeIcon("/mActionAddHtml.svg")) - # self.flatten_dataset_table.clicked.connect(self.add_flatten_dataset_table) - - # Settings menu - self.config.setAutoRaise(True) - # self.config.setToolTip(tr("Settings")) - self.config.setPopupMode(QToolButton.ToolButtonPopupMode(2)) - self.config.setIcon(QgsApplication.getThemeIcon("/mActionOptions.svg")) - - self.auto_open_dock_action = QAction( - ("Dommage, cette option n'existe pas encore."), - iface.mainWindow()) - self.auto_open_dock_action.setCheckable(True) - self.auto_open_dock_action.setChecked( - self.settings.value("pgmetadata/auto_open_dock", True, type=bool) - ) - self.auto_open_dock_action.triggered.connect(self.save_auto_open_dock) - menu = QMenu() - menu.addAction(self.auto_open_dock_action) - self.config.setMenu(menu) - - # Setting PDF/HTML menu - self.save_button.setAutoRaise(True) - # self.save_button.setToolTip(tr("Save metadata")) - self.save_button.setPopupMode(QToolButton.ToolButtonPopupMode(2)) - self.save_button.setIcon(QIcon(QgsApplication.iconPath('mActionFileSave.svg'))) - - self.save_as_pdf = QAction( - ('Enregistrer en PDF') + '…', - iface.mainWindow()) - self.save_as_pdf.triggered.connect(partial(self.export_dock_content, OutputFormats.PDF)) - - self.save_as_html = QAction( - ('Enregistrer en HTML') + '…', - iface.mainWindow()) - self.save_as_html.triggered.connect(partial(self.export_dock_content, OutputFormats.HTML)) - self.save_as_dcat = QAction( - ('Enregistrer en DCAT') + '…', - iface.mainWindow()) - self.save_as_dcat.triggered.connect(partial(self.export_dock_content, OutputFormats.DCAT)) - - self.menu_save = QMenu() - self.menu_save.addAction(self.save_as_pdf) - self.menu_save.addAction(self.save_as_html) - self.menu_save.addAction(self.save_as_dcat) - self.save_button.setMenu(self.menu_save) - self.save_button.setEnabled(False) - - self.metadata = QgsProviderRegistry.instance().providerMetadata('postgres') - - # Display message in the dock - # if not settings_connections_names(): - # self.default_html_content_not_installed() - # else: - self.default_html_content_not_pg_layer() - iface.layerTreeView().currentLayerChanged.connect(self.layer_changed) - try: - login_base() - iface.layerTreeView().currentLayerChanged.connect(self.layer_changed) - except ValueError: - # qgis.utils.plugins['CenRa_METABASE'].initGui() - qgis.utils.plugins['CenRa_METABASE'].unload() - # self.default_html_content_not_pg_layer() - - if iface.activeLayer(): - layer = iface.activeLayer() - iface.layerTreeView().setCurrentLayer(None) - iface.layerTreeView().setCurrentLayer(layer) - - def export_dock_content(self, output_format: OutputFormats): - """ Export the current displayed metadata sheet to the given format. """ - layer_name = iface.activeLayer().name() - - file_path = os.path.join( - os.environ['USERPROFILE'], - 'Desktop\\{name}.{ext}'.format(name=layer_name, ext=output_format.ext) - ) - output_file = QFileDialog.getSaveFileName( - self, - ("Enregistrer en {format}").format(format=output_format.label), - file_path, - "{label} (*.{ext})".format( - label=output_format.label, - ext=output_format.ext, - ) - ) - if output_file[0] == '': - return - - self.settings.setValue("UI/lastFileNameWidgetDir", os.path.dirname(output_file[0])) - - output_file_path = output_file[0] - parent_folder = str(Path(output_file_path).parent) - - if output_format == OutputFormats.PDF: - printer = QPrinter() - printer.setOutputFormat(QPrinter.OutputFormat(1)) - # printer.setPageMargins(20,20,20,20,QPrinter.Unit(0)) - printer.setOutputFileName(output_file_path) - self.viewer.print(printer) - iface.messageBar().pushSuccess( - ("Export PDF"), - ( - "The metadata has been exported as PDF successfully in " - "
{}").format(parent_folder, output_file_path) - ) - - elif output_format in [OutputFormats.HTML, OutputFormats.DCAT]: - if output_format == OutputFormats.HTML: - data_str = self.viewer.page().currentFrame().toHtml() - else: - layer = iface.activeLayer() - uri = layer.dataProvider().uri() - dataall = self.sql_info(uri) - data = self.sql_to_xml(dataall) - - with open(resources_path('xml', 'dcat.xml'), encoding='utf8') as xml_file: - xml_template = xml_file.read() - - xml = parseString(xml_template.format(language=data[0][0], content=data[0][1])) - - data_str = xml.toprettyxml() - - with open(output_file[0], "w", encoding='utf8') as file_writer: - file_writer.write(data_str) - iface.messageBar().pushSuccess( - ("Export") + ' ' + output_format.label, - ( - "The metadata has been exported as {format} successfully in " - "{path}").format( - format=output_format.label, folder=parent_folder, path=output_file_path) - ) - - def save_auto_open_dock(self): - """ Save settings about the dock. """ - self.settings.setValue("pgmetadata/auto_open_dock", self.auto_open_dock_action.isChecked()) - - def sql_to_xml(self, dataall): - distribution = '' - for y in dataall[1]: - distribution = distribution + ('' + '' + '{data}'.format(data=y[0]) + '{data}'.format(data=y[1]) + '{data}'.format(data=y[2]) + '{data}'.format(data=y[3]) + '{data}'.format(data=y[4]) + '' + '') - publisher = '' - for z in dataall[2]: - publisher = publisher + ('' + '' + '{data}'.format(data=z[1]) + '{data}'.format(data=z[3]) + '' + '') - data_str = [[dataall[0][26], '{data}'.format(data=dataall[0][1]) + '{data}'.format(data=dataall[0][4]) + '{data}'.format(data=dataall[0][5]) + '{data}'.format(data=dataall[0][26]) + '{data}'.format(data=dataall[0][28]) + '{data}'.format(data=dataall[0][20]) + '{data}'.format(data=dataall[0][11]) + '{data}'.format(data=dataall[0][21]) + '{data}'.format(data=dataall[0][13]) + distribution + publisher + '{data}'.format(data=", ".join(str(x) for x in dataall[0][24])) + '{data}'.format(data=", ".join(str(x) for x in dataall[0][6])) + '{data}'.format(data=dataall[0][12])]] - - return data_str - - @staticmethod - def sql_for_layer(uri, output_format: OutputFormats): - """ Get the SQL query for a given layer and output format. """ - locale = QgsSettings().value("locale/userLocale", QLocale().name()) - locale = locale.split('_')[0].lower() - - if output_format == [OutputFormats.HTML, OutputFormats.DCAT]: - sql = ( - "SELECT pgmetadata.get_dataset_item_html_content('{schema}', '{table}', '{locale}');" - ).format(schema=uri.schema(), table=uri.table(), locale=locale) - else: - raise NotImplementedError('Output format is not yet implemented.') - - return sql - - def layer_changed(self, layer): - """ When the layer has changed in the legend, we must check this new layer. """ - self.current_datasource_uri = None - self.current_connection = None - self.ce_trouve_dans_psql(layer) - - def add_flatten_dataset_table(self): - """ Add a flatten dataset table with all links and contacts. """ - ''' - connections, message = connections_list() - if not connections: - LOGGER.critical(message) - self.set_html_content('PgMetadata', message) - return - - if len(connections) > 1: - dialog = QInputDialog() - dialog.setComboBoxItems(connections) - dialog.setWindowTitle(tr("Database")) - dialog.setLabelText(tr("Choose the database to add the catalog")) - if not dialog.exec_(): - return - connection_name = dialog.textValue() - else: - connection_name = connections[0] - - metadata = QgsProviderRegistry.instance().providerMetadata('postgres') - connection = metadata.findConnection(connection_name) - - locale = QgsSettings().value("locale/userLocale", QLocale().name()) - locale = locale.split('_')[0].lower() - - uri = QgsDataSourceUri(connection.uri()) - uri.setTable(f'(SELECT * FROM pgmetadata.export_datasets_as_flat_table(\'{locale}\'))') - uri.setKeyColumn('uid') - - layer = QgsVectorLayer(uri.uri(), '{} - {}'.format(tr("Catalog"), connection_name), 'postgres') - QgsProject.instance().addMapLayer(layer) - ''' - - @staticmethod - def open_external_help(): - QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/')) - - @staticmethod - def open_link(url): - QDesktopServices.openUrl(url) - - def set_html_content(self, title=None, body=None): - """ Set the content in the dock. """ - # ink_logo=resources_path('icons', 'CEN_RA.png') - css_file = resources_path('css', 'dock.css') - with open(css_file, 'r', encoding='utf8') as f: - css = f.read() - - html = '' - # html += '' - html += ''.format(css=css) - # html += '' - # html += '' - # html += '' - if title: - html += '

{title}

'.format(title=title) - if body: - html += body - - html += '' - - # It must be a file, even if it does not exist on the file system. - # base_url = QUrl.fromLocalFile(resources_path('images', 'must_be_a_file.png')) - self.viewer.setHtml(html) - - def ce_trouve_dans_psql(self, layer): - try: - uri = layer.dataProvider().uri() - except AttributeError: - self.default_html_content_not_pg_layer() - self.save_button.setEnabled(False) - uri = '' - if uri != '': - if not uri.table(): - layertype = layer.providerType().lower() - if layertype == 'wms' or layertype == 'wfs': - self.set_html_to_wms(layer) - else: - self.default_html_content_not_pg_layer() - self.save_button.setEnabled(False) - else: - data_count = self.sql_check(uri) - # print(data_count) - if data_count == 0: - self.default_html_content_not_metadata() - self.save_button.setEnabled(False) - else: - self.build_html_content(layer, uri) - self.save_button.setEnabled(True) - - def build_html_content(self, layer, uri): - body = '' - - dataall = self.sql_info(uri) - data = dataall[0] - data_url = dataall[1] - data_contact = dataall[2] - # print(len(data_url)) - # data_collonne = [field.name() for field in layer.dataProvider().fields()] - - body += '

Identification

' - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=(", ".join(str(x) for x in data[6]))) - body += ''.format(data=(", ".join(str(x) for x in data[24]))) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += '
Titre{data[4]}
Description{data[5]}
Categories{data}
Thèmes{data}
Mots-clés{data[7]}
Dernier mise à jour{data[23]}
Langue{data[26]}
' - - body += '

Properties spatial

' - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += '
Niveau{data[8]}
Echelle minimum{data[9]}
Echelle maximum{data[10]}
Nombre d\'entités {data[15]}
Type de géométrie{data[16]}
Nom de projection{data[17]}
ID de projection{data[18]}
Emprise{data[28]}
' - - # body += '
' - - body += '

Publication

' - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += '
Date{data[11]}
Fréquence de mise à jour{data[12]}
Licence{data[13]}
Licence attribué{data[25]}
Restriction{data[14]}
' - - body += '

Lien

' - body += '' - for value_url in data_url: - body += ''.format(value_url=value_url) - body += '
TypeURLType MIMEFormatTaille
{value_url[0]}{value_url[1]}{value_url[2]}{value_url[3]}{value_url[4]}
' - ''' - body += '

Liste des champs

' - for collonne in data_collonne: - body += ''.format(collonne=collonne,defini='') - body += '
{collonne}{defini}
' - ''' - body += '

Contacts

' - body += '' - for value_contact in data_contact: - body += ''.format(value_contact=value_contact) - body += '
RôleNomOrganisationEmailTélèphone
{value_contact[0]}{value_contact[1]}{value_contact[2]}{value_contact[3]}{value_contact[4]}
' - - body += '

Metadata

' - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += ''.format(data=data) - body += '
Table{data[2]}
Schema{data[3]}
Date de création{data[20]}
Date de modification{data[21]}
Encodage{data[27]}
UUID{data[1]}
' - - self.set_html_content( - layer.name(), body) - - def set_html_to_wms(self, layer): - self.set_html_content( - 'CenRa Metadata', (layer.htmlMetadata())) - - def default_html_content_not_pg_layer(self): - """ When it's not a PostgreSQL layer. """ - self.set_html_content( - 'CenRa Metadata', ('Vous devez cliquer sur une couche dans la légende qui est stockée dans PostgreSQL.')) - - def default_html_content_not_metadata(self): - self.set_html_content( - 'CenRa Metadata', ('La couche ne contien pas de métadonnée.')) - - def sql_check(self, uri): - cur = login_base() - table = uri.table() - schema = uri.schema() - - sql_count = """SELECT count(uid) FROM metadata.dataset - WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - - cur.execute(sql_count) - data_count = cur.fetchall() - cur.close() - return data_count[0][0] - - def sql_info(self, uri): - cur = login_base() - table = uri.table() - schema = uri.schema() - # [s for s in iface.activeLayer().source().split(" ") if "dbname" in s][0].split("'")[1] - sql_find = """SELECT *,right(left(st_astext(geom,2),-2),-9) FROM metadata.dataset - WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_find) - data_general = cur.fetchall() - sql_findurl = """SELECT type,url,mime,format,taille FROM metadata.dataurl WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_findurl) - data_url = cur.fetchall() - sql_findcontact = """SELECT role,nom,organisation,email,telephone FROM metadata.datacontact WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_findcontact) - data_contact = cur.fetchall() - cur.close() - return data_general[0], data_url, data_contact diff --git a/CenRa_METABASE/editor.py b/CenRa_METABASE/editor.py deleted file mode 100644 index 7896e2d..0000000 --- a/CenRa_METABASE/editor.py +++ /dev/null @@ -1,775 +0,0 @@ -import logging -import os - -# from collections import namedtuple -# from enum import Enum -# from functools import partial -# from pathlib import Path -# from xml.dom.minidom import parseString -# from qgis.gui import * -from qgis.core import ( - QgsApplication, - QgsSettings, - QgsGeometry, - QgsWkbTypes, - Qgis, -) -from qgis.PyQt import QtGui, QtCore -from qgis.PyQt.QtGui import QIcon -# from qgis.PyQt.QtPrintSupport import QPrinter -# from qgis.PyQt.QtWebKitWidgets import QWebPage -import psycopg2 -from qgis.PyQt.QtWidgets import ( - QDialog, - QFileDialog, - QTableWidgetItem, -) -from qgis.utils import iface - -try: - from .tools.PythonSQL import login_base -except ValueError: - print('Pas de fichier PythonSQL') - -from .tools.resources import ( - load_ui, - resources_path, - # send_issues, -) -# from .issues import CenRa_Issues - -EDITOR_CLASS = load_ui('CenRa_Metabase_editorwidget_base.ui') -LOGGEr = logging.getLogger('CenRa_Metabase') - - -class Metabase_Editor(QDialog, EDITOR_CLASS): - def __init__(self, parent=None): - _ = parent - super().__init__() - self.setupUi(self) - self.settings = QgsSettings() - self.setWindowIcon(QtGui.QIcon(resources_path('icons', 'icon.png'))) - self.import_xml.setAutoRaise(True) - self.import_xml.setText('') - self.import_xml.setIcon(QIcon(QgsApplication.iconPath('mActionAddHtml.svg'))) - self.import_xml.clicked.connect(self.py_import_xml) - self.issues_app.setAutoRaise(True) - self.issues_app.setText('') - self.issues_app.setIcon(QIcon(QgsApplication.iconPath('mIconInfo.svg'))) - self.auto_adding.setIcon(QtGui.QIcon(resources_path('icons', 'auto_add.png'))) - self.auto_adding.hide() - if os.getlogin() == 'tlaveille' or 'lpoulin' or 'rclement': - self.auto_adding.show() - - self.auto_adding.clicked.connect(self.auto_run) - # self.issues_app.clicked.connect(self.issues_open) - self.categories_select_view.itemDoubleClicked.connect(self.add_categories_view) - self.categories_view.itemDoubleClicked.connect(self.deleter_categories_view) - self.themes_select_view.itemDoubleClicked.connect(self.add_themes_view) - self.themes_view.itemDoubleClicked.connect(self.deleter_themes_view) - - self.annuler_button.clicked.connect(self.close) - self.ok_button.clicked.connect(self.add_metadata) - - self.add_lien_button.clicked.connect(self.add_lien) - self.add_contact_button.clicked.connect(self.add_contact) - self.delete_lien_button.clicked.connect(self.delete_lien) - self.delete_contact_button.clicked.connect(self.delete_contact) - - def auto_run(self): - self.role_box.setCurrentIndex(1) - self.nom_line.setText('LAVEILLE') - self.organisation_box.setCurrentIndex(1) - self.email_line.setText('tom.laveille@cen-rhonealpes.fr') - self.telephone_line.setText('0451260811') - self.add_contact() - - self.type_box.setCurrentIndex(16) - self.url_line.setText('www.cen-rhonealpes.fr') - self.mime_box.setCurrentIndex(16) - self.format_box.setCurrentIndex(0) - self.taille_line.setText('45') - self.add_lien() - - def add_metadata(self): - table_name = layer.dataProvider().uri().table() - schema_name = layer.dataProvider().uri().schema() - text_titre = self.titre_line.text() - text_description = self.description_text.toPlainText() - text_mots_cles = self.mots_cles_text.toPlainText() - text_date_maj = str(self.date_maj_date.date().toPyDate()) - text_langue = self.langue_box.currentText() - - row_count_categories = self.categories_view.rowCount() - row_count_themes = self.themes_view.rowCount() - row = 1 - array_categories = '{' - while row_count_categories >= row: - if row_count_categories != row: - array_categories += (self.categories_view.item(row - 1, 0).text()) + ', ' - else: - array_categories += (self.categories_view.item(row - 1, 0).text()) - row = row + 1 - array_categories += '}' - row = 1 - array_themes = '{' - while row_count_themes >= row: - if row_count_themes != row: - array_themes += (self.themes_view.item(row - 1, 0).text()) + ', ' - else: - array_themes += (self.themes_view.item(row - 1, 0).text()) - row = row + 1 - array_themes += '}' - - text_date_creation = str(self.date_creation_date.date().toPyDate()) - text_date_modification = str(self.date_modification_date.date().toPyDate()) - text_encode = self.encodage_box.currentText() - text_extend = self.extend_plaintext.toPlainText() - int_nbr_entites = (self.nbr_layers.toPlainText()) - text_geomtype = self.typegeom_plaintext.toPlainText() - text_crsname = self.crsname_plaintext.toPlainText() - text_crscode = self.crscode_plaintext.toPlainText() - text_niveau = self.niveau_plain.toPlainText() - - text_echelle_min = self.echelle_min_plain.toPlainText() - text_echelle_max = self.echelle_max_plain.toPlainText() - if text_echelle_min == '': - text_echelle_min = 'NULL' - if text_echelle_max == '': - text_echelle_max = 'NULL' - - text_date_publication = str(self.date_publication_date.date().toPyDate()) - - text_frequence = self.frequence_box.currentText() - text_restriction = self.restriction_box.currentText() - text_licence = self.licence_box.currentText() - text_licence_attrib = self.licence_attrib_box.currentText() - - ''' - row_count_link = self.table_lien.rowCount() - row = 1 - array_link = '' - while row_count_link >= row: - if row_count_link != row: - array_link += "('" + table_name + "', '" + schema_name + "', '" + (self.table_lien.item(row - 1,1).text()) + "', '" + (self.table_lien.item(row - 1,2).text()) + "', '" + (self.table_lien.item(row - 1,3).text()) + "', '" + (self.table_lien.item(row - 1,4).text()) + "', '" + (self.table_lien.item(row - 1,5).text()) + "')" + ', ' - else: - array_link += "('" + table_name + "', '" + schema_name + "', '" + (self.table_lien.item(row - 1,1).text()) + "', '" + (self.table_lien.item(row - 1,2).text()) + "', '" + (self.table_lien.item(row - 1,3).text()) + "', '" + (self.table_lien.item(row - 1,4).text()) + "', '" + (self.table_lien.item(row - 1,5).text()) + "')" - row = row + 1 - - row_count_contact = self.table_contact.rowCount() - row = 1 - array_contact = '' - while row_count_contact >= row: - if row_count_contact != row: - array_contact += "('" + table_name + "', '" + schema_name + "', '" + (self.table_contact.item(row - 1,1).text()) + "', '" + (self.table_contact.item(row - 1,2).text()) + "', '" + (self.table_contact.item(row - 1,3).text()) + "', '" + (self.table_contact.item(row - 1,4).text()) + "', '" + (self.table_contact.item(row - 1,5).text()) + "')" + ', ' - else: - array_contact += "('" + table_name + "', '" + schema_name + "', '" + (self.table_contact.item(row - 1,1).text()) + "', '" + (self.table_contact.item(row - 1,2).text()) + "', '" + (self.table_contact.item(row - 1,3).text()) + "', '" + (self.table_contact.item(row - 1,4).text()) + "', '" + (self.table_contact.item(row - 1,5).text()) + "')" - row = row + 1 - ''' - - exist = self.status_metadata(layer) - cur_con = login_base(take=True) - cur = cur_con[0] - con = cur_con[1] - list_champs_sql = '' - values_sql_add = '' - if exist: - SQL_uid = """SELECT uid from metadata.dataset where table_name like '""" + table_name + """' and schema_name like '""" + schema_name + """';""" - cur.execute(SQL_uid) - text_uid = (cur.fetchall())[0][0] - - SQL_delete = """DELETE from metadata.dataset where table_name like '""" + table_name + """' and schema_name like '""" + schema_name + """';""" - cur.execute(SQL_delete) - values_sql_add += "'" + text_uid + "'," - - list_champs_sql += 'uid,' - global uid_delete_list_link, uid_delete_list_contact - if len(uid_delete_list_link) >= 35: - SQL_delete_link = """DELETE FROM metadata.dataurl WHERE uid IN (""" + uid_delete_list_link[:- 1] + """);""" - cur.execute(SQL_delete_link) - uid_delete_list_link = '' - if len(uid_delete_list_contact) >= 35: - SQL_delete_contact = """DELETE FROM metadata.datacontact WHERE uid IN (""" + uid_delete_list_contact[:- 1] + """);""" - cur.execute(SQL_delete_contact) - uid_delete_list_contact = '' - - list_champs_sql += 'table_name, schema_name, title, abstract, keywords, data_last_update, langue, categories, themes, creation_date, update_date, encode, geom, spatial_extent, feature_count, geometry_type, projection_name, projection_authid, spatial_level, minimum_optimal_scale, maximum_optimal_scale, publication_date, publication_frequency, confidentiality, license, license_attribution' - values_sql_add += "'" + table_name + "', '" + schema_name + "', '" + text_titre + "', '" + text_description + "', '" + text_mots_cles + "', '" + text_date_maj + "', '" + text_langue + "', '" + array_categories + "', '" + array_themes + "', '" + text_date_creation + "', '" + text_date_modification + "', '" + text_encode + "', '" + text_extend + "', '" + text_extend + "', '" + int_nbr_entites + "', '" + text_geomtype + "', '" + text_crsname + "', '" + text_crscode + "', '" + text_niveau + "'," + text_echelle_min + "," + text_echelle_max + ",'" + text_date_publication + "', '" + text_frequence + "', '" + text_restriction + "', '" + text_licence + "', '" + text_licence_attrib + "'" - - SQL_add = """INSERT INTO metadata.dataset (""" + list_champs_sql + """) VALUES (""" + values_sql_add + """);""" - - cur.execute(SQL_add) - - global array_link, array_contact - if len(array_link) >= 25: - array_link = array_link[:- 1] - SQL_add_link = """INSERT INTO metadata.dataurl (table_name, schema_name, type, url, mime, format, taille) VALUES """ + array_link + """;""" - cur.execute(SQL_add_link) - array_link = '' - - if len(array_contact) >= 25: - array_contact = array_contact[0:- 1] - SQL_add_contact = """INSERT INTO metadata.datacontact (table_name, schema_name, role, nom, organisation, email, telephone) VALUES """ + array_contact + """;""" - cur.execute(SQL_add_contact) - array_contact = '' - - con.commit() - cur.close() - self.close() - - iface.layerTreeView().setCurrentLayer(None) - 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 - uid_delete_list_link = '' - uid_delete_list_contact = '' - array_link = '' - array_contact = '' - - is_ok = self.is_in_psql(layer) - if is_ok: - exist = self.status_metadata(layer) - if exist: - self.reload_data(layer) - else: - self.new_data(layer) - else: - self.close() - iface.messageBar().pushMessage("Information:", "Cette couche n'est pas stockée dans PostgreSQL", level=Qgis.Warning, duration=30) - - def is_in_psql(self, layer): - try: - uri = layer.dataProvider().uri() - except AttributeError: - uri = '' - return False - if uri != '': - if not uri.table(): - return False - else: - return True - - def status_metadata(self, layer): - uri = layer.dataProvider().uri() - table = uri.table() - schema = uri.schema() - - cur = login_base() - count_sql = """ SELECT count(uid) FROM metadata.dataset WHERE table_name LIKE '""" + table + """' AND schema_name LIKE '""" + schema + """';""" - - cur.execute(count_sql) - data_count = (cur.fetchall())[0][0] - if data_count == 1: - return True - else: - return False - cur.close() - - def new_data(self, layer): - # print(layer.name(),'is new data') - reloader = False - self.interface_view(layer, reloader) - - def reload_data(self, layer): - # print(layer.name(),'reload data') - reloader = True - self.interface_view(layer, reloader) - - def interface_view(self, layer, reloader): - - self.description_text.setText(None) - self.mots_cles_text.setText(None) - self.uuid_ligne.setText(None) - self.niveau_plain.setPlainText(None) - self.echelle_min_plain.setPlainText(None) - self.echelle_max_plain.setPlainText(None) - self.url_line.setText(None) - self.taille_line.setText(None) - self.nom_line.setText(None) - self.email_line.setText(None) - self.telephone_line.setText(None) - self.encodage_box.clear() - self.frequence_box.clear() - self.licence_box.clear() - self.licence_attrib_box.clear() - self.restriction_box.clear() - - all_list = self.fletch_ref() - - categories_list = all_list[0] - themes_list = all_list[1] - langue_list = all_list[2] - encodage_list = all_list[3] - frequency_list = all_list[4] - confidentiality_list = all_list[5] - license_list = all_list[6] - type_list = all_list[7] - mime_list = all_list[8] - format_list = all_list[9] - role_list = all_list[10] - organisation_list = all_list[11] - - # langue_box - self.langue_box.clear() - self.langue_box.addItem('') - # self.langue_box.addItem('Fr') - # self.langue_box.addItem('En') - for langue_list_data in langue_list: - self.langue_box.addItem(langue_list_data[0]) - - for encodage_list_data in encodage_list: - self.encodage_box.addItem(encodage_list_data[0]) - - self.table_ligne.setText(layer.dataProvider().uri().table()) - self.schema_ligne.setText(layer.dataProvider().uri().schema()) - - # categories_select_view - self.categories_select_view.setColumnCount(1) - self.categories_select_view.setColumnWidth(0, 230) - self.categories_select_view.setHorizontalHeaderLabels(['List des categories']) - # categories_view - self.categories_view.setRowCount(0) - self.categories_view.setColumnCount(1) - self.categories_view.setColumnWidth(0, 230) - self.categories_view.setHorizontalHeaderLabels(['Categories']) - - # themes_select_view - self.themes_select_view.setColumnCount(1) - self.themes_select_view.setColumnWidth(0, 230) - self.themes_select_view.setHorizontalHeaderLabels(['List des thèmes']) - # themes_view - self.themes_view.setRowCount(0) - self.themes_view.setColumnCount(1) - self.themes_view.setColumnWidth(0, 230) - self.themes_view.setHorizontalHeaderLabels(['Thèmes']) - - # lien_view - self.table_lien.setRowCount(0) - self.table_lien.setColumnCount(6) - self.table_lien.setColumnWidth(0, 0) - self.table_lien.setHorizontalHeaderLabels(['', 'Type', 'URL', 'MIME', 'Format', 'Taille']) - - # contact_view - self.table_contact.setRowCount(0) - self.table_contact.setColumnCount(6) - self.table_contact.setColumnWidth(0, 0) - self.table_contact.setHorizontalHeaderLabels(['', 'Rôle', 'Nom', 'Organisation', 'Email', 'Telephone']) - - # print(self.date_maj_date.date().toPyDate()) - vector_extend = layer.extent() - polygone_extend = QgsGeometry.fromRect(vector_extend).asWkt() - self.extend_plaintext.setPlainText(str(polygone_extend)) - - qgstype = str(layer.type())[10:] - - if qgstype != 'Raster': - count_layers = str(layer.featureCount()) - geomtype = QgsWkbTypes.displayString(layer.wkbType()) - elif qgstype == 'Raster': - count_layers = str(layer.dataProvider().bandCount()) - geomtype = qgstype - - self.nbr_layers.setPlainText(count_layers) - self.typegeom_plaintext.setPlainText(geomtype) - crs_name = str(layer.crs().description()) - self.crsname_plaintext.setPlainText(crs_name) - crs_code = str(layer.crs().authid()) - self.crscode_plaintext.setPlainText(crs_code) - - self.frequence_box.addItem('') - self.restriction_box.addItem('') - self.licence_box.addItem('') - self.licence_attrib_box.addItem('') - for frequency_list_data in frequency_list: - self.frequence_box.addItem(frequency_list_data[0]) - for confidentiality_list_data in confidentiality_list: - self.restriction_box.addItem(confidentiality_list_data[0]) - for license_list_data in license_list: - self.licence_box.addItem(license_list_data[0]) - - self.type_box.clear() - self.mime_box.clear() - self.format_box.clear() - self.role_box.clear() - self.organisation_box.clear() - - self.type_box.addItem('') - self.mime_box.addItem('') - self.format_box.addItem('') - self.role_box.addItem('') - self.organisation_box.addItem('') - - for type_list_data in type_list: - self.type_box.addItem(type_list_data[0]) - for mime_list_data in mime_list: - self.mime_box.addItem(mime_list_data[0]) - for format_list_data in format_list: - self.format_box.addItem(format_list_data[0]) - for role_list_data in role_list: - self.role_box.addItem(role_list_data[0]) - for organisation_list_data in organisation_list: - self.organisation_box.addItem(organisation_list_data[0]) - - if reloader: - sql_dataload = self.sql_info(layer.dataProvider().uri()) - sql_contactlink = self.sql_infoother(layer.dataProvider().uri()) - sql_datalink = sql_contactlink[0] - sql_datacontact = sql_contactlink[1] - - # print(sql_dataload) - self.titre_line.setText(sql_dataload[4]) - self.date_maj_date.setDateTime(sql_dataload[23]) - self.date_publication_date.setDateTime(sql_dataload[11]) - self.description_text.setText(sql_dataload[5]) - self.mots_cles_text.setText(sql_dataload[7]) - array_langue_box = [self.langue_box.itemText(i) for i in range(self.langue_box.count())] - self.langue_box.setCurrentIndex(array_langue_box.index(sql_dataload[26])) - self.uuid_ligne.setText(sql_dataload[1]) - - self.categories_view.setRowCount(len(sql_dataload[6])) - i = 0 - for categorie_data in sql_dataload[6]: - self.categories_view.setItem(i, 0, QTableWidgetItem(categorie_data)) - i = i + 1 - self.themes_view.setRowCount(len(sql_dataload[24])) - i = 0 - for themes_data in sql_dataload[24]: - self.themes_view.setItem(i, 0, QTableWidgetItem(themes_data)) - i = i + 1 - - self.categories_select_view.setRowCount(len(categories_list) - len(sql_dataload[6])) - self.themes_select_view.setRowCount(len(themes_list) - len(sql_dataload[24])) - i = 0 - for categorie_select_data in categories_list: - try: - in_index = sql_dataload[6].index(categorie_select_data[0]) - in_index = False - except ValueError: - in_index = True - if in_index: - self.categories_select_view.setItem(i, 0, QTableWidgetItem(categorie_select_data[0])) - i = i + 1 - i = 0 - for themes_select_data in themes_list: - try: - in_index = sql_dataload[24].index(themes_select_data[0]) - in_index = False - except ValueError: - in_index = True - if in_index: - self.themes_select_view.setItem(i, 0, QTableWidgetItem(themes_select_data[0])) - i = i + 1 - - array_encodage_box = [self.encodage_box.itemText(i) for i in range(self.encodage_box.count())] - self.encodage_box.setCurrentIndex(array_encodage_box.index(sql_dataload[27])) - - self.niveau_plain.setPlainText(sql_dataload[8]) - - if str(sql_dataload[9]) == 'None': - value_echelle_min = '' - else: - value_echelle_min = str(sql_dataload[9]) - - if str(sql_dataload[10]) == 'None': - value_echelle_max = '' - else: - value_echelle_max = str(sql_dataload[10]) - - self.echelle_min_plain.setPlainText(value_echelle_min) - self.echelle_max_plain.setPlainText(value_echelle_max) - - array_frequence_box = [self.frequence_box.itemText(i) for i in range(self.frequence_box.count())] - self.frequence_box.setCurrentIndex(array_frequence_box.index(sql_dataload[12])) - array_licence_box = [self.licence_box.itemText(i) for i in range(self.licence_box.count())] - self.licence_box.setCurrentIndex(array_licence_box.index(sql_dataload[13])) - array_confidentiality_box = [self.restriction_box.itemText(i) for i in range(self.restriction_box.count())] - self.restriction_box.setCurrentIndex(array_confidentiality_box.index(sql_dataload[14])) - array_licence_attrib_box = [self.licence_attrib_box.itemText(i) for i in range(self.licence_attrib_box.count())] - self.licence_attrib_box.setCurrentIndex(array_licence_attrib_box.index(sql_dataload[25])) - - c = 0 - # self.table_lien.setRowCount(len(sql_datalink)) - for lien_data in sql_datalink: - self.table_lien.insertRow(c) - self.table_lien.setItem(c, 0, QTableWidgetItem(lien_data[1])) - self.table_lien.setItem(c, 1, QTableWidgetItem(lien_data[4])) - self.table_lien.setItem(c, 2, QTableWidgetItem(lien_data[5])) - self.table_lien.setItem(c, 3, QTableWidgetItem(lien_data[6])) - self.table_lien.setItem(c, 4, QTableWidgetItem(lien_data[7])) - self.table_lien.setItem(c, 5, QTableWidgetItem(lien_data[8])) - c = c + 1 - c = 0 - # self.table_contact.setRowCount(len(sql_datacontact)) - for contact_data in sql_datacontact: - self.table_contact.insertRow(c) - self.table_contact.setItem(c, 0, QTableWidgetItem(contact_data[1])) - self.table_contact.setItem(c, 1, QTableWidgetItem(contact_data[4])) - self.table_contact.setItem(c, 2, QTableWidgetItem(contact_data[5])) - self.table_contact.setItem(c, 3, QTableWidgetItem(contact_data[6])) - self.table_contact.setItem(c, 4, QTableWidgetItem(contact_data[7])) - self.table_contact.setItem(c, 5, QTableWidgetItem(contact_data[8])) - c = c + 1 - - else: - - # titre_line - self.titre_line.setText(layer.name()) - self.langue_box.setCurrentIndex(1) - # date_maj_date - now = QtCore.QDateTime.currentDateTime() - self.date_maj_date.setDateTime(now) - self.date_creation_date.setDateTime(now) - self.date_modification_date.setDateTime(now) - self.date_publication_date.setDateTime(now) - self.categories_select_view.setRowCount(len(categories_list)) - self.themes_select_view.setRowCount(len(themes_list)) - i = 0 - for categorie_select_data in categories_list: - self.categories_select_view.setItem(i, 0, QTableWidgetItem(categorie_select_data[0])) - i = i + 1 - i = 0 - for themes_select_data in themes_list: - self.themes_select_view.setItem(i, 0, QTableWidgetItem(themes_select_data[0])) - i = i + 1 - - # print(self.langue_box.currentText()) - - def sql_info(self, uri): - cur = login_base() - table = uri.table() - schema = uri.schema() - # [s for s in iface.activeLayer().source().split(" ") if "dbname" in s][0].split("'")[1] - sql_find = """SELECT *, right(left(st_astext(geom,2),-2),-9) FROM metadata.dataset - WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_find) - data_general = cur.fetchall() - cur.close() - return data_general[0] - - def sql_infoother(self, uri): - cur = login_base() - table = uri.table() - schema = uri.schema() - - sql_findlink = """SELECT * FROM metadata.dataurl - WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_findlink) - data_link = cur.fetchall() - - sql_findcontact = """SELECT * FROM metadata.datacontact - WHERE schema_name LIKE '""" + schema + """' AND table_name LIKE '""" + table + """';""" - cur.execute(sql_findcontact) - data_contact = cur.fetchall() - - cur.close() - return data_link, data_contact - - def add_categories_view(self): - values_add_categories = self.categories_select_view.selectedItems()[0].text() - self.categories_select_view.removeRow(self.categories_select_view.currentRow()) - self.categories_view.insertRow(0) - self.categories_view.setItem(0, 0, QTableWidgetItem(values_add_categories)) - - def deleter_categories_view(self): - values_deleter_categories = self.categories_view.selectedItems()[0].text() - self.categories_view.removeRow(self.categories_view.currentRow()) - self.categories_select_view.insertRow(0) - self.categories_select_view.setItem(0, 0, QTableWidgetItem(values_deleter_categories)) - - def add_themes_view(self): - values_add_themes = self.themes_select_view.selectedItems()[0].text() - self.themes_select_view.removeRow(self.themes_select_view.currentRow()) - self.themes_view.insertRow(0) - self.themes_view.setItem(0, 0, QTableWidgetItem(values_add_themes)) - - def deleter_themes_view(self): - values_deleter_themes = self.themes_view.selectedItems()[0].text() - self.themes_view.removeRow(self.themes_view.currentRow()) - self.themes_select_view.insertRow(0) - self.themes_select_view.setItem(0, 0, QTableWidgetItem(values_deleter_themes)) - - def add_lien(self): - cur = login_base() - maxrow = self.table_lien.rowCount() - self.table_lien.insertRow(maxrow) - - table = layer.dataProvider().uri().table() - schema = layer.dataProvider().uri().schema() - - if self.taille_line.text() == '': - sql_sizefile = """SELECT pg_size_pretty(pg_total_relation_size('""" + schema + '.' + table + """'));""" - try: - cur.execute(sql_sizefile) - boolean = True - - except psycopg2.errors.UndefinedTable: - boolean = False - - if boolean is True: - size_file = (cur.fetchall())[0][0] - else: - size_file = '' - - else: - size_file = self.taille_line.text() - - self.table_lien.setItem(maxrow, 0, QTableWidgetItem('new_value')) - self.table_lien.setItem(maxrow, 1, QTableWidgetItem(self.type_box.currentText())) - self.table_lien.setItem(maxrow, 2, QTableWidgetItem(self.url_line.text())) - self.table_lien.setItem(maxrow, 3, QTableWidgetItem(self.mime_box.currentText())) - self.table_lien.setItem(maxrow, 4, QTableWidgetItem(self.format_box.currentText())) - self.table_lien.setItem(maxrow, 5, QTableWidgetItem(str(size_file))) - - global array_link - array_link += "('" + table + "', '" + schema + "', '" + self.type_box.currentText() + "', '" + self.url_line.text() + "', '" + self.mime_box.currentText() + "', '" + self.format_box.currentText() + "', '" + size_file + "')," - - cur.close() - - def add_contact(self): - maxrow = self.table_contact.rowCount() - self.table_contact.insertRow(maxrow) - - self.table_contact.setItem(maxrow, 0, QTableWidgetItem('new_value')) - self.table_contact.setItem(maxrow, 1, QTableWidgetItem(self.role_box.currentText())) - self.table_contact.setItem(maxrow, 2, QTableWidgetItem(self.nom_line.text())) - self.table_contact.setItem(maxrow, 3, QTableWidgetItem(self.organisation_box.currentText())) - self.table_contact.setItem(maxrow, 4, QTableWidgetItem(self.email_line.text())) - self.table_contact.setItem(maxrow, 5, QTableWidgetItem(self.telephone_line.text())) - - table = layer.dataProvider().uri().table() - schema = layer.dataProvider().uri().schema() - - global array_contact - array_contact += "('" + table + "', '" + schema + "', '" + self.role_box.currentText() + "', '" + self.nom_line.text() + "', '" + self.organisation_box.currentText() + "', '" + self.email_line.text() + "', '" + self.telephone_line.text() + "')," - - def delete_lien(self): - fin = '' - global uid_delete_list_link, array_link - try: - lien_uid = self.table_lien.item(self.table_lien.currentRow(), 0).text() - except AttributeError: - lien_uid = True - self.table_lien.removeRow(self.table_lien.currentRow()) - if lien_uid == 'new_value': - position = self.table_lien.currentRow() - if position < 0: - position = position + 1 - run_x = 0 - while position >= run_x: - # print(position, run_x) - if run_x == 0: - debut = array_link.find("(") - else: - debut = array_link.find("(", fin + 1) - fin = array_link.find(")", debut) - # print(debut, fin) - if run_x == 50: - break - run_x += 1 - # print(array_link[fin + 1:]) - if debut <= 0: - debut = 1 - fin += 1 - array_link = array_link[:debut - 1] + array_link[fin + 1:] - # print('a:', array_link) - elif lien_uid is True: - print('Pas de ligne "Lien"') - else: - uid_delete_list_link += "'" + lien_uid + "'," - - def delete_contact(self): - fin = '' - global uid_delete_list_contact, array_contact - try: - contact_uid = self.table_contact.item(self.table_contact.currentRow(), 0).text() - except AttributeError: - contact_uid = True - self.table_contact.removeRow(self.table_contact.currentRow()) - if contact_uid == 'new_value': - position = self.table_contact.currentRow() - if position < 0: - position = position + 1 - # print('p:', position) - run_x = 0 - while position >= run_x: - if run_x == 0: - debut = array_contact.find("(") - else: - debut = array_contact.find("(", fin + 1) - fin = array_contact.find(")", debut) - # print(debut, fin) - if run_x == 50: - break - run_x += 1 - # print(array_contact[fin + 1:]) - if debut <= 0: - debut = 1 - fin += 1 - array_contact = array_contact[:debut - 1] + array_contact[fin + 1:] - # print('a:', array_contact) - elif contact_uid is True: - print('Pas de ligne "Contact"') - else: - uid_delete_list_contact += "'" + contact_uid + "'," - - def fletch_ref(self): - cur = login_base() - - SQL_categories = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.categories' ORDER BY code, item_order;""" - SQL_themes = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.themes' ORDER BY label_fr;""" - SQL_langue = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.langue';""" - SQL_encodage = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.encodage';""" - SQL_frequency = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.publication_frequency' ORDER BY label_fr;""" - SQL_confidentiality = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.confidentiality' ORDER BY label_fr;""" - SQL_license = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'dataset.license' ORDER BY label_fr;""" - SQL_type = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'link.type' ORDER BY label_fr;""" - SQL_mime = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'link.mime' ORDER BY label_fr;""" - SQL_format = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'link.format' ORDER BY label_fr;""" - SQL_role = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'contact.contact_role' ORDER BY label_fr;""" - SQL_organisation = """SELECT label_fr FROM metadata.glossary WHERE field LIKE 'contact.organisation' ORDER BY label_fr;""" - - cur.execute(SQL_categories) - categories_list = cur.fetchall() - cur.execute(SQL_themes) - themes_list = cur.fetchall() - cur.execute(SQL_langue) - langue_list = cur.fetchall() - cur.execute(SQL_encodage) - encodage_list = cur.fetchall() - - cur.execute(SQL_frequency) - frequency_list = cur.fetchall() - cur.execute(SQL_confidentiality) - confidentiality_list = cur.fetchall() - cur.execute(SQL_license) - license_list = cur.fetchall() - - cur.execute(SQL_type) - type_list = cur.fetchall() - cur.execute(SQL_mime) - mime_list = cur.fetchall() - cur.execute(SQL_format) - format_list = cur.fetchall() - cur.execute(SQL_role) - role_list = cur.fetchall() - cur.execute(SQL_organisation) - organisation_list = cur.fetchall() - - return categories_list, themes_list, langue_list, encodage_list, frequency_list, confidentiality_list, license_list, type_list, mime_list, format_list, role_list, organisation_list - - cur.close() - - def py_import_xml(self): - folder = QFileDialog.getOpenFileName() - if folder: - folder = folder[0] - if folder[len(folder) - 4:] == '.xml': - print('is .xml') - - # def issues_open(self): - # self.issues = CenRa_Issues() - # self.issues.show() diff --git a/CenRa_METABASE/icon.png b/CenRa_METABASE/icon.png deleted file mode 100644 index d53a910fea37e4930c40122d285e6ea9fdc75ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4977 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 diff --git a/CenRa_METABASE/issues.py b/CenRa_METABASE/issues.py deleted file mode 100644 index 0d6416a..0000000 --- a/CenRa_METABASE/issues.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -plugin_dir = os.path.dirname(__file__) -end_find = plugin_dir.rfind('\\')+1 - -NAME = plugin_dir[end_find:] -#print(NAME) - -from qgis.gui import * - -from qgis.core import ( - NULL, - QgsApplication, - QgsDataSourceUri, - QgsProject, - QgsProviderConnectionException, - QgsProviderRegistry, - QgsRasterLayer, - QgsSettings, - QgsVectorLayer, - QgsGeometry, -) -from qgis.PyQt.QtWidgets import ( - QDialog, - QAction, - QDockWidget, - QFileDialog, - QInputDialog, - QMenu, - QToolButton, - QTableWidget, - QTableWidgetItem, -) -from qgis.utils import iface - - -from .tools.resources import ( - load_ui, - resources_path, - send_issues, -) - -EDITOR_CLASS = load_ui('CenRa_IssuesSend.ui') - -class CenRa_Issues(QDialog, EDITOR_CLASS): - - def __init__(self, parent=None): - _ = parent - super().__init__() - self.setupUi(self) - self.settings = QgsSettings() - - #place connect here - self.annuler_button.clicked.connect(self.close) - self.ok_button.clicked.connect(self.run_sendissues) - - def run_sendissues(self): - text_titre = self.titre_line.text() - text_message = self.messages_plain.toPlainText() - statu_bug = self.check_bug.isChecked() - statu_aide = self.check_aide.isChecked() - statu_question = self.check_question.isChecked() - statu_amelioration = self.check_amelioration.isChecked() - statu_autre = self.check_autre.isChecked() - - statu = [] - if statu_bug == True : statu = statu + [1] - if statu_aide == True : statu = statu + [3] - if statu_question == True : statu = statu + [5] - if statu_amelioration == True : statu = statu + [2] - if statu_autre == True : statu = statu + [6] - - if len(statu) >= 1: - import qgis - url = qgis.utils.pluginMetadata(NAME,'tracker') - print(text_message) - send_info = send_issues(url,text_titre,text_message,statu) - code = send_info.status_code - print(code) - else: - code = 423 - if code == 201: - iface.messageBar().pushMessage("Envoyer :", "Votre messages à bien été envoyer.", level=Qgis.Success, duration=20) - self.close() - elif code == 422: - iface.messageBar().pushMessage("Erreur :", "Erreur dans le contenu du messages.", level=Qgis.Critical, duration=20) - elif code == 423: - iface.messageBar().pushMessage("Erreur :", "Pas de sujet sélectionné.", level=Qgis.Critical, duration=20) - elif code == 404: - iface.messageBar().pushMessage("Missing :", "Le serveur de messagerie est injoignable.", level=Qgis.Warning, duration=20) diff --git a/CenRa_METABASE/metadata.txt b/CenRa_METABASE/metadata.txt deleted file mode 100644 index 8c689d1..0000000 --- a/CenRa_METABASE/metadata.txt +++ /dev/null @@ -1,49 +0,0 @@ -# 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 -supportsQt6=True -description=CenRa_METABASE -version=0.3.1 -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:


30/07/2025 - Version 0.3.1:

- Correctife de bug.


19/05/2025 - Version 0.3.0:

- Compatible PyQt5 et PyQt6


09/04/2025 - Version 0.2.3:

- Correctif bug en TT.


09/04/2025 - Version 0.2.2:

- Optimisation pour le TT.


03/04/2025 - Version 0.2.1:

- Mise a jour de securite.


07/01/2025 - Version 0.2.0:

- Deployment sur serveur SIG.


07/01/2025 - Version 0.1.6:

- ByPass du certif ssl ci erreur


19/12/2024 - Version 0.1.5:

- Fix les problem de lenteur qu'en la base est down.


12/12/2024 - Version 0.1.4:

- Crash Fix .


08/10/2024 - Version 0.1.3:

- Lecture de métadonnée des flux WMS/WFS.


07/10/2024 - Version 0.1.2:

- Correctif de bug.


03/10/2024 - Version 0.1.1:

- Remonte la fênetre dans la pille.


26/08/2024 - Version 0.1.0:

- Lancement du plugin CenRa_Metabase

- -# Tags are comma separated with spaces allowed -tags=python - - -category=Plugins -icon=icon.png -# experimental flag -experimental=True - -# 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 - diff --git a/CenRa_METABASE/tools/css/dock.css b/CenRa_METABASE/tools/css/dock.css deleted file mode 100644 index f05b850..0000000 --- a/CenRa_METABASE/tools/css/dock.css +++ /dev/null @@ -1,61 +0,0 @@ -body { - font-family: Ubuntu, Lucida Grande, Segoe UI, Arial, sans-serif; - margin-left: 0px; - margin-right: 0px; - margin-top: 0px; - font-size: 14px; -} -img { - max-width: 100%; -} -img.logo{ - display: inline-block; - margin-left:0px; - margin-right: 0px; - margin-top: 10px; - margin-bottom: 10px; - vertical-align: top; - width:25% -} -h2, h3 { - color: #fff; - background-color: #8cb63c; - line-height: 2; - padding-left:5px; -} - -table { - border-collapse: collapse; - width: 100%; - font-size: 13px; -} -th{ - color: #2c4491 -} -table tr th, table tr td { - text-align: left; - padding: 5px; -} - -table.table-striped { - border: 1px solid #BBB; -} -table.table-striped tr td { - border: 1px solid #BBB; -} -table.table-striped tr th { - border: 1px solid #BBB; -} -table.table-striped tr:nth-child(even) { - background: #EEE; -} -table.table-striped tr:nth-child(odd) { - background: #FFF; -} - -#map { - padding: 5px; - width: 400px; - height: 400px; - box-shadow: 0 0 10px #999; -} diff --git a/CenRa_METABASE/tools/html/contact.html b/CenRa_METABASE/tools/html/contact.html deleted file mode 100644 index a6cda01..0000000 --- a/CenRa_METABASE/tools/html/contact.html +++ /dev/null @@ -1,7 +0,0 @@ - - [% contact_role %] - [% name %] - [% organisation_name %] ([% organisation_unit %]) - [% email %] - [% phone %] - diff --git a/CenRa_METABASE/tools/html/link.html b/CenRa_METABASE/tools/html/link.html deleted file mode 100644 index cdcdabe..0000000 --- a/CenRa_METABASE/tools/html/link.html +++ /dev/null @@ -1,7 +0,0 @@ - - [% type %] - [% name %] - [% mime %] - [% format %] - [% size %] - diff --git a/CenRa_METABASE/tools/html/main.html b/CenRa_METABASE/tools/html/main.html deleted file mode 100644 index f7ff4a0..0000000 --- a/CenRa_METABASE/tools/html/main.html +++ /dev/null @@ -1,123 +0,0 @@ -
-

Identification

- - - - - - - - - - - - - - - - - - - -
Title[% title %]
Abstract[% abstract %]
Categories[% categories %]
Themes[% themes %]
Keywords[% keywords %]
Data last update[% data_last_update %]
-
- -
-

Spatial properties

- - - - - - - - - - - - - - - - - - - - - - - - - -
Level[% spatial_level %]
Minimum scale[% minimum_optimal_scale %]
Maximum scale[% maximum_optimal_scale %]
Feature count[% feature_count %]
Geometry[% geometry_type %]
Extent[% spatial_extent %]
Projection name[% projection_name %]
Projection ID[% projection_authid %]
-
- -
-

Publication

- - - - - - - - - - - - - - - - -
Date[% publication_date %]
Frequency[% publication_frequency %]
License[% license %]
License attribution / number[% license_attribution %]
Confidentiality[% confidentiality %]
-
- -
-

Links

- - - - - - - - - [% meta_links %] -
TypeNameMIMEFormatSize
-
- -
-

Contacts

- - - - - - - - - [% meta_contacts %] -
RoleNameOrganisationEmailPhone
-
- -
-

Metadata

- - - - - - - - - - - - - - - - -
Table[% table_name %]
Schema[% schema_name %]
Creation[% creation_date %]
Update[% update_date %]
UUID[% uid %]
-
diff --git a/CenRa_METABASE/tools/icons/CEN_RA.png b/CenRa_METABASE/tools/icons/CEN_RA.png deleted file mode 100644 index 95ead1cf7313bc03e4637c9bb20945373f27ddca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8893 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 LNkvXXu0mjfe10PI diff --git a/CenRa_METABASE/tools/icons/auto_add.png b/CenRa_METABASE/tools/icons/auto_add.png deleted file mode 100644 index 021f85b54cbedd265057e378133784d5539e23b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42290 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 diff --git a/CenRa_METABASE/tools/icons/icon.png b/CenRa_METABASE/tools/icons/icon.png deleted file mode 100644 index 96a568ef98b17d32e38baa714405144eebef4c59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15984 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 IG@YXU4{u>E2mk;8 diff --git a/CenRa_METABASE/tools/images/must_be_a_file.png b/CenRa_METABASE/tools/images/must_be_a_file.png deleted file mode 100644 index 70629956bb30312a421c2c64f7151234f9afa688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25798 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 GasLPEDhw|G diff --git a/CenRa_METABASE/tools/resources.py b/CenRa_METABASE/tools/resources.py deleted file mode 100644 index a37d55b..0000000 --- a/CenRa_METABASE/tools/resources.py +++ /dev/null @@ -1,184 +0,0 @@ -"""Tools to work with resource files.""" - -import configparser -import shutil -import tempfile -# import base64 -# import psycopg2 -# import psycopg2.extras -import os -from os.path import abspath, join, pardir, dirname - -from qgis.PyQt import uic - -__copyright__ = "Copyright 2019, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" -__revision__ = "$Format:%H$" - - -def plugin_path(*args): - """Get the path to plugin root folder. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Absolute path to the plugin path. - :rtype: str - """ - path = dirname(dirname(__file__)) - path = abspath(abspath(join(path, pardir))) - for item in args: - path = abspath(join(path, item)) - - return path - - -def plugin_name(): - """Return the plugin name according to metadata.txt. - - :return: The plugin name. - :rtype: basestring - """ - metadata = metadata_config() - name = metadata["general"]["name"] - return name - - -def metadata_config() -> configparser: - """Get the INI config parser for the metadata file. - - :return: The config parser object. - :rtype: ConfigParser - """ - path = plugin_path("metadata.txt") - config = configparser.ConfigParser() - config.read(path, encoding='utf8') - return config - - -def plugin_test_data_path(*args, copy=False): - """Get the path to the plugin test data path. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :param copy: If the file must be copied into a temporary directory first. - :type copy: bool - - :return: Absolute path to the resources folder. - :rtype: str - """ - path = abspath(abspath(join(plugin_path(), "test", "data"))) - for item in args: - path = abspath(join(path, item)) - - if copy: - temp = tempfile.mkdtemp() - shutil.copy(path, temp) - return join(temp, args[-1]) - else: - return path - - -def resources_path(*args): - """Get the path to our resources folder. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Absolute path to the resources folder. - :rtype: str - """ - path = abspath(abspath(join(plugin_path(), "CenRa_METABASE\\tools"))) - for item in args: - path = abspath(join(path, item)) - return path - - -def load_ui(*args): - """Get compile UI file. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Compiled UI file. - """ - ui_class, _ = uic.loadUiType(resources_path("ui", *args)) - - return ui_class - - -def pyperclip(): - dst = dirname(dirname(__file__)) + "\\tools\\" - if os.access('N:/', os.R_OK): - src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py' - try: - shutil.copy(src, dst) - except FileNotFoundError: - print('404') - except UnboundLocalError: - print('404') - - -def send_issues(url, titre, body, labels): - import requests - import urllib.request - import json - # import os - # import qgis - - # usr = os.environ['USERNAME'] - token = '9d0a4e0bea561710e0728f161f7edf4e5201e112' - url = url + '?token=' + token - - headers = {'Authorization': 'token ' + token, 'accept': 'application/json', 'Content-Type': 'application/json'} - - payload = {'title': titre, 'body': body, 'labels': labels} - try: - urllib.request.urlopen('https://google.com') - binar = True - except ValueError: - binar = False - r = '' - if binar: - r = requests.post(url, data=json.dumps(payload), headers=headers) - return r - - -def maj_verif(NAME): - import qgis - import urllib.request - iface = qgis.utils.iface - from qgis.core import Qgis - - # url = qgis.utils.pluginMetadata(NAME, 'repository') - # URL = url+'/raw/branch/main/plugins.xml' - URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' - # print(URL) - version = qgis.utils.pluginMetadata(NAME, 'version') - len_version = len(version) - try: - urllib.request.urlopen('https://google.com') - binar = True - except urllib.error.URLError: - binar = False - if binar: - try: - version_web = str(urllib.request.urlopen(URL).read()) - plugin_num = version_web.find(NAME) - valeur_version_web = version_web.find('', plugin_num) + 9 - version_plugin = version_web[valeur_version_web:valeur_version_web + len_version] - if version_plugin != version: - iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30) - except urllib.error.URLError: - print("error gitea version ssl") - else: - iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30) - - -def devlog(NAME): - import qgis - devmaj = '' - devmaj = devmaj + qgis.utils.pluginMetadata(NAME, 'changelog') - return devmaj diff --git a/CenRa_METABASE/tools/ui/CenRa_IssuesSend.ui b/CenRa_METABASE/tools/ui/CenRa_IssuesSend.ui deleted file mode 100644 index 14d923e..0000000 --- a/CenRa_METABASE/tools/ui/CenRa_IssuesSend.ui +++ /dev/null @@ -1,332 +0,0 @@ - - - CenRa_IssuesSend - - - - 0 - 0 - 810 - 587 - - - - CEN-RA Metabase - - - - icon.svgicon.svg - - - - - 0 - 550 - 811 - 31 - - - - - - - Annuler - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Envoyer - - - - - - - - - 10 - 10 - 791 - 531 - - - - Issues - - - - - 240 - 40 - 321 - 41 - - - - Qt::AlignCenter - - - - - - 10 - 101 - 571 - 421 - - - - - - - 589 - 100 - 191 - 431 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 9 - 9 - 341 - 411 - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Bug - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Aide - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Question - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Amélioration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Autre - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 250 - 20 - 51 - 21 - - - - - Arial - 14 - - - - Titre: - - - - - - 20 - 70 - 91 - 31 - - - - - Arial - 12 - - - - Messages: - - - - - - 600 - 70 - 91 - 31 - - - - - Arial - 12 - - - - Sujet: - - - - - - ok_button - annuler_button - - - - diff --git a/CenRa_METABASE/tools/ui/CenRa_Metabase_dockwidget_base.ui b/CenRa_METABASE/tools/ui/CenRa_Metabase_dockwidget_base.ui deleted file mode 100644 index 78010ec..0000000 --- a/CenRa_METABASE/tools/ui/CenRa_Metabase_dockwidget_base.ui +++ /dev/null @@ -1,74 +0,0 @@ - - - CenRa_MetabaseDockWidgetBase - - - - 0 - 0 - 329 - 515 - - - - CenRa MetaBase - - - - - - - - - ... - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - ... - - - Qt::NoArrow - - - - - - - ... - - - - - - - help - - - - - - - - - - - - - - diff --git a/CenRa_METABASE/tools/ui/CenRa_Metabase_editorwidget_base.ui b/CenRa_METABASE/tools/ui/CenRa_Metabase_editorwidget_base.ui deleted file mode 100644 index ac91920..0000000 --- a/CenRa_METABASE/tools/ui/CenRa_Metabase_editorwidget_base.ui +++ /dev/null @@ -1,1946 +0,0 @@ - - - CenRa_Metabase_editorwidget_base - - - - 0 - 0 - 818 - 741 - - - - CEN-RA Metabase - - - - icon.svgicon.svg - - - - - 0 - 0 - 821 - 711 - - - - - Myriad Pro Black - 10 - 75 - false - true - - - - Qt::DefaultContextMenu - - - Qt::LeftToRight - - - false - - - QTabWidget::North - - - QTabWidget::Rounded - - - 0 - - - - 40 - 40 - - - - true - - - false - - - false - - - false - - - false - - - - Identification - - - - - 30 - 110 - 751 - 99 - - - - - - - Description - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Myriad Pro Black'; font-size:10pt; font-weight:600; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400;"><br /></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400;"><br /></p></body></html> - - - - - - - - - 30 - 220 - 751 - 101 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 20 - 20 - - - - - - - - Categories : - - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - true - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectItems - - - - - - - - - 30 - 330 - 751 - 101 - - - - - - - Thèmes : - - - - - - - Qt::Horizontal - - - - 10 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - - - 30 - 440 - 751 - 101 - - - - - - - - - - Mots-clés : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 30 - 550 - 751 - 51 - - - - - - - Dernier mise à jour : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - QAbstractSpinBox::NoButtons - - - - 2024 - 12 - 24 - - - - QDateTimeEdit::MonthSection - - - dd/MM/yyyy - - - true - - - 1 - - - Qt::UTC - - - - - - - - - 30 - 30 - 751 - 61 - - - - - - - - - - Titre : - - - - - - - - - 30 - 620 - 751 - 51 - - - - - - - Langue : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Spatial properties - - - - - 220 - 20 - 540 - 39 - - - - - - - 34 - 20 - 170 - 39 - - - - Niveau : - - - - - - 34 - 70 - 170 - 39 - - - - Echelle minimum : - - - - - - 220 - 70 - 540 - 39 - - - - - - - 34 - 120 - 170 - 39 - - - - Echelle maximum : - - - - - - 220 - 120 - 540 - 39 - - - - - - - 34 - 170 - 170 - 39 - - - - Nombre d'entités : - - - - - false - - - - 220 - 170 - 540 - 39 - - - - - - - 34 - 220 - 170 - 39 - - - - Type de géométrie : - - - - - false - - - - 220 - 220 - 540 - 39 - - - - - - false - - - - 220 - 320 - 540 - 39 - - - - - - - 34 - 270 - 170 - 39 - - - - Nom de projection : - - - - - - 34 - 370 - 170 - 39 - - - - Emprise : - - - - - - 34 - 320 - 170 - 39 - - - - ID de projection : - - - - - false - - - - 220 - 270 - 540 - 39 - - - - - - false - - - - 221 - 370 - 540 - 39 - - - - - - - Publication - - - - - 30 - 390 - 751 - 61 - - - - - - - Restriction : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 30 - 210 - 751 - 61 - - - - - - - Licence : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 30 - 30 - 751 - 61 - - - - - - - Date : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - QAbstractSpinBox::NoButtons - - - - 2024 - 12 - 22 - - - - QDateTimeEdit::MonthSection - - - dd/MM/yyyy - - - true - - - 1 - - - Qt::UTC - - - - - - - - - 30 - 300 - 751 - 61 - - - - - - - Licence attribué : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 30 - 120 - 751 - 61 - - - - - - - Fréquence de mise à jour : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Lien - - - - - 10 - 120 - 791 - 511 - - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - - - 20 - 20 - 771 - 61 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - Taille : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Type : - - - - - - - - - - - - - URL : - - - - - - - Type MIME : - - - - - - - Format : - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Ajouter - - - - - - - - - - - - - - - 10 - 640 - 791 - 31 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Delete - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 10 - 90 - 790 - 3 - - - - Qt::Horizontal - - - - - - 10 - 20 - 790 - 3 - - - - Qt::Horizontal - - - - - - 10 - 20 - 3 - 70 - - - - Qt::Vertical - - - - - - 800 - 20 - 3 - 70 - - - - Qt::Vertical - - - - - - Contacts - - - - - 20 - 20 - 771 - 61 - - - - - - - Nom : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Ajouter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Email : - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Organisation : - - - - - - - Telephone - - - - - - - Rôle : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - 10 - 120 - 791 - 511 - - - - - - - QAbstractItemView::NoEditTriggers - - - - - - - - - 10 - 640 - 791 - 31 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Delete - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 800 - 20 - 3 - 70 - - - - Qt::Vertical - - - - - - 10 - 20 - 790 - 3 - - - - Qt::Horizontal - - - - - - 10 - 90 - 790 - 3 - - - - Qt::Horizontal - - - - - - 10 - 20 - 3 - 70 - - - - Qt::Vertical - - - - - - Metadata - - - - - 30 - 30 - 751 - 61 - - - - - - - Table : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - - - - - - 30 - 300 - 751 - 61 - - - - - - - Date de modification : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - QAbstractSpinBox::NoButtons - - - - 2024 - 12 - 23 - - - - QDateTimeEdit::MonthSection - - - dd/MM/yyyy - - - true - - - 1 - - - Qt::UTC - - - - - - - - - 30 - 390 - 751 - 61 - - - - - - - Encodage : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 30 - 210 - 751 - 61 - - - - - - - Date de création : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - QAbstractSpinBox::NoButtons - - - - 2024 - 12 - 23 - - - - QDateTimeEdit::MonthSection - - - dd/MM/yyyy - - - true - - - 1 - - - Qt::UTC - - - - - - - - - 30 - 120 - 751 - 61 - - - - - - - Schema : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - - - - - - 30 - 480 - 751 - 61 - - - - - - - UUID : - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - - - - - - - - 0 - 710 - 821 - 31 - - - - - - - Annuler - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - OK - - - - - - - - - 780 - 20 - 25 - 19 - - - - ... - - - - 32 - 32 - - - - Qt::NoArrow - - - - - - 780 - 2 - 25 - 19 - - - - ... - - - - 32 - 32 - - - - Qt::NoArrow - - - - - true - - - - 550 - 10 - 41 - 41 - - - - ... - - - - 32 - 32 - - - - Qt::NoArrow - - - - - titre_line - description_text - ok_button - annuler_button - tabWidget - langue_box - niveau_plain - echelle_min_plain - echelle_max_plain - nbr_layers - typegeom_plaintext - crscode_plaintext - crsname_plaintext - extend_plaintext - restriction_box - licence_box - licence_attrib_box - frequence_box - table_lien - add_lien_button - format_box - mime_box - type_box - delete_lien_button - organisation_box - add_contact_button - role_box - table_contact - delete_contact_button - table_ligne - encodage_box - schema_ligne - uuid_ligne - mots_cles_text - - - - diff --git a/CenRa_METABASE/tools/ui/CenRa_about_form.ui b/CenRa_METABASE/tools/ui/CenRa_about_form.ui deleted file mode 100644 index 6ec4843..0000000 --- a/CenRa_METABASE/tools/ui/CenRa_about_form.ui +++ /dev/null @@ -1,81 +0,0 @@ - - - CenRa_Metabase_editorwidget_base - - - - 0 - 0 - 471 - 594 - - - - Journal des modifications - - - - ../../CenRa_Metabase/tools/ui/icon.svg../../CenRa_Metabase/tools/ui/icon.svg - - - - - - true - - - Qt::NoFocus - - - QFrame::NoFrame - - - true - - - - - 0 - 0 - 453 - 570 - - - - - - 0 - 0 - 451 - 541 - - - - DevLog - - - - - 10 - 20 - 431 - 511 - - - - - - - - - - - QDialogButtonBox::NoButton - - - - - - - - diff --git a/CenRa_METABASE/tools/xml/dcat.xml b/CenRa_METABASE/tools/xml/dcat.xml deleted file mode 100644 index 852508d..0000000 --- a/CenRa_METABASE/tools/xml/dcat.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CEN-RA DCAT RDF catalog - {language} - CEN-RA Metadata - - - - {content} - - - - - - diff --git a/CenRa_METABASE/tools/xml/distribution.xml b/CenRa_METABASE/tools/xml/distribution.xml deleted file mode 100644 index 2ff86b0..0000000 --- a/CenRa_METABASE/tools/xml/distribution.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/CenRa_METABASE/tools/xml/publisher.xml b/CenRa_METABASE/tools/xml/publisher.xml deleted file mode 100644 index 1cda931..0000000 --- a/CenRa_METABASE/tools/xml/publisher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/CenRa_PAGERENDER/CenRa_PageRender.py b/CenRa_PAGERENDER/CenRa_PageRender.py deleted file mode 100644 index 46e9d24..0000000 --- a/CenRa_PAGERENDER/CenRa_PageRender.py +++ /dev/null @@ -1,141 +0,0 @@ -__copyright__ = "Copyright 2021, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" - - -from qgis.core import QgsApplication -from qgis.PyQt.QtCore import QUrl, QSettings -from qgis.PyQt.QtGui import QDesktopServices, QIcon -from qgis.PyQt.QtWidgets import QAction -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 .canvas_editor import PageRender_Editor -from .about_form import AboutDialog - - -class PgPageRender: - def __init__(self): - """ Constructor. """ - self.canvas_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_PAGERENDER', 'version') - s = QSettings() - versionUse = s.value("pagerender/version", 1, type=str) - if str(versionUse) != str(version): - s.setValue("pagerender/version", str(version)) - print(versionUse, version) - self.open_about_dialog() - - def initGui(self): - """ Build the plugin GUI. """ - - self.toolBar = iface.addToolBar("CenRa_PAGERENDER") - self.toolBar.setObjectName("CenRa_PAGERENDER") - - icon = QIcon(resources_path('icons', 'icon.png')) - - # Open the online help - self.help_action = QAction(icon, 'CenRa_PAGERENDER', iface.mainWindow()) - iface.pluginHelpMenu().addAction(self.help_action) - self.help_action.triggered.connect(self.open_help) - if not self.canvas_editor: - self.canvas_editor = PageRender_Editor() - - self.pagerender_action = QAction(icon, 'CenRa_PAGERENDER', None) - self.toolBar.addAction(self.pagerender_action) - self.pagerender_action.triggered.connect(self.open_editor) - ''' - 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 = 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_PAGERENDER', self.pagerender_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 diff --git a/CenRa_PAGERENDER/README.md b/CenRa_PAGERENDER/README.md deleted file mode 100644 index 80ccffe..0000000 --- a/CenRa_PAGERENDER/README.md +++ /dev/null @@ -1 +0,0 @@ -# CenRa_AutoMap \ No newline at end of file diff --git a/CenRa_PAGERENDER/__init__.py b/CenRa_PAGERENDER/__init__.py deleted file mode 100644 index 365e090..0000000 --- a/CenRa_PAGERENDER/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -__copyright__ = "Copyright 2021, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" - - -# noinspection PyPep8Naming -def classFactory(iface): # pylint: disable=invalid-name - _ = iface - from CenRa_PAGERENDER.CenRa_PageRender import PgPageRender - return PgPageRender() diff --git a/CenRa_PAGERENDER/about_form.py b/CenRa_PAGERENDER/about_form.py deleted file mode 100644 index 8828a44..0000000 --- a/CenRa_PAGERENDER/about_form.py +++ /dev/null @@ -1,46 +0,0 @@ -import os.path - -from pathlib import Path - -from qgis.PyQt import uic -# from qgis.PyQt.QtGui import QPixmap -from qgis.PyQt.QtWidgets import QDialog - -from .tools.resources import devlog - -ABOUT_FORM_CLASS, _ = uic.loadUiType( - os.path.join( - str(Path(__file__).resolve().parent), - 'tools/ui', - 'CenRa_about_form.ui' - ) -) - - -class AboutDialog(QDialog, ABOUT_FORM_CLASS): - - """ About - Let the user display the about dialog. """ - - def __init__(self, iface, parent=None): - super().__init__(parent) - self.iface = iface - self.setupUi(self) - - self.viewer.setHtml(devlog('CenRa_PAGERENDER')) - - self.rejected.connect(self.onReject) - self.buttonBox.rejected.connect(self.onReject) - self.buttonBox.accepted.connect(self.onAccept) - - def onAccept(self): - """ - Save options when pressing OK button - """ - self.accept() - - def onReject(self): - """ - Run some actions when - the user closes the dialog - """ - self.close() diff --git a/CenRa_PAGERENDER/canvas_editor.py b/CenRa_PAGERENDER/canvas_editor.py deleted file mode 100644 index 1416c6f..0000000 --- a/CenRa_PAGERENDER/canvas_editor.py +++ /dev/null @@ -1,512 +0,0 @@ -import logging -import os -# from collections import namedtuple -# from enum import Enum -# from functools import partial -# from pathlib import Path -# from xml.dom.minidom import parseString -# from qgis.gui import * -# import qgis -from qgis.core import QgsSettings -from qgis.PyQt.QtCore import Qt -# from qgis.PyQt.QtPrintSupport import QPrinter -# from qgis.PyQt.QtWebKitWidgets import QWebPage -from qgis.PyQt.QtWidgets import ( - QDialog, - QFileDialog, - QTableWidgetItem, -) - -from qgis.PyQt import QtGui -from qgis.PyQt.QtWidgets import QApplication -from qgis.PyQt.QtCore import QSettings - -# from qgis.PyQt.QtXml import QDomDocument -# from qgis.utils import iface -# import glob -from .tools.resources import ( - load_ui, - resources_path, - # send_issues, -) -# from .issues import CenRa_Issues -# from datetime import date - -last_select = None -maxV = 210 -maxH = 296 -EDITOR_CLASS = load_ui('CenRa_PageRender_base.ui') -LOGGER = logging.getLogger('CenRa_PageRender') -url_osm = 'https://osm.datagrandest.fr/mapcache/?crs=EPSG:2154&featureCount=10&format=image/png&layers=pure&maxHeight=256&maxWidth=256&styles=&url=https://osm.datagrandest.fr/mapcache' -url_ortho = 'http://tiles.craig.fr/ortho/service/?crs=EPSG:2154&featureCount=10&format=image/jpeg&layers=ortho&maxHeight=256&maxWidth=256&styles=&url=http://tiles.craig.fr/ortho/service' -url_mnt = 'http://tiles.craig.fr/mnt/crs=EPSG:2154&featureCount=10&format=image/png&layers=relief&maxHeight=256&maxWidth=256&styles=&url=http://tiles.craig.fr/mnt' -url_pente = 'http://tiles.craig.fr/mnt/crs=EPSG:2154&featureCount=10&format=image/png&layers=pente&maxHeight=256&maxWidth=256&styles=&url=http://tiles.craig.fr/mnt' -data_source = ['CENRA', 'IGN', 'CRAIG', 'OpenStreetMap', 'Sandre', 'BRGM', 'MUSÉUM NATIONAL D’HISTOIRE NATURELLE', "Muséum national d'Histoire naturelle", 'ONF', '20xx LPO', 'ofb.gouv.fr', 'Stamen Design', 'MTES', 'MTES', 'FEDER', 'DREAL Auvergne-Rhône-Alpes', 'INSEE', 'DGFiP', 'Fédération des Conservatoires d’espaces naturels', 'Plan cadastral informatisé - Etalab - juillet 202X', 'Parcellaire Express - IGN - 202X'] - - -class PageRender_Editor(QDialog, EDITOR_CLASS): - def __init__(self, parent=None): - _ = parent - super().__init__() - self.setupUi(self) - self.settings = QgsSettings() - self.s = QSettings() - self.setWindowIcon(QtGui.QIcon(resources_path('icons', 'icon.png'))) - - self.varLandscape = {} - self.varPortrait = {} - self.rotate_object = { - 'Titre': 0, - 'Sous_titre': 0, - 'Carte': 0, - 'Carte_2': 0, - 'Legande': 0, - 'Arrow': 0, - 'Echelle': 0, - 'Logo': 0, - 'Credit': 0, - 'Source': 0, - 'Echelle_2': 0, - 'Logo_2': 0} - - path = '' - ix = 0 - plugin_dir = str(os.path.dirname(os.path.abspath(__file__))).split(os.sep) - for i in plugin_dir: - ix = ix + 1 - path = path + '\\' + i - self.path = path[1:] + '\\demoV2.py' - - # self.tabWidget.setStyleSheet('background-image: url('+path+'/tools/bg/Capture.png);') - self.toolButton.setIcon(QtGui.QIcon(resources_path('ui', 'rotate.png'))) - - self.horizontalSlider.valueChanged.connect(self.horizontal) - self.verticalSlider.valueChanged.connect(self.vertical) - self.tableWidget.itemSelectionChanged.connect(self.setSlider) - self.radioButton.toggled.connect(self.setSlider) - self.pushButton.clicked.connect(self.export) - self.spinBox.editingFinished.connect(self.valueSlider) - self.spinBox_2.editingFinished.connect(self.valueSlider) - self.toolButton.clicked.connect(self.rotate) - self.toolButton_2.clicked.connect(self.type_page) - self.pushButton_2.clicked.connect(self.load) - self.verticalScrollBar.valueChanged.connect(self.moveFrame) - # self.setAcceptHoverEvents(True) - self.tableWidget.setTabKeyNavigation(False) - - def raise_(self): - self.activateWindow() - self.setNavigator() - self.verticalScrollBar.setValue(self.frame.y()) - - def mousePressEvent(self, event): - if self.tableWidget.currentItem() is not None: - QApplication.setOverrideCursor(Qt.CursorShape(18)) - global lastPos - lastPos = {'x': event.pos().x(), 'y': event.pos().y()} - - def moveFrame(self): - self.frame.move(self.frame.x(), self.verticalScrollBar.value()) - - def keyPressEvent(self, event): - # if event.modifiers() & Qt.ControlModifier: - if event.key() == Qt.Key(0x01000015): - self.verticalSlider.setValue(self.spinBox_2.value() + 1) - if event.key() == Qt.Key(0x01000013): - self.verticalSlider.setValue(self.spinBox_2.value() - 1) - if event.key() == Qt.Key(0x01000014): - self.horizontalSlider.setValue(self.spinBox.value() + 1) - if event.key() == Qt.Key(0x01000012): - self.horizontalSlider.setValue(self.spinBox.value() - 1) - - def wheelEvent(self, event): - if (event.angleDelta().y() >= 1): - vsb = self.verticalScrollBar.value() + 50 - else: - vsb = self.verticalScrollBar.value() - 50 - self.verticalScrollBar.setValue(vsb) - - def mouseMoveEvent(self, event): - updated_cursor_position = event.pos() - if self.tableWidget.currentItem() is not None: - selection_name = (self.tableWidget.currentItem()).text() - all_children = self.frame.children() - selection = 0 - for children in all_children: - if selection_name == children.objectName(): - selection = children - - frame_x = self.frame.x() - frame_y = self.frame.y() - frame_w = self.frame.width() + frame_x - frame_h = self.frame.height() + frame_y - global lastPos - - orig_position_w = selection.width() - orig_position_h = selection.height() - if (frame_x <= round(updated_cursor_position.x()) <= frame_w and self.radioButton.isChecked() is True): - updated_cursor_position_x = orig_position_w + (round(updated_cursor_position.x() - lastPos['x'])) - lastPos['x'] = event.pos().x() - selection.resize(updated_cursor_position_x, orig_position_h) - self.horizontalSlider.setValue(round(updated_cursor_position_x / 3.5)) - orig_position_w = selection.width() - orig_position_h = selection.height() - if (frame_y <= round(updated_cursor_position.y()) <= frame_h and self.radioButton.isChecked() is True): - updated_cursor_position_y = orig_position_h + (round(updated_cursor_position.y() - lastPos['y'])) - lastPos['y'] = event.pos().y() - selection.resize(orig_position_w, updated_cursor_position_y) - self.verticalSlider.setValue(round(updated_cursor_position_y / 3.5)) - - orig_position_x = selection.pos().x() - orig_position_y = selection.pos().y() - if (frame_x <= round(updated_cursor_position.x()) <= frame_w and self.radioButton.isChecked() is False): - updated_cursor_position_x = orig_position_x + (round(updated_cursor_position.x() - lastPos['x'])) - lastPos['x'] = event.pos().x() - # print(updated_cursor_position_x) - selection.move(updated_cursor_position_x, orig_position_y) - self.horizontalSlider.setValue(round(updated_cursor_position_x / 3.5)) - - orig_position_x = selection.pos().x() - orig_position_y = selection.pos().y() - if (frame_y <= round(updated_cursor_position.y()) <= frame_h and self.radioButton.isChecked() is False): - updated_cursor_position_y = orig_position_y + (round(updated_cursor_position.y() - lastPos['y'])) - lastPos['y'] = event.pos().y() - # print(updated_cursor_position_y) - selection.move(orig_position_x, updated_cursor_position_y) - self.verticalSlider.setValue(round(updated_cursor_position_y / 3.5)) - - def mouseReleaseEvent(self, event): - # print('x: {0}, y: {1}'.format(event.pos().x(), event.pos().y())) - if self.tableWidget.currentItem() is not None: - QApplication.restoreOverrideCursor() - - def select_file(self): - options = QFileDialog.Options() - options |= QFileDialog.ShowDirsOnly - folder = QFileDialog.getOpenFileName(self, "Sélection du fichier ", '', 'Python(*.py)') - if folder[0] != '': - return folder[0] - else: - return '' - - def load(self): - folder = self.select_file() - logopath = folder - if logopath != '': - # logopath = (os.path.dirname(logopath).split('/')) - sourcefile = open(logopath, 'r') - splitsource = sourcefile.read().splitlines() - all_children = self.frame.children() - all_element = ['_locals', '_size', '_rotate'] - for children in all_children: - flen = 0 - for element in all_element: - flen = 0 - recherche_element = children.objectName() + element - for find_it in splitsource: - if find_it.find(recherche_element) != -1: - flen = flen + 1 - if flen == 1: - if element != '_rotate': - value_find = (find_it[find_it[:].find('(') + 1:-33]).split(',') - if element == '_size': - Psize_h = float(value_find[0]) * 3.5 - Psize_w = float(value_find[1]) * 3.5 - if element == '_locals': - Plocals_h = float(value_find[0]) * 3.5 - Plocals_w = float(value_find[1]) * 3.5 - else: - Protate = float((find_it[find_it[:].find('=') + 2:]).split(',')[0]) - if flen == 3: - if element != '_rotate': - value_find = (find_it[find_it[:].find('(') + 1:-33]).split(',') - if element == '_size': - Lsize_h = float(value_find[0]) * 3.5 - Lsize_w = float(value_find[1]) * 3.5 - if element == '_locals': - Llocals_h = float(value_find[0]) * 3.5 - Llocals_w = float(value_find[1]) * 3.5 - else: - Lrotate = float((find_it[find_it[:].find('=') + 2:]).split(',')[0]) - # print('sh',Psize_h,',sw',Psize_w,',lh',Plocals_h,',lw',Plocals_w,',r',Protate) - if Lrotate == 90 or Lrotate == 270: - old = Lsize_w - Lsize_w = Lsize_h - Lsize_h = old - if Protate == 90 or Protate == 270: - old = Psize_w - Psize_w = Psize_h - Psize_h = old - if self.toolButton_2.text() == 'Landscape': - children.resize(round(Lsize_h), round(Lsize_w)) - children.move(round(Llocals_h), round(Llocals_w)) - self.rotate_object[children.objectName()] = Lrotate - if self.toolButton_2.text() == 'Portrait': - children.resize(round(Psize_h), round(Psize_w)) - children.move(round(Plocals_h), round(Plocals_w)) - self.rotate_object[children.objectName()] = Protate - - def valueSlider(self): - self.horizontalSlider.setValue(self.spinBox.value()) - self.verticalSlider.setValue(self.spinBox_2.value()) - - def setNavigator(self): - all_children = self.frame.children() - xR = 0 - baseRow = self.tableWidget.rowCount() - while baseRow >= xR: - self.tableWidget.removeRow(0) - xR = xR + 1 - self.tableWidget.clear() - # id = 0 - for children in all_children: - position = self.tableWidget.rowCount() - self.tableWidget.insertRow(position) - self.tableWidget.setItem(position, 0, QTableWidgetItem(children.objectName())) - # print(children.objectName()) - - def export(self): - self.type_page() - self.type_page() - all_children = self.frame.children() - # selection_name = (self.tableWidget.currentItem()).text() - export_str = """ -from qgis.core import ( - QgsLayoutSize, - QgsUnitTypes, - QgsLayoutPoint, -) -def fletch_canvas(self): - if self.radioButton_6.isChecked(): - values_page = 'A4' - else: - values_page = 'A3' - if self.radioButton_7.isChecked(): - page_rotate = 'Portrait' - else: - page_rotate = 'Landscape' -""" - - type = ["Portrait", "Landscape"] - page = ["A4", "A3"] - for page_type in type: - export_str = export_str + """ - if page_rotate == '""" + page_type + """':""" - for page_size in page: - export_str = export_str + """ - if values_page == '""" + page_size + """':""" - for children in all_children: - selection = children - if page_type == 'Portrait': - item_rotate_object = self.varPortrait[selection.objectName() + '_rotate'][0] - if item_rotate_object == 0 or item_rotate_object == 180: - sw = 0 - sh = 1 - if item_rotate_object == 90 or item_rotate_object == 270: - sw = 1 - sh = 0 - if page_size == 'A3': - size_w = (round((self.varPortrait[selection.objectName() + '_size'][sw] / 3.5) * 1.41)) - size_h = (round((self.varPortrait[selection.objectName() + '_size'][sh] / 3.5) * 1.41)) - locals_w = (round((self.varPortrait[selection.objectName() + '_locals'][1] / 3.5) * 1.41)) - locals_h = (round((self.varPortrait[selection.objectName() + '_locals'][0] / 3.5) * 1.41)) - else: - size_w = (round(self.varPortrait[selection.objectName() + '_size'][sw]) / 3.5) - size_h = (round(self.varPortrait[selection.objectName() + '_size'][sh] / 3.5)) - locals_w = (round(self.varPortrait[selection.objectName() + '_locals'][1] / 3.5)) - locals_h = (round(self.varPortrait[selection.objectName() + '_locals'][0] / 3.5)) - if page_type == 'Landscape': - item_rotate_object = self.varLandscape[selection.objectName() + '_rotate'][0] - if item_rotate_object == 0 or item_rotate_object == 180: - sw = 0 - sh = 1 - if item_rotate_object == 90 or item_rotate_object == 270: - sw = 1 - sh = 0 - if page_size == 'A3': - size_w = (round((self.varLandscape[selection.objectName() + '_size'][sw] / 3.5) * 1.41)) - size_h = (round((self.varLandscape[selection.objectName() + '_size'][sh] / 3.5) * 1.41)) - locals_w = (round((self.varLandscape[selection.objectName() + '_locals'][1] / 3.5) * 1.41)) - locals_h = (round((self.varLandscape[selection.objectName() + '_locals'][0] / 3.5) * 1.41)) - else: - size_w = (round(self.varLandscape[selection.objectName() + '_size'][sw]) / 3.5) - size_h = (round(self.varLandscape[selection.objectName() + '_size'][sh] / 3.5)) - locals_w = (round(self.varLandscape[selection.objectName() + '_locals'][1] / 3.5)) - locals_h = (round(self.varLandscape[selection.objectName() + '_locals'][0] / 3.5)) - - if item_rotate_object == 270: - locals_h = locals_h + size_w - if item_rotate_object == 180: - locals_h = locals_h + size_h - locals_w = locals_w + size_w - - size_w = str(size_w) - size_h = str(size_h) - locals_w = str(locals_w) - locals_h = str(locals_h) - - export_str = export_str + """ - self.template_parameters['""" + selection.objectName() + """_size'] = QgsLayoutSize(""" + size_w + """,""" + size_h + """, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['""" + selection.objectName() + """_locals'] = QgsLayoutPoint(""" + locals_w + """, """ + locals_h + """, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['""" + selection.objectName() + """_rotate'] = """ + str(item_rotate_object) - export_str = export_str + """ - return self.template_parameters""" - sourceFile = open(self.path, 'w') - print(export_str, file=sourceFile) - sourceFile.close() - - def type_page(self): - all_children = self.frame.children() - if self.toolButton_2.text() == 'Landscape': - self.horizontalSlider.setMaximum(maxV) - self.verticalSlider.setMaximum(maxH) - last_children = 0 - for children in all_children: - selection = children - size_w = selection.size().width() - size_h = selection.size().height() - locals_h = selection.x() - locals_w = selection.y() - item_rotate_object = self.rotate_object[selection.objectName()] - self.varLandscape[selection.objectName() + '_size'] = [size_w, size_h] - self.varLandscape[selection.objectName() + '_locals'] = [locals_w, locals_h] - self.varLandscape[selection.objectName() + '_rotate'] = [item_rotate_object] - if self.varPortrait != {}: - selection.move(self.varPortrait[selection.objectName() + '_locals'][1], self.varPortrait[selection.objectName() + '_locals'][0]) - selection.resize(self.varPortrait[selection.objectName() + '_size'][0], self.varPortrait[selection.objectName() + '_size'][1]) - self.rotate_object[selection.objectName()] = self.varPortrait[selection.objectName() + '_rotate'][0] - self.rotate_color(selection, last_children) - last_children = selection - self.toolButton_2.setText('Portrait') - elif self.toolButton_2.text() == 'Portrait': - self.horizontalSlider.setMaximum(maxH) - self.verticalSlider.setMaximum(maxV) - last_children = 0 - for children in all_children: - selection = children - size_w = selection.size().width() - size_h = selection.size().height() - locals_h = selection.x() - locals_w = selection.y() - item_rotate_object = self.rotate_object[selection.objectName()] - self.varPortrait[selection.objectName() + '_size'] = [size_w, size_h] - self.varPortrait[selection.objectName() + '_locals'] = [locals_w, locals_h] - self.varPortrait[selection.objectName() + '_rotate'] = [item_rotate_object] - if self.varLandscape != {}: - selection.move(self.varLandscape[selection.objectName() + '_locals'][1], self.varLandscape[selection.objectName() + '_locals'][0]) - selection.resize(self.varLandscape[selection.objectName() + '_size'][0], self.varLandscape[selection.objectName() + '_size'][1]) - self.rotate_object[selection.objectName()] = self.varLandscape[selection.objectName() + '_rotate'][0] - self.rotate_color(selection, last_children) - last_children = selection - self.toolButton_2.setText('Landscape') - frame_w = self.frame.width() - frame_h = self.frame.height() - self.frame.resize(frame_h, frame_w) - frame_x = round(frame_w / 3) - frame_y = self.frame.y() - self.frame.move(frame_x, frame_y) - - def setSlider(self): - if self.tableWidget.currentItem() is not None: - print(self.tableWidget.tabKeyNavigation()) - selection_name = (self.tableWidget.currentItem()).text() - all_children = self.frame.children() - selection = 0 - last_children = 0 - for children in all_children: - if last_select == children.objectName(): - last_children = children - if selection_name == children.objectName(): - selection = children - if selection != 0: - self.rotate_color(selection, last_children) - if self.radioButton.isChecked() is False: - xx = round(selection.x() / 3.5) - yy = round(selection.y() / 3.5) - else: - xx = round(selection.size().width() / 3.5) - yy = round(selection.size().height() / 3.5) - # print(xx,yy) - self.horizontalSlider.setValue(xx) - self.verticalSlider.setValue(yy) - self.spinBox.setValue(xx) - self.spinBox_2.setValue(yy) - - def rotate_color(self, selection, last_children): - global last_select - if self.radioButton.isChecked() is False: - ColorCode = "10, 10, 80, 50" - else: - ColorCode = "249, 238, 148, 50" - if self.rotate_object[selection.objectName()] == 0: - selection.setStyleSheet("border: 2px solid;border-color:red;border-bottom-color: blue;background-color: rgb(" + ColorCode + ")") - elif self.rotate_object[selection.objectName()] == 90: - selection.setStyleSheet("border: 2px solid;border-color:red;border-left-color: blue;background-color: rgb(" + ColorCode + ")") - elif self.rotate_object[selection.objectName()] == 180: - selection.setStyleSheet("border: 2px solid;border-color:red;border-top-color: blue;background-color: rgb(" + ColorCode + ")") - elif self.rotate_object[selection.objectName()] == 270: - selection.setStyleSheet("border: 2px solid;border-color:red;border-right-color: blue;background-color: rgb(" + ColorCode + ")") - if last_children != 0: - if last_select != selection.objectName(): - last_children.setStyleSheet("background-color: rgb(10, 10, 10, 50)") - - last_select = selection.objectName() - - def rotate(self): - if self.tableWidget.currentItem() is not None: - selection_name = (self.tableWidget.currentItem()).text() - all_children = self.frame.children() - selection = 0 - last_children = 0 - for children in all_children: - if last_select == children.objectName(): - last_children = children - if selection_name == children.objectName(): - selection = children - if selection != 0: - xx = round(selection.size().width()) - yy = round(selection.size().height()) - selection.resize(round(yy), round(xx)) - if self.radioButton.isChecked() is True: - self.spinBox.setValue(yy) - self.spinBox_2.setValue(xx) - self.horizontalSlider.setValue(round(yy / 3.5)) - self.verticalSlider.setValue(round(xx / 3.5)) - - if self.rotate_object[selection.objectName()] == 270: - self.rotate_object[selection.objectName()] = 0 - else: - self.rotate_object[selection.objectName()] = self.rotate_object[selection.objectName()] + 90 - self.rotate_color(selection, last_children) - - def vertical(self): - if self.tableWidget.currentItem() is not None: - selection_name = (self.tableWidget.currentItem()).text() - all_children = self.frame.children() - selection = 0 - for children in all_children: - if selection_name == children.objectName(): - selection = children - if selection != 0: - if self.radioButton.isChecked() is False: - selection.move(round(self.horizontalSlider.value() * 3.5), round(self.verticalSlider.value() * 3.5)) - else: - selection.resize(round(self.horizontalSlider.value() * 3.5), round(self.verticalSlider.value() * 3.5)) - self.spinBox.setValue(round(self.horizontalSlider.value())) - self.spinBox_2.setValue(round(self.verticalSlider.value())) - - def horizontal(self): - if self.tableWidget.currentItem() is not None: - selection_name = (self.tableWidget.currentItem()).text() - all_children = self.frame.children() - selection = 0 - for children in all_children: - if selection_name == children.objectName(): - selection = children - if selection != 0: - if self.radioButton.isChecked() is False: - selection.move(round(self.horizontalSlider.value() * 3.5), round(self.verticalSlider.value() * 3.5)) - else: - selection.resize(round(self.horizontalSlider.value() * 3.5), round(self.verticalSlider.value() * 3.5)) - self.spinBox.setValue(round(self.horizontalSlider.value())) - self.spinBox_2.setValue(round(self.verticalSlider.value())) diff --git a/CenRa_PAGERENDER/icon.png b/CenRa_PAGERENDER/icon.png deleted file mode 100644 index d53a910fea37e4930c40122d285e6ea9fdc75ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4977 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 diff --git a/CenRa_PAGERENDER/issues.py b/CenRa_PAGERENDER/issues.py deleted file mode 100644 index 0d6416a..0000000 --- a/CenRa_PAGERENDER/issues.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -plugin_dir = os.path.dirname(__file__) -end_find = plugin_dir.rfind('\\')+1 - -NAME = plugin_dir[end_find:] -#print(NAME) - -from qgis.gui import * - -from qgis.core import ( - NULL, - QgsApplication, - QgsDataSourceUri, - QgsProject, - QgsProviderConnectionException, - QgsProviderRegistry, - QgsRasterLayer, - QgsSettings, - QgsVectorLayer, - QgsGeometry, -) -from qgis.PyQt.QtWidgets import ( - QDialog, - QAction, - QDockWidget, - QFileDialog, - QInputDialog, - QMenu, - QToolButton, - QTableWidget, - QTableWidgetItem, -) -from qgis.utils import iface - - -from .tools.resources import ( - load_ui, - resources_path, - send_issues, -) - -EDITOR_CLASS = load_ui('CenRa_IssuesSend.ui') - -class CenRa_Issues(QDialog, EDITOR_CLASS): - - def __init__(self, parent=None): - _ = parent - super().__init__() - self.setupUi(self) - self.settings = QgsSettings() - - #place connect here - self.annuler_button.clicked.connect(self.close) - self.ok_button.clicked.connect(self.run_sendissues) - - def run_sendissues(self): - text_titre = self.titre_line.text() - text_message = self.messages_plain.toPlainText() - statu_bug = self.check_bug.isChecked() - statu_aide = self.check_aide.isChecked() - statu_question = self.check_question.isChecked() - statu_amelioration = self.check_amelioration.isChecked() - statu_autre = self.check_autre.isChecked() - - statu = [] - if statu_bug == True : statu = statu + [1] - if statu_aide == True : statu = statu + [3] - if statu_question == True : statu = statu + [5] - if statu_amelioration == True : statu = statu + [2] - if statu_autre == True : statu = statu + [6] - - if len(statu) >= 1: - import qgis - url = qgis.utils.pluginMetadata(NAME,'tracker') - print(text_message) - send_info = send_issues(url,text_titre,text_message,statu) - code = send_info.status_code - print(code) - else: - code = 423 - if code == 201: - iface.messageBar().pushMessage("Envoyer :", "Votre messages à bien été envoyer.", level=Qgis.Success, duration=20) - self.close() - elif code == 422: - iface.messageBar().pushMessage("Erreur :", "Erreur dans le contenu du messages.", level=Qgis.Critical, duration=20) - elif code == 423: - iface.messageBar().pushMessage("Erreur :", "Pas de sujet sélectionné.", level=Qgis.Critical, duration=20) - elif code == 404: - iface.messageBar().pushMessage("Missing :", "Le serveur de messagerie est injoignable.", level=Qgis.Warning, duration=20) diff --git a/CenRa_PAGERENDER/metadata.txt b/CenRa_PAGERENDER/metadata.txt deleted file mode 100644 index e6ec1bc..0000000 --- a/CenRa_PAGERENDER/metadata.txt +++ /dev/null @@ -1,49 +0,0 @@ -# This file contains metadata for your plugin. - -# This file should be included when you package your plugin.# Mandatory items: - -[general] -name=CenRa_PageRender -qgisMinimumVersion=3.0 -supportsQt6=True -description=CenRa_PageRender -version=0.2.1 -author=Conservatoire d'Espaces Naturels de Rhône-Alpes -email=si_besoin@cen-rhonealpes.fr - -about=Outils de création de mise en page prédéfinis pour simplifier et organiser cette étape. - -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_PAGERENDER:


30/07/2025 - Version 0.2.1:

- Correctife de bug.


19/05/2025 - Version 0.2.0:

- Compatible PyQt5 et PyQt6


03/04/2025 - Version 0.1.6:

- Mise a jour de securite.


07/01/2025 - Version 0.1.5:

- ByPass du certif ssl ci erreur.

14/11/2024 - Version 0.1.4:

- Implementation de la mollet.
- Implementation du dragging pour déplacer et modification de la taille


08/11/2024 - Version 0.1.3:

- Correctif de bug.

21/10/2024 - Version 0.1.1:

- Les match en if.
- Bouton de scroll et adaptation portrait.


09/10/2024 - Version 0.1.0:

- Création.

- -# Tags are comma separated with spaces allowed -tags=python - - -category=Plugins -icon=icon.png -# experimental flag -experimental=True - -# 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,mise en page,atlas - -# If the plugin can run on QGIS Server. -server=False - diff --git a/CenRa_PAGERENDER/tools/icons/CEN_RA.png b/CenRa_PAGERENDER/tools/icons/CEN_RA.png deleted file mode 100644 index 95ead1cf7313bc03e4637c9bb20945373f27ddca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8893 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 LNkvXXu0mjfe10PI diff --git a/CenRa_PAGERENDER/tools/icons/icon.png b/CenRa_PAGERENDER/tools/icons/icon.png deleted file mode 100644 index 63569ff1341213be87e81a3265877e25b7031aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45060 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 diff --git a/CenRa_PAGERENDER/tools/resources.py b/CenRa_PAGERENDER/tools/resources.py deleted file mode 100644 index bdd8c41..0000000 --- a/CenRa_PAGERENDER/tools/resources.py +++ /dev/null @@ -1,174 +0,0 @@ -"""Tools to work with resource files.""" - -import configparser -import shutil -import tempfile -# import base64 -# import psycopg2 -# import psycopg2.extras -from os.path import abspath, join, pardir, dirname -from qgis.PyQt.QtWidgets import QApplication -from qgis.PyQt import uic - -__copyright__ = "Copyright 2019, 3Liz" -__license__ = "GPL version 3" -__email__ = "info@3liz.org" -__revision__ = "$Format:%H$" - - -def plugin_path(*args): - """Get the path to plugin root folder. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Absolute path to the plugin path. - :rtype: str - """ - path = dirname(dirname(__file__)) - path = abspath(abspath(join(path, pardir))) - for item in args: - path = abspath(join(path, item)) - - return path - - -def plugin_name(): - """Return the plugin name according to metadata.txt. - - :return: The plugin name. - :rtype: basestring - """ - metadata = metadata_config() - name = metadata["general"]["name"] - return name - - -def metadata_config() -> configparser: - """Get the INI config parser for the metadata file. - - :return: The config parser object. - :rtype: ConfigParser - """ - path = plugin_path("metadata.txt") - config = configparser.ConfigParser() - config.read(path, encoding='utf8') - return config - - -def plugin_test_data_path(*args, copy=False): - """Get the path to the plugin test data path. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :param copy: If the file must be copied into a temporary directory first. - :type copy: bool - - :return: Absolute path to the resources folder. - :rtype: str - """ - path = abspath(abspath(join(plugin_path(), "test", "data"))) - for item in args: - path = abspath(join(path, item)) - - if copy: - temp = tempfile.mkdtemp() - shutil.copy(path, temp) - return join(temp, args[-1]) - else: - return path - - -def resources_path(*args): - """Get the path to our resources folder. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Absolute path to the resources folder. - :rtype: str - """ - path = abspath(abspath(join(plugin_path(), "CenRa_PAGERENDER\\tools"))) - for item in args: - path = abspath(join(path, item)) - return path - - -def load_ui(*args): - """Get compile UI file. - - :param args List of path elements e.g. ['img', 'logos', 'image.png'] - :type args: str - - :return: Compiled UI file. - """ - ui_class, _ = uic.loadUiType(resources_path("ui", *args)) - - return ui_class - - -def send_issues(url, titre, body, labels): - import requests - import urllib.request - import json - # import os - - # usr = os.environ['USERNAME'] - token = '9d0a4e0bea561710e0728f161f7edf4e5201e112' - url = url + '?token=' + token - - headers = {'Authorization': 'token ' + token, 'accept': 'application/json', 'Content-Type': 'application/json'} - - payload = {'title': titre, 'body': body, 'labels': labels} - try: - urllib.request.urlopen('https://google.com') - binar = True - except urllib.requests.URLError: - binar = False - r = '' - if binar: - r = requests.post(url, data=json.dumps(payload), headers=headers) - return r - - -def maj_verif(NAME): - import qgis - import urllib.request - iface = qgis.utils.iface - from qgis.core import Qgis - - # url = qgis.utils.pluginMetadata(NAME, 'repository') - # URL = url+'/raw/branch/main/plugins.xml' - URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' -# print(URL) - version = qgis.utils.pluginMetadata(NAME, 'version') - len_version = len(version) - try: - urllib.request.urlopen('https://google.com') - binar = True - except urllib.requests.URLError: - binar = False - if binar: - try: - version_web = str(urllib.request.urlopen(URL).read()) - plugin_num = version_web.find(NAME) - valeur_version_web = version_web.find('', plugin_num) + 9 - version_plugin = version_web[valeur_version_web:valeur_version_web + len_version] - if version_plugin != version: - iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30) - except urllib.requests.URLError: - print("error gitea version ssl") - else: - iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30) - - -def tr(text, context="@default"): - return QApplication.translate(context, text) - - -def devlog(NAME): - import qgis - devmaj = '' - devmaj = devmaj + qgis.utils.pluginMetadata(NAME, 'changelog') - return devmaj diff --git a/CenRa_PAGERENDER/tools/ui/CenRa_IssuesSend.ui b/CenRa_PAGERENDER/tools/ui/CenRa_IssuesSend.ui deleted file mode 100644 index 14d923e..0000000 --- a/CenRa_PAGERENDER/tools/ui/CenRa_IssuesSend.ui +++ /dev/null @@ -1,332 +0,0 @@ - - - CenRa_IssuesSend - - - - 0 - 0 - 810 - 587 - - - - CEN-RA Metabase - - - - icon.svgicon.svg - - - - - 0 - 550 - 811 - 31 - - - - - - - Annuler - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Envoyer - - - - - - - - - 10 - 10 - 791 - 531 - - - - Issues - - - - - 240 - 40 - 321 - 41 - - - - Qt::AlignCenter - - - - - - 10 - 101 - 571 - 421 - - - - - - - 589 - 100 - 191 - 431 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 9 - 9 - 341 - 411 - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Bug - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Aide - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Question - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Amélioration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Autre - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 250 - 20 - 51 - 21 - - - - - Arial - 14 - - - - Titre: - - - - - - 20 - 70 - 91 - 31 - - - - - Arial - 12 - - - - Messages: - - - - - - 600 - 70 - 91 - 31 - - - - - Arial - 12 - - - - Sujet: - - - - - - ok_button - annuler_button - - - - diff --git a/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui b/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui deleted file mode 100644 index 79f4631..0000000 --- a/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui +++ /dev/null @@ -1,698 +0,0 @@ - - - MapCENDialogBase - - - - 0 - 0 - 1295 - 805 - - - - - 1295 - 805 - - - - - 1295 - 805 - - - - PageRender - - - - - - - - 0 - 0 - 1301 - 811 - - - - - 1301 - 743 - - - - - 1326 - 1323 - - - - - 1150 - 781 - - - - - - - 0 - - - - Liste de templates existants - - - - - 410 - 10 - 861 - 22 - - - - 296 - - - Qt::Horizontal - - - - - - 210 - 40 - 22 - 731 - - - - 210 - - - 10 - - - 0 - - - Qt::Vertical - - - true - - - - - - 240 - 40 - 1039 - 735 - - - - QFrame#frame{background-color: rgb(255, 255, 255, 170);} - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 20 - 20 - 700 - 700 - - - - background-color: rgb(10, 10, 10, 50) - - - QFrame::NoFrame - - - QFrame::Plain - - - 5 - - - 2 - - - - - - Qt::AlignCenter - - - 5 - - - - - - 730 - 10 - 300 - 240 - - - - background-color: rgb(10, 10, 10, 50) - - - QFrame::Plain - - - - - - - - - 730 - 260 - 300 - 460 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 660 - 70 - 50 - 50 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 30 - 690 - 180 - 25 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 10 - 10 - 160 - 40 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 180 - 10 - 540 - 40 - - - - false - - - false - - - background-color: rgb(10, 10, 10, 50) - - - QFrame::NoFrame - - - QFrame::Raised - - - -1 - - - 0 - - - - - - false - - - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing - - - false - - - 0 - - - - - - - - - 530 - 690 - 180 - 20 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 800 - 690 - 180 - 20 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 210 - 70 - 440 - 50 - - - - false - - - false - - - background-color: rgb(10, 10, 10, 50) - - - QFrame::NoFrame - - - QFrame::Raised - - - -1 - - - 0 - - - - - - false - - - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing - - - false - - - 0 - - - - - - - - - 30 - 645 - 180 - 45 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - 30 - 530 - 100 - 100 - - - - background-color: rgb(10, 10, 10, 50) - - - - - - - - - - 20 - 20 - 181 - 751 - - - - QFrame#frame_2{background-color: rgb(255, 255, 255, 170);} - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 10 - 161 - 641 - - - - 1 - - - Qt::ScrollBarAlwaysOff - - - QAbstractScrollArea::AdjustToContentsOnFirstShow - - - QAbstractItemView::NoEditTriggers - - - false - - - false - - - false - - - QAbstractItemView::NoDragDrop - - - Qt::IgnoreAction - - - true - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectRows - - - - 5 - 5 - - - - Qt::ElideMiddle - - - true - - - true - - - 0 - - - 1 - - - false - - - 50 - - - 160 - - - true - - - false - - - - - - - 60 - 720 - 61 - 23 - - - - Exporte - - - - - - 60 - 690 - 61 - 20 - - - - Landscape - - - - - - 10 - 650 - 161 - 21 - - - - Load - - - - - - - 210 - 10 - 16 - 21 - - - - - 0 - 0 - - - - - 12 - - - - Qt::NoFocus - - - Qt::LeftToRight - - - false - - - Qt::ImhNone - - - - - - - 32 - 32 - - - - E - - - - - - 240 - 10 - 61 - 22 - - - - QAbstractSpinBox::NoButtons - - - - - - X: - - - 999 - - - - - - 310 - 10 - 61 - 22 - - - - QAbstractSpinBox::NoButtons - - - - - - Y: - - - 999 - - - - - - 380 - 11 - 25 - 20 - - - - ... - - - - - - 1280 - 40 - 16 - 731 - - - - -300 - - - 40 - - - 10 - - - 50 - - - 40 - - - Qt::Vertical - - - true - - - true - - - frame - horizontalSlider - verticalSlider - frame_2 - radioButton - spinBox - spinBox_2 - toolButton - verticalScrollBar - - - - - - diff --git a/CenRa_PAGERENDER/tools/ui/CenRa_about_form.ui b/CenRa_PAGERENDER/tools/ui/CenRa_about_form.ui deleted file mode 100644 index 6ec4843..0000000 --- a/CenRa_PAGERENDER/tools/ui/CenRa_about_form.ui +++ /dev/null @@ -1,81 +0,0 @@ - - - CenRa_Metabase_editorwidget_base - - - - 0 - 0 - 471 - 594 - - - - Journal des modifications - - - - ../../CenRa_Metabase/tools/ui/icon.svg../../CenRa_Metabase/tools/ui/icon.svg - - - - - - true - - - Qt::NoFocus - - - QFrame::NoFrame - - - true - - - - - 0 - 0 - 453 - 570 - - - - - - 0 - 0 - 451 - 541 - - - - DevLog - - - - - 10 - 20 - 431 - 511 - - - - - - - - - - - QDialogButtonBox::NoButton - - - - - - - - diff --git a/CenRa_PAGERENDER/tools/ui/rotate.png b/CenRa_PAGERENDER/tools/ui/rotate.png deleted file mode 100644 index 85826ed9201a8b6304cb199c936d63588369663d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19524 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 {mfjO_<@UGaSCs{RS;huF{u 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 b=$u{?%ydOp8!7nJ5df`u>w4j}yHEcgvJ=nu diff --git a/CenRa_PAGERENDER/tools/ui/size_0.png b/CenRa_PAGERENDER/tools/ui/size_0.png deleted file mode 100644 index 571076b6f92768593a24c462652b7f5de0f7d3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17730 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,metabase - + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.1 + 2.5 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip @@ -95,15 +95,15 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip CEN-Rhone-Alpes 2024-09-25 - 2025-07-30 + 2025-12-17 False False cenra,mise en page,atlas - + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 0.2.1 + 0.2.2 3.16 https://plateformesig.cenra-outils.org/ CenRa_PAGERENDER.zip @@ -112,7 +112,7 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip CEN-Rhone-Alpes 2024-10-09 - 2025-07-30 + 2025-12-12 True False cenra,mise en page,atlas