Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a66140db7 | ||
|
|
66df248ab8 | ||
|
|
01015e6f46 | ||
|
|
1380827465 |
@@ -1,21 +0,0 @@
|
|||||||
#Ignores gitignore
|
|
||||||
/.gitignore
|
|
||||||
|
|
||||||
#Ignores all folders
|
|
||||||
/*
|
|
||||||
!plugins.xml
|
|
||||||
|
|
||||||
#Skip Ignores
|
|
||||||
!CenRa_AUTOMAP/
|
|
||||||
!CenRa_COPIE/
|
|
||||||
!CenRa_FLUX/
|
|
||||||
!CenRa_METABASE/
|
|
||||||
!CenRa_POSTGIS/
|
|
||||||
!CenRa_SICEN/
|
|
||||||
!CenRa_PAGERENDER/
|
|
||||||
|
|
||||||
#ReIgnore
|
|
||||||
**/__pycache__
|
|
||||||
**/test/
|
|
||||||
PythonSQL.py
|
|
||||||
StyleLayer.py
|
|
||||||
@@ -27,14 +27,10 @@ import os
|
|||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
resources_path,
|
resources_path,
|
||||||
pyperclip,
|
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
pyperclip()
|
|
||||||
|
|
||||||
from .canvas_editor import AutoMap_Editor
|
from .canvas_editor import AutoMap_Editor
|
||||||
from .style_invoke import AutoMap_Style
|
from .about_form import AutoMapAboutDialog
|
||||||
from .about_form import AboutDialog
|
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
|
|
||||||
@@ -42,7 +38,6 @@ class PgAutoMap:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
""" Constructor. """
|
""" Constructor. """
|
||||||
self.canvas_editor = None
|
self.canvas_editor = None
|
||||||
self.style_dock = None
|
|
||||||
# self.issues = None
|
# self.issues = None
|
||||||
self.provider = None
|
self.provider = None
|
||||||
self.locator_filter = None
|
self.locator_filter = None
|
||||||
@@ -55,7 +50,7 @@ class PgAutoMap:
|
|||||||
maj_verif(NAME)
|
maj_verif(NAME)
|
||||||
|
|
||||||
# Display About window on first use
|
# Display About window on first use
|
||||||
version = qgis.utils.pluginMetadata('CenRa_AUTOMAP','version')
|
version = qgis.utils.pluginMetadata('CenIsere_AUTOMAP','version')
|
||||||
s = QSettings()
|
s = QSettings()
|
||||||
versionUse = s.value("automap/version", 1, type=str)
|
versionUse = s.value("automap/version", 1, type=str)
|
||||||
if str(versionUse) != str(version) :
|
if str(versionUse) != str(version) :
|
||||||
@@ -66,28 +61,22 @@ class PgAutoMap:
|
|||||||
def initGui(self):
|
def initGui(self):
|
||||||
""" Build the plugin GUI. """
|
""" Build the plugin GUI. """
|
||||||
|
|
||||||
self.toolBar = iface.addToolBar("CenRa_AutoMap")
|
self.toolBar = iface.addToolBar("CenIsere_AutoMap")
|
||||||
self.toolBar.setObjectName("CenRa_AutoMap")
|
self.toolBar.setObjectName("CenIsere_AutoMap")
|
||||||
|
|
||||||
icon = QIcon(resources_path('icons', 'icon.png'))
|
icon = QIcon(resources_path('icons', 'icon.png'))
|
||||||
|
|
||||||
# Open the online help
|
# Open the online help
|
||||||
self.help_action = QAction(icon, 'CenRa_AutoMap', iface.mainWindow())
|
self.help_action = QAction(icon, 'CenIsere_AutoMap', iface.mainWindow())
|
||||||
iface.pluginHelpMenu().addAction(self.help_action)
|
iface.pluginHelpMenu().addAction(self.help_action)
|
||||||
self.help_action.triggered.connect(self.open_help)
|
self.help_action.triggered.connect(self.open_help)
|
||||||
if not self.canvas_editor:
|
if not self.canvas_editor:
|
||||||
self.canvas_editor = AutoMap_Editor()
|
self.canvas_editor = AutoMap_Editor()
|
||||||
|
|
||||||
self.automap_action = QAction(icon, 'CenRa_AutoMap',None)
|
|
||||||
|
self.automap_action = QAction(icon, 'CenIsere_AutoMap',None)
|
||||||
self.toolBar.addAction(self.automap_action)
|
self.toolBar.addAction(self.automap_action)
|
||||||
self.automap_action.triggered.connect(self.open_editor)
|
self.automap_action.triggered.connect(self.open_editor)
|
||||||
|
|
||||||
if not self.style_dock:
|
|
||||||
self.style_dock = AutoMap_Style()
|
|
||||||
|
|
||||||
if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
|
|
||||||
iface.addDockWidget(Qt.LeftDockWidgetArea, self.style_dock)
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
if not self.locator_filter:
|
if not self.locator_filter:
|
||||||
self.locator_filter = LocatorFilter(iface)
|
self.locator_filter = LocatorFilter(iface)
|
||||||
@@ -125,11 +114,11 @@ class PgAutoMap:
|
|||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
dialog = AboutDialog(iface)
|
dialog = AutoMapAboutDialog(iface)
|
||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
def open_help():
|
def open_help():
|
||||||
""" Open the online help. """
|
""" Open the online help. """
|
||||||
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
QDesktopServices.openUrl(QUrl('https://plateformesig.CenIsere-outils.org/'))
|
||||||
|
|
||||||
def open_editor(self):
|
def open_editor(self):
|
||||||
self.canvas_editor.show()
|
self.canvas_editor.show()
|
||||||
@@ -138,7 +127,7 @@ class PgAutoMap:
|
|||||||
def unload(self):
|
def unload(self):
|
||||||
""" Unload the plugin. """
|
""" Unload the plugin. """
|
||||||
if self.canvas_editor:
|
if self.canvas_editor:
|
||||||
iface.removePluginMenu('CenRa_AutoMap',self.automap_action)
|
iface.removePluginMenu('CenIsere_AutoMap',self.automap_action)
|
||||||
|
|
||||||
if self.provider:
|
if self.provider:
|
||||||
QgsApplication.processingRegistry().removeProvider(self.provider)
|
QgsApplication.processingRegistry().removeProvider(self.provider)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# CenIsere_AutoMap
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
__copyright__ = "Copyright 2021, 3Liz"
|
||||||
|
__license__ = "GPL version 3"
|
||||||
|
__email__ = "info@3liz.org"
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyPep8Naming
|
||||||
|
def classFactory(iface): # pylint: disable=invalid-name
|
||||||
|
_ = iface
|
||||||
|
from CenIsere_AUTOMAP.CenIsere_AutoMap import PgAutoMap
|
||||||
|
return PgAutoMap()
|
||||||
@@ -12,12 +12,12 @@ ABOUT_FORM_CLASS, _ = uic.loadUiType(
|
|||||||
os.path.join(
|
os.path.join(
|
||||||
str(Path(__file__).resolve().parent),
|
str(Path(__file__).resolve().parent),
|
||||||
'tools/ui',
|
'tools/ui',
|
||||||
'CenRa_about_form.ui'
|
'CenIsere_AutoMap_about_form.ui'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
class AutoMapAboutDialog(QDialog, ABOUT_FORM_CLASS):
|
||||||
|
|
||||||
""" About - Let the user display the about dialog. """
|
""" About - Let the user display the about dialog. """
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
|||||||
self.iface = iface
|
self.iface = iface
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
|
||||||
self.viewer.setHtml(devlog('CenRa_AUTOMAP'))
|
self.viewer.setHtml(devlog('CenIsere_AUTOMAP'))
|
||||||
|
|
||||||
self.rejected.connect(self.onReject)
|
self.rejected.connect(self.onReject)
|
||||||
self.buttonBox.rejected.connect(self.onReject)
|
self.buttonBox.rejected.connect(self.onReject)
|
||||||
@@ -43,4 +43,4 @@ class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
|||||||
Run some actions when
|
Run some actions when
|
||||||
the user closes the dialog
|
the user closes the dialog
|
||||||
"""
|
"""
|
||||||
self.close()
|
self.close()
|
||||||
@@ -8,7 +8,6 @@ from pathlib import Path
|
|||||||
from xml.dom.minidom import parseString
|
from xml.dom.minidom import parseString
|
||||||
from qgis.gui import *
|
from qgis.gui import *
|
||||||
import qgis
|
import qgis
|
||||||
from importlib import import_module
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
NULL,
|
NULL,
|
||||||
QgsApplication,
|
QgsApplication,
|
||||||
@@ -48,8 +47,6 @@ from qgis.PyQt.QtWebKitWidgets import QWebPage
|
|||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
QMessageBox,
|
|
||||||
QPushButton,
|
|
||||||
QDockWidget,
|
QDockWidget,
|
||||||
QFileDialog,
|
QFileDialog,
|
||||||
QInputDialog,
|
QInputDialog,
|
||||||
@@ -59,22 +56,21 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from PyQt5 import QtGui
|
|
||||||
from PyQt5 import QtWidgets
|
|
||||||
from qgis.PyQt.QtXml import QDomDocument
|
from qgis.PyQt.QtXml import QDomDocument
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import glob
|
import glob
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
|
login_base,
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .tools.mises_en_pages.canvas import (fletch_canvas)
|
||||||
|
from .issues import CenIsere_Issues
|
||||||
from datetime import date
|
from datetime import date
|
||||||
|
|
||||||
EDITOR_CLASS = load_ui('CenRa_AutoMap_base.ui')
|
EDITOR_CLASS = load_ui('CenIsere_AutoMap_base.ui')
|
||||||
LOGGER = logging.getLogger('CenRa_AutoMap')
|
LOGGER = logging.getLogger('CenIsere_AutoMap')
|
||||||
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_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_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_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'
|
||||||
@@ -102,9 +98,6 @@ data_source = [
|
|||||||
'Plan cadastral informatisé - Etalab - juillet 202X',
|
'Plan cadastral informatisé - Etalab - juillet 202X',
|
||||||
'Parcellaire Express - IGN - 202X',
|
'Parcellaire Express - IGN - 202X',
|
||||||
]
|
]
|
||||||
A4_size = {'Portrait':{'RIGHT':210,'LEFT':0,'TOP':0,'BOTTOM':297},'Landscape':{'RIGHT':297,'LEFT':0,'TOP':0,'BOTTOM':210}}
|
|
||||||
A3_size = {'Portrait':{'RIGHT':298,'LEFT':0,'TOP':0,'BOTTOM':420},'Landscape':{'RIGHT':420,'LEFT':0,'TOP':0,'BOTTOM':298}}
|
|
||||||
|
|
||||||
class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
@@ -113,7 +106,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settings = QgsSettings()
|
self.settings = QgsSettings()
|
||||||
self.s = QSettings()
|
self.s = QSettings()
|
||||||
self.setWindowIcon(QtGui.QIcon(resources_path('icons','icon.png')))
|
|
||||||
|
|
||||||
path = ''
|
path = ''
|
||||||
ix = 0
|
ix = 0
|
||||||
@@ -123,7 +115,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
path = path+'/'+i
|
path = path+'/'+i
|
||||||
self.tabWidget.setStyleSheet('background-image: url('+path+'/tools/bg/Capture.png);')
|
self.tabWidget.setStyleSheet('background-image: url('+path+'/tools/bg/Capture.png);')
|
||||||
|
|
||||||
self.verticalScrollBar.hide()
|
|
||||||
self.commandLinkButton.clicked.connect(self.chargement_qpt)
|
self.commandLinkButton.clicked.connect(self.chargement_qpt)
|
||||||
self.radioButton_9.clicked.connect(self.statu_atlas)
|
self.radioButton_9.clicked.connect(self.statu_atlas)
|
||||||
self.radioButton_10.clicked.connect(self.statu_source)
|
self.radioButton_10.clicked.connect(self.statu_source)
|
||||||
@@ -134,12 +125,11 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.commandLinkButton_2.clicked.connect(self.load_ortho)
|
self.commandLinkButton_2.clicked.connect(self.load_ortho)
|
||||||
self.commandLinkButton_3.clicked.connect(self.load_osm)
|
self.commandLinkButton_3.clicked.connect(self.load_osm)
|
||||||
self.CustomeLogo.clicked.connect(self.deflogoteck)
|
self.CustomeLogo.clicked.connect(self.deflogoteck)
|
||||||
self.verticalScrollBar.valueChanged.connect(self.moveFrame)
|
|
||||||
|
|
||||||
## On ajoute le nom des templates à la liste déroulante de l'onglet "mises en page" :
|
## On ajoute le nom des templates à la liste déroulante de l'onglet "mises en page" :
|
||||||
mises_en_page = []
|
mises_en_page = []
|
||||||
|
|
||||||
for filename in glob.glob(resources_path("mises_en_pages","*.py")):
|
for filename in glob.glob(resources_path("mises_en_pages","*.qpt")):
|
||||||
mises_en_page.append(filename)
|
mises_en_page.append(filename)
|
||||||
|
|
||||||
|
|
||||||
@@ -149,42 +139,32 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.comboBox.setCurrentIndex(1)
|
self.comboBox.setCurrentIndex(1)
|
||||||
|
|
||||||
self.template_parameters = {
|
self.template_parameters = {
|
||||||
'Carte_size': None,
|
'map_size': None,
|
||||||
'Carte_locals' : None,
|
'map_position' : None,
|
||||||
'Carte_rotate':None,
|
'position_map_size' : None,
|
||||||
'Carte_2_size' : None,
|
'position_map_position' : None,
|
||||||
'Carte_2_locals' : None,
|
'title_position': None,
|
||||||
'Carte_2_rotate':None,
|
'title_size': None,
|
||||||
'Legande_size': None,
|
'subtitle_position': None,
|
||||||
'Legande_locals': None,
|
'subtitle_size': None,
|
||||||
'Legande_rotate':None,
|
'logo_position': None,
|
||||||
'Arrow_size': None,
|
'logo_size': None,
|
||||||
'Arrow_locals': None,
|
'legend_position': None,
|
||||||
'Arrow_rotate':None,
|
'legend_size': None,
|
||||||
'Echelle_size': None,
|
'scalebarnumeric_position':None,
|
||||||
'Echelle_locals': None,
|
'scalebarnumeric_size':None,
|
||||||
'Echelle_rotate':None,
|
'scalebar_position': None,
|
||||||
'Logo_size': None,
|
'scalebar_size': None,
|
||||||
'Logo_locals': None,
|
'north_position': None,
|
||||||
'Logo_rotate':None,
|
'north_size': None,
|
||||||
'Titre_size':None,
|
'credit_text_position': None,
|
||||||
'Titre_locals':None,
|
'credit_text_size': None,
|
||||||
'Titre_rotate':None,
|
'credit_text2_position': None,
|
||||||
'Sous_titre_size':None,
|
'credit_text2_size': None,
|
||||||
'Sous_titre_locals':None,
|
'image_size':None,
|
||||||
'Sous_titre_rotate':None,
|
'image_position':None,
|
||||||
'Credit_size': None,
|
'image_size_2':None,
|
||||||
'Credit_locals': None,
|
'image_position_2':None,
|
||||||
'Credit_rotate':None,
|
|
||||||
'Source_size': None,
|
|
||||||
'Source_locals': None,
|
|
||||||
'Source_rotate':None,
|
|
||||||
'Logo_2_size': None,
|
|
||||||
'Logo_2_locals': None,
|
|
||||||
'Logo_2_rotate': None,
|
|
||||||
'Echelle_2_size': None,
|
|
||||||
'Echelle_2_locals': None,
|
|
||||||
'Echelle_2_rotate': None,
|
|
||||||
# Add more variables as needed
|
# Add more variables as needed
|
||||||
}
|
}
|
||||||
self.update_logo_library()
|
self.update_logo_library()
|
||||||
@@ -194,14 +174,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.hide_source()
|
self.hide_source()
|
||||||
self.hide_atlas()
|
self.hide_atlas()
|
||||||
|
|
||||||
def wheelEvent(self,event):
|
|
||||||
if (event.angleDelta().y() >= 1):
|
|
||||||
vsb = self.verticalScrollBar.value()+20
|
|
||||||
else:
|
|
||||||
vsb = self.verticalScrollBar.value()-20
|
|
||||||
self.verticalScrollBar.setValue(vsb)
|
|
||||||
def moveFrame(self):
|
|
||||||
self.frame.move(self.frame.x(),self.verticalScrollBar.value())
|
|
||||||
def update_logo_library(self):
|
def update_logo_library(self):
|
||||||
self.mComboBox_4.clear()
|
self.mComboBox_4.clear()
|
||||||
logo_library = []
|
logo_library = []
|
||||||
@@ -333,8 +305,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.comboBox_6.clear()
|
self.comboBox_6.clear()
|
||||||
self.comboBox_7.clear()
|
self.comboBox_7.clear()
|
||||||
|
|
||||||
if (self.s.value("automap/prenom_nom", "1", type=str) != "1"):
|
|
||||||
self.lineEdit_5.setText(self.s.value("automap/prenom_nom", 1, type=str))
|
|
||||||
couches = []
|
couches = []
|
||||||
couche_vecteur = ['']
|
couche_vecteur = ['']
|
||||||
mapThemes = ['']
|
mapThemes = ['']
|
||||||
@@ -448,27 +418,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
doc = QDomDocument()
|
doc = QDomDocument()
|
||||||
doc.setContent(template_content)
|
doc.setContent(template_content)
|
||||||
self.layout.loadFromTemplate(doc, QgsReadWriteContext(), True)
|
self.layout.loadFromTemplate(doc, QgsReadWriteContext(), True)
|
||||||
|
self.layout.setName(layout_name)
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
cutLayout = layout_name.index("¶")
|
|
||||||
except:
|
|
||||||
cutLayout = 0
|
|
||||||
|
|
||||||
if cutLayout >= 1:
|
|
||||||
self.layout.setName(layout_name)
|
|
||||||
titre_layout_name=layout_name[:cutLayout]
|
|
||||||
else:
|
|
||||||
self.layout.setName(layout_name)
|
|
||||||
titre_layout_name = layout_name
|
|
||||||
|
|
||||||
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
|
||||||
logo_div = A4_size['Portrait']['RIGHT']
|
|
||||||
if self.radioButton_6.isChecked() and self.radioButton_8.isChecked():
|
|
||||||
logo_div = A4_size['Portrait']['BOTTOM']
|
|
||||||
if self.radioButton_5.isChecked() and self.radioButton_7.isChecked():
|
|
||||||
logo_div = A3_size['Portrait']['RIGHT']
|
|
||||||
if self.radioButton_5.isChecked() and self.radioButton_8.isChecked():
|
|
||||||
logo_div = A3_size['Portrait']['BOTTOM']
|
|
||||||
if True:#os.path.basename(filename) == "1. Modèle carto standard (consolidé).qpt":
|
if True:#os.path.basename(filename) == "1. Modèle carto standard (consolidé).qpt":
|
||||||
|
|
||||||
self.actualisation_mise_en_page()
|
self.actualisation_mise_en_page()
|
||||||
@@ -481,10 +433,10 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.map_modele_test.setExtent(iface.mapCanvas().extent())
|
self.map_modele_test.setExtent(iface.mapCanvas().extent())
|
||||||
# Position de la carte dans le composeur
|
# Position de la carte dans le composeur
|
||||||
|
|
||||||
self.map_modele_test.setItemRotation(self.template_parameters['Carte_rotate'])
|
self.map_modele_test.attemptMove(self.template_parameters['map_position'])
|
||||||
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)
|
# on dimensionne le rendu de la carte (pour référence la page totale est une page A4 donc 297*210)
|
||||||
|
self.map_modele_test.attemptResize(self.template_parameters['map_size'])
|
||||||
self.map_modele_test.setKeepLayerSet(True)
|
self.map_modele_test.setKeepLayerSet(True)
|
||||||
self.map_modele_test.setKeepLayerStyles(True)
|
self.map_modele_test.setKeepLayerStyles(True)
|
||||||
if self.radioButton_11.isChecked() == 1:
|
if self.radioButton_11.isChecked() == 1:
|
||||||
@@ -498,39 +450,54 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.position_map.setExtent(QgsRectangle(641552,6647386, 995856,6331104))
|
self.position_map.setExtent(QgsRectangle(641552,6647386, 995856,6331104))
|
||||||
self.position_map.setFollowVisibilityPreset(True)
|
self.position_map.setFollowVisibilityPreset(True)
|
||||||
self.position_map.setFollowVisibilityPresetName(self.comboBox_6.currentText())
|
self.position_map.setFollowVisibilityPresetName(self.comboBox_6.currentText())
|
||||||
self.position_map.setItemRotation(self.template_parameters['Carte_2_rotate'])
|
self.position_map.attemptMove(self.template_parameters['position_map_position'])
|
||||||
self.position_map.attemptResize(self.template_parameters['Carte_2_size'])
|
self.position_map.attemptResize(self.template_parameters['position_map_size'])
|
||||||
self.position_map.attemptMove(self.template_parameters['Carte_2_locals'])
|
overviewitem = QgsLayoutItemMapOverviewStack(self.position_map)
|
||||||
self.position_map.overview().setLinkedMap(self.map_modele_test)
|
map_overview = self.position_map.overview()
|
||||||
#overviewitem = QgsLayoutItemMapOverviewStack(self.position_map)
|
map_overview.setLinkedMap(self.map_modele_test)
|
||||||
#map_overview = self.position_map.overview()
|
map_overview.setCentered(True)
|
||||||
#map_overview.setLinkedMap(self.map_modele_test)
|
overviewitem.addOverview(map_overview)
|
||||||
#map_overview.setCentered(True)
|
|
||||||
#overviewitem.addOverview(map_overview)
|
|
||||||
|
|
||||||
self.position_map.refresh()
|
self.position_map.refresh()
|
||||||
self.map_modele_test.setFrameEnabled(True)
|
self.map_modele_test.setFrameEnabled(False)
|
||||||
self.layout.addLayoutItem(self.position_map)
|
self.layout.addLayoutItem(self.position_map)
|
||||||
self.position_map.setId("Carte_locals")
|
self.position_map.setId("carte_position")
|
||||||
self.map_modele_test.refresh()
|
self.map_modele_test.refresh()
|
||||||
|
|
||||||
self.map_modele_test.setBackgroundColor(QColor(255, 255, 255, 255))
|
self.map_modele_test.setBackgroundColor(QColor(255, 255, 255, 255))
|
||||||
self.map_modele_test.setFrameEnabled(True)
|
|
||||||
|
self.map_modele_test.setFrameEnabled(False)
|
||||||
|
|
||||||
if self.radioButton_9.isChecked() == 1:
|
if self.radioButton_9.isChecked() == 1:
|
||||||
self.map_modele_test.setAtlasDriven(True)
|
self.map_modele_test.setAtlasDriven(True)
|
||||||
self.layout.addLayoutItem(self.map_modele_test)
|
self.layout.addLayoutItem(self.map_modele_test)
|
||||||
self.map_modele_test.setId("carte_principale")
|
self.map_modele_test.setId("carte_principale")
|
||||||
|
|
||||||
|
if self.comboBox.currentText() == "3. Modèle carto standard Cen Isere.qpt":
|
||||||
|
# Ajout de la vague haute
|
||||||
|
image1 = QgsLayoutItemPicture(self.layout)
|
||||||
|
image1.setPicturePath(resources_path("mises_en_pages","vague.png"))
|
||||||
|
image1.attemptMove(self.template_parameters['image_position'])
|
||||||
|
image1.attemptResize(self.template_parameters['image_size'])
|
||||||
|
self.layout.addLayoutItem(image1)
|
||||||
|
|
||||||
|
# Ajout de la vague basse
|
||||||
|
image2= QgsLayoutItemPicture(self.layout)
|
||||||
|
image2.setPicturePath(resources_path("mises_en_pages","vague2.png"))
|
||||||
|
image2.attemptMove(self.template_parameters['image_position_2'])
|
||||||
|
image2.attemptResize(self.template_parameters['image_size_2'])
|
||||||
|
self.layout.addLayoutItem(image2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Ajout d'un titre à la mise en page
|
## Ajout d'un titre à la mise en page
|
||||||
title = QgsLayoutItemLabel(self.layout)
|
title = QgsLayoutItemLabel(self.layout)
|
||||||
self.layout.addLayoutItem(title)
|
self.layout.addLayoutItem(title)
|
||||||
titre = titre_layout_name
|
titre = layout_name
|
||||||
title.setText(titre)
|
title.setText(titre)
|
||||||
title.setFont(QFont("Calibri", 15, QFont.Bold))
|
title.setFont(QFont("Calibri", 15, QFont.Bold))
|
||||||
title.setItemRotation(self.template_parameters['Titre_rotate'])
|
title.attemptMove(self.template_parameters['title_position'])
|
||||||
title.attemptResize(self.template_parameters['Titre_size'])
|
title.attemptResize(self.template_parameters['title_size'])
|
||||||
title.attemptMove(self.template_parameters['Titre_locals'])
|
|
||||||
|
|
||||||
title.setBackgroundEnabled(True)
|
title.setBackgroundEnabled(True)
|
||||||
title.setBackgroundColor(QColor(255, 255, 255, 130))
|
title.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
self.layout.addItem(title)
|
self.layout.addItem(title)
|
||||||
@@ -546,10 +513,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
if self.radioButton_9.isChecked() == 1:
|
if self.radioButton_9.isChecked() == 1:
|
||||||
titre = titre + ' [%' + self.comboBox_4.currentText() + '%]'
|
titre = titre + ' [%' + self.comboBox_4.currentText() + '%]'
|
||||||
subtitle.setText(titre)
|
subtitle.setText(titre)
|
||||||
subtitle.setFont(QFont("Calibri", 10))
|
subtitle.setFont(QFont("MS Shell Dlg 2", 10))
|
||||||
subtitle.setItemRotation(self.template_parameters['Sous_titre_rotate'])
|
subtitle.attemptMove(self.template_parameters['subtitle_position'])
|
||||||
subtitle.attemptResize(self.template_parameters['Sous_titre_size'])
|
subtitle.attemptResize(self.template_parameters['subtitle_size'])
|
||||||
subtitle.attemptMove(self.template_parameters['Sous_titre_locals'])
|
|
||||||
subtitle.setId("SubTitle")
|
subtitle.setId("SubTitle")
|
||||||
subtitle.setBackgroundEnabled(True)
|
subtitle.setBackgroundEnabled(True)
|
||||||
subtitle.setBackgroundColor(QColor(255, 255, 255, 130))
|
subtitle.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
@@ -562,10 +528,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
logo = QgsLayoutItemPicture(self.layout)
|
logo = QgsLayoutItemPicture(self.layout)
|
||||||
logo.setResizeMode(QgsLayoutItemPicture.Zoom)
|
logo.setResizeMode(QgsLayoutItemPicture.Zoom)
|
||||||
logo.setMode(QgsLayoutItemPicture.FormatRaster)
|
logo.setMode(QgsLayoutItemPicture.FormatRaster)
|
||||||
logo.setItemRotation(self.template_parameters['Logo_rotate'])
|
logo.attemptMove(self.template_parameters['logo_position'])
|
||||||
logo.setFixedSize(self.template_parameters['Logo_size'])
|
logo.setFixedSize(self.template_parameters['logo_size'])
|
||||||
logo.attemptMove(self.template_parameters['Logo_locals'])
|
logo.setPicturePath(resources_path("icons","CEN.png"))
|
||||||
logo.setPicturePath(resources_path("icons","CEN_RA.png"))
|
|
||||||
logo.setId('logo')
|
logo.setId('logo')
|
||||||
self.layout.addLayoutItem(logo)
|
self.layout.addLayoutItem(logo)
|
||||||
|
|
||||||
@@ -615,8 +580,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
layertreelayer = root.findLayer(layer.id())
|
layertreelayer = root.findLayer(layer.id())
|
||||||
|
|
||||||
# get the parent of the layer tree layer (layer tree root, or group)
|
# get the parent of the layer tree layer (layer tree root, or group)
|
||||||
if layertreelayer != None:
|
parent = layertreelayer.parent()
|
||||||
parent = layertreelayer.parent()
|
|
||||||
|
|
||||||
# if the parent is a group and has a name, find it and remove the layer
|
# if the parent is a group and has a name, find it and remove the layer
|
||||||
if isinstance(parent, QgsLayerTreeGroup) and parent.name():
|
if isinstance(parent, QgsLayerTreeGroup) and parent.name():
|
||||||
@@ -641,7 +605,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.layout.refresh()
|
self.layout.refresh()
|
||||||
|
|
||||||
legend.updateLegend()
|
legend.updateLegend()
|
||||||
legend.attemptMove(self.template_parameters['Legande_locals'])
|
legend.attemptMove(self.template_parameters['legend_position'])
|
||||||
|
|
||||||
|
|
||||||
## Ajout de l'échelle numeric à la mise en page
|
## Ajout de l'échelle numeric à la mise en page
|
||||||
self.scalebarnumeric_qpt = QgsLayoutItemScaleBar(self.layout)
|
self.scalebarnumeric_qpt = QgsLayoutItemScaleBar(self.layout)
|
||||||
@@ -653,10 +618,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.scalebarnumeric_qpt.setNumberOfSegments(2)
|
self.scalebarnumeric_qpt.setNumberOfSegments(2)
|
||||||
self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0)
|
self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0)
|
||||||
|
|
||||||
self.scalebarnumeric_qpt.setFont(QFont("Calibri", 12))
|
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['scalebarnumeric_position'])
|
||||||
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals'])
|
self.scalebarnumeric_qpt.attemptResize(self.template_parameters['scalebarnumeric_size'])
|
||||||
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.setAlignment(QgsScaleBarSettings.Alignment(1))
|
||||||
self.scalebarnumeric_qpt.setBackgroundEnabled(True)
|
self.scalebarnumeric_qpt.setBackgroundEnabled(True)
|
||||||
self.scalebarnumeric_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
|
self.scalebarnumeric_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
@@ -673,10 +636,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.scalebar_qpt.setNumberOfSegments(2)
|
self.scalebar_qpt.setNumberOfSegments(2)
|
||||||
self.scalebar_qpt.setNumberOfSegmentsLeft(0)
|
self.scalebar_qpt.setNumberOfSegmentsLeft(0)
|
||||||
|
|
||||||
self.scalebar_qpt.setFont(QFont("Calibri", 12))
|
self.scalebar_qpt.attemptMove(self.template_parameters['scalebar_position'])
|
||||||
self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals'])
|
self.scalebar_qpt.attemptResize(self.template_parameters['scalebar_size'])
|
||||||
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.setAlignment(QgsScaleBarSettings.Alignment(1))
|
||||||
self.scalebar_qpt.setBackgroundEnabled(True)
|
self.scalebar_qpt.setBackgroundEnabled(True)
|
||||||
self.scalebar_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
|
self.scalebar_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
@@ -688,61 +649,44 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
north = QgsLayoutItemPicture(self.layout)
|
north = QgsLayoutItemPicture(self.layout)
|
||||||
north.setPicturePath(resources_path("mises_en_pages","NorthArrow_02.svg"))
|
north.setPicturePath(resources_path("mises_en_pages","NorthArrow_02.svg"))
|
||||||
self.layout.addLayoutItem(north)
|
self.layout.addLayoutItem(north)
|
||||||
north.attemptMove(self.template_parameters['Arrow_locals'])
|
north.attemptMove(self.template_parameters['north_position'])
|
||||||
north.attemptResize(self.template_parameters['Arrow_size'])
|
north.attemptResize(self.template_parameters['north_size'])
|
||||||
north.setItemRotation(self.template_parameters['Arrow_rotate'])
|
|
||||||
north.setBackgroundEnabled(True)
|
|
||||||
north.setBackgroundColor(QColor(255, 255, 255, 130))
|
|
||||||
|
|
||||||
if self.radioButton_10.isChecked() == 1:
|
if self.radioButton_10.isChecked() == 1:
|
||||||
text_source = ' '
|
info_text = ["Source : " + self.mComboBox_3.currentText()][0]
|
||||||
for Item_mComboBox_3 in self.mComboBox_3.checkedItems():
|
|
||||||
text_source = text_source+Item_mComboBox_3+','
|
|
||||||
text_source = text_source[:-1]
|
|
||||||
info_text = ["Source :" + text_source][0]
|
|
||||||
else:
|
else:
|
||||||
info_text = ["Source : " + self.lineEdit_4.text()][0]
|
info_text = ["Source : " + self.lineEdit_4.text()][0]
|
||||||
# ajout note info:
|
# ajout note info:
|
||||||
if self.radioButton_14.isChecked() == 1:
|
info = ["Réalisation : " + "CEN Isère (" + date.today().strftime(
|
||||||
self.s.setValue("automap/prenom_nom",self.lineEdit_5.text())
|
"%d/%m/%Y") + ")"]
|
||||||
prenom_nom = self.s.value("automap/prenom_nom", 1, type=str)
|
|
||||||
info = ["Réalisation : " + "CEN Rhône-Alpes (" + date.today().strftime("%d/%m/%Y") + ") par "+prenom_nom]
|
|
||||||
else:
|
|
||||||
info = ["Réalisation : " + "CEN Rhône-Alpes (" + date.today().strftime("%d/%m/%Y") + ")"]
|
|
||||||
credit_text = QgsLayoutItemLabel(self.layout)
|
credit_text = QgsLayoutItemLabel(self.layout)
|
||||||
credit_text.setText(info[0])
|
credit_text.setText(info[0])
|
||||||
credit_text.setFont(QFont("Calibri", 9))
|
credit_text.setFont(QFont("Calibri", 9))
|
||||||
credit_text.setHAlign(Qt.AlignRight)
|
credit_text.setHAlign(Qt.AlignRight)
|
||||||
credit_text.setVAlign(Qt.AlignVCenter)
|
credit_text.setVAlign(Qt.AlignVCenter)
|
||||||
credit_text.setBackgroundEnabled(True)
|
credit_text.setItemRotation(-90)
|
||||||
credit_text.setBackgroundColor(QColor(255, 255, 255, 130))
|
|
||||||
credit_text2 = QgsLayoutItemLabel(self.layout)
|
credit_text2 = QgsLayoutItemLabel(self.layout)
|
||||||
credit_text2.setText(info_text)
|
credit_text2.setText(info_text)
|
||||||
credit_text2.setFont(QFont("Calibri", 9))
|
credit_text2.setFont(QFont("Calibri", 9))
|
||||||
credit_text2.setHAlign(Qt.AlignRight)
|
credit_text2.setHAlign(Qt.AlignRight)
|
||||||
credit_text2.setVAlign(Qt.AlignVCenter)
|
credit_text2.setVAlign(Qt.AlignVCenter)
|
||||||
credit_text.setItemRotation(self.template_parameters['Credit_rotate'])
|
credit_text.attemptMove(self.template_parameters['credit_text_position'])
|
||||||
credit_text.attemptResize(self.template_parameters['Credit_size'])
|
credit_text.attemptResize(self.template_parameters['credit_text_size'])
|
||||||
credit_text.attemptMove(self.template_parameters['Credit_locals'])
|
credit_text2.attemptMove(self.template_parameters['credit_text2_position'])
|
||||||
credit_text2.setItemRotation(self.template_parameters['Source_rotate'])
|
credit_text2.attemptResize(self.template_parameters['credit_text2_size'])
|
||||||
credit_text2.attemptResize(self.template_parameters['Source_size'])
|
|
||||||
credit_text2.attemptMove(self.template_parameters['Source_locals'])
|
|
||||||
credit_text2.setBackgroundEnabled(True)
|
|
||||||
credit_text2.setBackgroundColor(QColor(255, 255, 255, 130))
|
|
||||||
self.layout.addLayoutItem(credit_text)
|
self.layout.addLayoutItem(credit_text)
|
||||||
self.layout.addLayoutItem(credit_text2)
|
self.layout.addLayoutItem(credit_text2)
|
||||||
|
|
||||||
## Ajout du logo credit en bas à droit de la page
|
## Ajout du logo credit en bas à droit de la page
|
||||||
len_item = (len(self.mComboBox_4.checkedItems()))
|
|
||||||
for logo_run in self.mComboBox_4.checkedItems():
|
for logo_run in self.mComboBox_4.checkedItems():
|
||||||
logo_credit = QgsLayoutItemPicture(self.layout)
|
logo_credit = QgsLayoutItemPicture(self.layout)
|
||||||
logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom)
|
logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom)
|
||||||
logo_credit.setMode(QgsLayoutItemPicture.FormatRaster)
|
logo_credit.setMode(QgsLayoutItemPicture.FormatRaster)
|
||||||
cur_x = self.template_parameters['Logo_2_locals'].x()
|
cur_x = self.template_parameters['logo_credit_position'].x()
|
||||||
logo_credit.attemptMove(self.template_parameters['Logo_2_locals'])
|
logo_credit.attemptMove(self.template_parameters['logo_credit_position'])
|
||||||
logo_credit.setPictureAnchor(4)
|
logo_credit.setPictureAnchor(4)
|
||||||
self.template_parameters['Logo_2_locals'].setX(cur_x+(logo_div/len_item))
|
self.template_parameters['logo_credit_position'].setX(cur_x+51)
|
||||||
logo_credit.setFixedSize(self.template_parameters['Logo_2_size'])
|
logo_credit.setFixedSize(self.template_parameters['logo_credit_size'])
|
||||||
if logo_run[0] == ' ':
|
if logo_run[0] == ' ':
|
||||||
logo_credit.setPicturePath(self.s.value("automap/logoteck", 1, type=str)+logo_run[1:])
|
logo_credit.setPicturePath(self.s.value("automap/logoteck", 1, type=str)+logo_run[1:])
|
||||||
else:
|
else:
|
||||||
@@ -758,34 +702,10 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
existing_layout = project.layoutManager().layoutByName(self.layout.name())
|
existing_layout = project.layoutManager().layoutByName(self.layout.name())
|
||||||
if existing_layout:
|
if existing_layout:
|
||||||
self.QMBquestion = QMessageBox()
|
if self.radioButton_12.isChecked() != 1:
|
||||||
self.QMBquestion.setWindowTitle(u"Attention !")
|
|
||||||
self.QMBquestion.setIcon(QMessageBox.Warning)
|
|
||||||
self.QMBquestion.setText("Mise en page existente, la mise en page vas être écraser !")
|
|
||||||
self.QMBquestion.setStandardButtons(QMessageBox.Yes|QMessageBox.No)
|
|
||||||
self.QMBquestion.addButton(QPushButton('Autre mise en page'),QMessageBox.AcceptRole)
|
|
||||||
self.QMBquestion = self.QMBquestion.exec()
|
|
||||||
|
|
||||||
#if self.radioButton_12.isChecked() != 1:
|
|
||||||
if self.QMBquestion == QMessageBox.Yes:
|
|
||||||
project.layoutManager().removeLayout(existing_layout)
|
project.layoutManager().removeLayout(existing_layout)
|
||||||
result = project.layoutManager().addLayout(self.layout)
|
|
||||||
if self.QMBquestion == QMessageBox.AcceptRole:
|
|
||||||
LayoutCOUNT=0
|
|
||||||
arrayManager = []
|
|
||||||
for AddArrayManager in project.layoutManager().layouts():
|
|
||||||
arrayManager.append(AddArrayManager.name())
|
|
||||||
arrayManager.sort()
|
|
||||||
for LayoutNAME in arrayManager:
|
|
||||||
if LayoutNAME == layout_name:
|
|
||||||
LayoutCOUNT = LayoutCOUNT+1
|
|
||||||
if LayoutNAME == layout_name+"¶"+str(LayoutCOUNT):
|
|
||||||
LayoutCOUNT=LayoutCOUNT+1
|
|
||||||
layout_name = (layout_name+"¶"+str(LayoutCOUNT))
|
|
||||||
self.layout.setName(layout_name)
|
|
||||||
|
|
||||||
else:
|
result = project.layoutManager().addLayout(self.layout)
|
||||||
existing_layout = True
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -798,24 +718,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
fichier_mise_en_page = layout_name
|
fichier_mise_en_page = layout_name
|
||||||
layout_modifie = QgsProject.instance().layoutManager().layoutByName(fichier_mise_en_page)
|
layout_modifie = QgsProject.instance().layoutManager().layoutByName(fichier_mise_en_page)
|
||||||
try:
|
iface.openLayoutDesigner(layout_modifie)
|
||||||
if (self.QMBquestion == QMessageBox.AcceptRole):
|
self.close()
|
||||||
TryMessage = (self.QMBquestion == QMessageBox.AcceptRole)
|
|
||||||
elif (self.QMBquestion == QMessageBox.Yes):
|
|
||||||
TryMessage = (self.QMBquestion == QMessageBox.Yes)
|
|
||||||
else:
|
|
||||||
TryMessage = False
|
|
||||||
del self.QMBquestion
|
|
||||||
except:
|
|
||||||
TryMessage = True
|
|
||||||
|
|
||||||
if TryMessage == True:
|
|
||||||
iface.openLayoutDesigner(layout_modifie)
|
|
||||||
self.close()
|
|
||||||
else:
|
|
||||||
self.activateWindow()
|
|
||||||
|
|
||||||
def actualisation_mise_en_page(self):
|
def actualisation_mise_en_page(self):
|
||||||
|
|
||||||
|
A4_size = {'Portrait':{'RIGHT':210,'LEFT':0,'TOP':0,'BOTTOM':297},'Landscape':{'RIGHT':297,'LEFT':0,'TOP':0,'BOTTOM':210}}
|
||||||
|
A3_size = {'Portrait':{'RIGHT':298,'LEFT':0,'TOP':0,'BOTTOM':420},'Landscape':{'RIGHT':420,'LEFT':0,'TOP':0,'BOTTOM':298}}
|
||||||
|
|
||||||
values_page = self.comboBox.currentText()
|
values_page = self.comboBox.currentText()
|
||||||
|
|
||||||
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
||||||
@@ -834,20 +744,19 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
pc = self.layout.pageCollection()
|
pc = self.layout.pageCollection()
|
||||||
pc.pages()[0].setPageSize('A3', QgsLayoutItemPage.Landscape)
|
pc.pages()[0].setPageSize('A3', QgsLayoutItemPage.Landscape)
|
||||||
|
|
||||||
values_page_import = values_page[:-3]
|
self.template_parameters = fletch_canvas(self,values_page)
|
||||||
eval("exec('from .tools.mises_en_pages import '+values_page_import)")
|
|
||||||
eval("exec('self.template_parameters = '+ values_page_import + '.fletch_canvas(self)')")
|
|
||||||
|
|
||||||
def bar_echelle_auto(self, echelle, bar_echelle):
|
def bar_echelle_auto(self, echelle, bar_echelle):
|
||||||
|
|
||||||
if True:
|
if True:
|
||||||
if echelle.scale() >= 40000:
|
if echelle.scale() >= 20000:
|
||||||
bar_echelle.setUnits(QgsUnitTypes.DistanceKilometers)
|
bar_echelle.setUnits(QgsUnitTypes.DistanceKilometers)
|
||||||
bar_echelle.setUnitLabel("km")
|
bar_echelle.setUnitLabel("km")
|
||||||
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.04)/1000))
|
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.02)/1000))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
bar_echelle.setUnits(QgsUnitTypes.DistanceMeters)
|
bar_echelle.setUnits(QgsUnitTypes.DistanceMeters)
|
||||||
bar_echelle.setUnitLabel("m")
|
bar_echelle.setUnitLabel("m")
|
||||||
bar_echelle.setUnitsPerSegment(round(echelle.scale()*0.04))
|
bar_echelle.setUnitsPerSegment(round(echelle.scale()*0.02))
|
||||||
|
|
||||||
bar_echelle.update()
|
bar_echelle.update()
|
||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@@ -1,89 +1,89 @@
|
|||||||
import os
|
import os
|
||||||
plugin_dir = os.path.dirname(__file__)
|
plugin_dir = os.path.dirname(__file__)
|
||||||
end_find = plugin_dir.rfind('\\')+1
|
end_find = plugin_dir.rfind('\\')+1
|
||||||
|
|
||||||
NAME = plugin_dir[end_find:]
|
NAME = plugin_dir[end_find:]
|
||||||
#print(NAME)
|
#print(NAME)
|
||||||
|
|
||||||
from qgis.gui import *
|
from qgis.gui import *
|
||||||
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
NULL,
|
NULL,
|
||||||
QgsApplication,
|
QgsApplication,
|
||||||
QgsDataSourceUri,
|
QgsDataSourceUri,
|
||||||
QgsProject,
|
QgsProject,
|
||||||
QgsProviderConnectionException,
|
QgsProviderConnectionException,
|
||||||
QgsProviderRegistry,
|
QgsProviderRegistry,
|
||||||
QgsRasterLayer,
|
QgsRasterLayer,
|
||||||
QgsSettings,
|
QgsSettings,
|
||||||
QgsVectorLayer,
|
QgsVectorLayer,
|
||||||
QgsGeometry,
|
QgsGeometry,
|
||||||
)
|
)
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
QDockWidget,
|
QDockWidget,
|
||||||
QFileDialog,
|
QFileDialog,
|
||||||
QInputDialog,
|
QInputDialog,
|
||||||
QMenu,
|
QMenu,
|
||||||
QToolButton,
|
QToolButton,
|
||||||
QTableWidget,
|
QTableWidget,
|
||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
)
|
)
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
|
|
||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
|
|
||||||
EDITOR_CLASS = load_ui('CenRa_IssuesSend.ui')
|
EDITOR_CLASS = load_ui('CenIsere_IssuesSend.ui')
|
||||||
|
|
||||||
class CenRa_Issues(QDialog, EDITOR_CLASS):
|
class CenIsere_Issues(QDialog, EDITOR_CLASS):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
_ = parent
|
_ = parent
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settings = QgsSettings()
|
self.settings = QgsSettings()
|
||||||
|
|
||||||
#place connect here
|
#place connect here
|
||||||
self.annuler_button.clicked.connect(self.close)
|
self.annuler_button.clicked.connect(self.close)
|
||||||
self.ok_button.clicked.connect(self.run_sendissues)
|
self.ok_button.clicked.connect(self.run_sendissues)
|
||||||
|
|
||||||
def run_sendissues(self):
|
def run_sendissues(self):
|
||||||
text_titre = self.titre_line.text()
|
text_titre = self.titre_line.text()
|
||||||
text_message = self.messages_plain.toPlainText()
|
text_message = self.messages_plain.toPlainText()
|
||||||
statu_bug = self.check_bug.isChecked()
|
statu_bug = self.check_bug.isChecked()
|
||||||
statu_aide = self.check_aide.isChecked()
|
statu_aide = self.check_aide.isChecked()
|
||||||
statu_question = self.check_question.isChecked()
|
statu_question = self.check_question.isChecked()
|
||||||
statu_amelioration = self.check_amelioration.isChecked()
|
statu_amelioration = self.check_amelioration.isChecked()
|
||||||
statu_autre = self.check_autre.isChecked()
|
statu_autre = self.check_autre.isChecked()
|
||||||
|
|
||||||
statu = []
|
statu = []
|
||||||
if statu_bug == True : statu = statu + [1]
|
if statu_bug == True : statu = statu + [1]
|
||||||
if statu_aide == True : statu = statu + [3]
|
if statu_aide == True : statu = statu + [3]
|
||||||
if statu_question == True : statu = statu + [5]
|
if statu_question == True : statu = statu + [5]
|
||||||
if statu_amelioration == True : statu = statu + [2]
|
if statu_amelioration == True : statu = statu + [2]
|
||||||
if statu_autre == True : statu = statu + [6]
|
if statu_autre == True : statu = statu + [6]
|
||||||
|
|
||||||
if len(statu) >= 1:
|
if len(statu) >= 1:
|
||||||
import qgis
|
import qgis
|
||||||
url = qgis.utils.pluginMetadata(NAME,'tracker')
|
url = qgis.utils.pluginMetadata(NAME,'tracker')
|
||||||
print(text_message)
|
print(text_message)
|
||||||
send_info = send_issues(url,text_titre,text_message,statu)
|
send_info = send_issues(url,text_titre,text_message,statu)
|
||||||
code = send_info.status_code
|
code = send_info.status_code
|
||||||
print(code)
|
print(code)
|
||||||
else:
|
else:
|
||||||
code = 423
|
code = 423
|
||||||
if code == 201:
|
if code == 201:
|
||||||
iface.messageBar().pushMessage("Envoyer :", "Votre messages à bien été envoyer.", level=Qgis.Success, duration=20)
|
iface.messageBar().pushMessage("Envoyer :", "Votre messages à bien été envoyer.", level=Qgis.Success, duration=20)
|
||||||
self.close()
|
self.close()
|
||||||
elif code == 422:
|
elif code == 422:
|
||||||
iface.messageBar().pushMessage("Erreur :", "Erreur dans le contenu du messages.", level=Qgis.Critical, duration=20)
|
iface.messageBar().pushMessage("Erreur :", "Erreur dans le contenu du messages.", level=Qgis.Critical, duration=20)
|
||||||
elif code == 423:
|
elif code == 423:
|
||||||
iface.messageBar().pushMessage("Erreur :", "Pas de sujet sélectionné.", level=Qgis.Critical, duration=20)
|
iface.messageBar().pushMessage("Erreur :", "Pas de sujet sélectionné.", level=Qgis.Critical, duration=20)
|
||||||
elif code == 404:
|
elif code == 404:
|
||||||
iface.messageBar().pushMessage("Missing :", "Le serveur de messagerie est injoignable.", level=Qgis.Warning, duration=20)
|
iface.messageBar().pushMessage("Missing :", "Le serveur de messagerie est injoignable.", level=Qgis.Warning, duration=20)
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# This file contains metadata for your plugin.
|
||||||
|
|
||||||
|
# This file should be included when you package your plugin.# Mandatory items:
|
||||||
|
|
||||||
|
[general]
|
||||||
|
name=CenIsere_AutoMap
|
||||||
|
qgisMinimumVersion=3.0
|
||||||
|
description=CenIsere_AutoMap
|
||||||
|
version=1.6
|
||||||
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
|
|
||||||
|
|
||||||
|
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=<h2>CenIsere_AutoMap:</h2></br><p><h3>07/10/2024 - Version 1.6: </h3> - Option de bibliotheque de logo custome.</p></br><p><h3>03/10/2024 - Version 1.5: </h3> - Remonte la fênetre dans la pille.</br> - Gestion du nombre de colonne dans la légend.</br></p></br><p><h3>02/10/2024 - Version 1.4: </h3> - Mise en page plein écrant.</br></p></br><p><h3>01/10/2024 - Version 1.3: </h3> - Récupération du titre et sous-titre pour mise en page existente.</br> - Integration de bibliotheque de logo.</br> - Integration de gestionaire pour les source de donnée.</br> - Mise en place d'une bar d'echelle adaptative. </br></p></br><p><h3>30/09/2024 - Version 1.2: </h3> - Activation du thème. </br> - Ajouter une carte de suivie. </br><p></br><h3>27/09/2024 - Version 1.1: </h3> - Ajout d'une liste déroulante pour les sources de données. </br>- Bouton pour ajouter des fonts de carte customisés. </br>- Fonctionnalité de génération d'atlas. </p></br><p><h3>26/09/2024 - Version 1.0: </h3> - Lancement du plugin CenIsere_AutoMap avec une seul mise en page. </p></br>
|
||||||
|
|
||||||
|
# Tags are comma separated with spaces allowed
|
||||||
|
tags=python
|
||||||
|
|
||||||
|
|
||||||
|
category=Plugins
|
||||||
|
icon=icon.png
|
||||||
|
# experimental flag
|
||||||
|
experimental=False
|
||||||
|
|
||||||
|
# deprecated flag (applies to the whole plugin, not just a single version)
|
||||||
|
deprecated=False
|
||||||
|
|
||||||
|
# Since QGIS 3.8, a comma separated list of plugins to be installed
|
||||||
|
# (or upgraded) can be specified.
|
||||||
|
# Check the documentation for more information.
|
||||||
|
# plugin_dependencies=
|
||||||
|
|
||||||
|
Category of the plugin: Raster, Vector, Database or Web
|
||||||
|
# category=CenIsere,mise en page,atlas
|
||||||
|
|
||||||
|
# If the plugin can run on QGIS Server.
|
||||||
|
server=False
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import sys
|
||||||
|
import socket
|
||||||
|
import os
|
||||||
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
|
#print(IPAddr)
|
||||||
|
if IPAddr[0:11] == "100.100.100": #4269
|
||||||
|
host = "100.100.100.81"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig4269"
|
||||||
|
sigdb="sig4269"
|
||||||
|
refdb="ref_geo4269"
|
||||||
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.0": #01
|
||||||
|
host = "192.168.0.201"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig01"
|
||||||
|
sigdb="sig01"
|
||||||
|
refdb="ref_geo01"
|
||||||
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.1": #0726
|
||||||
|
host = "192.168.1.201"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig0726"
|
||||||
|
sigdb="sig0726"
|
||||||
|
refdb="ref_geo0726"
|
||||||
|
password = "McVities"
|
||||||
|
if sys.platform == 'linux':
|
||||||
|
os_user = os.environ['USER']
|
||||||
|
else:
|
||||||
|
os_user = os.environ['USERNAME']
|
||||||
|
if os_user == 'STAGE':
|
||||||
|
os_user='stage'
|
||||||
|
if os_user == 'Administrateur':
|
||||||
|
os_user='stage'
|
||||||
|
Before Width: | Height: | Size: 750 KiB After Width: | Height: | Size: 750 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 286 KiB After Width: | Height: | Size: 286 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,120 @@
|
|||||||
|
<Layout worldFileMap="" name="test.qpt" printResolution="300" units="mm">
|
||||||
|
<Snapper snapToGrid="0" snapToItems="1" tolerance="5" snapToGuides="1"/>
|
||||||
|
<Grid resolution="10" offsetUnits="mm" offsetX="0" resUnits="mm" offsetY="0"/>
|
||||||
|
<PageCollection>
|
||||||
|
<symbol name="" clip_to_extent="1" type="fill" force_rhr="0" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="color" value="255,255,255,255" type="QString"/>
|
||||||
|
<Option name="joinstyle" value="miter" type="QString"/>
|
||||||
|
<Option name="offset" value="0,0" type="QString"/>
|
||||||
|
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="offset_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="outline_color" value="35,35,35,255" type="QString"/>
|
||||||
|
<Option name="outline_style" value="no" type="QString"/>
|
||||||
|
<Option name="outline_width" value="0.26" type="QString"/>
|
||||||
|
<Option name="outline_width_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="style" value="solid" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
<prop k="border_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="color" v="255,255,255,255"/>
|
||||||
|
<prop k="joinstyle" v="miter"/>
|
||||||
|
<prop k="offset" v="0,0"/>
|
||||||
|
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="offset_unit" v="MM"/>
|
||||||
|
<prop k="outline_color" v="35,35,35,255"/>
|
||||||
|
<prop k="outline_style" v="no"/>
|
||||||
|
<prop k="outline_width" v="0.26"/>
|
||||||
|
<prop k="outline_width_unit" v="MM"/>
|
||||||
|
<prop k="style" v="solid"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
<LayoutItem zValue="0" id="" itemRotation="0" position="0,0,mm" frame="false" templateUuid="{5c80221d-7561-455b-94fd-69a27d877679}" referencePoint="0" opacity="1" frameJoinStyle="miter" uuid="{5c80221d-7561-455b-94fd-69a27d877679}" blendMode="0" size="297,210,mm" groupUuid="" outlineWidthM="0.3,mm" positionOnPage="0,0,mm" type="65638" excludeFromExports="0" positionLock="false" background="true" visibility="1">
|
||||||
|
<FrameColor green="0" blue="0" red="0" alpha="255"/>
|
||||||
|
<BackgroundColor green="255" blue="255" red="255" alpha="255"/>
|
||||||
|
<LayoutObject>
|
||||||
|
<dataDefinedProperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</dataDefinedProperties>
|
||||||
|
<customproperties>
|
||||||
|
<Option/>
|
||||||
|
</customproperties>
|
||||||
|
</LayoutObject>
|
||||||
|
<symbol name="" clip_to_extent="1" type="fill" force_rhr="0" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="color" value="255,255,255,255" type="QString"/>
|
||||||
|
<Option name="joinstyle" value="miter" type="QString"/>
|
||||||
|
<Option name="offset" value="0,0" type="QString"/>
|
||||||
|
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="offset_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="outline_color" value="35,35,35,255" type="QString"/>
|
||||||
|
<Option name="outline_style" value="no" type="QString"/>
|
||||||
|
<Option name="outline_width" value="0.26" type="QString"/>
|
||||||
|
<Option name="outline_width_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="style" value="solid" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
<prop k="border_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="color" v="255,255,255,255"/>
|
||||||
|
<prop k="joinstyle" v="miter"/>
|
||||||
|
<prop k="offset" v="0,0"/>
|
||||||
|
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="offset_unit" v="MM"/>
|
||||||
|
<prop k="outline_color" v="35,35,35,255"/>
|
||||||
|
<prop k="outline_style" v="no"/>
|
||||||
|
<prop k="outline_width" v="0.26"/>
|
||||||
|
<prop k="outline_width_unit" v="MM"/>
|
||||||
|
<prop k="style" v="solid"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
</LayoutItem>
|
||||||
|
<GuideCollection visible="1"/>
|
||||||
|
</PageCollection>
|
||||||
|
<customproperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="atlasRasterFormat" value="png" type="QString"/>
|
||||||
|
<Option name="imageAntialias" value="true" type="bool"/>
|
||||||
|
<Option name="imageCropMarginBottom" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginLeft" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginRight" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginTop" value="0" type="int"/>
|
||||||
|
<Option name="imageCropToContents" value="false" type="bool"/>
|
||||||
|
<Option name="singleFile" value="true" type="bool"/>
|
||||||
|
</Option>
|
||||||
|
</customproperties>
|
||||||
|
<Atlas coverageLayer="" pageNameExpression="" filterFeatures="0" filenamePattern="'output_'||@atlas_featurenumber" enabled="0" hideCoverage="0" sortFeatures="0"/>
|
||||||
|
</Layout>
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<Layout units="mm" worldFileMap="" printResolution="300" name="3. Modèle_carto_standard_cenIsere">
|
||||||
|
<Snapper snapToGuides="1" tolerance="5" snapToItems="1" snapToGrid="0"/>
|
||||||
|
<Grid offsetUnits="mm" resUnits="mm" resolution="10" offsetX="0" offsetY="0"/>
|
||||||
|
<PageCollection>
|
||||||
|
<symbol clip_to_extent="1" force_rhr="0" type="fill" name="" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="" type="QString" name="name"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option value="collection" type="QString" name="type"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer locked="0" pass="0" enabled="1" class="SimpleFill">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="3x:0,0,0,0,0,0" type="QString" name="border_width_map_unit_scale"/>
|
||||||
|
<Option value="255,255,255,255" type="QString" name="color"/>
|
||||||
|
<Option value="miter" type="QString" name="joinstyle"/>
|
||||||
|
<Option value="0,0" type="QString" name="offset"/>
|
||||||
|
<Option value="3x:0,0,0,0,0,0" type="QString" name="offset_map_unit_scale"/>
|
||||||
|
<Option value="MM" type="QString" name="offset_unit"/>
|
||||||
|
<Option value="35,35,35,255" type="QString" name="outline_color"/>
|
||||||
|
<Option value="no" type="QString" name="outline_style"/>
|
||||||
|
<Option value="0.26" type="QString" name="outline_width"/>
|
||||||
|
<Option value="MM" type="QString" name="outline_width_unit"/>
|
||||||
|
<Option value="solid" type="QString" name="style"/>
|
||||||
|
</Option>
|
||||||
|
<prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
|
||||||
|
<prop v="255,255,255,255" k="color"/>
|
||||||
|
<prop v="miter" k="joinstyle"/>
|
||||||
|
<prop v="0,0" k="offset"/>
|
||||||
|
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||||
|
<prop v="MM" k="offset_unit"/>
|
||||||
|
<prop v="35,35,35,255" k="outline_color"/>
|
||||||
|
<prop v="no" k="outline_style"/>
|
||||||
|
<prop v="0.26" k="outline_width"/>
|
||||||
|
<prop v="MM" k="outline_width_unit"/>
|
||||||
|
<prop v="solid" k="style"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="" type="QString" name="name"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option value="collection" type="QString" name="type"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
<LayoutItem type="65638" zValue="0" blendMode="0" referencePoint="0" frameJoinStyle="miter" outlineWidthM="0.3,mm" frame="false" groupUuid="" itemRotation="0" excludeFromExports="0" background="true" opacity="1" visibility="1" size="297,210,mm" positionOnPage="0,0,mm" id="" templateUuid="{2b090846-ab96-44d2-b168-90e1bcb35427}" uuid="{2b090846-ab96-44d2-b168-90e1bcb35427}" position="0,0,mm" positionLock="false">
|
||||||
|
<FrameColor red="0" blue="0" green="0" alpha="255"/>
|
||||||
|
<BackgroundColor red="255" blue="255" green="255" alpha="255"/>
|
||||||
|
<LayoutObject>
|
||||||
|
<dataDefinedProperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="" type="QString" name="name"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option value="collection" type="QString" name="type"/>
|
||||||
|
</Option>
|
||||||
|
</dataDefinedProperties>
|
||||||
|
<customproperties>
|
||||||
|
<Option/>
|
||||||
|
</customproperties>
|
||||||
|
</LayoutObject>
|
||||||
|
<symbol clip_to_extent="1" force_rhr="0" type="fill" name="" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="" type="QString" name="name"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option value="collection" type="QString" name="type"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer locked="0" pass="0" enabled="1" class="SimpleFill">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="3x:0,0,0,0,0,0" type="QString" name="border_width_map_unit_scale"/>
|
||||||
|
<Option value="255,255,255,255" type="QString" name="color"/>
|
||||||
|
<Option value="miter" type="QString" name="joinstyle"/>
|
||||||
|
<Option value="0,0" type="QString" name="offset"/>
|
||||||
|
<Option value="3x:0,0,0,0,0,0" type="QString" name="offset_map_unit_scale"/>
|
||||||
|
<Option value="MM" type="QString" name="offset_unit"/>
|
||||||
|
<Option value="35,35,35,255" type="QString" name="outline_color"/>
|
||||||
|
<Option value="no" type="QString" name="outline_style"/>
|
||||||
|
<Option value="0.26" type="QString" name="outline_width"/>
|
||||||
|
<Option value="MM" type="QString" name="outline_width_unit"/>
|
||||||
|
<Option value="solid" type="QString" name="style"/>
|
||||||
|
</Option>
|
||||||
|
<prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/>
|
||||||
|
<prop v="255,255,255,255" k="color"/>
|
||||||
|
<prop v="miter" k="joinstyle"/>
|
||||||
|
<prop v="0,0" k="offset"/>
|
||||||
|
<prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/>
|
||||||
|
<prop v="MM" k="offset_unit"/>
|
||||||
|
<prop v="35,35,35,255" k="outline_color"/>
|
||||||
|
<prop v="no" k="outline_style"/>
|
||||||
|
<prop v="0.26" k="outline_width"/>
|
||||||
|
<prop v="MM" k="outline_width_unit"/>
|
||||||
|
<prop v="solid" k="style"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="" type="QString" name="name"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option value="collection" type="QString" name="type"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
</LayoutItem>
|
||||||
|
<GuideCollection visible="1"/>
|
||||||
|
</PageCollection>
|
||||||
|
<customproperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option value="png" type="QString" name="atlasRasterFormat"/>
|
||||||
|
<Option value="true" type="bool" name="singleFile"/>
|
||||||
|
</Option>
|
||||||
|
</customproperties>
|
||||||
|
<Atlas filterFeatures="0" pageNameExpression="" filenamePattern="'output_'||@atlas_featurenumber" hideCoverage="0" enabled="0" sortFeatures="0" coverageLayer=""/>
|
||||||
|
</Layout>
|
||||||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,492 @@
|
|||||||
|
from qgis.core import (
|
||||||
|
QgsLayoutSize,
|
||||||
|
QgsUnitTypes,
|
||||||
|
QgsLayoutPoint,
|
||||||
|
)
|
||||||
|
|
||||||
|
def fletch_canvas(self,values_page):
|
||||||
|
### Modèle carto standard ###
|
||||||
|
if values_page == '1. Modèle carto standard.qpt':
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(199, 175, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(5, 25, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 205, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(145, 228, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(145, 215, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(193, 214, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(205, 125, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(104, 201, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(285, 145, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 185, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 168, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(207, 193, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(207, 180, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(273, 182, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(189, 168.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(285, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 395, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(207, 310, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(207, 298, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(273, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(189, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(408.5, 222, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(5, 23.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 249, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(323, 282, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(323, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(402, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(415, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(313, 247, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
### Modèle carto plein page ###
|
||||||
|
if values_page == '2. Modèle carto plein page.qpt':
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(210, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(133, 215, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(3, 288, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(3, 273, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(196, 283, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(205, 125, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(55, 292, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 185, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(231, 135, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(3, 201, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(3, 186, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(283, 196, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(98, 205, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(297, 420, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 370, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(219, 324, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(3, 410, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(3, 395, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(271, 394, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291, 125, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(98, 414, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(420, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(411, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(411, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 247, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(341, 196, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(3, 287, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(3, 272, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(394, 271, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(414, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(185, 292, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
### Modèle carto standard CEN ISERE###
|
||||||
|
if values_page == '3. Modèle carto standard Cen Isere.qpt':
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(199, 175, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(5, 25, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 205, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(145, 228, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(145, 215, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(193, 214, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(205, 125, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(104, 201, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size'] = QgsLayoutSize(200, 175, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position'] = QgsLayoutPoint(4.5, 18, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size_2'] = QgsLayoutSize(200, 175, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position_2'] = QgsLayoutPoint(4.5, 194.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
if self.radioButton_6.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['position_map_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['position_map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(285, 145, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 185, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 168, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(207, 193, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(207, 180, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(273, 182, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(189, 168.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size'] = QgsLayoutSize(286, 145, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position'] = QgsLayoutPoint(5.5, 13, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size_2'] = QgsLayoutSize(286, 145, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position_2'] = QgsLayoutPoint(5.5, 162.2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_7.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(285, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 395, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(207, 310, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(207, 298, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(273, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(189, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size'] = QgsLayoutSize(286, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position'] = QgsLayoutPoint(5.5, 13, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size_2'] = QgsLayoutSize(286, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position_2'] = QgsLayoutPoint(5.5, 278.2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if self.radioButton_5.isChecked() and self.radioButton_8.isChecked():
|
||||||
|
|
||||||
|
self.template_parameters['map_size'] = QgsLayoutSize(408.5, 222, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['map_position'] = QgsLayoutPoint(5, 23.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['title_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['title_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['subtitle_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['subtitle_position'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_position'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['logo_credit_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['logo_credit_position'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['legend_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['legend_position'] = QgsLayoutPoint(5, 249, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebarnumeric_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebarnumeric_position'] = QgsLayoutPoint(323, 282, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['scalebar_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['scalebar_position'] = QgsLayoutPoint(323, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['north_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['north_position'] = QgsLayoutPoint(402, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text_position'] = QgsLayoutPoint(415, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['credit_text2_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['credit_text2_position'] = QgsLayoutPoint(313, 247, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size'] = QgsLayoutSize(409.3, 222, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position'] = QgsLayoutPoint(4.5, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
self.template_parameters['image_size_2'] = QgsLayoutSize(409.3, 222, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['image_position_2'] = QgsLayoutPoint(4.6, 237.15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
|
||||||
|
# Retour des info #
|
||||||
|
return self.template_parameters
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
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'
|
||||||
|
|
||||||
|
if page_rotate == 'Portrait':
|
||||||
|
if values_page == 'A4':
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(199, 175, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(5, 25, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(5, 205, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(55, 5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(145, 228, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(145, 215, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(193, 214, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(205, 125, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(104, 201, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_rotate'] = 270
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
if values_page == 'A3':
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 50, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(2.5, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(285, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 395, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(5, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(207, 310, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(207, 298, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(273, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(189, 284, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_rotate'] = 270
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
|
||||||
|
if page_rotate == 'Landscape':
|
||||||
|
if values_page == 'A4':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(285, 145, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(286, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 185, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(5, 168, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(207, 193, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(207, 180, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(273, 182, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(291.5, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(189, 168.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_rotate'] = 270
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
if values_page == 'A3':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(408.5, 222, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(5, 23.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(409, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(46, 16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(5, 249, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(323, 282, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(55, 15, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(323, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(8.4, 12.5, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(402, 270, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(415, 123, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(313, 247, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_rotate'] = 270
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
|
||||||
|
return self.template_parameters
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
if page_rotate == 'Portrait':
|
||||||
|
if values_page == 'A4':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(200.0,200, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(6, 6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(80.0,80, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(126, 210, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(86.0,86, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(6, 208, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(14.285714285714286,14, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(189, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(51.42857142857143,7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(9, 197, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(45.714285714285715,11, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(3, 3, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(154.28571428571428,11, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(51, 3, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(51.42857142857143,6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(151, 210, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_rotate'] = 0
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(51.42857142857143,6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(229, 197, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(125.71428571428571,14, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(60, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(51.42857142857143,13, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(9, 184, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(28.571428571428573,29, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(9, 151, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
if values_page == 'A3':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(282,282, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(8, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(113,113, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(178, 296, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(121,121, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(8, 293, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(267, 28, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(73,10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(13, 278, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(64,16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(4, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(218,16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(72, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(73,8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(213, 296, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_rotate'] = 0
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(73,8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(323, 278, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(177,20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(85, 28, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(73,18, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(13, 259, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(40,40, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(13, 213, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
if page_rotate == 'Landscape':
|
||||||
|
if values_page == 'A4':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(200.0,200, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(6, 6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(85.71428571428571,69, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(209, 3, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(85.71428571428571,131, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(209, 74, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(14.285714285714286,14, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(189, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(51.42857142857143,7, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(9, 197, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(45.714285714285715,11, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(3, 3, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(154.28571428571428,11, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(51, 3, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(51.42857142857143,6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(151, 197, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_rotate'] = 0
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(51.42857142857143,6, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(229, 197, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(125.71428571428571,14, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(60, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(51.42857142857143,13, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(9, 184, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(28.571428571428573,29, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(9, 151, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
if values_page == 'A3':
|
||||||
|
self.template_parameters['Carte_size'] = QgsLayoutSize(282,282, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_locals'] = QgsLayoutPoint(8, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_rotate'] = 0
|
||||||
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(121,97, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(294, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Carte_2_rotate'] = 0
|
||||||
|
self.template_parameters['Legande_size'] = QgsLayoutSize(121,185, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_locals'] = QgsLayoutPoint(294, 105, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Legande_rotate'] = 0
|
||||||
|
self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(266, 28, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Arrow_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_size'] = QgsLayoutSize(73,10, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(12, 278, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_size'] = QgsLayoutSize(64,16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_locals'] = QgsLayoutPoint(4, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_rotate'] = 0
|
||||||
|
self.template_parameters['Titre_size'] = QgsLayoutSize(218,16, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_locals'] = QgsLayoutPoint(73, 4, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Titre_rotate'] = 0
|
||||||
|
self.template_parameters['Credit_size'] = QgsLayoutSize(73,8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_locals'] = QgsLayoutPoint(214, 278, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Credit_rotate'] = 0
|
||||||
|
self.template_parameters['Source_size'] = QgsLayoutSize(73,8, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_locals'] = QgsLayoutPoint(322, 278, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Source_rotate'] = 0
|
||||||
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(177,20, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(85, 28, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
|
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(73,18, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(12, 260, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(40,40, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(12, 214, QgsUnitTypes.LayoutMillimeters)
|
||||||
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
return self.template_parameters
|
||||||
@@ -25,7 +25,7 @@ def fletch_canvas(self):
|
|||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(200, 8, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 10, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Logo_size'] = QgsLayoutSize(48, 17, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Logo_position'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters)
|
||||||
@@ -91,7 +91,7 @@ def fletch_canvas(self):
|
|||||||
self.template_parameters['Logo_2_rotate'] = 0
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
|
|
||||||
if page_rotate == 'Landscape':
|
if page_rotate == 'Landscape':
|
||||||
if values_page == 'A3':
|
if values_page == 'A4':
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(420, 297, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_size'] = QgsLayoutSize(420, 297, QgsUnitTypes.LayoutMillimeters)
|
||||||
@@ -128,7 +128,7 @@ def fletch_canvas(self):
|
|||||||
self.template_parameters['Sous_titre_rotate'] = 0
|
self.template_parameters['Sous_titre_rotate'] = 0
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0
|
self.template_parameters['Echelle_2_rotate'] = 0
|
||||||
self.template_parameters['Logo_2_rotate'] = 0
|
self.template_parameters['Logo_2_rotate'] = 0
|
||||||
if values_page == 'A4':
|
if values_page == 'A3':
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100, 100, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters)
|
self.template_parameters['Carte_size'] = QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters)
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<Layout worldFileMap="" name="test.qpt" printResolution="300" units="mm">
|
||||||
|
<Snapper snapToGrid="0" snapToItems="1" tolerance="5" snapToGuides="1"/>
|
||||||
|
<Grid resolution="10" offsetUnits="mm" offsetX="0" resUnits="mm" offsetY="0"/>
|
||||||
|
<PageCollection>
|
||||||
|
<symbol name="" clip_to_extent="1" type="fill" force_rhr="0" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="color" value="255,255,255,255" type="QString"/>
|
||||||
|
<Option name="joinstyle" value="miter" type="QString"/>
|
||||||
|
<Option name="offset" value="0,0" type="QString"/>
|
||||||
|
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="offset_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="outline_color" value="35,35,35,255" type="QString"/>
|
||||||
|
<Option name="outline_style" value="no" type="QString"/>
|
||||||
|
<Option name="outline_width" value="0.26" type="QString"/>
|
||||||
|
<Option name="outline_width_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="style" value="solid" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
<prop k="border_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="color" v="255,255,255,255"/>
|
||||||
|
<prop k="joinstyle" v="miter"/>
|
||||||
|
<prop k="offset" v="0,0"/>
|
||||||
|
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="offset_unit" v="MM"/>
|
||||||
|
<prop k="outline_color" v="35,35,35,255"/>
|
||||||
|
<prop k="outline_style" v="no"/>
|
||||||
|
<prop k="outline_width" v="0.26"/>
|
||||||
|
<prop k="outline_width_unit" v="MM"/>
|
||||||
|
<prop k="style" v="solid"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
<LayoutItem zValue="0" id="" itemRotation="0" position="0,0,mm" frame="false" templateUuid="{5c80221d-7561-455b-94fd-69a27d877679}" referencePoint="0" opacity="1" frameJoinStyle="miter" uuid="{5c80221d-7561-455b-94fd-69a27d877679}" blendMode="0" size="297,210,mm" groupUuid="" outlineWidthM="0.3,mm" positionOnPage="0,0,mm" type="65638" excludeFromExports="0" positionLock="false" background="true" visibility="1">
|
||||||
|
<FrameColor green="0" blue="0" red="0" alpha="255"/>
|
||||||
|
<BackgroundColor green="255" blue="255" red="255" alpha="255"/>
|
||||||
|
<LayoutObject>
|
||||||
|
<dataDefinedProperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</dataDefinedProperties>
|
||||||
|
<customproperties>
|
||||||
|
<Option/>
|
||||||
|
</customproperties>
|
||||||
|
</LayoutObject>
|
||||||
|
<symbol name="" clip_to_extent="1" type="fill" force_rhr="0" alpha="1">
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
<layer class="SimpleFill" locked="0" enabled="1" pass="0">
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="color" value="255,255,255,255" type="QString"/>
|
||||||
|
<Option name="joinstyle" value="miter" type="QString"/>
|
||||||
|
<Option name="offset" value="0,0" type="QString"/>
|
||||||
|
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
|
||||||
|
<Option name="offset_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="outline_color" value="35,35,35,255" type="QString"/>
|
||||||
|
<Option name="outline_style" value="no" type="QString"/>
|
||||||
|
<Option name="outline_width" value="0.26" type="QString"/>
|
||||||
|
<Option name="outline_width_unit" value="MM" type="QString"/>
|
||||||
|
<Option name="style" value="solid" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
<prop k="border_width_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="color" v="255,255,255,255"/>
|
||||||
|
<prop k="joinstyle" v="miter"/>
|
||||||
|
<prop k="offset" v="0,0"/>
|
||||||
|
<prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/>
|
||||||
|
<prop k="offset_unit" v="MM"/>
|
||||||
|
<prop k="outline_color" v="35,35,35,255"/>
|
||||||
|
<prop k="outline_style" v="no"/>
|
||||||
|
<prop k="outline_width" v="0.26"/>
|
||||||
|
<prop k="outline_width_unit" v="MM"/>
|
||||||
|
<prop k="style" v="solid"/>
|
||||||
|
<data_defined_properties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="name" value="" type="QString"/>
|
||||||
|
<Option name="properties"/>
|
||||||
|
<Option name="type" value="collection" type="QString"/>
|
||||||
|
</Option>
|
||||||
|
</data_defined_properties>
|
||||||
|
</layer>
|
||||||
|
</symbol>
|
||||||
|
</LayoutItem>
|
||||||
|
<GuideCollection visible="1"/>
|
||||||
|
</PageCollection>
|
||||||
|
<customproperties>
|
||||||
|
<Option type="Map">
|
||||||
|
<Option name="atlasRasterFormat" value="png" type="QString"/>
|
||||||
|
<Option name="imageAntialias" value="true" type="bool"/>
|
||||||
|
<Option name="imageCropMarginBottom" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginLeft" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginRight" value="0" type="int"/>
|
||||||
|
<Option name="imageCropMarginTop" value="0" type="int"/>
|
||||||
|
<Option name="imageCropToContents" value="false" type="bool"/>
|
||||||
|
<Option name="singleFile" value="true" type="bool"/>
|
||||||
|
</Option>
|
||||||
|
</customproperties>
|
||||||
|
<Atlas coverageLayer="" pageNameExpression="" filterFeatures="0" filenamePattern="'output_'||@atlas_featurenumber" enabled="0" hideCoverage="0" sortFeatures="0"/>
|
||||||
|
</Layout>
|
||||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
@@ -4,7 +4,6 @@ import configparser
|
|||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import base64
|
import base64
|
||||||
import socket
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
@@ -90,7 +89,7 @@ def resources_path(*args):
|
|||||||
:return: Absolute path to the resources folder.
|
:return: Absolute path to the resources folder.
|
||||||
:rtype: str
|
:rtype: str
|
||||||
"""
|
"""
|
||||||
path = abspath(abspath(join(plugin_path(), "CenRa_AUTOMAP\\tools")))
|
path = abspath(abspath(join(plugin_path(), "CenIsere_AUTOMAP/tools")))
|
||||||
for item in args:
|
for item in args:
|
||||||
path = abspath(join(path, item))
|
path = abspath(join(path, item))
|
||||||
return path
|
return path
|
||||||
@@ -108,20 +107,25 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def pyperclip():
|
def login_base(take=None):
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
from CenRa_METABASE.tools.PythonSQL import host,port,dbname,password,os_user
|
||||||
dst = abspath(abspath(join(plugin_path(), "CenRa_AUTOMAP\\tools\\")))
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
res_ident = first_cur.fetchone()
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
|
|
||||||
try:
|
|
||||||
shutil.copy(src, dst)
|
|
||||||
except:
|
|
||||||
print('404')
|
|
||||||
|
|
||||||
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
|
user = res_ident[1]
|
||||||
|
|
||||||
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
|
|
||||||
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
|
|
||||||
|
if take:
|
||||||
|
return cur,con
|
||||||
|
else:
|
||||||
|
return cur
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -164,15 +168,12 @@ def maj_verif(NAME):
|
|||||||
except:
|
except:
|
||||||
binar = False
|
binar = False
|
||||||
if binar:
|
if binar:
|
||||||
try:
|
version_web = str(urllib.request.urlopen(URL).read())
|
||||||
version_web = str(urllib.request.urlopen(URL).read())
|
plugin_num = version_web.find(NAME)
|
||||||
plugin_num = version_web.find(NAME)
|
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
||||||
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
||||||
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
if version_plugin != version:
|
||||||
if version_plugin != version:
|
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
||||||
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
|
||||||
except:
|
|
||||||
print("error gitea version ssl")
|
|
||||||
else:
|
else:
|
||||||
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
||||||
|
|
||||||
@@ -183,4 +184,4 @@ def devlog(NAME):
|
|||||||
import qgis
|
import qgis
|
||||||
devmaj = '<head><style>* {margin:0; padding:0; }</style></head>'
|
devmaj = '<head><style>* {margin:0; padding:0; }</style></head>'
|
||||||
devmaj = devmaj+qgis.utils.pluginMetadata(NAME,'changelog')
|
devmaj = devmaj+qgis.utils.pluginMetadata(NAME,'changelog')
|
||||||
return devmaj
|
return devmaj
|
||||||
@@ -1,96 +1,96 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>CenRa_Metabase_editorwidget_base</class>
|
<class>CenRa_Metabase_editorwidget_base</class>
|
||||||
<widget class="QDialog" name="CenRa_Metabase_editorwidget_base">
|
<widget class="QDialog" name="CenRa_Metabase_editorwidget_base">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>471</width>
|
<width>471</width>
|
||||||
<height>594</height>
|
<height>594</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Journal des modifications</string>
|
<string>Metabase</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
<normaloff>../../CenRa_Metabase/tools/ui/icon.svg</normaloff>../../CenRa_Metabase/tools/ui/icon.svg</iconset>
|
<normaloff>../../CenRa_Metabase/tools/ui/icon.svg</normaloff>../../CenRa_Metabase/tools/ui/icon.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
<property name="mouseTracking">
|
<property name="mouseTracking">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="focusPolicy">
|
<property name="focusPolicy">
|
||||||
<enum>Qt::NoFocus</enum>
|
<enum>Qt::NoFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
<property name="frameShadow">
|
||||||
<enum>QFrame::Plain</enum>
|
<enum>QFrame::Plain</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>547</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>451</width>
|
<width>451</width>
|
||||||
<height>541</height>
|
<height>541</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QWebView" name="viewer" native="true">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>20</y>
|
<y>20</y>
|
||||||
<width>431</width>
|
<width>431</width>
|
||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
<property name="url" stdset="0">
|
||||||
<url>
|
<url>
|
||||||
<string>about:blank</string>
|
<string>about:blank</string>
|
||||||
</url>
|
</url>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::Ok</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QWebView</class>
|
<class>QWebView</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
<header location="global">QtWebKitWidgets/QWebView</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# CenRa_AutoMap
|
|
||||||
---
|
|
||||||
Outil de création de mise en page,
|
|
||||||
Permet de préprogramé des mise en page pour les mêtre à disposition des collégue.
|
|
||||||
|
|
||||||
> [Point de départ de création du plugin](https://github.com/CEN-Nouvelle-Aquitaine/MapCEN)
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
__copyright__ = "Copyright 2021, 3Liz"
|
|
||||||
__license__ = "GPL version 3"
|
|
||||||
__email__ = "info@3liz.org"
|
|
||||||
|
|
||||||
|
|
||||||
def classFactory(iface):
|
|
||||||
_ = iface
|
|
||||||
from CenRa_AUTOMAP.CenRa_AutoMap import PgAutoMap
|
|
||||||
return PgAutoMap()
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
# This file contains metadata for your plugin.
|
|
||||||
|
|
||||||
# This file should be included when you package your plugin.# Mandatory items:
|
|
||||||
|
|
||||||
[general]
|
|
||||||
name=CenRa_AutoMap
|
|
||||||
qgisMinimumVersion=3.0
|
|
||||||
description=CenRa_AutoMap
|
|
||||||
version=1.4
|
|
||||||
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=<h2>CenRa_AUTOMAP:</h2></br><p><h3>03/04/2025 - Version 1.4: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 1.3: </h3> - Fenêtre redimensionnable avec déplaçable avec la mollette sourit.</p></br><p><h3>25/02/2025 - Version 1.2: </h3> - DockWidget pour ouverture de couche avec theme.</p></br><p><h3>28/01/2025 - Version 1.1: </h3> - Multi-Composeur pris en charge.</p></br><p><h3>27/01/2025 - Version 1.0: </h3> - Version releases.</br> - Ajoute un message d'avertissement au moment d'écraser la mise en page.</br> - Ajoute prénom et nom dans la réalisation.</br> - Utilisation de Calibri.</p></br><p><h3>13/01/2025 - Version 0.1.10: </h3> - Correctif.</p></br><p><h3>07/01/2025 - Version 0.1.9: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>19/12/2024 - Version 0.1.8: </h3> - Nouvelle mise en page.</br> - Incrémentation automatique de nouveau modele de mise en page. </br> - Correctif de bug.</p></br><p><h3>21/10/2024 - Version 0.1.7: </h3> - Epurations du code.</p></br><p><h3>07/10/2024 - Version 0.1.6: </h3> - Option de bibliotheque de logo custome.</p></br><p><h3>03/10/2024 - Version 0.1.5: </h3> - Remonte la fênetre dans la pille.</br> - Gestion du nombre de colonne dans la légend.</br></p></br><p><h3>02/10/2024 - Version 0.1.4: </h3> - Mise en page plein écrant.</br></p></br><p><h3>01/10/2024 - Version 0.1.3: </h3> - Récupération du titre et sous-titre pour mise en page existente.</br> - Integration de bibliotheque de logo.</br> - Integration de gestionaire pour les source de donnée.</br> - Mise en place d'une bar d'echelle adaptative. </br></p></br><p><h3>30/09/2024 - Version 0.1.2: </h3> - Activation du thème. </br> - Ajouter une carte de suivie. </br><p></br><h3>27/09/2024 - Version 0.1.1: </h3> - Ajout d'une liste déroulante pour les sources de données. </br>- Bouton pour ajouter des fonts de carte customisés. </br>- Fonctionnalité de génération d'atlas. </p></br><p><h3>26/09/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_AutoMap avec une seul mise en page. </p></br>
|
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
|
||||||
tags=python
|
|
||||||
|
|
||||||
|
|
||||||
category=Plugins
|
|
||||||
icon=icon.png
|
|
||||||
# experimental flag
|
|
||||||
experimental=False
|
|
||||||
|
|
||||||
# deprecated flag (applies to the whole plugin, not just a single version)
|
|
||||||
deprecated=False
|
|
||||||
|
|
||||||
# Since QGIS 3.8, a comma separated list of plugins to be installed
|
|
||||||
# (or upgraded) can be specified.
|
|
||||||
# Check the documentation for more information.
|
|
||||||
# plugin_dependencies=
|
|
||||||
|
|
||||||
Category of the plugin: Raster, Vector, Database or Web
|
|
||||||
# category=cenra,mise en page,atlas
|
|
||||||
|
|
||||||
# If the plugin can run on QGIS Server.
|
|
||||||
server=False
|
|
||||||
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
import logging
|
|
||||||
import os
|
|
||||||
from PyQt5.QtCore import QSettings
|
|
||||||
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 importlib import import_module
|
|
||||||
from qgis.core import (
|
|
||||||
NULL,
|
|
||||||
QgsApplication,
|
|
||||||
QgsScaleBarSettings,
|
|
||||||
QgsDataSourceUri,
|
|
||||||
QgsProject,
|
|
||||||
QgsProviderConnectionException,
|
|
||||||
QgsProviderRegistry,
|
|
||||||
QgsRasterLayer,
|
|
||||||
QgsSettings,
|
|
||||||
QgsVectorLayer,
|
|
||||||
QgsGeometry,
|
|
||||||
QgsPrintLayout,
|
|
||||||
QgsReadWriteContext,
|
|
||||||
QgsLayoutItemMap,
|
|
||||||
QgsLayoutItemPage,
|
|
||||||
QgsLayoutSize,
|
|
||||||
QgsUnitTypes,
|
|
||||||
QgsLayoutPoint,
|
|
||||||
QgsLayoutItemLabel,
|
|
||||||
QgsLayoutItemPicture,
|
|
||||||
QgsLayoutItemLegend,
|
|
||||||
QgsLegendStyle,
|
|
||||||
QgsLayoutItemScaleBar,
|
|
||||||
QgsLayerTreeGroup,
|
|
||||||
QgsCoordinateReferenceSystem,
|
|
||||||
QgsCoordinateTransform,
|
|
||||||
QgsLayerTree,
|
|
||||||
QgsLayoutTableColumn,
|
|
||||||
QgsRectangle,
|
|
||||||
QgsLayoutItemMapOverviewStack,
|
|
||||||
QgsMapThemeCollection,
|
|
||||||
)
|
|
||||||
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
|
||||||
from qgis.PyQt.QtWidgets import (
|
|
||||||
QDockWidget,
|
|
||||||
QAction,
|
|
||||||
QMessageBox,
|
|
||||||
QPushButton,
|
|
||||||
QDockWidget,
|
|
||||||
QFileDialog,
|
|
||||||
QInputDialog,
|
|
||||||
QMenu,
|
|
||||||
QToolButton,
|
|
||||||
QTableWidget,
|
|
||||||
QTableWidgetItem,
|
|
||||||
QVBoxLayout,
|
|
||||||
)
|
|
||||||
import psycopg2
|
|
||||||
from PyQt5 import QtGui
|
|
||||||
from PyQt5 import QtWidgets
|
|
||||||
from qgis.PyQt.QtXml import QDomDocument
|
|
||||||
from qgis.utils import iface
|
|
||||||
import glob
|
|
||||||
try:
|
|
||||||
|
|
||||||
Enabled = True
|
|
||||||
from .tools.StyleLayer import *
|
|
||||||
except:
|
|
||||||
Enabled = False
|
|
||||||
from .tools.resources import (
|
|
||||||
load_ui,
|
|
||||||
resources_path,
|
|
||||||
send_issues,
|
|
||||||
)
|
|
||||||
from .issues import CenRa_Issues
|
|
||||||
|
|
||||||
from datetime import date
|
|
||||||
|
|
||||||
EDITOR_CLASS = load_ui('CenRa_AutoMapStyle_base.ui')
|
|
||||||
LOGGER = logging.getLogger('CenRa_AutoMapStyle')
|
|
||||||
|
|
||||||
class AutoMap_Style(QDockWidget, EDITOR_CLASS):
|
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
|
||||||
_ = parent
|
|
||||||
super().__init__()
|
|
||||||
self.setupUi(self)
|
|
||||||
self.settings = QgsSettings()
|
|
||||||
self.s = QSettings()
|
|
||||||
|
|
||||||
self.toolButton.setIcon(QtGui.QIcon(resources_path('icons','loader.png')))
|
|
||||||
|
|
||||||
self.loadComboBox()
|
|
||||||
self.toolButton.clicked.connect(self.loadStyle)
|
|
||||||
|
|
||||||
def loadComboBox(self):
|
|
||||||
style = self.comboBox
|
|
||||||
style.clear()
|
|
||||||
style.addItem('')
|
|
||||||
style.addItem('Foncier')
|
|
||||||
style.addItem('Administratif')
|
|
||||||
|
|
||||||
def loadStyle(self):
|
|
||||||
style = self.comboBox.currentText()
|
|
||||||
if style == 'Foncier':
|
|
||||||
self.loadFoncier()
|
|
||||||
if style == 'Administratif':
|
|
||||||
self.loadAdministratif()
|
|
||||||
|
|
||||||
def loginfo(self):
|
|
||||||
InputDialog = QInputDialog()
|
|
||||||
mdp = InputDialog.getText(None,'Foncier','Mot de pass base foncier:')
|
|
||||||
return mdp
|
|
||||||
|
|
||||||
def loadAdministratif(self):
|
|
||||||
mtc = QgsProject.instance().mapThemeCollection()
|
|
||||||
theme_name = 'Administratif'
|
|
||||||
theme_state = mtc.mapThemeState(theme_name)
|
|
||||||
|
|
||||||
mdp = self.loginfo()[0]
|
|
||||||
if mdp != '':
|
|
||||||
# couche = [['_form_power_rename','_form_power_rename_contour_2025'],['_42_bois_du_roy','_42_bois_du_roy_habitat_2021']]
|
|
||||||
couche = [['administratif','departements2024','gid'],['administratif','v_communes','id']]
|
|
||||||
for schema_table in couche:
|
|
||||||
schema = schema_table[0]
|
|
||||||
table = schema_table[1]
|
|
||||||
key = schema_table[2]
|
|
||||||
uri = QgsDataSourceUri()
|
|
||||||
uri.setConnection(host ,port ,dbname ,os_user ,mdp)
|
|
||||||
# nom du schéma à remplacer: "hydrographie" à supprimer et mettre "couches_collaboratives" lorsqu'on aura regroupé les couches à modifier dans un même schéma
|
|
||||||
uri.setDataSource(schema, table, "geom")
|
|
||||||
uri.setKeyColumn(key)
|
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
|
||||||
if layer.isValid() == True:
|
|
||||||
layerName = layer.name()
|
|
||||||
listStyle = layer.listStylesInDatabase()
|
|
||||||
try:
|
|
||||||
StyleExist = True
|
|
||||||
indexStyle = (listStyle[2].index(layerName))
|
|
||||||
except:
|
|
||||||
StyleExist = False
|
|
||||||
if StyleExist:
|
|
||||||
StyleId = (listStyle[1][indexStyle])
|
|
||||||
styleTuple = layer.getStyleFromDatabase(StyleId)
|
|
||||||
styleqml = styleTuple[0]
|
|
||||||
styledoc = QDomDocument()
|
|
||||||
styledoc.setContent(styleqml)
|
|
||||||
layer.importNamedStyle(styledoc)
|
|
||||||
|
|
||||||
# Ajout de la couche au canevas QGIS
|
|
||||||
QgsProject.instance().addMapLayer(layer)
|
|
||||||
|
|
||||||
layer_record = QgsMapThemeCollection.MapThemeLayerRecord(layer)
|
|
||||||
theme_state.addLayerRecord(layer_record)
|
|
||||||
mtc.insert(theme_name, theme_state)
|
|
||||||
|
|
||||||
def loadFoncier(self):
|
|
||||||
mtc = QgsProject.instance().mapThemeCollection()
|
|
||||||
theme_name = 'Foncier'
|
|
||||||
theme_state = mtc.mapThemeState(theme_name)
|
|
||||||
|
|
||||||
mdp = self.loginfo()[0]
|
|
||||||
if mdp != '':
|
|
||||||
# couche = [['_form_power_rename','_form_power_rename_contour_2025'],['_42_bois_du_roy','_42_bois_du_roy_habitat_2021']]
|
|
||||||
couche = [['sites','v_sites_parcelles'],['sites','v_sites'],['inventaires','suivi_zh'],['inventaires','suivi_ps']]
|
|
||||||
for schema_table in couche:
|
|
||||||
schema = schema_table[0]
|
|
||||||
table = schema_table[1]
|
|
||||||
uri = QgsDataSourceUri()
|
|
||||||
uri.setConnection(host ,port ,dbname ,os_user ,mdp)
|
|
||||||
# nom du schéma à remplacer: "hydrographie" à supprimer et mettre "couches_collaboratives" lorsqu'on aura regroupé les couches à modifier dans un même schéma
|
|
||||||
uri.setDataSource(schema, table, "geom")
|
|
||||||
uri.setKeyColumn('gid')
|
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
|
||||||
if layer.isValid() == True:
|
|
||||||
layerName = layer.name()
|
|
||||||
listStyle = layer.listStylesInDatabase()
|
|
||||||
try:
|
|
||||||
StyleExist = True
|
|
||||||
indexStyle = (listStyle[2].index(layerName))
|
|
||||||
except:
|
|
||||||
StyleExist = False
|
|
||||||
if StyleExist:
|
|
||||||
StyleId = (listStyle[1][indexStyle])
|
|
||||||
styleTuple = layer.getStyleFromDatabase(StyleId)
|
|
||||||
styleqml = styleTuple[0]
|
|
||||||
styledoc = QDomDocument()
|
|
||||||
styledoc.setContent(styleqml)
|
|
||||||
layer.importNamedStyle(styledoc)
|
|
||||||
|
|
||||||
# Ajout de la couche au canevas QGIS
|
|
||||||
QgsProject.instance().addMapLayer(layer)
|
|
||||||
|
|
||||||
layer_record = QgsMapThemeCollection.MapThemeLayerRecord(layer)
|
|
||||||
theme_state.addLayerRecord(layer_record)
|
|
||||||
mtc.insert(theme_name, theme_state)
|
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,168 +0,0 @@
|
|||||||
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'
|
|
||||||
|
|
||||||
if page_rotate == 'Portrait':
|
|
||||||
if values_page == 'A4':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(198.85714285714286,175, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(5, 25, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0.0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0,50, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(5, 25, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(198.85714285714286,90, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(5, 205, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0.0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(12.0,12, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(191, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(54.857142857142854,5, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(145, 229, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(46.0,16, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0.0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(198.85714285714286,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(100.0,4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(205, 158.0, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 270.0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(100.0,4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(104, 200, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0.0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(198.85714285714286,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 12, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(54.857142857142854,15, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(145, 215, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50.0,20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 275, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0.0
|
|
||||||
if values_page == 'A3':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(280,247, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(7, 35, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0.0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(70,70, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(7, 35, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(280,127, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(7, 289, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0.0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(17,17, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(269, 8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(77,7, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(205, 323, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(65,23, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(7, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0.0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(280,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(7, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(141,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(289, 223, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 270.0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(141,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(147, 282, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0.0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(280,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(7, 17, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(77,21, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(205, 303, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(70,28, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(7, 388, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0.0
|
|
||||||
|
|
||||||
if page_rotate == 'Landscape':
|
|
||||||
if values_page == 'A4':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(285.14285714285717,145, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0.0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(100.0,100, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(6, 23, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(285.14285714285717,41, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(6, 168, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0.0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(13.142857142857142,12, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(277, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(54.857142857142854,15, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(232, 193, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(46.0,16, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0.0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(286.0,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(100.0,4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(291, 127.0, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 270.0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(100.0,4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(189, 169, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0.0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(286.0,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(5, 12, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(54.857142857142854,15, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(232, 179, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(50.0,50, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(6, 118, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0.0
|
|
||||||
if values_page == 'A3':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(402,205, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(8, 32, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0.0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(141,141, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(8, 32, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(402,58, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(8, 237, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0.0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(19,17, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(391, 8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(77,21, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(327, 272, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(65,23, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(7, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0.0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(403,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(7, 6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(141,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(410, 179, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 270.0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(141,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(267, 238, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0.0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(403,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(7, 17, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0.0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(77,21, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(327, 252, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0.0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(70,70, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(8, 166, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0.0
|
|
||||||
|
|
||||||
return self.template_parameters
|
|
||||||
@@ -1,167 +0,0 @@
|
|||||||
|
|
||||||
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'
|
|
||||||
|
|
||||||
if page_rotate == 'Portrait':
|
|
||||||
if values_page == 'A4':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(168.0,262, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(41, 1, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(78.85714285714286,70, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(130, 1, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(168.0,32, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(41, 264, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(14.285714285714286,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(13, 254, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(38.857142857142854,7, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(1, 289, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(34.857142857142854,10, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(3, 139, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(38.857142857142854,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(1, 3, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(74.85714285714286,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(43, 3, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(104.0,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(104, 256, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(38.857142857142854,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(1, 14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(38.857142857142854,13, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(1, 276, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(30.0,30, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(41, 233, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0
|
|
||||||
if values_page == 'A3':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(237,369, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(58, 2, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(111,99, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(183, 2, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(237,45, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(58, 372, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(19, 358, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(55,10, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(2, 408, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(49,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(4, 196, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(55,15, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(106,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(60, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(147,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(147, 361, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(55,20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(2, 20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(55,19, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(2, 389, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(42,42, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(58, 329, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0
|
|
||||||
if page_rotate == 'Landscape':
|
|
||||||
if values_page == 'A4':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(254.85714285714286,175, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(41, 1, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(78.85714285714286,70, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(217, 1, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(254.85714285714286,32, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(41, 177, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(14.285714285714286,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(13, 168, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(38.857142857142854,7, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(1, 202, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(34.857142857142854,10, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(3, 94, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(38.857142857142854,11, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(1, 3, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(74.85714285714286,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(43, 3, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(104.0,6, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(190, 169, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(38.857142857142854,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(1, 14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(38.857142857142854,13, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(1, 189, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(30.0,30, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(41, 146, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0
|
|
||||||
if values_page == 'A3':
|
|
||||||
self.template_parameters['Carte_size'] = QgsLayoutSize(359,247, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_locals'] = QgsLayoutPoint(58, 2, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_rotate'] = 0
|
|
||||||
self.template_parameters['Carte_2_size'] = QgsLayoutSize(111,99, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(306, 2, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Carte_2_rotate'] = 0
|
|
||||||
self.template_parameters['Legande_size'] = QgsLayoutSize(359,45, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_locals'] = QgsLayoutPoint(58, 250, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Legande_rotate'] = 0
|
|
||||||
self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_locals'] = QgsLayoutPoint(19, 237, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Arrow_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_size'] = QgsLayoutSize(55,10, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_locals'] = QgsLayoutPoint(2, 285, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_size'] = QgsLayoutSize(49,14, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_locals'] = QgsLayoutPoint(4, 133, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_rotate'] = 0
|
|
||||||
self.template_parameters['Titre_size'] = QgsLayoutSize(55,15, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Titre_rotate'] = 0
|
|
||||||
self.template_parameters['Credit_size'] = QgsLayoutSize(106,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_locals'] = QgsLayoutPoint(60, 4, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Credit_rotate'] = 0
|
|
||||||
self.template_parameters['Source_size'] = QgsLayoutSize(147,8, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_locals'] = QgsLayoutPoint(268, 238, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Source_rotate'] = 0
|
|
||||||
self.template_parameters['Sous_titre_size'] = QgsLayoutSize(55,20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(2, 20, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Sous_titre_rotate'] = 0
|
|
||||||
self.template_parameters['Echelle_2_size'] = QgsLayoutSize(55,19, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(2, 267, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Echelle_2_rotate'] = 0
|
|
||||||
self.template_parameters['Logo_2_size'] = QgsLayoutSize(42,42, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(58, 206, QgsUnitTypes.LayoutMillimeters)
|
|
||||||
self.template_parameters['Logo_2_rotate'] = 0
|
|
||||||
return self.template_parameters
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>CenRa_AutoMapStyle</class>
|
|
||||||
<widget class="QDockWidget" name="CenRa_AutoMapStyle">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>400</width>
|
|
||||||
<height>48</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="floating">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="features">
|
|
||||||
<set>QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable</set>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>CenRa_AutoMap</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="dockWidgetContents">
|
|
||||||
<property name="autoFillBackground">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox">
|
|
||||||
<property name="autoFillBackground">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>12</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Style:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<widget class="QToolButton" name="toolButton">
|
|
||||||
<property name="autoFillBackground">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
||||||
@@ -12,17 +12,15 @@ import qgis
|
|||||||
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
import socket
|
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
pyperclip,
|
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
pyperclip()
|
|
||||||
from .copie_editor import Copie_Editor
|
from .copie_editor import Copie_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import CopieAboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
|
|
||||||
@@ -42,7 +40,7 @@ class PgCopie:
|
|||||||
maj_verif(NAME)
|
maj_verif(NAME)
|
||||||
|
|
||||||
# Display About window on first use
|
# Display About window on first use
|
||||||
version = qgis.utils.pluginMetadata('CenRa_COPIE','version')
|
version = qgis.utils.pluginMetadata('CenRa_Copie','version')
|
||||||
s = QSettings()
|
s = QSettings()
|
||||||
versionUse = s.value("copie/version", 1, type=str)
|
versionUse = s.value("copie/version", 1, type=str)
|
||||||
if str(versionUse) != str(version) :
|
if str(versionUse) != str(version) :
|
||||||
@@ -68,20 +66,12 @@ class PgCopie:
|
|||||||
self.copie_editor = QAction(icon, 'Copie',None)
|
self.copie_editor = QAction(icon, 'Copie',None)
|
||||||
self.toolBar.addAction(self.copie_editor)
|
self.toolBar.addAction(self.copie_editor)
|
||||||
self.copie_editor.triggered.connect(self.open_editor)
|
self.copie_editor.triggered.connect(self.open_editor)
|
||||||
self.copie_editor.setEnabled(False)
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
if IPAddr[0:11] == "100.100.100":
|
|
||||||
self.copie_editor.setEnabled(True)
|
|
||||||
elif IPAddr[0:9] == "192.168.0":
|
|
||||||
self.copie_editor.setEnabled(True)
|
|
||||||
elif IPAddr[0:9] == "192.168.1":
|
|
||||||
self.copie_editor.setEnabled(True)
|
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
dialog = AboutDialog(iface)
|
dialog = CopieAboutDialog(iface)
|
||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
def open_help():
|
def open_help():
|
||||||
""" Open the online help. """
|
""" Open the online help. """
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ ABOUT_FORM_CLASS, _ = uic.loadUiType(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
class CopieAboutDialog(QDialog, ABOUT_FORM_CLASS):
|
||||||
|
|
||||||
""" About - Let the user display the about dialog. """
|
""" About - Let the user display the about dialog. """
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ from PyQt5 import QtGui
|
|||||||
from qgis.core import *
|
from qgis.core import *
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
|
|
||||||
from .tools.PythonSQL import login_base
|
from .tools.PythonSQL import *
|
||||||
from .tools.SQLRequet import *
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
|
login_base,
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
@@ -62,22 +62,21 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# tablename
|
# tablename
|
||||||
source_tablename = [s for s in list_sources if "table" in s][0].split('"')[3]
|
source_tablename = [s for s in list_sources if "table" in s][0].split('"')[3]
|
||||||
|
|
||||||
|
|
||||||
account = login_base("account")
|
|
||||||
sigdb = account[5]
|
|
||||||
|
|
||||||
|
|
||||||
if source_db != sigdb:
|
if source_db != sigdb:
|
||||||
#self.iface.messageBar().pushMessage(u"Un référentiel ne peut être copié, utilisez les filtres !", level=QgsMessageBar.CRITICAL, duration=10)
|
#self.iface.messageBar().pushMessage(u"Un référentiel ne peut être copié, utilisez les filtres !", level=QgsMessageBar.CRITICAL, duration=10)
|
||||||
self.iface.messageBar().pushMessage("Ooops", u"Vous ne pouvez copier des couches que dans sigXX", level=Qgis.Critical, duration=5)
|
self.iface.messageBar().pushMessage("Ooops", u"Vous ne pouvez copier des couches que dans sigXX", level=Qgis.Critical, duration=5)
|
||||||
else:
|
|
||||||
user = account[0]
|
else :
|
||||||
mdp = account[1]
|
|
||||||
host = account[2]
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
port = account[3]
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
dbname = account[4]
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
cur = account[7]
|
res_ident = first_cur.fetchone()
|
||||||
con = account[8]
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
|
user = res_ident[1]
|
||||||
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
|
|
||||||
# Creation de la liste des schemas de la base de donnees
|
# Creation de la liste des schemas de la base de donnees
|
||||||
SQL = """WITH list_schema AS (
|
SQL = """WITH list_schema AS (
|
||||||
@@ -116,15 +115,15 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
#******************************debut script*********************************
|
#******************************debut script*********************************
|
||||||
|
|
||||||
|
|
||||||
account = login_base("account")
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
user = account[0]
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
mdp = account[1]
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
host = account[2]
|
res_ident = first_cur.fetchone()
|
||||||
port = account[3]
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
dbname = account[4]
|
user = res_ident[1]
|
||||||
cur = account[7]
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
con = account[8]
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
# Récupération de la couche active
|
# Récupération de la couche active
|
||||||
layer = self.iface.activeLayer()
|
layer = self.iface.activeLayer()
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
name=CenRA_COPIE
|
name=CenRA_COPIE
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
description=Permet la copie d'une table dans une base PostGis
|
description=Permet la copie d'une table dans une base PostGis
|
||||||
version=2.2
|
version=2.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ email=si_besoin@cen-rhonealpes.fr
|
|||||||
# Recommended items:
|
# Recommended items:
|
||||||
|
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_COPIE:</h2></br><p><h3>03/04/2025 - Version 2.2: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>22/10/2024 - Version 2:</h3>- Refonte du code.</p></br><p><h3>13/09/2024 - Version 1.5:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
changelog=<h2>CenRa_COPIE:</h2></br><p><h3>22/10/2024 - Version 2:</h3>- Refonte du code.</p></br><p><h3>13/09/2024 - Version 1.5:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=cenra, database, table
|
tags=cenra, database, table
|
||||||
|
|||||||
@@ -1,141 +1,172 @@
|
|||||||
|
import sys
|
||||||
geom = "geom"
|
import socket
|
||||||
champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
import os
|
||||||
champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))"""
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))"""
|
if IPAddr[0:11] == "100.100.100": #4269
|
||||||
|
host = "100.100.100.11"
|
||||||
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
port = "5432"
|
||||||
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
dbname = "sig4269"
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
sigdb="sig4269"
|
||||||
|
refdb="ref_geo4269"
|
||||||
champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.0": #01
|
||||||
champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154))
|
host = "192.168.0.201"
|
||||||
"""
|
port = "5432"
|
||||||
|
dbname = "sig01"
|
||||||
champ_vegethab_point = """(
|
sigdb="sig01"
|
||||||
gid serial NOT NULL ,
|
refdb="ref_geo01"
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
password = "McVities"
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
if IPAddr[0:9] == "192.168.1": #0726
|
||||||
occupati_1 bigint,
|
host = "192.168.1.201"
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
port = "5432"
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
dbname = "sig0726"
|
||||||
occupati_2 bigint,
|
sigdb="sig0726"
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
refdb="ref_geo0726"
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
password = "McVities"
|
||||||
occupati_3 bigint,
|
if sys.platform == 'linux':
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
os_user = os.environ['USER']
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
else:
|
||||||
surface_m2 numeric,
|
os_user = os.environ['USERNAME']
|
||||||
surface_ha numeric,
|
if os_user == 'STAGE':
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
os_user='stage'
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
geom = "geom"
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))"""
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))"""
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154))
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_point = """(
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
geom geometry(Point,2154)
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
occupati_3 bigint,
|
||||||
champ_vegethab_multilinestring = """(
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
occupati_1 bigint,
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
occupati_2 bigint,
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_3 bigint,
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_m2 numeric,
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
geom geometry(Point,2154)
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multilinestring = """(
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
geom geometry(MultiLineString,2154)
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
occupati_3 bigint,
|
||||||
champ_vegethab_multipolygon = """(
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
occupati_1 bigint,
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
occupati_2 bigint,
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_3 bigint,
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_m2 numeric,
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiLineString,2154)
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multipolygon = """(
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
geom geometry(MultiPolygon,2154)
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
occupati_3 bigint,
|
||||||
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
|
surface_m2 numeric,
|
||||||
|
surface_ha numeric,
|
||||||
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
|
date_creat date,
|
||||||
|
date_maj date,
|
||||||
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
date_sais date,
|
||||||
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
geom geometry(MultiPolygon,2154)
|
||||||
|
)
|
||||||
"""
|
"""
|
||||||
@@ -6,7 +6,6 @@ import tempfile
|
|||||||
import base64
|
import base64
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import socket
|
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -108,20 +107,24 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def pyperclip():
|
def login_base(take=None):
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
from CenRa_Metabase.resources.PythonSQL import host,port,dbname,password,os_user
|
||||||
dst = abspath(abspath(join(plugin_path(), "CenRa_Copie\\tools\\")))
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
res_ident = first_cur.fetchone()
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
user = res_ident[1]
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
try:
|
|
||||||
shutil.copy(src, dst)
|
|
||||||
except:
|
|
||||||
print('404')
|
|
||||||
|
|
||||||
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
|
|
||||||
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
|
|
||||||
|
if take:
|
||||||
|
return cur,con
|
||||||
|
else:
|
||||||
|
return cur
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -164,15 +167,12 @@ def maj_verif(NAME):
|
|||||||
except:
|
except:
|
||||||
binar = False
|
binar = False
|
||||||
if binar:
|
if binar:
|
||||||
try:
|
version_web = str(urllib.request.urlopen(URL).read())
|
||||||
version_web = str(urllib.request.urlopen(URL).read())
|
plugin_num = version_web.find(NAME)
|
||||||
plugin_num = version_web.find(NAME)
|
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
||||||
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
||||||
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
if version_plugin != version:
|
||||||
if version_plugin != version:
|
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
||||||
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
|
||||||
except:
|
|
||||||
print("error gitea version ssl")
|
|
||||||
else:
|
else:
|
||||||
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Journal des modifications</string>
|
<string>Metabase</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
|
|||||||
@@ -12,17 +12,15 @@ import qgis
|
|||||||
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
import socket
|
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
pyperclip,
|
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
pyperclip()
|
|
||||||
from .flux_editor import Flux_Editor
|
from .flux_editor import Flux_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import FluxAboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from PyQt5.QtCore import *
|
||||||
|
|
||||||
@@ -42,7 +40,7 @@ class PgFlux:
|
|||||||
maj_verif(NAME)
|
maj_verif(NAME)
|
||||||
|
|
||||||
# Display About window on first use
|
# Display About window on first use
|
||||||
version = qgis.utils.pluginMetadata('CenRa_FLUX','version')
|
version = qgis.utils.pluginMetadata('CenRa_Flux','version')
|
||||||
s = QSettings()
|
s = QSettings()
|
||||||
versionUse = s.value("flux/version", 1, type=str)
|
versionUse = s.value("flux/version", 1, type=str)
|
||||||
if str(versionUse) != str(version) :
|
if str(versionUse) != str(version) :
|
||||||
@@ -65,24 +63,15 @@ class PgFlux:
|
|||||||
if not self.action_editor:
|
if not self.action_editor:
|
||||||
self.action_editor = Flux_Editor()
|
self.action_editor = Flux_Editor()
|
||||||
|
|
||||||
|
|
||||||
self.flux_editor = QAction(icon, 'SigCEN',None)
|
self.flux_editor = QAction(icon, 'SigCEN',None)
|
||||||
self.toolBar.addAction(self.flux_editor)
|
self.toolBar.addAction(self.flux_editor)
|
||||||
self.flux_editor.triggered.connect(self.open_editor)
|
self.flux_editor.triggered.connect(self.open_editor)
|
||||||
self.flux_editor.setEnabled(False)
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
if IPAddr[0:11] == "100.100.100":
|
|
||||||
self.flux_editor.setEnabled(True)
|
|
||||||
elif IPAddr[0:9] == "192.168.0":
|
|
||||||
self.flux_editor.setEnabled(True)
|
|
||||||
elif IPAddr[0:9] == "192.168.1":
|
|
||||||
self.flux_editor.setEnabled(True)
|
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
dialog = AboutDialog(iface)
|
dialog = CopieAboutDialog(iface)
|
||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
def open_help():
|
def open_help():
|
||||||
""" Open the online help. """
|
""" Open the online help. """
|
||||||
|
|||||||
@@ -1,6 +1,60 @@
|
|||||||
|
# <p align="center">FluxCEN</p>
|
||||||
|
|
||||||
|
<img align="left" src=https://raw.githubusercontent.com/CEN-Nouvelle-Aquitaine/fluxcen/main/icon.png width="220"/>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
Le plugin QGIS FluxCEN permet d'accéder rapidement à un large éventail de flux WFS/WMS organisés par catégories et interrogeables sous forme de mots-clés.
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
Il évite ainsi d'avoir à gérer dans QGIS une multitude de connexions.
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
## 🧐 Features
|
||||||
|
- Sélection rapide des ressources par autocomplétion
|
||||||
|
- Regroupement des flux au sein de catégories
|
||||||
|
- Gestion des styles par défaut à l'ouverture dans QGIS pour les données WFS
|
||||||
|
- Centralisation et gestion des flux simplifiée dans un fichier .csv
|
||||||
|
- Code et ressources attachées gérées directement via le git
|
||||||
|
- Prise en charge des flux Geoserver et Mapserver
|
||||||
|
- Lien direct vers la fiche de métadonnées de la ressource
|
||||||
|
|
||||||
|
## Composition du fichier .csv
|
||||||
|
|
||||||
|
* service : type de service utilisé (WFS ou WMS)
|
||||||
|
* categorie : categorie de la couche pour affichage et recherche dans le plugin
|
||||||
|
* Nom_couche_plugin : nom de la couche qui s'affichera dans le plugin
|
||||||
|
* nom_technique : nom technique de la couche utilisé sur le serveur source (caché dans le plugin)
|
||||||
|
* url : URL du serveur pour accéder à la couche
|
||||||
|
* source : Source de la donnée
|
||||||
|
* style : nom du fichier de style pour affichage à l'ouverture dans QGIS
|
||||||
|
* metadonnees : URL d'accès à la fiche de métadonnées liée à la resource
|
||||||
|
|
||||||
|
Exemple pour accéder à la BD ORTHO® :
|
||||||
|
|
||||||
|
| service | categorie | Nom_couche_plugin | nom_technique | url | source | style |
|
||||||
|
| -------- | -------- | -------- | -------- | -------- |-------- | -------- |
|
||||||
|
| WMS Raster| Fonds cartos | BD ORTHO® | HR.ORTHOIMAGERY.ORTHOPHOTOS |https://wxs.ign.fr/ortho/geoportail/r/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities| IGN | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Style des couches
|
||||||
|
|
||||||
|
Le dossier *styles_couches* stocke les styles QGIS au format .qml afin d'appliquer par défaut ce style à l'ouverture de la couche dans QGIS. L'ajout d'un style dans ce dossier nécessite de reporter le nom du fichier .qml dans le champ "style" du csv.
|
||||||
|
|
||||||
|
|
||||||
|
## Accès aux données protégées
|
||||||
|
|
||||||
|
Si l'accès à la majorité des ressources reste public, certaines peuvent être protégées par un mot de passe (données métier confidentielles par exemple).
|
||||||
|
|
||||||
|
Cette authentification est gérée via le serveur cartographique qui génère les flux.
|
||||||
|
Pour y accéder, il faut créer en amont une authentification dans QGIS. L'ouverture des données protégées se fera alors à partir de la première authentification enregistrée dans QGIS (pas de gestion multi-authentification pour le moment)
|
||||||
|
|
||||||
|
## Interface du plugin:
|
||||||
|
|
||||||
|
<img align="center" src=https://raw.githubusercontent.com/CEN-Nouvelle-Aquitaine/fluxcen/main/fluxcen_interface.PNG width="600"/>
|
||||||
|
|
||||||
> [Point de départ de création du plugin](https://github.com/CEN-Nouvelle-Aquitaine/MapCEN)
|
|
||||||
|
|
||||||
Le plugin QGIS CenRa_FLUX permet d'accéder rapidement à un large éventail de données organisés dans PostGIS par catégories et interrogeables sous forme de mots-clés.
|
|
||||||
|
|
||||||
Il évite ainsi d'avoir à gérer dans QGIS une multitude de connexions.
|
|
||||||
@@ -17,7 +17,7 @@ ABOUT_FORM_CLASS, _ = uic.loadUiType(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
class FluxAboutDialog(QDialog, ABOUT_FORM_CLASS):
|
||||||
|
|
||||||
""" About - Let the user display the about dialog. """
|
""" About - Let the user display the about dialog. """
|
||||||
|
|
||||||
|
|||||||
@@ -29,20 +29,15 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
QMessageBox,
|
QMessageBox,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from .tools.SQLRequet import *
|
from .tools.PythonSQL import *
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
|
login_base,
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
try:
|
|
||||||
from .tools.PythonSQL import login_base
|
|
||||||
except:
|
|
||||||
print('Pas de fichier PythonSQL')
|
|
||||||
|
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
|
|
||||||
from ast import literal_eval
|
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import os.path
|
import os.path
|
||||||
import webbrowser, os
|
import webbrowser, os
|
||||||
@@ -50,131 +45,15 @@ import psycopg2
|
|||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
try:
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
account = login_base('account')
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
user = account[0]
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
mdp = account[1]
|
res_ident = first_cur.fetchone()
|
||||||
host = account[2]
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
port = account[3]
|
user = res_ident[1]
|
||||||
dbname = account[4]
|
first_conn.close()
|
||||||
sigdb = account[5]
|
|
||||||
refdb = account[6]
|
|
||||||
|
|
||||||
except:
|
|
||||||
print('')
|
|
||||||
EDITOR_CLASS = load_ui('CenRa_Flux_base.ui')
|
EDITOR_CLASS = load_ui('CenRa_Flux_base.ui')
|
||||||
html = '''<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
|
||||||
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
|
||||||
crossorigin=""/>
|
|
||||||
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
|
|
||||||
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
|
|
||||||
crossorigin=""></script>
|
|
||||||
<style>
|
|
||||||
body { padding: 0; margin: 0; }
|
|
||||||
html, body, #map { height: 100%; }
|
|
||||||
.leaflet-control-layers-toggle {
|
|
||||||
background-image: url(https://intranet.cenra-outils.org/Intranet/css/images/layers.png);
|
|
||||||
}
|
|
||||||
.legend_parc {
|
|
||||||
border-radius: 15px;
|
|
||||||
box-shadow: 2px 2px 3px 0 #6a6a6a;
|
|
||||||
background-color: #fefafab3;
|
|
||||||
opacity:0;
|
|
||||||
}
|
|
||||||
.legend_parc:hover{
|
|
||||||
opacity:1;
|
|
||||||
}
|
|
||||||
.popup-with-no-events {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="map"></div>
|
|
||||||
<script src="map.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<script>'''
|
|
||||||
font = '''var OrthoIGN = L.tileLayer('https://wmts.geopf.fr/wmts?'+
|
|
||||||
'&LAYER={ignLayer}&STYLE={style}&TILEMATRIXSET=PM'+
|
|
||||||
'&SERVICE={service}&REQUEST=GetTile&VERSION=1.0.0'+
|
|
||||||
'&FORMAT={format}&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}',
|
|
||||||
{
|
|
||||||
ignLayer: 'ORTHOIMAGERY.ORTHOPHOTOS',
|
|
||||||
style: 'normal',
|
|
||||||
service: 'WMTS',
|
|
||||||
format: 'image/jpeg',
|
|
||||||
minZoom: 0,
|
|
||||||
maxZoom: 19,
|
|
||||||
attribution: '© IGN'
|
|
||||||
}).addTo(map);
|
|
||||||
// Plan IGN avec une transparence de 50%
|
|
||||||
var PlanIGN = L.tileLayer('https://wmts.geopf.fr/wmts?'+
|
|
||||||
'&LAYER={ignLayer}&STYLE={style}&TILEMATRIXSET=PM'+
|
|
||||||
'&SERVICE={service}&REQUEST=GetTile&VERSION=1.0.0'+
|
|
||||||
'&FORMAT={format}&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}',
|
|
||||||
{
|
|
||||||
ignLayer: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2',
|
|
||||||
style: 'normal',
|
|
||||||
service: 'WMTS',
|
|
||||||
format: 'image/png',
|
|
||||||
minZoom: 0,
|
|
||||||
maxZoom: 19,
|
|
||||||
attribution: '© IGN'
|
|
||||||
});
|
|
||||||
var baseMaps = {
|
|
||||||
// "BDORTHO2" : bdortho,
|
|
||||||
// "Openstreetmap": openStreetMap,
|
|
||||||
// "Opentopomap": openTopoMap,
|
|
||||||
"BDORTHO" : OrthoIGN,
|
|
||||||
"PlanIGN": PlanIGN
|
|
||||||
};
|
|
||||||
var overlayMaps = {
|
|
||||||
"Sites": Sites,
|
|
||||||
//"Parcelle":JSON
|
|
||||||
};
|
|
||||||
L.control.layers(baseMaps,overlayMaps).addTo(map);
|
|
||||||
var scale = L.control.scale({position: 'bottomleft', metric:true, imperial:false});
|
|
||||||
scale.addTo(map);
|
|
||||||
var legend = L.control({position: 'bottomleft'});
|
|
||||||
|
|
||||||
legend.onAdd = function (map) {
|
|
||||||
var div = L.DomUtil.create('div', 'info legend_parc'),
|
|
||||||
labels = [];
|
|
||||||
labels.push('<i style="background:#73004c;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ff00c5;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquis en partie BND')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#f0ade1ab;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition pour partie')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#73462e;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition / Convention')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#e69800;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ffd37f;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention en partie BND')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ffebaf;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention pour partie')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#c8c8c8;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Autre')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#f9ff08;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Projet en cours')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#fe0000;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Problème de mise à jour')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#000;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Pas de maitrise')
|
|
||||||
|
|
||||||
div.innerHTML = labels.join('<br>');
|
|
||||||
return div;
|
|
||||||
};
|
|
||||||
|
|
||||||
legend.addTo(map);
|
|
||||||
</script>'''
|
|
||||||
targetCrs = QgsCoordinateReferenceSystem('EPSG:4326')
|
|
||||||
layerCrs = QgsCoordinateReferenceSystem('EPSG:2154')
|
|
||||||
TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs,QgsProject.instance())
|
|
||||||
|
|
||||||
class Flux_Editor(QDialog, EDITOR_CLASS):
|
class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||||
|
|
||||||
@@ -193,7 +72,6 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
self.tableWidget.setSelectionBehavior(QTableWidget.SelectRows)
|
self.tableWidget.setSelectionBehavior(QTableWidget.SelectRows)
|
||||||
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
||||||
self.toolButton.setIcon(QtGui.QIcon(resources_path('ui','find.png')))
|
|
||||||
self.comboBox_2.addItem("SIG")
|
self.comboBox_2.addItem("SIG")
|
||||||
self.comboBox_2.addItem('REF')
|
self.comboBox_2.addItem('REF')
|
||||||
self.comboBox.currentIndexChanged.connect(self.initialisation_flux)
|
self.comboBox.currentIndexChanged.connect(self.initialisation_flux)
|
||||||
@@ -203,14 +81,9 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.commandLinkButton_2.clicked.connect(self.suppression_flux)
|
self.commandLinkButton_2.clicked.connect(self.suppression_flux)
|
||||||
self.tableWidget_2.itemDoubleClicked.connect(self.suppression_flux)
|
self.tableWidget_2.itemDoubleClicked.connect(self.suppression_flux)
|
||||||
self.comboBox_2.currentIndexChanged.connect(self.bd_source)
|
self.comboBox_2.currentIndexChanged.connect(self.bd_source)
|
||||||
self.checkBox.hide()
|
|
||||||
self.checkBox.stateChanged.connect(self.modeCarte)
|
|
||||||
self.toolButton.clicked.connect(self.getCanevas)
|
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
self.lineEdit.textChanged.connect(self.filtre_dynamique)
|
self.lineEdit.textChanged.connect(self.filtre_dynamique)
|
||||||
self.viewer.titleChanged.connect(self.NewTitle)
|
|
||||||
layout.addWidget(self.lineEdit)
|
layout.addWidget(self.lineEdit)
|
||||||
self.viewer.hide()
|
|
||||||
#self.lineEdit.mousePressEvent = self._mousePressEvent
|
#self.lineEdit.mousePressEvent = self._mousePressEvent
|
||||||
|
|
||||||
#metadonnees_plugin = open(self.plugin_path + '/metadata.txt')
|
#metadonnees_plugin = open(self.plugin_path + '/metadata.txt')
|
||||||
@@ -220,128 +93,6 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
"""Run method that performs all the real work"""
|
"""Run method that performs all the real work"""
|
||||||
self.bd_source()
|
self.bd_source()
|
||||||
|
|
||||||
def NewTitle(self):
|
|
||||||
if self.viewer.title() != '':
|
|
||||||
Tsplit = ((self.viewer.title()).split('.'))
|
|
||||||
print(Tsplit[0],Tsplit[1])
|
|
||||||
self.openPostGIS(Tsplit[0],Tsplit[1])
|
|
||||||
|
|
||||||
def modeCarte(self):
|
|
||||||
if self.checkBox.isChecked():
|
|
||||||
self.viewer.show()
|
|
||||||
|
|
||||||
cur.execute("SELECT ST_AsGeoJSON(st_centroid(ST_Transform(geom,4326))) FROM _agregation_ra._agreg_contour")
|
|
||||||
varcenter = literal_eval(cur.fetchall()[0][0])
|
|
||||||
varcenter = [varcenter['coordinates'][1],varcenter['coordinates'][0]]
|
|
||||||
|
|
||||||
cur.execute("SELECT ST_AsGeoJSON(ST_Transform(st_collect(geom),4326)),tschema,tname FROM _agregation_ra._agreg_contour WHERE geom IS NOT NULL GROUP BY tschema,tname;" )
|
|
||||||
varSite = cur.fetchall()
|
|
||||||
cur.execute("SELECT ST_AsGeoJSON(ST_Transform(st_collect(geom),4326)),tschema,tname FROM _agregation_ra._agreg_travaux_prevus_poly WHERE geom IS NOT NULL GROUP BY tschema,tname;")
|
|
||||||
varTravaux = cur.fetchall()
|
|
||||||
cur.execute("SELECT ST_AsGeoJSON(ST_Transform(geom,4326)),milieu_libelle ,lb_eu_01,tschema,tname FROM _agregation_ra._agreg_eu_habitat WHERE geom IS NOT NULL;")
|
|
||||||
varHabitat = cur.fetchall()
|
|
||||||
|
|
||||||
vargeomS = literal_eval(varSite[0][0])
|
|
||||||
vargeomT = literal_eval(varTravaux[0][0])
|
|
||||||
vargeomH = literal_eval(varHabitat[0][0])
|
|
||||||
#new_objectS = self.SwitchGeom(vargeomS)
|
|
||||||
#new_objectT = self.SwitchGeom(vargeomT)
|
|
||||||
#new_objectH = self.SwitchGeom(vargeomH)
|
|
||||||
|
|
||||||
script = 'var map = L.map("map").setView('+str(varcenter)+', 13);'
|
|
||||||
|
|
||||||
id = 0
|
|
||||||
varSiteJSON = '''var ParcelleJSON = {
|
|
||||||
"type": "FeatureCollection",
|
|
||||||
"features":['''
|
|
||||||
for varP in varSite:
|
|
||||||
id = id+1
|
|
||||||
varSiteJSON = varSiteJSON+'{"properties": {"code": "'+str(varP[1])+'.'+str(varP[2])+'" },'+str(varP[0][1:])+','
|
|
||||||
varSiteJSON = varSiteJSON[:-1]+''']};
|
|
||||||
var Sites = L.geoJSON(ParcelleJSON,{
|
|
||||||
style: function(feature) {
|
|
||||||
switch (feature.geometry.properties.code) {
|
|
||||||
case 'Ensemble de sites': return {fillColor: "#9a7863",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
case 'Sous-site conservatoire': return {fillColor: "#e69800",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
case 'Site non géré': return {fillColor: "#73004c",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
case 'Animation territoriale': return {fillColor: "#ffebaf",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
case 'Site conservatoire': return {fillColor: "#f9ff08",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
default: return {fillColor: "#c8c8c8",color:"white",weight: 1,fillOpacity: 0.7};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onEachFeature: function (feature,layer) {
|
|
||||||
layer.on('click', function(e) {
|
|
||||||
map.fitBounds(layer.getBounds());
|
|
||||||
document.title = feature.properties.code.toString();
|
|
||||||
});
|
|
||||||
layer.on('mouseover', function(e) {
|
|
||||||
layer.setStyle({
|
|
||||||
weight: 5,
|
|
||||||
color: '#fe0000',
|
|
||||||
dashArray: '',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//layer.on('mousemove', function(e) {
|
|
||||||
//layer.openPopup(e.latlng);
|
|
||||||
//});
|
|
||||||
layer.on('mouseout', function(e) {
|
|
||||||
layer.setStyle({
|
|
||||||
color:"white",
|
|
||||||
weight: 1,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
layer.bindTooltip(feature.properties.code.toString(), {
|
|
||||||
sticky: true,
|
|
||||||
permanent: false,
|
|
||||||
direction: 'right',
|
|
||||||
className: 'label_parc'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).addTo(map);'''
|
|
||||||
id = 0
|
|
||||||
varTravauxJSON = '''var TravauxJSON = {
|
|
||||||
"type": "FeatureCollection",
|
|
||||||
"features":['''
|
|
||||||
for varT in varTravaux:
|
|
||||||
id = id+1
|
|
||||||
varTravauxJSON = varTravauxJSON+'{"properties": {"code": "'+str(varT[1])+'.'+str(varT[2])+'" },'+str(varT[0][1:])+','
|
|
||||||
varTravauxJSON = varTravauxJSON[:-1]+''']};
|
|
||||||
var Travaux = L.geoJSON(TravauxJSON,{
|
|
||||||
onEachFeature: function (feature,layer) {
|
|
||||||
layer.on('click', function(e) {
|
|
||||||
map.fitBounds(layer.getBounds());
|
|
||||||
document.title = feature.properties.code.toString();
|
|
||||||
});
|
|
||||||
layer.on('mouseover', function(e) {
|
|
||||||
layer.setStyle({
|
|
||||||
weight: 5,
|
|
||||||
color: '#fe0000',
|
|
||||||
dashArray: '',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//layer.on('mousemove', function(e) {
|
|
||||||
//layer.openPopup(e.latlng);
|
|
||||||
//});
|
|
||||||
layer.on('mouseout', function(e) {
|
|
||||||
layer.setStyle({
|
|
||||||
color:"white",
|
|
||||||
weight: 1,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
layer.bindTooltip(feature.properties.code.toString(), {
|
|
||||||
sticky: true,
|
|
||||||
permanent: false,
|
|
||||||
direction: 'right',
|
|
||||||
className: 'label_parc'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).addTo(map);'''
|
|
||||||
script = script+varSiteJSON+varTravauxJSON
|
|
||||||
self.viewer.setHtml(html+script+font)
|
|
||||||
|
|
||||||
else:
|
|
||||||
self.viewer.hide()
|
|
||||||
|
|
||||||
def bd_source(self):
|
def bd_source(self):
|
||||||
self.activateWindow()
|
self.activateWindow()
|
||||||
bd_origine=self.comboBox_2.currentText()
|
bd_origine=self.comboBox_2.currentText()
|
||||||
@@ -407,7 +158,6 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
def initialisation_flux(self):
|
def initialisation_flux(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
# self.toolButton.setEnabled(1)
|
|
||||||
if self.comboBox.currentText() == 'toutes les catégories':
|
if self.comboBox.currentText() == 'toutes les catégories':
|
||||||
custom_list=schemaname_list
|
custom_list=schemaname_list
|
||||||
elif self.comboBox.currentText() == 'travaux':
|
elif self.comboBox.currentText() == 'travaux':
|
||||||
@@ -432,11 +182,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
type_val = str(value[0])[1:3]
|
type_val = str(value[0])[1:3]
|
||||||
schema_name=str(value[0])[4:]
|
schema_name=str(value[0])[4:]
|
||||||
table_name=str(value[1][len(value[0])+1:])
|
table_name=str(value[1])
|
||||||
if value[0] == value[1][:len(value[0])]:
|
|
||||||
table_name=str(value[1][len(value[0])+1:])
|
|
||||||
else:
|
|
||||||
table_name=str(value[1])
|
|
||||||
else:
|
else:
|
||||||
type_val = ''
|
type_val = ''
|
||||||
schema_name=str(value[0])
|
schema_name=str(value[0])
|
||||||
@@ -444,10 +190,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
if type_val == 'fo':
|
if type_val == 'fo':
|
||||||
type_val=str(value[0])[1:5]
|
type_val=str(value[0])[1:5]
|
||||||
schema_name=str(value[0])[6:]
|
schema_name=str(value[0])[6:]
|
||||||
if value[0] == value[1][:len(value[0])]:
|
table_name=str(value[1])
|
||||||
table_name=str(value[1][len(value[0])+1:])
|
|
||||||
else:
|
|
||||||
table_name=str(value[1])
|
|
||||||
elif type_val == 'ra':
|
elif type_val == 'ra':
|
||||||
type_val='travaux'
|
type_val='travaux'
|
||||||
schema_name=str(value[0])
|
schema_name=str(value[0])
|
||||||
@@ -468,7 +211,6 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
self.tableWidget.setColumnWidth(1, 300)
|
self.tableWidget.setColumnWidth(1, 300)
|
||||||
self.tableWidget.setColumnWidth(2, 300)
|
self.tableWidget.setColumnWidth(2, 300)
|
||||||
self.tableWidget.setHorizontalHeaderLabels(["Code","Schema","Table"])
|
self.tableWidget.setHorizontalHeaderLabels(["Code","Schema","Table"])
|
||||||
|
|
||||||
def selection_flux(self):
|
def selection_flux(self):
|
||||||
selected_row = 0
|
selected_row = 0
|
||||||
selected_items = self.tableWidget.selectedItems()
|
selected_items = self.tableWidget.selectedItems()
|
||||||
@@ -514,15 +256,6 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
if self.tableWidget_2.rowCount() <= 5:
|
if self.tableWidget_2.rowCount() <= 5:
|
||||||
self.chargement_flux()
|
self.chargement_flux()
|
||||||
def openPostGIS(self,schema,table):
|
|
||||||
uri = QgsDataSourceUri()
|
|
||||||
uri.setConnection(host ,port ,sigdb ,user ,mdp)
|
|
||||||
uri.setDataSource(schema, table, "geom")
|
|
||||||
uri.setKeyColumn('gid')
|
|
||||||
uri.setSrid('2154')
|
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
|
||||||
# Ajout de la couche au canevas QGIS
|
|
||||||
QgsProject.instance().addMapLayer(layer)
|
|
||||||
|
|
||||||
def chargement_flux(self):
|
def chargement_flux(self):
|
||||||
|
|
||||||
@@ -540,23 +273,17 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
return switcher.get(type, "nothing")
|
return switcher.get(type, "nothing")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def displayOnWindows(type, uri, name):
|
def displayOnWindows(type, uri, name):
|
||||||
p = []
|
p = []
|
||||||
|
|
||||||
for row in range(0, self.tableWidget_2.rowCount()):
|
for row in range(0, self.tableWidget_2.rowCount()):
|
||||||
color_rgba = 855030089
|
|
||||||
if self.tableWidget_2.item(row, 0).background().color().rgba() != 855030089:
|
|
||||||
## supression de la partie de l'url après le point d'interrogation
|
## supression de la partie de l'url après le point d'interrogation
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
code = self.tableWidget_2.item(row,0).text()
|
code = self.tableWidget_2.item(row,0).text()
|
||||||
schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text()
|
schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text()
|
||||||
if code == 'travaux' or code == 'agregation':
|
if code == 'travaux' or code == 'agregation':
|
||||||
schema = self.tableWidget_2.item(row,1).text()
|
schema = self.tableWidget_2.item(row,1).text()
|
||||||
table = self.tableWidget_2.item(row,2).text()
|
table = self.tableWidget_2.item(row,2).text()#.split("?", 1)[0]
|
||||||
else:
|
|
||||||
table = self.tableWidget_2.item(row,2).text()
|
|
||||||
table = schema+'_'+table
|
|
||||||
if dbtype == refdb:
|
if dbtype == refdb:
|
||||||
# code = self.tableWidget_2.item(row,0).text()
|
# code = self.tableWidget_2.item(row,0).text()
|
||||||
schema = self.tableWidget_2.item(row,1).text()
|
schema = self.tableWidget_2.item(row,1).text()
|
||||||
@@ -573,6 +300,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
|
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
|
||||||
cur.execute(geom_type)
|
cur.execute(geom_type)
|
||||||
list_typegeom = cur.fetchall()
|
list_typegeom = cur.fetchall()
|
||||||
|
print(len(list_typegeom))
|
||||||
if len(list_typegeom) > 1:
|
if len(list_typegeom) > 1:
|
||||||
for typegeom in list_typegeom:
|
for typegeom in list_typegeom:
|
||||||
if typegeom[0] == 'MultiPolygon':
|
if typegeom[0] == 'MultiPolygon':
|
||||||
@@ -596,11 +324,9 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
# Ajout de la couche au canevas QGIS
|
# Ajout de la couche au canevas QGIS
|
||||||
QgsProject.instance().addMapLayer(layer)
|
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()) + "» ne ce trouve pas dans cette BD !",QMessageBox.Yes)
|
|
||||||
def combobox_custom(self):
|
def combobox_custom(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
self.toolButton.setEnabled(1)
|
|
||||||
self.comboBox.clear()
|
self.comboBox.clear()
|
||||||
self.comboBox.addItem("toutes les catégories")
|
self.comboBox.addItem("toutes les catégories")
|
||||||
self.comboBox.addItem('00')
|
self.comboBox.addItem('00')
|
||||||
@@ -613,7 +339,6 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
self.comboBox.addItem('travaux')
|
self.comboBox.addItem('travaux')
|
||||||
self.comboBox.addItem('form')
|
self.comboBox.addItem('form')
|
||||||
if dbtype == refdb:
|
if dbtype == refdb:
|
||||||
self.toolButton.setEnabled(0)
|
|
||||||
custom_list=schemaname_distinct
|
custom_list=schemaname_distinct
|
||||||
cur.execute(custom_list)
|
cur.execute(custom_list)
|
||||||
list_schema = cur.fetchall()
|
list_schema = cur.fetchall()
|
||||||
@@ -621,10 +346,8 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
self.comboBox.addItem("toutes les catégories")
|
self.comboBox.addItem("toutes les catégories")
|
||||||
for baxval in list_schema:
|
for baxval in list_schema:
|
||||||
self.comboBox.addItem(baxval[0])
|
self.comboBox.addItem(baxval[0])
|
||||||
|
|
||||||
def filtre_dynamique(self, filter_text):
|
def filtre_dynamique(self, filter_text):
|
||||||
if filter_text.find(' ') >= 0:
|
|
||||||
filter_text=filter_text.replace(" ","_")
|
|
||||||
for i in range(self.tableWidget.rowCount()):
|
for i in range(self.tableWidget.rowCount()):
|
||||||
for j in range(self.tableWidget.columnCount()):
|
for j in range(self.tableWidget.columnCount()):
|
||||||
item = self.tableWidget.item(i, j)
|
item = self.tableWidget.item(i, j)
|
||||||
@@ -633,64 +356,6 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
if not match:
|
if not match:
|
||||||
break
|
break
|
||||||
|
|
||||||
def getCanevas(self):
|
|
||||||
poly = iface.mapCanvas().extent()
|
|
||||||
geom = (str(poly.xMinimum())+','+str(poly.yMinimum())+','+str(poly.xMaximum())+','+str(poly.yMaximum()))
|
|
||||||
|
|
||||||
SQL_GEOM_CONTOUR = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_contour" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
SQL_GEOM_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
SQL_GEOM_EU_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_eu_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
SQL_GEOM_TRAVAUX_PREVUS_LIGNE = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_ligne" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
SQL_GEOM_TRAVAUX_PREVUS_POINT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_point" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
SQL_GEOM_TRAVAUX_PREVUS_POLY = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_poly" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
|
|
||||||
|
|
||||||
cur.execute(SQL_GEOM_CONTOUR)
|
|
||||||
TableContour = cur.fetchall()
|
|
||||||
cur.execute(SQL_GEOM_HABITAT)
|
|
||||||
TableHabitat = cur.fetchall()
|
|
||||||
cur.execute(SQL_GEOM_EU_HABITAT)
|
|
||||||
TableEuHabitat = cur.fetchall()
|
|
||||||
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_LIGNE)
|
|
||||||
TableTravauxLigne = cur.fetchall()
|
|
||||||
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POINT)
|
|
||||||
TableTravauxPoint = cur.fetchall()
|
|
||||||
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY)
|
|
||||||
TableTravauxPoly = cur.fetchall()
|
|
||||||
|
|
||||||
TableHaveGeom = sorted(TableContour+TableHabitat+TableEuHabitat+TableTravauxLigne+TableTravauxPoint+TableTravauxPoly)
|
|
||||||
row_count = 0
|
|
||||||
self.tableWidget.setRowCount(0)
|
|
||||||
for e in TableHaveGeom:
|
|
||||||
cur.execute("""SELECT DISTINCT count(*) FROM pg_catalog.pg_tables WHERE schemaname LIKE '"""+e[0]+"""' AND tablename LIKE '"""+e[1]+"""';""")
|
|
||||||
TableSomme = cur.fetchall()[0][0]
|
|
||||||
|
|
||||||
if e[0][1:3] != 'fo':
|
|
||||||
DepName = QTableWidgetItem(e[0][1:3])
|
|
||||||
SchemaName = QTableWidgetItem(e[0][4:])
|
|
||||||
else:
|
|
||||||
DepName = QTableWidgetItem('form')
|
|
||||||
SchemaName = QTableWidgetItem(e[0][6:])
|
|
||||||
TableName = QTableWidgetItem(e[1][len(e[0])+1:])
|
|
||||||
self.tableWidget.insertRow(row_count)
|
|
||||||
self.tableWidget.setItem(row_count,0,DepName)
|
|
||||||
self.tableWidget.setItem(row_count,1,SchemaName)
|
|
||||||
self.tableWidget.setItem(row_count,2,TableName)
|
|
||||||
if TableSomme == 0:
|
|
||||||
for j in range(self.tableWidget.columnCount()):
|
|
||||||
self.tableWidget.item(row_count, j).setBackground(QtGui.QColor(246, 185, 73,50))
|
|
||||||
self.tableWidget.item(row_count,j).setToolTip('Couche dans une autre BD !')
|
|
||||||
row_count = row_count+1
|
|
||||||
if self.lineEdit.text() != 'Recherche par mots-clés':
|
|
||||||
self.filtre_dynamique(self.lineEdit.text())
|
|
||||||
|
|
||||||
def SwitchGeom(self,vargeom):
|
|
||||||
new_object = '['
|
|
||||||
obj = vargeom['coordinates'][0][0]
|
|
||||||
for obj_X in obj:
|
|
||||||
new_object = new_object+'['+str(obj_X[1])+','+str(obj_X[0])+'],'
|
|
||||||
new_object = new_object[:-1]+']'
|
|
||||||
return(new_object)
|
|
||||||
|
|
||||||
def popup(self):
|
def popup(self):
|
||||||
|
|
||||||
self.dialog = Popup() # +++ - self
|
self.dialog = Popup() # +++ - self
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
name=CenRa_FLUX
|
name=CenRa_FLUX
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
description=Permet d'ouvrire une table dans la base PostGis
|
description=Permet d'ouvrire une table dans la base PostGis
|
||||||
version=2.6
|
version=2.1
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ icon=icon.png
|
|||||||
# experimental flag
|
# experimental flag
|
||||||
experimental=False
|
experimental=False
|
||||||
|
|
||||||
changelog=<h2>CenRa_FLUX:</h2></br><p><h3>03/04/2025 - Version 2.6: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 2.5: </h3> - Visualisation distincte des couches ne se trouvant pas dans l'antenne.</p></br><p><h3>13/02/2025 - Version 2.4: </h3> - Ajoute redimensionnement et déplacement mollette.</p></br><p><h3>05/02/2025 - Version 2.3: </h3> - Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.</p></br><p><h3>07/01/2025 - Version 2.2: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
changelog=<h1>CenRA_FLUX:</h1></br><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||||
|
|
||||||
# deprecated flag (applies to the whole plugin, not just a single version)
|
# deprecated flag (applies to the whole plugin, not just a single version)
|
||||||
deprecated=False
|
deprecated=False
|
||||||
|
|||||||
@@ -1,151 +1,185 @@
|
|||||||
|
import sys
|
||||||
schemaname_distinct="""SELECT DISTINCT schemaname from pg_catalog.pg_tables
|
import socket
|
||||||
WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier'
|
import os
|
||||||
order by schemaname;"""
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
print(IPAddr)
|
||||||
WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier'
|
if IPAddr[0:11] == "100.100.100": #4269
|
||||||
order by schemaname,tablename;"""
|
host = "100.100.100.11"
|
||||||
schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
port = "5432"
|
||||||
where schemaname like 'trav%' or schemaname like '\_ag%' or schemaname like '\_00%' or schemaname like '\_01%' or schemaname like '\_07%' or schemaname like '\_26%' or schemaname like '\_form%' or schemaname like '\_42%' or schemaname like '\_69%' order by schemaname,tablename)
|
dbname = "sig4269"
|
||||||
UNION
|
sigdb="sig4269"
|
||||||
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
refdb="ref_geo4269"
|
||||||
geom = "geom"
|
password = "McVities"
|
||||||
champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
if IPAddr[0:9] == "192.168.0": #01
|
||||||
champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))"""
|
host = "192.168.0.201"
|
||||||
champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))"""
|
port = "5432"
|
||||||
|
dbname = "sig01"
|
||||||
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
sigdb="sig01"
|
||||||
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
refdb="ref_geo01"
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.1": #0726
|
||||||
champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
host = "192.168.1.201"
|
||||||
|
port = "5432"
|
||||||
champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154))
|
dbname = "sig0726"
|
||||||
"""
|
sigdb="sig0726"
|
||||||
|
refdb="ref_geo0726"
|
||||||
champ_vegethab_point = """(
|
password = "McVities"
|
||||||
gid serial NOT NULL ,
|
if sys.platform == 'linux':
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
os_user = os.environ['USER']
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
else:
|
||||||
occupati_1 bigint,
|
os_user = os.environ['USERNAME']
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
if os_user == 'STAGE':
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
os_user='stage'
|
||||||
occupati_2 bigint,
|
if os_user == 'Administrateur':
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
os_user = 'stage'
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
schemaname_distinct="""SELECT DISTINCT schemaname from pg_catalog.pg_tables
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier'
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
order by schemaname;"""
|
||||||
surface_m2 numeric,
|
schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
||||||
surface_ha numeric,
|
WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier'
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
order by schemaname,tablename;"""
|
||||||
date_creat date,
|
schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
||||||
date_maj date,
|
where schemaname like 'trav%' or schemaname like '\_ag%' or schemaname like '\_00%' or schemaname like '\_01%' or schemaname like '\_07%' or schemaname like '\_26%' or schemaname like '\_form%' or schemaname like '\_42%' or schemaname like '\_69%' order by schemaname,tablename)
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
UNION
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
geom = "geom"
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))"""
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))"""
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))"""
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154))
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
champ_vegethab_point = """(
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
geom geometry(Point,2154)
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
occupati_2 bigint,
|
||||||
champ_vegethab_multilinestring = """(
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
occupati_2 bigint,
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
occupati_3 bigint,
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_m2 numeric,
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
geom geometry(Point,2154)
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
date_sais date,
|
champ_vegethab_multilinestring = """(
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
geom geometry(MultiLineString,2154)
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
occupati_2 bigint,
|
||||||
champ_vegethab_multipolygon = """(
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
occupati_2 bigint,
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
occupati_3 bigint,
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_m2 numeric,
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiLineString,2154)
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
date_sais date,
|
champ_vegethab_multipolygon = """(
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
geom geometry(MultiPolygon,2154)
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
occupati_2 bigint,
|
||||||
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
occupati_3 bigint,
|
||||||
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
|
surface_m2 numeric,
|
||||||
|
surface_ha numeric,
|
||||||
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
|
date_creat date,
|
||||||
|
date_maj date,
|
||||||
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
date_sais date,
|
||||||
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
|
geom geometry(MultiPolygon,2154)
|
||||||
|
)
|
||||||
"""
|
"""
|
||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
import shutil
|
import shutil
|
||||||
import socket
|
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import base64
|
||||||
|
import psycopg2
|
||||||
|
import psycopg2.extras
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -77,19 +79,6 @@ def plugin_test_data_path(*args, copy=False):
|
|||||||
else:
|
else:
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def pyperclip():
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
dst = abspath(abspath(join(plugin_path(), "CenRa_FLUX\\tools\\")))
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
try:
|
|
||||||
shutil.copy(src, dst)
|
|
||||||
except:
|
|
||||||
print('404')
|
|
||||||
|
|
||||||
def resources_path(*args):
|
def resources_path(*args):
|
||||||
"""Get the path to our resources folder.
|
"""Get the path to our resources folder.
|
||||||
@@ -117,6 +106,25 @@ def load_ui(*args):
|
|||||||
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
|
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
|
||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
|
def login_base(take=None):
|
||||||
|
from .tools.PythonSQL import host,port,dbname,password,os_user
|
||||||
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
|
res_ident = first_cur.fetchone()
|
||||||
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
|
user = res_ident[1]
|
||||||
|
|
||||||
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
|
|
||||||
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
|
|
||||||
|
if take:
|
||||||
|
return cur,con
|
||||||
|
else:
|
||||||
|
return cur
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -159,15 +167,12 @@ def maj_verif(NAME):
|
|||||||
except:
|
except:
|
||||||
binar = False
|
binar = False
|
||||||
if binar:
|
if binar:
|
||||||
try:
|
version_web = str(urllib.request.urlopen(URL).read())
|
||||||
version_web = str(urllib.request.urlopen(URL).read())
|
plugin_num = version_web.find(NAME)
|
||||||
plugin_num = version_web.find(NAME)
|
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
||||||
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
||||||
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
if version_plugin != version:
|
||||||
if version_plugin != version:
|
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
||||||
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
|
||||||
except:
|
|
||||||
print("error gitea version ssl")
|
|
||||||
else:
|
else:
|
||||||
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Dialog</class>
|
<class>Dialog</class>
|
||||||
|
<resources>
|
||||||
|
</resources>
|
||||||
<widget class="QDialog" name="Dialog">
|
<widget class="QDialog" name="Dialog">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -63,8 +65,8 @@
|
|||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>345</x>
|
<x>350</x>
|
||||||
<y>10</y>
|
<y>20</y>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>71</height>
|
<height>71</height>
|
||||||
</rect>
|
</rect>
|
||||||
@@ -73,7 +75,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="pixmap">
|
<property name="pixmap">
|
||||||
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
<pixmap resource="resources.qrc">:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
||||||
</property>
|
</property>
|
||||||
<property name="scaledContents">
|
<property name="scaledContents">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -137,7 +139,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset>
|
<iconset resource="resources.qrc">
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@@ -160,7 +162,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset>
|
<iconset resource="resources.qrc">
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@@ -235,18 +237,6 @@
|
|||||||
<string>Flux sélectionné(s) à charger :</string>
|
<string>Flux sélectionné(s) à charger :</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<zorder>label_3</zorder>
|
|
||||||
<zorder>comboBox</zorder>
|
|
||||||
<zorder>comboBox_2</zorder>
|
|
||||||
<zorder>pushButton_2</zorder>
|
|
||||||
<zorder>tableWidget</zorder>
|
|
||||||
<zorder>tableWidget_2</zorder>
|
|
||||||
<zorder>commandLinkButton</zorder>
|
|
||||||
<zorder>commandLinkButton_2</zorder>
|
|
||||||
<zorder>lineEdit</zorder>
|
|
||||||
<zorder>label</zorder>
|
|
||||||
<zorder>label_2</zorder>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -9,366 +9,244 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>890</width>
|
<width>910</width>
|
||||||
<height>810</height>
|
<height>800</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>910</width>
|
||||||
<height>400</height>
|
<height>800</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>890</width>
|
<width>910</width>
|
||||||
<height>810</height>
|
<height>800</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>SIG CEN-RA</string>
|
<string>SIG CEN-RA</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeGripEnabled">
|
<widget class="QComboBox" name="comboBox">
|
||||||
<bool>false</bool>
|
<property name="geometry">
|
||||||
</property>
|
<rect>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<x>260</x>
|
||||||
<property name="sizeConstraint">
|
<y>130</y>
|
||||||
<enum>QLayout::SetMaximumSize</enum>
|
<width>171</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="editable">
|
||||||
<number>0</number>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="currentText">
|
||||||
<number>0</number>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
</widget>
|
||||||
<number>0</number>
|
<widget class="QComboBox" name="comboBox_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>370</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="editable">
|
||||||
<number>0</number>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing">
|
<property name="currentText">
|
||||||
<number>0</number>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
</widget>
|
||||||
<widget class="QScrollArea" name="scrollArea">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="maximumSize">
|
<property name="geometry">
|
||||||
<size>
|
<rect>
|
||||||
<width>890</width>
|
<x>345</x>
|
||||||
<height>810</height>
|
<y>10</y>
|
||||||
</size>
|
<width>221</width>
|
||||||
</property>
|
<height>71</height>
|
||||||
<property name="inputMethodHints">
|
</rect>
|
||||||
<set>Qt::ImhNoEditMenu</set>
|
</property>
|
||||||
</property>
|
<property name="text">
|
||||||
<property name="frameShape">
|
<string/>
|
||||||
<enum>QFrame::NoFrame</enum>
|
</property>
|
||||||
</property>
|
<property name="pixmap">
|
||||||
<property name="frameShadow">
|
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
||||||
<enum>QFrame::Sunken</enum>
|
</property>
|
||||||
</property>
|
<property name="scaledContents">
|
||||||
<property name="lineWidth">
|
<bool>true</bool>
|
||||||
<number>0</number>
|
</property>
|
||||||
</property>
|
</widget>
|
||||||
<property name="midLineWidth">
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
<number>0</number>
|
<property name="geometry">
|
||||||
</property>
|
<rect>
|
||||||
<property name="verticalScrollBarPolicy">
|
<x>370</x>
|
||||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
<y>750</y>
|
||||||
</property>
|
<width>171</width>
|
||||||
<property name="horizontalScrollBarPolicy">
|
<height>23</height>
|
||||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="scrollAreaWidgetContents_2">
|
<property name="text">
|
||||||
<property name="geometry">
|
<string>Charger les couches</string>
|
||||||
<rect>
|
</property>
|
||||||
<x>0</x>
|
</widget>
|
||||||
<y>0</y>
|
<widget class="QTableWidget" name="tableWidget">
|
||||||
<width>890</width>
|
<property name="enabled">
|
||||||
<height>810</height>
|
<bool>true</bool>
|
||||||
</rect>
|
</property>
|
||||||
</property>
|
<property name="geometry">
|
||||||
<property name="maximumSize">
|
<rect>
|
||||||
<size>
|
<x>30</x>
|
||||||
<width>890</width>
|
<y>170</y>
|
||||||
<height>810</height>
|
<width>850</width>
|
||||||
</size>
|
<height>281</height>
|
||||||
</property>
|
</rect>
|
||||||
<widget class="QCommandLinkButton" name="commandLinkButton_2">
|
</property>
|
||||||
<property name="geometry">
|
<property name="selectionMode">
|
||||||
<rect>
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
<x>450</x>
|
</property>
|
||||||
<y>470</y>
|
<property name="sortingEnabled">
|
||||||
<width>61</width>
|
<bool>true</bool>
|
||||||
<height>61</height>
|
</property>
|
||||||
</rect>
|
</widget>
|
||||||
</property>
|
<widget class="QTableWidget" name="tableWidget_2">
|
||||||
<property name="text">
|
<property name="geometry">
|
||||||
<string/>
|
<rect>
|
||||||
</property>
|
<x>30</x>
|
||||||
<property name="icon">
|
<y>550</y>
|
||||||
<iconset>
|
<width>850</width>
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
<height>181</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="iconSize">
|
</property>
|
||||||
<size>
|
<property name="selectionMode">
|
||||||
<width>50</width>
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
<height>40</height>
|
</property>
|
||||||
</size>
|
</widget>
|
||||||
</property>
|
<widget class="QCommandLinkButton" name="commandLinkButton">
|
||||||
</widget>
|
<property name="geometry">
|
||||||
<widget class="QPushButton" name="pushButton_2">
|
<rect>
|
||||||
<property name="geometry">
|
<x>400</x>
|
||||||
<rect>
|
<y>470</y>
|
||||||
<x>360</x>
|
<width>61</width>
|
||||||
<y>750</y>
|
<height>61</height>
|
||||||
<width>171</width>
|
</rect>
|
||||||
<height>23</height>
|
</property>
|
||||||
</rect>
|
<property name="text">
|
||||||
</property>
|
<string/>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Charger les couches</string>
|
<property name="icon">
|
||||||
</property>
|
<iconset>
|
||||||
</widget>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
||||||
<widget class="QLabel" name="label">
|
</property>
|
||||||
<property name="geometry">
|
<property name="iconSize">
|
||||||
<rect>
|
<size>
|
||||||
<x>30</x>
|
<width>50</width>
|
||||||
<y>150</y>
|
<height>40</height>
|
||||||
<width>161</width>
|
</size>
|
||||||
<height>16</height>
|
</property>
|
||||||
</rect>
|
</widget>
|
||||||
</property>
|
<widget class="QCommandLinkButton" name="commandLinkButton_2">
|
||||||
<property name="font">
|
<property name="geometry">
|
||||||
<font>
|
<rect>
|
||||||
<family>Calibri</family>
|
<x>460</x>
|
||||||
<pointsize>10</pointsize>
|
<y>470</y>
|
||||||
<italic>false</italic>
|
<width>61</width>
|
||||||
</font>
|
<height>61</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Liste des flux disponibles :</string>
|
<property name="text">
|
||||||
</property>
|
<string/>
|
||||||
</widget>
|
</property>
|
||||||
<widget class="QTableWidget" name="tableWidget_2">
|
<property name="icon">
|
||||||
<property name="geometry">
|
<iconset>
|
||||||
<rect>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
||||||
<x>20</x>
|
</property>
|
||||||
<y>550</y>
|
<property name="iconSize">
|
||||||
<width>851</width>
|
<size>
|
||||||
<height>181</height>
|
<width>50</width>
|
||||||
</rect>
|
<height>40</height>
|
||||||
</property>
|
</size>
|
||||||
<property name="selectionMode">
|
</property>
|
||||||
<enum>QAbstractItemView::SingleSelection</enum>
|
</widget>
|
||||||
</property>
|
<widget class="QLineEdit" name="lineEdit">
|
||||||
</widget>
|
<property name="enabled">
|
||||||
<widget class="QComboBox" name="comboBox">
|
<bool>true</bool>
|
||||||
<property name="geometry">
|
</property>
|
||||||
<rect>
|
<property name="geometry">
|
||||||
<x>250</x>
|
<rect>
|
||||||
<y>130</y>
|
<x>480</x>
|
||||||
<width>171</width>
|
<y>130</y>
|
||||||
<height>22</height>
|
<width>171</width>
|
||||||
</rect>
|
<height>21</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="editable">
|
</property>
|
||||||
<bool>false</bool>
|
<property name="text">
|
||||||
</property>
|
<string>Recherche par mots-clés</string>
|
||||||
<property name="currentText">
|
</property>
|
||||||
<string notr="true"/>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignCenter</set>
|
||||||
</widget>
|
</property>
|
||||||
<widget class="QLineEdit" name="lineEdit">
|
<property name="readOnly">
|
||||||
<property name="enabled">
|
<bool>false</bool>
|
||||||
<bool>true</bool>
|
</property>
|
||||||
</property>
|
<property name="clearButtonEnabled">
|
||||||
<property name="geometry">
|
<bool>true</bool>
|
||||||
<rect>
|
</property>
|
||||||
<x>470</x>
|
</widget>
|
||||||
<y>130</y>
|
<widget class="QLabel" name="label">
|
||||||
<width>171</width>
|
<property name="geometry">
|
||||||
<height>21</height>
|
<rect>
|
||||||
</rect>
|
<x>40</x>
|
||||||
</property>
|
<y>150</y>
|
||||||
<property name="text">
|
<width>161</width>
|
||||||
<string>Recherche par mots-clés</string>
|
<height>16</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="alignment">
|
</property>
|
||||||
<set>Qt::AlignCenter</set>
|
<property name="font">
|
||||||
</property>
|
<font>
|
||||||
<property name="readOnly">
|
<family>Calibri</family>
|
||||||
<bool>false</bool>
|
<pointsize>10</pointsize>
|
||||||
</property>
|
<italic>false</italic>
|
||||||
<property name="clearButtonEnabled">
|
</font>
|
||||||
<bool>true</bool>
|
</property>
|
||||||
</property>
|
<property name="text">
|
||||||
</widget>
|
<string>Liste des flux disponibles :</string>
|
||||||
<widget class="QToolButton" name="toolButton">
|
</property>
|
||||||
<property name="geometry">
|
</widget>
|
||||||
<rect>
|
<widget class="QLabel" name="label_2">
|
||||||
<x>660</x>
|
<property name="geometry">
|
||||||
<y>130</y>
|
<rect>
|
||||||
<width>21</width>
|
<x>30</x>
|
||||||
<height>21</height>
|
<y>530</y>
|
||||||
</rect>
|
<width>171</width>
|
||||||
</property>
|
<height>16</height>
|
||||||
<property name="text">
|
</rect>
|
||||||
<string/>
|
</property>
|
||||||
</property>
|
<property name="font">
|
||||||
</widget>
|
<font>
|
||||||
<widget class="QTableWidget" name="tableWidget">
|
<family>Calibri</family>
|
||||||
<property name="enabled">
|
<pointsize>10</pointsize>
|
||||||
<bool>true</bool>
|
<italic>false</italic>
|
||||||
</property>
|
</font>
|
||||||
<property name="geometry">
|
</property>
|
||||||
<rect>
|
<property name="text">
|
||||||
<x>20</x>
|
<string>Flux sélectionné(s) à charger :</string>
|
||||||
<y>170</y>
|
</property>
|
||||||
<width>850</width>
|
</widget>
|
||||||
<height>281</height>
|
<zorder>label_3</zorder>
|
||||||
</rect>
|
<zorder>comboBox</zorder>
|
||||||
</property>
|
<zorder>comboBox_2</zorder>
|
||||||
<property name="sizePolicy">
|
<zorder>pushButton_2</zorder>
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
<zorder>tableWidget</zorder>
|
||||||
<horstretch>0</horstretch>
|
<zorder>tableWidget_2</zorder>
|
||||||
<verstretch>0</verstretch>
|
<zorder>commandLinkButton</zorder>
|
||||||
</sizepolicy>
|
<zorder>commandLinkButton_2</zorder>
|
||||||
</property>
|
<zorder>lineEdit</zorder>
|
||||||
<property name="selectionMode">
|
<zorder>label</zorder>
|
||||||
<enum>QAbstractItemView::SingleSelection</enum>
|
<zorder>label_2</zorder>
|
||||||
</property>
|
|
||||||
<property name="sortingEnabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>20</x>
|
|
||||||
<y>530</y>
|
|
||||||
<width>171</width>
|
|
||||||
<height>16</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Calibri</family>
|
|
||||||
<pointsize>10</pointsize>
|
|
||||||
<italic>false</italic>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Flux sélectionné(s) à charger :</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>335</x>
|
|
||||||
<y>10</y>
|
|
||||||
<width>221</width>
|
|
||||||
<height>71</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="pixmap">
|
|
||||||
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QComboBox" name="comboBox_2">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>360</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>171</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Ignored" vsizetype="Ignored">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="editable">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="currentText">
|
|
||||||
<string notr="true"/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QCommandLinkButton" name="commandLinkButton">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>390</x>
|
|
||||||
<y>470</y>
|
|
||||||
<width>61</width>
|
|
||||||
<height>61</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset>
|
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
|
||||||
<size>
|
|
||||||
<width>50</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>90</x>
|
|
||||||
<y>10</y>
|
|
||||||
<width>730</width>
|
|
||||||
<height>730</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: rgba(255, 255, 255,0.50);</string>
|
|
||||||
</property>
|
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QCheckBox" name="checkBox">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>830</x>
|
|
||||||
<y>20</y>
|
|
||||||
<width>70</width>
|
|
||||||
<height>17</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Journal des modifications</string>
|
<string>Metabase</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.0 KiB |
@@ -1,219 +1,220 @@
|
|||||||
__copyright__ = "Copyright 2021, 3Liz"
|
__copyright__ = "Copyright 2021, 3Liz"
|
||||||
__license__ = "GPL version 3"
|
__license__ = "GPL version 3"
|
||||||
__email__ = "info@3liz.org"
|
__email__ = "info@3liz.org"
|
||||||
|
|
||||||
|
|
||||||
from qgis.core import QgsApplication
|
from qgis.core import QgsApplication
|
||||||
from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
|
from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
||||||
from qgis.PyQt.QtWidgets import QAction, QMessageBox
|
from qgis.PyQt.QtWidgets import QAction, QMessageBox
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import qgis
|
import qgis
|
||||||
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
'''
|
'''
|
||||||
from pg_metadata.connection_manager import (
|
from pg_metadata.connection_manager import (
|
||||||
store_connections,
|
store_connections,
|
||||||
validate_connections_names,
|
validate_connections_names,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
from pg_metadata.locator import LocatorFilter
|
from pg_metadata.locator import LocatorFilter
|
||||||
from pg_metadata.processing.provider import PgMetadataProvider
|
from pg_metadata.processing.provider import PgMetadataProvider
|
||||||
from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
|
from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
|
||||||
'''
|
'''
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
pyperclip,
|
resources_path,
|
||||||
resources_path,
|
maj_verif,
|
||||||
maj_verif,
|
)
|
||||||
)
|
from .dock import CenRa_Metabase
|
||||||
pyperclip()
|
from .editor import Metabase_Editor
|
||||||
from .dock import CenRa_Metabase
|
from .about_form import MetabaseAboutDialog
|
||||||
from .editor import Metabase_Editor
|
#from CenRa_Metabase.issues import CenRa_Issues
|
||||||
from .about_form import MetabaseAboutDialog
|
|
||||||
#from CenRa_Metabase.issues import CenRa_Issues
|
from PyQt5.QtCore import *
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
|
||||||
|
|
||||||
class PgMetadata:
|
class PgMetadata:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
""" Constructor. """
|
""" Constructor. """
|
||||||
self.dock = None
|
self.dock = None
|
||||||
self.editor = None
|
self.editor = None
|
||||||
# self.issues = None
|
# self.issues = None
|
||||||
self.provider = None
|
self.provider = None
|
||||||
self.locator_filter = None
|
self.locator_filter = None
|
||||||
self.dock_action = None
|
self.dock_action = None
|
||||||
self.help_action = None
|
self.help_action = None
|
||||||
plugin_dir = os.path.dirname(__file__)
|
plugin_dir = os.path.dirname(__file__)
|
||||||
end_find = plugin_dir.rfind('\\')+1
|
end_find = plugin_dir.rfind('\\')+1
|
||||||
global NAME
|
global NAME
|
||||||
NAME = plugin_dir[end_find:]
|
NAME = plugin_dir[end_find:]
|
||||||
maj_verif(NAME)
|
maj_verif(NAME)
|
||||||
|
|
||||||
# Display About window on first use
|
# Display About window on first use
|
||||||
version = qgis.utils.pluginMetadata('CenRa_METABASE','version')
|
version = qgis.utils.pluginMetadata('CenRa_METABASE','version')
|
||||||
s = QSettings()
|
s = QSettings()
|
||||||
versionUse = s.value("metadata/version", 1, type=str)
|
versionUse = s.value("metadata/version", 1, type=str)
|
||||||
if str(versionUse) != str(version) :
|
if str(versionUse) != str(version) :
|
||||||
s.setValue("metadata/version", str(version))
|
s.setValue("metadata/version", str(version))
|
||||||
print(versionUse,version)
|
print(versionUse,version)
|
||||||
self.open_about_dialog()
|
self.open_about_dialog()
|
||||||
# setup_logger('pg_metadata')
|
# setup_logger('pg_metadata')
|
||||||
|
|
||||||
#locale, file_path = setup_translation(
|
#locale, file_path = setup_translation(
|
||||||
# folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm")
|
# folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm")
|
||||||
#if file_path:
|
#if file_path:
|
||||||
# self.translator = QTranslator()
|
# self.translator = QTranslator()
|
||||||
# self.translator.load(file_path)
|
# self.translator.load(file_path)
|
||||||
# noinspection PyCallByClass,PyArgumentList
|
# noinspection PyCallByClass,PyArgumentList
|
||||||
# QCoreApplication.installTranslator(self.translator)
|
# QCoreApplication.installTranslator(self.translator)
|
||||||
|
|
||||||
# noinspection PyPep8Naming
|
# noinspection PyPep8Naming
|
||||||
#def initProcessing(self):
|
#def initProcessing(self):
|
||||||
#""" Add the QGIS Processing provider. """
|
#""" Add the QGIS Processing provider. """
|
||||||
#if not self.provider:
|
#if not self.provider:
|
||||||
#self.provider = PgMetadataProvider()
|
#self.provider = PgMetadataProvider()
|
||||||
#QgsApplication.processingRegistry().addProvider(self.provider)
|
#QgsApplication.processingRegistry().addProvider(self.provider)
|
||||||
|
|
||||||
# noinspection PyPep8Naming
|
# noinspection PyPep8Naming
|
||||||
def initGui(self):
|
def initGui(self):
|
||||||
""" Build the plugin GUI. """
|
""" Build the plugin GUI. """
|
||||||
#self.initProcessing()
|
#self.initProcessing()
|
||||||
|
|
||||||
#self.check_invalid_connection_names()
|
#self.check_invalid_connection_names()
|
||||||
|
|
||||||
self.toolBar = iface.addToolBar("CenRa_Metabase")
|
self.toolBar = iface.addToolBar("CenRa_Metabase")
|
||||||
self.toolBar.setObjectName("CenRa_Metabase")
|
self.toolBar.setObjectName("CenRa_Metabase")
|
||||||
|
|
||||||
icon = QIcon(resources_path('icons', 'icon.png'))
|
icon = QIcon(resources_path('icons', 'icon.png'))
|
||||||
icon2 = QIcon(resources_path('icons', 'icon_2.png'))
|
icon2 = QIcon(resources_path('icons', 'icon_2.png'))
|
||||||
|
|
||||||
# Open the online help
|
# Open the online help
|
||||||
self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
||||||
iface.pluginHelpMenu().addAction(self.help_action)
|
iface.pluginHelpMenu().addAction(self.help_action)
|
||||||
self.help_action.triggered.connect(self.open_help)
|
self.help_action.triggered.connect(self.open_help)
|
||||||
if not self.editor:
|
if not self.editor:
|
||||||
self.editor = Metabase_Editor()
|
self.editor = Metabase_Editor()
|
||||||
|
|
||||||
|
|
||||||
self.editor_action = QAction(icon2, 'CenRa_Metabase',None)
|
self.editor_action = QAction(icon2, 'CenRa_Metabase',None)
|
||||||
self.toolBar.addAction(self.editor_action)
|
self.toolBar.addAction(self.editor_action)
|
||||||
self.editor_action.triggered.connect(self.open_editor)
|
self.editor_action.triggered.connect(self.open_editor)
|
||||||
|
|
||||||
if not self.dock:
|
if not self.dock:
|
||||||
self.dock = CenRa_Metabase()
|
self.dock = CenRa_Metabase()
|
||||||
iface.addDockWidget(Qt.RightDockWidgetArea, self.dock)
|
iface.addDockWidget(Qt.RightDockWidgetArea, self.dock)
|
||||||
|
|
||||||
# Open/close the dock from plugin menu
|
# Open/close the dock from plugin menu
|
||||||
self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
||||||
iface.pluginMenu().addAction(self.dock_action)
|
iface.pluginMenu().addAction(self.dock_action)
|
||||||
self.dock_action.triggered.connect(self.open_dock)
|
self.dock_action.triggered.connect(self.open_dock)
|
||||||
# if not self.issues:
|
# if not self.issues:
|
||||||
# self.issues = CenRa_Issues()
|
# self.issues = CenRa_Issues()
|
||||||
|
|
||||||
|
|
||||||
# self.issues_action = QAction(icon, 'CenRa_Metabase',None)
|
# self.issues_action = QAction(icon, 'CenRa_Metabase',None)
|
||||||
# self.toolBar.addAction(self.issues_action)
|
# self.toolBar.addAction(self.issues_action)
|
||||||
# self.issues_action.triggered.connect(self.open_issues)
|
# self.issues_action.triggered.connect(self.open_issues)
|
||||||
'''
|
'''
|
||||||
if not self.locator_filter:
|
if not self.locator_filter:
|
||||||
self.locator_filter = LocatorFilter(iface)
|
self.locator_filter = LocatorFilter(iface)
|
||||||
iface.registerLocatorFilter(self.locator_filter)
|
iface.registerLocatorFilter(self.locator_filter)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_invalid_connection_names():
|
def check_invalid_connection_names():
|
||||||
""" Check for invalid connection names in the QgsSettings. """
|
""" Check for invalid connection names in the QgsSettings. """
|
||||||
valid, invalid = validate_connections_names()
|
valid, invalid = validate_connections_names()
|
||||||
n_invalid = len(invalid)
|
n_invalid = len(invalid)
|
||||||
|
|
||||||
if n_invalid == 0:
|
if n_invalid == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
invalid_text = ', '.join(invalid)
|
invalid_text = ', '.join(invalid)
|
||||||
msg = QMessageBox()
|
msg = QMessageBox()
|
||||||
msg.setIcon(QMessageBox.Warning)
|
msg.setIcon(QMessageBox.Warning)
|
||||||
msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
|
msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
|
||||||
msg.setText(tr(
|
msg.setText(tr(
|
||||||
f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or '
|
f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or '
|
||||||
f'no longer available: {invalid_text}'))
|
f'no longer available: {invalid_text}'))
|
||||||
msg.setInformativeText(tr(
|
msg.setInformativeText(tr(
|
||||||
'Do you want to remove these connection(s) from the PgMetadata settings? '
|
'Do you want to remove these connection(s) from the PgMetadata settings? '
|
||||||
'(You can also do this later with the “Set Connections” tool.)'))
|
'(You can also do this later with the “Set Connections” tool.)'))
|
||||||
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
|
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
|
||||||
clicked = msg.exec()
|
clicked = msg.exec()
|
||||||
|
|
||||||
if clicked == QMessageBox.Yes:
|
if clicked == QMessageBox.Yes:
|
||||||
iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
|
iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
|
||||||
store_connections(valid)
|
store_connections(valid)
|
||||||
if clicked == QMessageBox.No:
|
if clicked == QMessageBox.No:
|
||||||
iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
|
iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
|
||||||
'''
|
'''
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
dialog = MetabaseAboutDialog(iface)
|
dialog = MetabaseAboutDialog(iface)
|
||||||
dialog.exec_()
|
dialog.exec_()
|
||||||
def open_help():
|
def open_help():
|
||||||
""" Open the online help. """
|
""" Open the online help. """
|
||||||
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
||||||
|
|
||||||
def open_dock(self):
|
def open_dock(self):
|
||||||
""" Open the dock. """
|
""" Open the dock. """
|
||||||
self.dock.show()
|
self.dock.show()
|
||||||
self.dock.raise_()
|
self.dock.raise_()
|
||||||
|
|
||||||
def open_editor(self):
|
def open_editor(self):
|
||||||
self.editor.show()
|
self.editor.show()
|
||||||
self.editor.raise_()
|
self.editor.raise_()
|
||||||
|
|
||||||
# def open_issues(self):
|
# def open_issues(self):
|
||||||
# self.issues.show()
|
# self.issues.show()
|
||||||
# self.issues.raise_()
|
# self.issues.raise_()
|
||||||
|
|
||||||
def unload(self):
|
def unload(self):
|
||||||
""" Unload the plugin. """
|
""" Unload the plugin. """
|
||||||
#if self.editor:
|
if self.editor:
|
||||||
#iface.removePluginMenu('CenRa_Metabase',self.editor_action)
|
iface.removePluginMenu('CenRa_Metabase',self.editor_action)
|
||||||
#self.editor.removeToolBarIcon(self.editor_action)
|
#self.editor.removeToolBarIcon(self.editor_action)
|
||||||
|
|
||||||
if self.dock:
|
|
||||||
iface.removeDockWidget(self.dock)
|
|
||||||
self.dock.deleteLater()
|
if self.dock:
|
||||||
|
iface.removeDockWidget(self.dock)
|
||||||
if self.provider:
|
self.dock.deleteLater()
|
||||||
QgsApplication.processingRegistry().removeProvider(self.provider)
|
|
||||||
del self.provider
|
if self.provider:
|
||||||
|
QgsApplication.processingRegistry().removeProvider(self.provider)
|
||||||
if self.locator_filter:
|
del self.provider
|
||||||
iface.deregisterLocatorFilter(self.locator_filter)
|
|
||||||
del self.locator_filter
|
if self.locator_filter:
|
||||||
|
iface.deregisterLocatorFilter(self.locator_filter)
|
||||||
if self.help_action:
|
del self.locator_filter
|
||||||
iface.pluginHelpMenu().removeAction(self.help_action)
|
|
||||||
del self.help_action
|
if self.dock_action:
|
||||||
|
iface.pluginMenu().removeAction(self.dock_action)
|
||||||
if self.dock_action:
|
del self.dock_action
|
||||||
iface.pluginMenu().removeAction(self.dock_action)
|
|
||||||
del self.dock_action
|
if self.help_action:
|
||||||
|
iface.pluginHelpMenu().removeAction(self.help_action)
|
||||||
|
del self.help_action
|
||||||
@staticmethod
|
|
||||||
def run_tests(pattern='test_*.py', package=None):
|
@staticmethod
|
||||||
"""Run the test inside QGIS."""
|
def run_tests(pattern='test_*.py', package=None):
|
||||||
try:
|
"""Run the test inside QGIS."""
|
||||||
from pathlib import Path
|
try:
|
||||||
|
from pathlib import Path
|
||||||
from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import (
|
|
||||||
test_package,
|
from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import (
|
||||||
)
|
test_package,
|
||||||
if package is None:
|
)
|
||||||
package = '{}.__init__'.format(Path(__file__).parent.name)
|
if package is None:
|
||||||
test_package(package, pattern)
|
package = '{}.__init__'.format(Path(__file__).parent.name)
|
||||||
except (AttributeError, ModuleNotFoundError):
|
test_package(package, pattern)
|
||||||
message = 'Could not load tests. Are you using a production package?'
|
except (AttributeError, ModuleNotFoundError):
|
||||||
print(message) # NOQA
|
message = 'Could not load tests. Are you using a production package?'
|
||||||
|
print(message) # NOQA
|
||||||
@@ -16,6 +16,7 @@ ABOUT_FORM_CLASS, _ = uic.loadUiType(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class MetabaseAboutDialog(QDialog, ABOUT_FORM_CLASS):
|
class MetabaseAboutDialog(QDialog, ABOUT_FORM_CLASS):
|
||||||
|
|
||||||
""" About - Let the user display the about dialog. """
|
""" About - Let the user display the about dialog. """
|
||||||
@@ -1,494 +1,488 @@
|
|||||||
"""Dock file."""
|
"""Dock file."""
|
||||||
|
|
||||||
__copyright__ = 'Copyright 2020, 3Liz'
|
__copyright__ = 'Copyright 2020, 3Liz'
|
||||||
__license__ = 'GPL version 3'
|
__license__ = 'GPL version 3'
|
||||||
__email__ = 'info@3liz.org'
|
__email__ = 'info@3liz.org'
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from xml.dom.minidom import parseString
|
from xml.dom.minidom import parseString
|
||||||
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
NULL,
|
NULL,
|
||||||
QgsApplication,
|
QgsApplication,
|
||||||
QgsDataSourceUri,
|
QgsDataSourceUri,
|
||||||
QgsProject,
|
QgsProject,
|
||||||
QgsProviderConnectionException,
|
QgsProviderConnectionException,
|
||||||
QgsProviderRegistry,
|
QgsProviderRegistry,
|
||||||
QgsRasterLayer,
|
QgsRasterLayer,
|
||||||
QgsSettings,
|
QgsSettings,
|
||||||
QgsVectorLayer,
|
QgsVectorLayer,
|
||||||
)
|
)
|
||||||
from qgis.PyQt.QtCore import QLocale, QUrl
|
from qgis.PyQt.QtCore import QLocale, QUrl
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
QDockWidget,
|
QDockWidget,
|
||||||
QFileDialog,
|
QFileDialog,
|
||||||
QInputDialog,
|
QInputDialog,
|
||||||
QMenu,
|
QMenu,
|
||||||
QToolButton,
|
QToolButton,
|
||||||
)
|
)
|
||||||
from qgis.gui import *
|
from qgis.gui import *
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import qgis
|
'''
|
||||||
'''
|
from pg_metadata.connection_manager import (
|
||||||
from pg_metadata.connection_manager import (
|
check_pgmetadata_is_installed,
|
||||||
check_pgmetadata_is_installed,
|
connections_list,
|
||||||
connections_list,
|
settings_connections_names,
|
||||||
settings_connections_names,
|
)
|
||||||
)
|
'''
|
||||||
'''
|
|
||||||
from .tools.PythonSQL import login_base
|
from .tools.resources import (
|
||||||
from .tools.resources import (
|
load_ui,
|
||||||
load_ui,
|
resources_path,
|
||||||
resources_path,
|
login_base,
|
||||||
)
|
)
|
||||||
|
|
||||||
DOCK_CLASS = load_ui('CenRa_Metabase_dockwidget_base.ui')
|
DOCK_CLASS = load_ui('CenRa_Metabase_dockwidget_base.ui')
|
||||||
LOGGER = logging.getLogger('CenRa_Metabase')
|
LOGGER = logging.getLogger('CenRa_Metabase')
|
||||||
|
|
||||||
|
|
||||||
class Format(namedtuple('Format', ['label', 'ext'])):
|
class Format(namedtuple('Format', ['label', 'ext'])):
|
||||||
""" Format available for exporting metadata. """
|
""" Format available for exporting metadata. """
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class OutputFormats(Format, Enum):
|
class OutputFormats(Format, Enum):
|
||||||
""" Output format for a metadata sheet. """
|
""" Output format for a metadata sheet. """
|
||||||
PDF = Format(label='PDF', ext='pdf')
|
PDF = Format(label='PDF', ext='pdf')
|
||||||
HTML = Format(label='HTML', ext='html')
|
HTML = Format(label='HTML', ext='html')
|
||||||
DCAT = Format(label='DCAT', ext='xml')
|
DCAT = Format(label='DCAT', ext='xml')
|
||||||
|
|
||||||
|
|
||||||
class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
_ = parent
|
_ = parent
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settings = QgsSettings()
|
self.settings = QgsSettings()
|
||||||
|
|
||||||
self.current_datasource_uri = None
|
self.current_datasource_uri = None
|
||||||
self.current_connection = None
|
self.current_connection = None
|
||||||
|
|
||||||
self.viewer.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
self.viewer.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
||||||
self.viewer.page().linkClicked.connect(self.open_link)
|
self.viewer.page().linkClicked.connect(self.open_link)
|
||||||
|
|
||||||
# Help button
|
# Help button
|
||||||
self.external_help.setText('')
|
self.external_help.setText('')
|
||||||
self.external_help.setIcon(QIcon(QgsApplication.iconPath('mActionHelpContents.svg')))
|
self.external_help.setIcon(QIcon(QgsApplication.iconPath('mActionHelpContents.svg')))
|
||||||
self.external_help.clicked.connect(self.open_external_help)
|
self.external_help.clicked.connect(self.open_external_help)
|
||||||
|
|
||||||
# Flat table button
|
# Flat table button
|
||||||
self.flatten_dataset_table.setText('')
|
self.flatten_dataset_table.setText('')
|
||||||
#self.flatten_dataset_table.setToolTip(tr("Add the catalog table"))
|
#self.flatten_dataset_table.setToolTip(tr("Add the catalog table"))
|
||||||
self.flatten_dataset_table.setIcon(QgsApplication.getThemeIcon("/mActionAddHtml.svg"))
|
self.flatten_dataset_table.setIcon(QgsApplication.getThemeIcon("/mActionAddHtml.svg"))
|
||||||
#self.flatten_dataset_table.clicked.connect(self.add_flatten_dataset_table)
|
#self.flatten_dataset_table.clicked.connect(self.add_flatten_dataset_table)
|
||||||
|
|
||||||
# Settings menu
|
# Settings menu
|
||||||
self.config.setAutoRaise(True)
|
self.config.setAutoRaise(True)
|
||||||
#self.config.setToolTip(tr("Settings"))
|
#self.config.setToolTip(tr("Settings"))
|
||||||
self.config.setPopupMode(QToolButton.InstantPopup)
|
self.config.setPopupMode(QToolButton.InstantPopup)
|
||||||
self.config.setIcon(QgsApplication.getThemeIcon("/mActionOptions.svg"))
|
self.config.setIcon(QgsApplication.getThemeIcon("/mActionOptions.svg"))
|
||||||
|
|
||||||
self.auto_open_dock_action = QAction(
|
self.auto_open_dock_action = QAction(
|
||||||
("Dommage, cette option n'existe pas encore."),
|
("Dommage, cette option n'existe pas encore."),
|
||||||
iface.mainWindow())
|
iface.mainWindow())
|
||||||
self.auto_open_dock_action.setCheckable(True)
|
self.auto_open_dock_action.setCheckable(True)
|
||||||
self.auto_open_dock_action.setChecked(
|
self.auto_open_dock_action.setChecked(
|
||||||
self.settings.value("pgmetadata/auto_open_dock", True, type=bool)
|
self.settings.value("pgmetadata/auto_open_dock", True, type=bool)
|
||||||
)
|
)
|
||||||
self.auto_open_dock_action.triggered.connect(self.save_auto_open_dock)
|
self.auto_open_dock_action.triggered.connect(self.save_auto_open_dock)
|
||||||
menu = QMenu()
|
menu = QMenu()
|
||||||
menu.addAction(self.auto_open_dock_action)
|
menu.addAction(self.auto_open_dock_action)
|
||||||
self.config.setMenu(menu)
|
self.config.setMenu(menu)
|
||||||
|
|
||||||
# Setting PDF/HTML menu
|
# Setting PDF/HTML menu
|
||||||
self.save_button.setAutoRaise(True)
|
self.save_button.setAutoRaise(True)
|
||||||
#self.save_button.setToolTip(tr("Save metadata"))
|
#self.save_button.setToolTip(tr("Save metadata"))
|
||||||
self.save_button.setPopupMode(QToolButton.InstantPopup)
|
self.save_button.setPopupMode(QToolButton.InstantPopup)
|
||||||
self.save_button.setIcon(QIcon(QgsApplication.iconPath('mActionFileSave.svg')))
|
self.save_button.setIcon(QIcon(QgsApplication.iconPath('mActionFileSave.svg')))
|
||||||
|
|
||||||
self.save_as_pdf = QAction(
|
self.save_as_pdf = QAction(
|
||||||
('Enregistrer en PDF') + '…',
|
('Enregistrer en PDF') + '…',
|
||||||
iface.mainWindow())
|
iface.mainWindow())
|
||||||
self.save_as_pdf.triggered.connect(partial(self.export_dock_content, OutputFormats.PDF))
|
self.save_as_pdf.triggered.connect(partial(self.export_dock_content, OutputFormats.PDF))
|
||||||
|
|
||||||
self.save_as_html = QAction(
|
self.save_as_html = QAction(
|
||||||
('Enregistrer en HTML') + '…',
|
('Enregistrer en HTML') + '…',
|
||||||
iface.mainWindow())
|
iface.mainWindow())
|
||||||
self.save_as_html.triggered.connect(partial(self.export_dock_content, OutputFormats.HTML))
|
self.save_as_html.triggered.connect(partial(self.export_dock_content, OutputFormats.HTML))
|
||||||
self.save_as_dcat = QAction(
|
self.save_as_dcat = QAction(
|
||||||
('Enregistrer en DCAT') + '…',
|
('Enregistrer en DCAT') + '…',
|
||||||
iface.mainWindow())
|
iface.mainWindow())
|
||||||
self.save_as_dcat.triggered.connect(partial(self.export_dock_content, OutputFormats.DCAT))
|
self.save_as_dcat.triggered.connect(partial(self.export_dock_content, OutputFormats.DCAT))
|
||||||
|
|
||||||
self.menu_save = QMenu()
|
self.menu_save = QMenu()
|
||||||
self.menu_save.addAction(self.save_as_pdf)
|
self.menu_save.addAction(self.save_as_pdf)
|
||||||
self.menu_save.addAction(self.save_as_html)
|
self.menu_save.addAction(self.save_as_html)
|
||||||
self.menu_save.addAction(self.save_as_dcat)
|
self.menu_save.addAction(self.save_as_dcat)
|
||||||
self.save_button.setMenu(self.menu_save)
|
self.save_button.setMenu(self.menu_save)
|
||||||
self.save_button.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
|
|
||||||
self.metadata = QgsProviderRegistry.instance().providerMetadata('postgres')
|
self.metadata = QgsProviderRegistry.instance().providerMetadata('postgres')
|
||||||
|
|
||||||
# Display message in the dock
|
# Display message in the dock
|
||||||
#if not settings_connections_names():
|
#if not settings_connections_names():
|
||||||
#self.default_html_content_not_installed()
|
#self.default_html_content_not_installed()
|
||||||
#else:
|
#else:
|
||||||
self.default_html_content_not_pg_layer()
|
self.default_html_content_not_pg_layer()
|
||||||
|
|
||||||
try:
|
iface.layerTreeView().currentLayerChanged.connect(self.layer_changed)
|
||||||
login_base()
|
|
||||||
iface.layerTreeView().currentLayerChanged.connect(self.layer_changed)
|
if iface.activeLayer():
|
||||||
except:
|
layer=iface.activeLayer()
|
||||||
#qgis.utils.plugins['CenRa_METABASE'].initGui()
|
iface.layerTreeView().setCurrentLayer(None)
|
||||||
qgis.utils.plugins['CenRa_METABASE'].unload()
|
iface.layerTreeView().setCurrentLayer(layer)
|
||||||
#self.default_html_content_not_pg_layer()
|
|
||||||
|
def export_dock_content(self, output_format: OutputFormats):
|
||||||
if iface.activeLayer():
|
""" Export the current displayed metadata sheet to the given format. """
|
||||||
layer=iface.activeLayer()
|
layer_name = iface.activeLayer().name()
|
||||||
iface.layerTreeView().setCurrentLayer(None)
|
|
||||||
iface.layerTreeView().setCurrentLayer(layer)
|
file_path = os.path.join(
|
||||||
|
os.environ['USERPROFILE'],
|
||||||
def export_dock_content(self, output_format: OutputFormats):
|
'Desktop\\{name}.{ext}'.format(name=layer_name, ext=output_format.ext)
|
||||||
""" Export the current displayed metadata sheet to the given format. """
|
)
|
||||||
layer_name = iface.activeLayer().name()
|
output_file = QFileDialog.getSaveFileName(
|
||||||
|
self,
|
||||||
file_path = os.path.join(
|
("Enregistrer en {format}").format(format=output_format.label),
|
||||||
os.environ['USERPROFILE'],
|
file_path,
|
||||||
'Desktop\\{name}.{ext}'.format(name=layer_name, ext=output_format.ext)
|
"{label} (*.{ext})".format(
|
||||||
)
|
label=output_format.label,
|
||||||
output_file = QFileDialog.getSaveFileName(
|
ext=output_format.ext,
|
||||||
self,
|
)
|
||||||
("Enregistrer en {format}").format(format=output_format.label),
|
)
|
||||||
file_path,
|
if output_file[0] == '':
|
||||||
"{label} (*.{ext})".format(
|
return
|
||||||
label=output_format.label,
|
|
||||||
ext=output_format.ext,
|
self.settings.setValue("UI/lastFileNameWidgetDir", os.path.dirname(output_file[0]))
|
||||||
)
|
|
||||||
)
|
output_file_path = output_file[0]
|
||||||
if output_file[0] == '':
|
parent_folder = str(Path(output_file_path).parent)
|
||||||
return
|
|
||||||
|
if output_format == OutputFormats.PDF:
|
||||||
self.settings.setValue("UI/lastFileNameWidgetDir", os.path.dirname(output_file[0]))
|
printer = QPrinter()
|
||||||
|
printer.setOutputFormat(QPrinter.PdfFormat)
|
||||||
output_file_path = output_file[0]
|
printer.setPageMargins(20, 20, 20, 20, QPrinter.Millimeter)
|
||||||
parent_folder = str(Path(output_file_path).parent)
|
printer.setOutputFileName(output_file_path)
|
||||||
|
self.viewer.print(printer)
|
||||||
if output_format == OutputFormats.PDF:
|
iface.messageBar().pushSuccess(
|
||||||
printer = QPrinter()
|
("Export PDF"),
|
||||||
printer.setOutputFormat(QPrinter.PdfFormat)
|
(
|
||||||
printer.setPageMargins(20, 20, 20, 20, QPrinter.Millimeter)
|
"The metadata has been exported as PDF successfully in "
|
||||||
printer.setOutputFileName(output_file_path)
|
"<a href=\"{}\">{}</a>").format(parent_folder, output_file_path)
|
||||||
self.viewer.print(printer)
|
)
|
||||||
iface.messageBar().pushSuccess(
|
|
||||||
("Export PDF"),
|
elif output_format in [OutputFormats.HTML,OutputFormats.DCAT]:
|
||||||
(
|
if output_format == OutputFormats.HTML:
|
||||||
"The metadata has been exported as PDF successfully in "
|
data_str = self.viewer.page().currentFrame().toHtml()
|
||||||
"<a href=\"{}\">{}</a>").format(parent_folder, output_file_path)
|
else:
|
||||||
)
|
layer = iface.activeLayer()
|
||||||
|
uri = layer.dataProvider().uri()
|
||||||
elif output_format in [OutputFormats.HTML,OutputFormats.DCAT]:
|
dataall = self.sql_info(uri)
|
||||||
if output_format == OutputFormats.HTML:
|
data = self.sql_to_xml(dataall)
|
||||||
data_str = self.viewer.page().currentFrame().toHtml()
|
|
||||||
else:
|
with open(resources_path('xml', 'dcat.xml'), encoding='utf8') as xml_file:
|
||||||
layer = iface.activeLayer()
|
xml_template = xml_file.read()
|
||||||
uri = layer.dataProvider().uri()
|
|
||||||
dataall = self.sql_info(uri)
|
xml = parseString(xml_template.format(language=data[0][0], content=data[0][1]))
|
||||||
data = self.sql_to_xml(dataall)
|
|
||||||
|
data_str = xml.toprettyxml()
|
||||||
with open(resources_path('xml', 'dcat.xml'), encoding='utf8') as xml_file:
|
|
||||||
xml_template = xml_file.read()
|
with open(output_file[0], "w", encoding='utf8') as file_writer:
|
||||||
|
file_writer.write(data_str)
|
||||||
xml = parseString(xml_template.format(language=data[0][0], content=data[0][1]))
|
iface.messageBar().pushSuccess(
|
||||||
|
("Export") + ' ' + output_format.label,
|
||||||
data_str = xml.toprettyxml()
|
(
|
||||||
|
"The metadata has been exported as {format} successfully in "
|
||||||
with open(output_file[0], "w", encoding='utf8') as file_writer:
|
"<a href=\"{folder}\">{path}</a>").format(
|
||||||
file_writer.write(data_str)
|
format=output_format.label, folder=parent_folder, path=output_file_path)
|
||||||
iface.messageBar().pushSuccess(
|
)
|
||||||
("Export") + ' ' + output_format.label,
|
|
||||||
(
|
def save_auto_open_dock(self):
|
||||||
"The metadata has been exported as {format} successfully in "
|
""" Save settings about the dock. """
|
||||||
"<a href=\"{folder}\">{path}</a>").format(
|
self.settings.setValue("pgmetadata/auto_open_dock", self.auto_open_dock_action.isChecked())
|
||||||
format=output_format.label, folder=parent_folder, path=output_file_path)
|
def sql_to_xml(self,dataall):
|
||||||
)
|
distribution=''
|
||||||
|
for y in dataall[1]:
|
||||||
def save_auto_open_dock(self):
|
distribution = distribution + (
|
||||||
""" Save settings about the dock. """
|
'<dcat:distribution>'+
|
||||||
self.settings.setValue("pgmetadata/auto_open_dock", self.auto_open_dock_action.isChecked())
|
'<dcat:Distribution>'+
|
||||||
def sql_to_xml(self,dataall):
|
'<dct:title>{data}</dct:title>'.format(data=y[0])+
|
||||||
distribution=''
|
'<dcat:downloadURL>{data}</dcat:downloadURL>'.format(data=y[1])+
|
||||||
for y in dataall[1]:
|
'<dcat:mediaType>{data}</dcat:mediaType>'.format(data=y[2])+
|
||||||
distribution = distribution + (
|
'<dct:format>{data}</dct:format>'.format(data=y[3])+
|
||||||
'<dcat:distribution>'+
|
'<dct:bytesize>{data}</dct:bytesize>'.format(data=y[4])+
|
||||||
'<dcat:Distribution>'+
|
'</dcat:Distribution>'+
|
||||||
'<dct:title>{data}</dct:title>'.format(data=y[0])+
|
'</dcat:distribution>')
|
||||||
'<dcat:downloadURL>{data}</dcat:downloadURL>'.format(data=y[1])+
|
publisher=''
|
||||||
'<dcat:mediaType>{data}</dcat:mediaType>'.format(data=y[2])+
|
for z in dataall[2]:
|
||||||
'<dct:format>{data}</dct:format>'.format(data=y[3])+
|
publisher = publisher + (
|
||||||
'<dct:bytesize>{data}</dct:bytesize>'.format(data=y[4])+
|
'<dct:publisher>'+
|
||||||
'</dcat:Distribution>'+
|
'<foaf:Organization>'+
|
||||||
'</dcat:distribution>')
|
'<foaf:name>{data}</foaf:name>'.format(data=z[1])+
|
||||||
publisher=''
|
'<foaf:mbox>{data}</foaf:mbox>'.format(data=z[3])+
|
||||||
for z in dataall[2]:
|
'</foaf:Organization>'+
|
||||||
publisher = publisher + (
|
'</dct:publisher>')
|
||||||
'<dct:publisher>'+
|
data_str = [[dataall[0][26],
|
||||||
'<foaf:Organization>'+
|
'<dct:identifier>{data}</dct:identifier>'.format(data=dataall[0][1])+
|
||||||
'<foaf:name>{data}</foaf:name>'.format(data=z[1])+
|
'<dct:title>{data}</dct:title>'.format(data=dataall[0][4])+
|
||||||
'<foaf:mbox>{data}</foaf:mbox>'.format(data=z[3])+
|
'<dct:description>{data}</dct:description>'.format(data=dataall[0][5])+
|
||||||
'</foaf:Organization>'+
|
'<dct:language>{data}</dct:language>'.format(data=dataall[0][26])+
|
||||||
'</dct:publisher>')
|
'<dct:spatial>{data}</dct:spatial>'.format(data=dataall[0][28])+
|
||||||
data_str = [[dataall[0][26],
|
'<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:created>'.format(data=dataall[0][20])+
|
||||||
'<dct:identifier>{data}</dct:identifier>'.format(data=dataall[0][1])+
|
'<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:issued>'.format(data=dataall[0][11])+
|
||||||
'<dct:title>{data}</dct:title>'.format(data=dataall[0][4])+
|
'<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:modified>'.format(data=dataall[0][21])+
|
||||||
'<dct:description>{data}</dct:description>'.format(data=dataall[0][5])+
|
'<dct:license>{data}</dct:license>'.format(data=dataall[0][13])+
|
||||||
'<dct:language>{data}</dct:language>'.format(data=dataall[0][26])+
|
distribution+
|
||||||
'<dct:spatial>{data}</dct:spatial>'.format(data=dataall[0][28])+
|
publisher+
|
||||||
'<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:created>'.format(data=dataall[0][20])+
|
'<dcat:theme>{data}</dcat:theme>'.format(data=", ".join(str(x) for x in dataall[0][24]))+
|
||||||
'<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:issued>'.format(data=dataall[0][11])+
|
'<dcat:keyword>{data}</dcat:keyword>'.format(data=", ".join(str(x) for x in dataall[0][6]))+
|
||||||
'<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{data}</dct:modified>'.format(data=dataall[0][21])+
|
'<dct:accrualPeriodicity>{data}</dct:accrualPeriodicity>'.format(data=dataall[0][12])]]
|
||||||
'<dct:license>{data}</dct:license>'.format(data=dataall[0][13])+
|
|
||||||
distribution+
|
return data_str
|
||||||
publisher+
|
|
||||||
'<dcat:theme>{data}</dcat:theme>'.format(data=", ".join(str(x) for x in dataall[0][24]))+
|
@staticmethod
|
||||||
'<dcat:keyword>{data}</dcat:keyword>'.format(data=", ".join(str(x) for x in dataall[0][6]))+
|
def sql_for_layer(uri, output_format: OutputFormats):
|
||||||
'<dct:accrualPeriodicity>{data}</dct:accrualPeriodicity>'.format(data=dataall[0][12])]]
|
""" Get the SQL query for a given layer and output format. """
|
||||||
|
locale = QgsSettings().value("locale/userLocale", QLocale().name())
|
||||||
return data_str
|
locale = locale.split('_')[0].lower()
|
||||||
|
|
||||||
@staticmethod
|
if output_format == [OutputFormats.HTML,OutputFormats.DCAT]:
|
||||||
def sql_for_layer(uri, output_format: OutputFormats):
|
sql = (
|
||||||
""" Get the SQL query for a given layer and output format. """
|
"SELECT pgmetadata.get_dataset_item_html_content('{schema}', '{table}', '{locale}');"
|
||||||
locale = QgsSettings().value("locale/userLocale", QLocale().name())
|
).format(schema=uri.schema(), table=uri.table(), locale=locale)
|
||||||
locale = locale.split('_')[0].lower()
|
else:
|
||||||
|
raise NotImplementedError('Output format is not yet implemented.')
|
||||||
if output_format == [OutputFormats.HTML,OutputFormats.DCAT]:
|
|
||||||
sql = (
|
return sql
|
||||||
"SELECT pgmetadata.get_dataset_item_html_content('{schema}', '{table}', '{locale}');"
|
|
||||||
).format(schema=uri.schema(), table=uri.table(), locale=locale)
|
def layer_changed(self, layer):
|
||||||
else:
|
""" When the layer has changed in the legend, we must check this new layer. """
|
||||||
raise NotImplementedError('Output format is not yet implemented.')
|
self.current_datasource_uri = None
|
||||||
|
self.current_connection = None
|
||||||
return sql
|
self.ce_trouve_dans_psql(layer)
|
||||||
|
|
||||||
def layer_changed(self, layer):
|
|
||||||
""" When the layer has changed in the legend, we must check this new layer. """
|
def add_flatten_dataset_table(self):
|
||||||
self.current_datasource_uri = None
|
""" Add a flatten dataset table with all links and contacts. """
|
||||||
self.current_connection = None
|
'''
|
||||||
self.ce_trouve_dans_psql(layer)
|
connections, message = connections_list()
|
||||||
|
if not connections:
|
||||||
|
LOGGER.critical(message)
|
||||||
def add_flatten_dataset_table(self):
|
self.set_html_content('PgMetadata', message)
|
||||||
""" Add a flatten dataset table with all links and contacts. """
|
return
|
||||||
'''
|
|
||||||
connections, message = connections_list()
|
if len(connections) > 1:
|
||||||
if not connections:
|
dialog = QInputDialog()
|
||||||
LOGGER.critical(message)
|
dialog.setComboBoxItems(connections)
|
||||||
self.set_html_content('PgMetadata', message)
|
dialog.setWindowTitle(tr("Database"))
|
||||||
return
|
dialog.setLabelText(tr("Choose the database to add the catalog"))
|
||||||
|
if not dialog.exec_():
|
||||||
if len(connections) > 1:
|
return
|
||||||
dialog = QInputDialog()
|
connection_name = dialog.textValue()
|
||||||
dialog.setComboBoxItems(connections)
|
else:
|
||||||
dialog.setWindowTitle(tr("Database"))
|
connection_name = connections[0]
|
||||||
dialog.setLabelText(tr("Choose the database to add the catalog"))
|
|
||||||
if not dialog.exec_():
|
metadata = QgsProviderRegistry.instance().providerMetadata('postgres')
|
||||||
return
|
connection = metadata.findConnection(connection_name)
|
||||||
connection_name = dialog.textValue()
|
|
||||||
else:
|
locale = QgsSettings().value("locale/userLocale", QLocale().name())
|
||||||
connection_name = connections[0]
|
locale = locale.split('_')[0].lower()
|
||||||
|
|
||||||
metadata = QgsProviderRegistry.instance().providerMetadata('postgres')
|
uri = QgsDataSourceUri(connection.uri())
|
||||||
connection = metadata.findConnection(connection_name)
|
uri.setTable(f'(SELECT * FROM pgmetadata.export_datasets_as_flat_table(\'{locale}\'))')
|
||||||
|
uri.setKeyColumn('uid')
|
||||||
locale = QgsSettings().value("locale/userLocale", QLocale().name())
|
|
||||||
locale = locale.split('_')[0].lower()
|
layer = QgsVectorLayer(uri.uri(), '{} - {}'.format(tr("Catalog"), connection_name), 'postgres')
|
||||||
|
QgsProject.instance().addMapLayer(layer)
|
||||||
uri = QgsDataSourceUri(connection.uri())
|
'''
|
||||||
uri.setTable(f'(SELECT * FROM pgmetadata.export_datasets_as_flat_table(\'{locale}\'))')
|
|
||||||
uri.setKeyColumn('uid')
|
@staticmethod
|
||||||
|
def open_external_help():
|
||||||
layer = QgsVectorLayer(uri.uri(), '{} - {}'.format(tr("Catalog"), connection_name), 'postgres')
|
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
||||||
QgsProject.instance().addMapLayer(layer)
|
|
||||||
'''
|
@staticmethod
|
||||||
|
def open_link(url):
|
||||||
@staticmethod
|
QDesktopServices.openUrl(url)
|
||||||
def open_external_help():
|
|
||||||
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
def set_html_content(self, title=None, body=None):
|
||||||
|
""" Set the content in the dock. """
|
||||||
@staticmethod
|
#link_logo=resources_path('icons', 'CEN_RA.png')
|
||||||
def open_link(url):
|
css_file = resources_path('css', 'dock.css')
|
||||||
QDesktopServices.openUrl(url)
|
with open(css_file, 'r', encoding='utf8') as f:
|
||||||
|
css = f.read()
|
||||||
def set_html_content(self, title=None, body=None):
|
|
||||||
""" Set the content in the dock. """
|
html = '<html><head>'
|
||||||
#link_logo=resources_path('icons', 'CEN_RA.png')
|
#html += '<script src="http://ignf.github.io/geoportal-sdk/latest/dist/2d/GpSDK2D.js" defer ></script>'
|
||||||
css_file = resources_path('css', 'dock.css')
|
html += '<style>{css}</style></head><body>'.format(css=css)
|
||||||
with open(css_file, 'r', encoding='utf8') as f:
|
#html += '<link rel="stylesheet" href="http://ignf.github.io/geoportal-sdk/latest/dist/2d/GpSDK2D.css" >'
|
||||||
css = f.read()
|
#html += '<script src="file:///C:/Users/tlaveille/Desktop/maps.js" defer></script>'
|
||||||
|
#html += '<noscript>Your browser does not support JavaScript!</noscript>'
|
||||||
html = '<html><head>'
|
if title:
|
||||||
#html += '<script src="http://ignf.github.io/geoportal-sdk/latest/dist/2d/GpSDK2D.js" defer ></script>'
|
html += '<h2>{title} <img class=logo src=https://i2.wp.com/www.cen-rhonealpes.fr/wp-content/uploads/2013/04/cen-rhonealpes-couleurs1.jpg?w=340&ssl=1></h2>'.format(title=title)
|
||||||
html += '<style>{css}</style></head><body>'.format(css=css)
|
if body:
|
||||||
#html += '<link rel="stylesheet" href="http://ignf.github.io/geoportal-sdk/latest/dist/2d/GpSDK2D.css" >'
|
html += body
|
||||||
#html += '<script src="file:///C:/Users/tlaveille/Desktop/maps.js" defer></script>'
|
|
||||||
#html += '<noscript>Your browser does not support JavaScript!</noscript>'
|
html += '</body></html>'
|
||||||
if title:
|
|
||||||
html += '<h2>{title} <img class=logo src=https://i2.wp.com/www.cen-rhonealpes.fr/wp-content/uploads/2013/04/cen-rhonealpes-couleurs1.jpg?w=340&ssl=1></h2>'.format(title=title)
|
# It must be a file, even if it does not exist on the file system.
|
||||||
if body:
|
base_url = QUrl.fromLocalFile(resources_path('images', 'must_be_a_file.png'))
|
||||||
html += body
|
self.viewer.setHtml(html, base_url)
|
||||||
|
|
||||||
html += '</body></html>'
|
def ce_trouve_dans_psql(self,layer):
|
||||||
|
try:
|
||||||
# It must be a file, even if it does not exist on the file system.
|
uri = layer.dataProvider().uri()
|
||||||
base_url = QUrl.fromLocalFile(resources_path('images', 'must_be_a_file.png'))
|
except:
|
||||||
self.viewer.setHtml(html, base_url)
|
self.default_html_content_not_pg_layer()
|
||||||
|
self.save_button.setEnabled(False)
|
||||||
def ce_trouve_dans_psql(self,layer):
|
uri=''
|
||||||
try:
|
if uri != '':
|
||||||
uri = layer.dataProvider().uri()
|
if not uri.table():
|
||||||
except:
|
layertype = layer.providerType().lower()
|
||||||
self.default_html_content_not_pg_layer()
|
if layertype == 'wms' or layertype == 'wfs':
|
||||||
self.save_button.setEnabled(False)
|
self.set_html_to_wms(layer)
|
||||||
uri=''
|
else:
|
||||||
if uri != '':
|
self.default_html_content_not_pg_layer()
|
||||||
if not uri.table():
|
self.save_button.setEnabled(False)
|
||||||
layertype = layer.providerType().lower()
|
else:
|
||||||
if layertype == 'wms' or layertype == 'wfs':
|
data_count = self.sql_check(uri)
|
||||||
self.set_html_to_wms(layer)
|
#print(data_count)
|
||||||
else:
|
if data_count == 0:
|
||||||
self.default_html_content_not_pg_layer()
|
self.default_html_content_not_metadata()
|
||||||
self.save_button.setEnabled(False)
|
self.save_button.setEnabled(False)
|
||||||
else:
|
else:
|
||||||
data_count = self.sql_check(uri)
|
self.build_html_content(layer,uri)
|
||||||
#print(data_count)
|
self.save_button.setEnabled(True)
|
||||||
if data_count == 0:
|
|
||||||
self.default_html_content_not_metadata()
|
def build_html_content(self,layer,uri):
|
||||||
self.save_button.setEnabled(False)
|
body = ''
|
||||||
else:
|
|
||||||
self.build_html_content(layer,uri)
|
dataall=self.sql_info(uri)
|
||||||
self.save_button.setEnabled(True)
|
data=dataall[0]
|
||||||
|
data_url=dataall[1]
|
||||||
def build_html_content(self,layer,uri):
|
data_contact=dataall[2]
|
||||||
body = ''
|
#print(len(data_url))
|
||||||
|
data_collonne=[field.name() for field in layer.dataProvider().fields()]
|
||||||
dataall=self.sql_info(uri)
|
|
||||||
data=dataall[0]
|
body += '<div><h3>Identification</h3><table class="table table-condensed">'
|
||||||
data_url=dataall[1]
|
body += '<tr><th>Titre</th><td>{data[4]}</td></tr>'.format(data=data)
|
||||||
data_contact=dataall[2]
|
body += '<tr><th>Description</th><td>{data[5]}</td></tr>'.format(data=data)
|
||||||
#print(len(data_url))
|
body += '<tr><th>Categories</th><td>{data}</td></tr>'.format(data=(", ".join(str(x) for x in data[6])))
|
||||||
data_collonne=[field.name() for field in layer.dataProvider().fields()]
|
body += '<tr><th>Thèmes</th><td>{data}</td></tr>'.format(data=(", ".join(str(x) for x in data[24])))
|
||||||
|
body += '<tr><th>Mots-clés</th><td>{data[7]}</td></tr>'.format(data=data)
|
||||||
body += '<div><h3>Identification</h3><table class="table table-condensed">'
|
body += '<tr><th>Dernier mise à jour</th><td>{data[23]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Titre</th><td>{data[4]}</td></tr>'.format(data=data)
|
body += '<tr><th>Langue</th><td>{data[26]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Description</th><td>{data[5]}</td></tr>'.format(data=data)
|
body += '</table></div>'
|
||||||
body += '<tr><th>Categories</th><td>{data}</td></tr>'.format(data=(", ".join(str(x) for x in data[6])))
|
|
||||||
body += '<tr><th>Thèmes</th><td>{data}</td></tr>'.format(data=(", ".join(str(x) for x in data[24])))
|
body += '<div><h3>Properties spatial</h3><table class="table table-condensed">'
|
||||||
body += '<tr><th>Mots-clés</th><td>{data[7]}</td></tr>'.format(data=data)
|
body += '<tr><th>Niveau</th><td>{data[8]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Dernier mise à jour</th><td>{data[23]}</td></tr>'.format(data=data)
|
body += '<tr><th>Echelle minimum</th><td>{data[9]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Langue</th><td>{data[26]}</td></tr>'.format(data=data)
|
body += '<tr><th>Echelle maximum</th><td>{data[10]}</td></tr>'.format(data=data)
|
||||||
body += '</table></div>'
|
body += '<tr><th>Nombre d\'entités </th><td>{data[15]}</td></tr>'.format(data=data)
|
||||||
|
body += '<tr><th>Type de géométrie</th><td>{data[16]}</td></tr>'.format(data=data)
|
||||||
body += '<div><h3>Properties spatial</h3><table class="table table-condensed">'
|
body += '<tr><th>Nom de projection</th><td>{data[17]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Niveau</th><td>{data[8]}</td></tr>'.format(data=data)
|
body += '<tr><th>ID de projection</th><td>{data[18]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Echelle minimum</th><td>{data[9]}</td></tr>'.format(data=data)
|
body += '<tr><th>Emprise</th><td>{data[28]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Echelle maximum</th><td>{data[10]}</td></tr>'.format(data=data)
|
body += '</table></div>'
|
||||||
body += '<tr><th>Nombre d\'entités </th><td>{data[15]}</td></tr>'.format(data=data)
|
|
||||||
body += '<tr><th>Type de géométrie</th><td>{data[16]}</td></tr>'.format(data=data)
|
#body += '<div id="map"></div>'
|
||||||
body += '<tr><th>Nom de projection</th><td>{data[17]}</td></tr>'.format(data=data)
|
|
||||||
body += '<tr><th>ID de projection</th><td>{data[18]}</td></tr>'.format(data=data)
|
body += '<div><h3>Publication</h3><table class="table table-condensed">'
|
||||||
body += '<tr><th>Emprise</th><td>{data[28]}</td></tr>'.format(data=data)
|
body += '<tr><th>Date</th><td>{data[11]}</td></tr>'.format(data=data)
|
||||||
body += '</table></div>'
|
body += '<tr><th>Fréquence de mise à jour</th><td>{data[12]}</td></tr>'.format(data=data)
|
||||||
|
body += '<tr><th>Licence</th><td>{data[13]}</td></tr>'.format(data=data)
|
||||||
#body += '<div id="map"></div>'
|
body += '<tr><th>Licence attribué</th><td>{data[25]}</td></tr>'.format(data=data)
|
||||||
|
body += '<tr><th>Restriction</th><td>{data[14]}</td></tr>'.format(data=data)
|
||||||
body += '<div><h3>Publication</h3><table class="table table-condensed">'
|
body += '</table></div>'
|
||||||
body += '<tr><th>Date</th><td>{data[11]}</td></tr>'.format(data=data)
|
|
||||||
body += '<tr><th>Fréquence de mise à jour</th><td>{data[12]}</td></tr>'.format(data=data)
|
body += '<div><h3>Lien</h3><table class="table table-condensed table-striped table-bordered">'
|
||||||
body += '<tr><th>Licence</th><td>{data[13]}</td></tr>'.format(data=data)
|
body += '<tr><th>Type</th><th>URL</th><th>Type MIME</th><th>Format</th><th>Taille</th></tr>'
|
||||||
body += '<tr><th>Licence attribué</th><td>{data[25]}</td></tr>'.format(data=data)
|
for value_url in data_url:
|
||||||
body += '<tr><th>Restriction</th><td>{data[14]}</td></tr>'.format(data=data)
|
body += '<tr><td>{value_url[0]}</td><td>{value_url[1]}</td><td>{value_url[2]}</td><td>{value_url[3]}</td><td>{value_url[4]}</td></tr>'.format(value_url=value_url)
|
||||||
body += '</table></div>'
|
body += '</table></div>'
|
||||||
|
'''
|
||||||
body += '<div><h3>Lien</h3><table class="table table-condensed table-striped table-bordered">'
|
body += '<div><h3>Liste des champs</h3><table class="table table-condensed table-striped table-bordered">'
|
||||||
body += '<tr><th>Type</th><th>URL</th><th>Type MIME</th><th>Format</th><th>Taille</th></tr>'
|
for collonne in data_collonne:
|
||||||
for value_url in data_url:
|
body += '<tr><th>{collonne}</th><td>{defini}</td></tr>'.format(collonne=collonne,defini='')
|
||||||
body += '<tr><td>{value_url[0]}</td><td>{value_url[1]}</td><td>{value_url[2]}</td><td>{value_url[3]}</td><td>{value_url[4]}</td></tr>'.format(value_url=value_url)
|
body += '</table></div>'
|
||||||
body += '</table></div>'
|
'''
|
||||||
'''
|
body += '<div><h3>Contacts</h3><table class="table table-condensed table-striped table-bordered">'
|
||||||
body += '<div><h3>Liste des champs</h3><table class="table table-condensed table-striped table-bordered">'
|
body += '<tr><th>Rôle</th><th>Nom</th><th>Organisation</th><th>Email</th><th>Télèphone</th></tr>'
|
||||||
for collonne in data_collonne:
|
for value_contact in data_contact:
|
||||||
body += '<tr><th>{collonne}</th><td>{defini}</td></tr>'.format(collonne=collonne,defini='')
|
body += '<tr><td>{value_contact[0]}</td><td>{value_contact[1]}</td><td>{value_contact[2]}</td><td>{value_contact[3]}</td><td>{value_contact[4]}</td></tr>'.format(value_contact=value_contact)
|
||||||
body += '</table></div>'
|
body += '</table></div>'
|
||||||
'''
|
|
||||||
body += '<div><h3>Contacts</h3><table class="table table-condensed table-striped table-bordered">'
|
body += '<div><h3>Metadata</h3><table class="table table-condensed">'
|
||||||
body += '<tr><th>Rôle</th><th>Nom</th><th>Organisation</th><th>Email</th><th>Télèphone</th></tr>'
|
body += '<tr><th>Table</th><td>{data[2]}</td></tr>'.format(data=data)
|
||||||
for value_contact in data_contact:
|
body += '<tr><th>Schema</th><td>{data[3]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><td>{value_contact[0]}</td><td>{value_contact[1]}</td><td>{value_contact[2]}</td><td>{value_contact[3]}</td><td>{value_contact[4]}</td></tr>'.format(value_contact=value_contact)
|
body += '<tr><th>Date de création</th><td>{data[20]}</td></tr>'.format(data=data)
|
||||||
body += '</table></div>'
|
body += '<tr><th>Date de modification</th><td>{data[21]}</td></tr>'.format(data=data)
|
||||||
|
body += '<tr><th>Encodage</th><td>{data[27]}</td></tr>'.format(data=data)
|
||||||
body += '<div><h3>Metadata</h3><table class="table table-condensed">'
|
body += '<tr><th>UUID</th><td>{data[1]}</td></tr>'.format(data=data)
|
||||||
body += '<tr><th>Table</th><td>{data[2]}</td></tr>'.format(data=data)
|
body += '</table></div>'
|
||||||
body += '<tr><th>Schema</th><td>{data[3]}</td></tr>'.format(data=data)
|
|
||||||
body += '<tr><th>Date de création</th><td>{data[20]}</td></tr>'.format(data=data)
|
self.set_html_content(
|
||||||
body += '<tr><th>Date de modification</th><td>{data[21]}</td></tr>'.format(data=data)
|
layer.name(), body)
|
||||||
body += '<tr><th>Encodage</th><td>{data[27]}</td></tr>'.format(data=data)
|
|
||||||
body += '<tr><th>UUID</th><td>{data[1]}</td></tr>'.format(data=data)
|
def set_html_to_wms(self,layer):
|
||||||
body += '</table></div>'
|
self.set_html_content(
|
||||||
|
'CenRa Metadata',(layer.htmlMetadata()))
|
||||||
self.set_html_content(
|
def default_html_content_not_pg_layer(self):
|
||||||
layer.name(), body)
|
""" When it's not a PostgreSQL layer. """
|
||||||
|
self.set_html_content(
|
||||||
def set_html_to_wms(self,layer):
|
'CenRa Metadata', ('Vous devez cliquer sur une couche dans la légende qui est stockée dans PostgreSQL.'))
|
||||||
self.set_html_content(
|
def default_html_content_not_metadata(self):
|
||||||
'CenRa Metadata',(layer.htmlMetadata()))
|
self.set_html_content(
|
||||||
def default_html_content_not_pg_layer(self):
|
'CenRa Metadata', ('La couche ne contien pas de métadonnée.'))
|
||||||
""" When it's not a PostgreSQL layer. """
|
|
||||||
self.set_html_content(
|
def sql_check(self,uri):
|
||||||
'CenRa Metadata', ('Vous devez cliquer sur une couche dans la légende qui est stockée dans PostgreSQL.'))
|
cur=login_base()
|
||||||
def default_html_content_not_metadata(self):
|
table = uri.table()
|
||||||
self.set_html_content(
|
schema = uri.schema()
|
||||||
'CenRa Metadata', ('La couche ne contien pas de métadonnée.'))
|
|
||||||
|
sql_count = """SELECT count(uid) FROM metadata.dataset
|
||||||
def sql_check(self,uri):
|
WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
||||||
cur=login_base()
|
|
||||||
table = uri.table()
|
cur.execute(sql_count)
|
||||||
schema = uri.schema()
|
data_count = cur.fetchall()
|
||||||
|
cur.close()
|
||||||
sql_count = """SELECT count(uid) FROM metadata.dataset
|
return data_count[0][0]
|
||||||
WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
|
||||||
|
def sql_info(self,uri):
|
||||||
cur.execute(sql_count)
|
cur=login_base()
|
||||||
data_count = cur.fetchall()
|
table = uri.table()
|
||||||
cur.close()
|
schema = uri.schema()
|
||||||
return data_count[0][0]
|
#[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
|
||||||
def sql_info(self,uri):
|
WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
||||||
cur=login_base()
|
cur.execute(sql_find)
|
||||||
table = uri.table()
|
data_general = cur.fetchall()
|
||||||
schema = uri.schema()
|
sql_findurl = """SELECT type,url,mime,format,taille FROM metadata.dataurl WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
||||||
#[s for s in iface.activeLayer().source().split(" ") if "dbname" in s][0].split("'")[1]
|
cur.execute(sql_findurl)
|
||||||
sql_find = """SELECT *,right(left(st_astext(geom,2),-2),-9) FROM metadata.dataset
|
data_url = cur.fetchall()
|
||||||
WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
sql_findcontact = """SELECT role,nom,organisation,email,telephone FROM metadata.datacontact WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
||||||
cur.execute(sql_find)
|
cur.execute(sql_findcontact)
|
||||||
data_general = cur.fetchall()
|
data_contact = cur.fetchall()
|
||||||
sql_findurl = """SELECT type,url,mime,format,taille FROM metadata.dataurl WHERE schema_name LIKE '"""+schema+"""' AND table_name LIKE '"""+table+"""';"""
|
cur.close()
|
||||||
cur.execute(sql_findurl)
|
return data_general[0],data_url,data_contact
|
||||||
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
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@@ -1,48 +1,48 @@
|
|||||||
# This file contains metadata for your plugin.
|
# This file contains metadata for your plugin.
|
||||||
|
|
||||||
# This file should be included when you package your plugin.# Mandatory items:
|
# This file should be included when you package your plugin.# Mandatory items:
|
||||||
|
|
||||||
[general]
|
[general]
|
||||||
name=CenRa_Metabase
|
name=CenRa_Metabase
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
description=CenRa_METABASE
|
description=CenRa_METABASE
|
||||||
version=0.2.1
|
version=1.3
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
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
|
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
|
repository=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS
|
||||||
homepage=https://plateformesig.cenra-outils.org/
|
homepage=https://plateformesig.cenra-outils.org/
|
||||||
tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
|
tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
|
||||||
# End of mandatory metadata
|
# End of mandatory metadata
|
||||||
|
|
||||||
# Recommended items:
|
# Recommended items:
|
||||||
|
|
||||||
hasProcessingProvider=no
|
hasProcessingProvider=no
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_METABASE:</h2></br><p><h3>03/04/2025 - Version 0.2.1: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 0.2.0: </h3> - Deployment sur serveur SIG.</p></br><p><h3>07/01/2025 - Version 0.1.6: </h3> - ByPass du certif ssl ci erreur</p></br><p><h3>19/12/2024 - Version 0.1.5: </h3> - Fix les problem de lenteur qu'en la base est down.</p></br><p><h3>12/12/2024 - Version 0.1.4: </h3> - Crash Fix .</p></br><p><h3>08/10/2024 - Version 0.1.3: </h3> - Lecture de métadonnée des flux WMS/WFS.</p></br><p><h3>07/10/2024 - Version 0.1.2: </h3> - Correctif de bug.</p></br><p><h3>03/10/2024 - Version 0.1.1: </h3> - Remonte la fênetre dans la pille.</p></br><p><h3>26/08/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_Metabase </p>
|
changelog=<h2>CenRa_Metabase:</h2></br><p><h3>08/10/2024 - Version 1.3: </h3> - Lecture de métadonnée des flux WMS/WFS.</p></br><p><h3>07/10/2024 - Version 1.2: </h3> - Correctif de bug.</p></br><p><h3>03/10/2024 - Version 1.1: </h3> - Remonte la fênetre dans la pille.</p></br><p><h3>26/08/2024 - Version 1.0: </h3> - Lancement du plugin CenRa_Metabase </p></br>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=python
|
tags=python
|
||||||
|
|
||||||
|
|
||||||
category=Plugins
|
category=Plugins
|
||||||
icon=icon.png
|
icon=icon.png
|
||||||
# experimental flag
|
# experimental flag
|
||||||
experimental=True
|
experimental=True
|
||||||
|
|
||||||
# deprecated flag (applies to the whole plugin, not just a single version)
|
# deprecated flag (applies to the whole plugin, not just a single version)
|
||||||
deprecated=False
|
deprecated=False
|
||||||
|
|
||||||
# Since QGIS 3.8, a comma separated list of plugins to be installed
|
# Since QGIS 3.8, a comma separated list of plugins to be installed
|
||||||
# (or upgraded) can be specified.
|
# (or upgraded) can be specified.
|
||||||
# Check the documentation for more information.
|
# Check the documentation for more information.
|
||||||
# plugin_dependencies=
|
# plugin_dependencies=
|
||||||
|
|
||||||
Category of the plugin: Raster, Vector, Database or Web
|
Category of the plugin: Raster, Vector, Database or Web
|
||||||
# category=cenra,database,metadata
|
# category=cenra,database,metadata
|
||||||
|
|
||||||
# If the plugin can run on QGIS Server.
|
# If the plugin can run on QGIS Server.
|
||||||
server=False
|
server=False
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import sys
|
||||||
|
import socket
|
||||||
|
import os
|
||||||
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
|
#print(IPAddr)
|
||||||
|
if IPAddr[0:11] == "100.100.100": #4269
|
||||||
|
host = "100.100.100.81"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig4269"
|
||||||
|
sigdb="sig4269"
|
||||||
|
refdb="ref_geo4269"
|
||||||
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.0": #01
|
||||||
|
host = "192.168.0.201"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig01"
|
||||||
|
sigdb="sig01"
|
||||||
|
refdb="ref_geo01"
|
||||||
|
password = "McVities"
|
||||||
|
if IPAddr[0:9] == "192.168.1": #0726
|
||||||
|
host = "192.168.1.201"
|
||||||
|
port = "5432"
|
||||||
|
dbname = "sig0726"
|
||||||
|
sigdb="sig0726"
|
||||||
|
refdb="ref_geo0726"
|
||||||
|
password = "McVities"
|
||||||
|
if sys.platform == 'linux':
|
||||||
|
os_user = os.environ['USER']
|
||||||
|
else:
|
||||||
|
os_user = os.environ['USERNAME']
|
||||||
|
if os_user == 'STAGE':
|
||||||
|
os_user='stage'
|
||||||
|
if os_user == 'Administrateur':
|
||||||
|
os_user='stage'
|
||||||
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
@@ -3,7 +3,9 @@
|
|||||||
import configparser
|
import configparser
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import socket
|
import base64
|
||||||
|
import psycopg2
|
||||||
|
import psycopg2.extras
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
from qgis.PyQt.QtWidgets import QApplication
|
from qgis.PyQt.QtWidgets import QApplication
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -92,19 +94,6 @@ def resources_path(*args):
|
|||||||
path = abspath(join(path, item))
|
path = abspath(join(path, item))
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def pyperclip():
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
dst = abspath(abspath(join(plugin_path(), "CenRa_METABASE\\tools\\")))
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
|
|
||||||
try:
|
|
||||||
shutil.copy(src, dst)
|
|
||||||
except:
|
|
||||||
print('404')
|
|
||||||
|
|
||||||
def load_ui(*args):
|
def load_ui(*args):
|
||||||
"""Get compile UI file.
|
"""Get compile UI file.
|
||||||
@@ -118,6 +107,25 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
|
def login_base(take=None):
|
||||||
|
from CenRa_METABASE.tools.PythonSQL import host,port,dbname,password,os_user
|
||||||
|
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
||||||
|
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
||||||
|
res_ident = first_cur.fetchone()
|
||||||
|
|
||||||
|
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
||||||
|
user = res_ident[1]
|
||||||
|
|
||||||
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
||||||
|
|
||||||
|
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
||||||
|
first_conn.close()
|
||||||
|
|
||||||
|
if take:
|
||||||
|
return cur,con
|
||||||
|
else:
|
||||||
|
return cur
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -160,15 +168,12 @@ def maj_verif(NAME):
|
|||||||
except:
|
except:
|
||||||
binar = False
|
binar = False
|
||||||
if binar:
|
if binar:
|
||||||
try:
|
version_web = str(urllib.request.urlopen(URL).read())
|
||||||
version_web = str(urllib.request.urlopen(URL).read())
|
plugin_num = version_web.find(NAME)
|
||||||
plugin_num = version_web.find(NAME)
|
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
||||||
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
||||||
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
if version_plugin != version:
|
||||||
if version_plugin != version:
|
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
||||||
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
|
||||||
except:
|
|
||||||
print("error gitea version ssl")
|
|
||||||
else:
|
else:
|
||||||
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
||||||
|
|
||||||