recodage de partie pour acceuillir pagerender !

This commit is contained in:
2024-10-21 12:41:49 +02:00
parent b6081c5723
commit c5fb0aae18
9 changed files with 609 additions and 500 deletions
+101 -60
View File
@@ -8,6 +8,7 @@ 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,
@@ -65,8 +66,12 @@ from .tools.resources import (
login_base,
send_issues,
)
from .tools.mises_en_pages.canvas import (fletch_canvas)
from .issues import CenRa_Issues
from .tools.mises_en_pages import carto_standard
from .tools.mises_en_pages import full_page
from .tools.mises_en_pages import demo
from datetime import date
EDITOR_CLASS = load_ui('CenRa_AutoMap_base.ui')
@@ -98,6 +103,9 @@ data_source = [
'Plan cadastral informatisé - Etalab - juillet 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):
def __init__(self, parent=None):
@@ -129,7 +137,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
## On ajoute le nom des templates à la liste déroulante de l'onglet "mises en page" :
mises_en_page = []
for filename in glob.glob(resources_path("mises_en_pages","*.qpt")):
for filename in glob.glob(resources_path("mises_en_pages","*.py")):
mises_en_page.append(filename)
@@ -139,28 +147,42 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.comboBox.setCurrentIndex(1)
self.template_parameters = {
'map_size': None,
'map_position' : None,
'position_map_size' : None,
'position_map_position' : None,
'title_position': None,
'title_size': None,
'subtitle_position': None,
'subtitle_size': None,
'logo_position': None,
'logo_size': None,
'legend_position': None,
'legend_size': None,
'scalebarnumeric_position':None,
'scalebarnumeric_size':None,
'scalebar_position': None,
'scalebar_size': None,
'north_position': None,
'north_size': None,
'credit_text_position': None,
'credit_text_size': None,
'credit_text2_position': None,
'credit_text2_size': None,
'Carte_size': None,
'Carte_locals' : None,
'Carte_rotate':None,
'Carte_2_size' : None,
'Carte_2_locals' : None,
'Carte_2_rotate':None,
'Legande_size': None,
'Legande_locals': None,
'Legande_rotate':None,
'Arrow_size': None,
'Arrow_locals': None,
'Arrow_rotate':None,
'Echelle_size': None,
'Echelle_locals': None,
'Echelle_rotate':None,
'Logo_size': None,
'Logo_locals': None,
'Logo_rotate':None,
'Titre_size':None,
'Titre_locals':None,
'Titre_rotate':None,
'Sous_titre_size':None,
'Sous_titre_locals':None,
'Sous_titre_rotate':None,
'Credit_size': None,
'Credit_locals': 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
}
self.update_logo_library()
@@ -416,6 +438,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.layout.loadFromTemplate(doc, QgsReadWriteContext(), True)
self.layout.setName(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":
self.actualisation_mise_en_page()
@@ -428,9 +458,10 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.map_modele_test.setExtent(iface.mapCanvas().extent())
# Position de la carte dans le composeur
self.map_modele_test.attemptMove(self.template_parameters['map_position'])
self.map_modele_test.setItemRotation(self.template_parameters['Carte_rotate'])
self.map_modele_test.attemptResize(self.template_parameters['Carte_size'])
self.map_modele_test.attemptMove(self.template_parameters['Carte_locals'])
# on dimensionne le rendu de la carte (pour référence la page totale est une page A4 donc 297*210)
self.map_modele_test.attemptResize(self.template_parameters['map_size'])
self.map_modele_test.setKeepLayerSet(True)
self.map_modele_test.setKeepLayerStyles(True)
if self.radioButton_11.isChecked() == 1:
@@ -444,8 +475,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.position_map.setExtent(QgsRectangle(641552,6647386, 995856,6331104))
self.position_map.setFollowVisibilityPreset(True)
self.position_map.setFollowVisibilityPresetName(self.comboBox_6.currentText())
self.position_map.attemptMove(self.template_parameters['position_map_position'])
self.position_map.attemptResize(self.template_parameters['position_map_size'])
self.position_map.setItemRotation(self.template_parameters['Carte_2_rotate'])
self.position_map.attemptResize(self.template_parameters['Carte_2_size'])
self.position_map.attemptMove(self.template_parameters['Carte_2_locals'])
overviewitem = QgsLayoutItemMapOverviewStack(self.position_map)
map_overview = self.position_map.overview()
map_overview.setLinkedMap(self.map_modele_test)
@@ -455,7 +487,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.position_map.refresh()
self.map_modele_test.setFrameEnabled(True)
self.layout.addLayoutItem(self.position_map)
self.position_map.setId("carte_position")
self.position_map.setId("Carte_locals")
self.map_modele_test.refresh()
self.map_modele_test.setBackgroundColor(QColor(255, 255, 255, 255))
@@ -471,8 +503,10 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
titre = layout_name
title.setText(titre)
title.setFont(QFont("Calibri", 15, QFont.Bold))
title.attemptMove(self.template_parameters['title_position'])
title.attemptResize(self.template_parameters['title_size'])
title.setItemRotation(self.template_parameters['Titre_rotate'])
title.attemptResize(self.template_parameters['Titre_size'])
title.attemptMove(self.template_parameters['Titre_locals'])
title.setBackgroundEnabled(True)
title.setBackgroundColor(QColor(255, 255, 255, 130))
self.layout.addItem(title)
@@ -489,8 +523,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
titre = titre + ' [%' + self.comboBox_4.currentText() + '%]'
subtitle.setText(titre)
subtitle.setFont(QFont("MS Shell Dlg 2", 10))
subtitle.attemptMove(self.template_parameters['subtitle_position'])
subtitle.attemptResize(self.template_parameters['subtitle_size'])
subtitle.setItemRotation(self.template_parameters['Sous_titre_rotate'])
subtitle.attemptResize(self.template_parameters['Sous_titre_size'])
subtitle.attemptMove(self.template_parameters['Sous_titre_locals'])
subtitle.setId("SubTitle")
subtitle.setBackgroundEnabled(True)
subtitle.setBackgroundColor(QColor(255, 255, 255, 130))
@@ -503,8 +538,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
logo = QgsLayoutItemPicture(self.layout)
logo.setResizeMode(QgsLayoutItemPicture.Zoom)
logo.setMode(QgsLayoutItemPicture.FormatRaster)
logo.attemptMove(self.template_parameters['logo_position'])
logo.setFixedSize(self.template_parameters['logo_size'])
logo.setItemRotation(self.template_parameters['Logo_rotate'])
logo.setFixedSize(self.template_parameters['Logo_size'])
logo.attemptMove(self.template_parameters['Logo_locals'])
logo.setPicturePath(resources_path("icons","CEN_RA.png"))
logo.setId('logo')
self.layout.addLayoutItem(logo)
@@ -580,8 +616,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.layout.refresh()
legend.updateLegend()
legend.attemptMove(self.template_parameters['legend_position'])
legend.attemptMove(self.template_parameters['Legande_locals'])
## Ajout de l'échelle numeric à la mise en page
self.scalebarnumeric_qpt = QgsLayoutItemScaleBar(self.layout)
@@ -593,8 +628,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.scalebarnumeric_qpt.setNumberOfSegments(2)
self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0)
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['scalebarnumeric_position'])
self.scalebarnumeric_qpt.attemptResize(self.template_parameters['scalebarnumeric_size'])
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals'])
self.scalebarnumeric_qpt.attemptResize(self.template_parameters['Echelle_size'])
self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate'])
self.scalebarnumeric_qpt.setAlignment(QgsScaleBarSettings.Alignment(1))
self.scalebarnumeric_qpt.setBackgroundEnabled(True)
self.scalebarnumeric_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
@@ -611,8 +647,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.scalebar_qpt.setNumberOfSegments(2)
self.scalebar_qpt.setNumberOfSegmentsLeft(0)
self.scalebar_qpt.attemptMove(self.template_parameters['scalebar_position'])
self.scalebar_qpt.attemptResize(self.template_parameters['scalebar_size'])
self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals'])
self.scalebar_qpt.attemptResize(self.template_parameters['Echelle_2_size'])
self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate'])
self.scalebar_qpt.setAlignment(QgsScaleBarSettings.Alignment(1))
self.scalebar_qpt.setBackgroundEnabled(True)
self.scalebar_qpt.setBackgroundColor(QColor(255, 255, 255, 130))
@@ -624,8 +661,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
north = QgsLayoutItemPicture(self.layout)
north.setPicturePath(resources_path("mises_en_pages","NorthArrow_02.svg"))
self.layout.addLayoutItem(north)
north.attemptMove(self.template_parameters['north_position'])
north.attemptResize(self.template_parameters['north_size'])
north.attemptMove(self.template_parameters['Arrow_locals'])
north.attemptResize(self.template_parameters['Arrow_size'])
north.setItemRotation(self.template_parameters['Arrow_rotate'])
if self.radioButton_10.isChecked() == 1:
info_text = ["Source : " + self.mComboBox_3.currentText()][0]
@@ -639,29 +677,31 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
credit_text.setFont(QFont("Calibri", 9))
credit_text.setHAlign(Qt.AlignRight)
credit_text.setVAlign(Qt.AlignVCenter)
credit_text.setItemRotation(-90)
credit_text2 = QgsLayoutItemLabel(self.layout)
credit_text2.setText(info_text)
credit_text2.setFont(QFont("Calibri", 9))
credit_text2.setHAlign(Qt.AlignRight)
credit_text2.setVAlign(Qt.AlignVCenter)
credit_text.attemptMove(self.template_parameters['credit_text_position'])
credit_text.attemptResize(self.template_parameters['credit_text_size'])
credit_text2.attemptMove(self.template_parameters['credit_text2_position'])
credit_text2.attemptResize(self.template_parameters['credit_text2_size'])
credit_text.setItemRotation(self.template_parameters['Credit_rotate'])
credit_text.attemptResize(self.template_parameters['Credit_size'])
credit_text.attemptMove(self.template_parameters['Credit_locals'])
credit_text2.setItemRotation(self.template_parameters['Source_rotate'])
credit_text2.attemptResize(self.template_parameters['Source_size'])
credit_text2.attemptMove(self.template_parameters['Source_locals'])
self.layout.addLayoutItem(credit_text)
self.layout.addLayoutItem(credit_text2)
## 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():
logo_credit = QgsLayoutItemPicture(self.layout)
logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom)
logo_credit.setMode(QgsLayoutItemPicture.FormatRaster)
cur_x = self.template_parameters['logo_credit_position'].x()
logo_credit.attemptMove(self.template_parameters['logo_credit_position'])
cur_x = self.template_parameters['Logo_2_locals'].x()
logo_credit.attemptMove(self.template_parameters['Logo_2_locals'])
logo_credit.setPictureAnchor(4)
self.template_parameters['logo_credit_position'].setX(cur_x+51)
logo_credit.setFixedSize(self.template_parameters['logo_credit_size'])
self.template_parameters['Logo_2_locals'].setX(cur_x+(logo_div/len_item))
logo_credit.setFixedSize(self.template_parameters['Logo_2_size'])
if logo_run[0] == ' ':
logo_credit.setPicturePath(self.s.value("automap/logoteck", 1, type=str)+logo_run[1:])
else:
@@ -697,10 +737,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
self.close()
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()
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
@@ -719,19 +755,24 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
pc = self.layout.pageCollection()
pc.pages()[0].setPageSize('A3', QgsLayoutItemPage.Landscape)
self.template_parameters = fletch_canvas(self,values_page)
if values_page == "demo.py":
self.template_parameters = demo.fletch_canvas(self)
if values_page == "carto_standard.py":
self.template_parameters = carto_standard.fletch_canvas(self)
if values_page == "full_page.py":
self.template_parameters = full_page.fletch_canvas(self)
def bar_echelle_auto(self, echelle, bar_echelle):
if True:
if echelle.scale() >= 20000:
if echelle.scale() >= 40000:
bar_echelle.setUnits(QgsUnitTypes.DistanceKilometers)
bar_echelle.setUnitLabel("km")
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.02)/1000))
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.04)/1000))
else:
bar_echelle.setUnits(QgsUnitTypes.DistanceMeters)
bar_echelle.setUnitLabel("m")
bar_echelle.setUnitsPerSegment(round(echelle.scale()*0.02))
bar_echelle.setUnitsPerSegment(round(echelle.scale()*0.04))
bar_echelle.update()