From 42f33f619ccc0d84b4cbb9202c8e2c5c0e907ac2 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Tue, 9 Dec 2025 17:04:20 +0100 Subject: [PATCH 01/13] Verification nom de couche dans DB --- CenRa_FLUX/flux_editor.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/CenRa_FLUX/flux_editor.py b/CenRa_FLUX/flux_editor.py index 53e98479..1e096781 100644 --- a/CenRa_FLUX/flux_editor.py +++ b/CenRa_FLUX/flux_editor.py @@ -525,8 +525,14 @@ class Flux_Editor(QDialog, EDITOR_CLASS): # Chargement de la couche PostGIS geom_type = 'SELECT right(st_geometrytype(geom),-3) as a FROM ' + schema + '.' + table + ' GROUP BY a' - cur.execute(geom_type) - list_typegeom = cur.fetchall() + try: + cur.execute(geom_type) + list_typegeom = cur.fetchall() + UndefinedTable = True + except psycopg2.errors.UndefinedTable: + print("Error table name") + list_typegeom = '' + UndefinedTable = False if len(list_typegeom) > 1: for typegeom in list_typegeom: if typegeom[0] == 'MultiPolygon': @@ -547,9 +553,12 @@ class Flux_Editor(QDialog, EDITOR_CLASS): # Ajout de la couche au canevas QGIS QgsProject.instance().addMapLayer(layer) else: - layer = QgsVectorLayer(uri.uri(), table, "postgres") - # Ajout de la couche au canevas QGIS - QgsProject.instance().addMapLayer(layer) + if UndefinedTable: + layer = QgsVectorLayer(uri.uri(), table, "postgres") + # Ajout de la couche au canevas QGIS + QgsProject.instance().addMapLayer(layer) + else: + self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "La couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» semble ne pas avoir le même nom dans la BD, merci de contacter votre administrateur pour régler le problème !", QMessageBox.StandardButton(0x00004000)) else: self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "La couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» ne ce trouve pas dans cette BD !", QMessageBox.StandardButton(0x00004000)) From 4051a6855b6f611a6552e9d98ceb82424b94968e Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Fri, 12 Dec 2025 12:14:17 +0100 Subject: [PATCH 02/13] mise en page pour N2000 --- CenRa_AUTOMAP/canvas_editor.py | 28 ++- .../tools/logo_library/Natura_2000.png | Bin 0 -> 47149 bytes .../tools/mises_en_pages/carto_standard.py | 24 ++ .../tools/mises_en_pages/full_page.py | 27 ++ .../tools/mises_en_pages/left_corner.py | 30 +++ CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 191 ++++++++++++++ CenRa_PAGERENDER/canvas_editor.py | 12 +- CenRa_PAGERENDER/demoV2.py | 236 +++++++++--------- .../tools/ui/CenRa_PageRender_base.ui | 118 +++++---- 9 files changed, 490 insertions(+), 176 deletions(-) create mode 100644 CenRa_AUTOMAP/tools/logo_library/Natura_2000.png create mode 100644 CenRa_AUTOMAP/tools/mises_en_pages/n2000.py diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index e0a3fb5f..59d5189b 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -122,9 +122,12 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): 'Legande_size': None, 'Legande_locals': None, 'Legande_rotate': None, + 'Legande_frame':None, 'Arrow_size': None, 'Arrow_locals': None, 'Arrow_rotate': None, + 'Arrow_background': None, + 'Arrow_path': None, 'Echelle_size': None, 'Echelle_locals': None, 'Echelle_rotate': None, @@ -140,9 +143,11 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): 'Credit_size': None, 'Credit_locals': None, 'Credit_rotate': None, + 'Credit_alignment': None, 'Source_size': None, 'Source_locals': None, 'Source_rotate': None, + 'Source_alignment': None, 'Logo_2_size': None, 'Logo_2_locals': None, 'Logo_2_rotate': None, @@ -488,6 +493,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.position_map.refresh() self.map_modele_test.setFrameEnabled(True) + self.position_map.setFrameEnabled(self.template_parameters['Carte_2_frame']) self.layout.addLayoutItem(self.position_map) self.position_map.setId("Carte_locals") self.map_modele_test.refresh() @@ -504,7 +510,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.layout.addLayoutItem(title) titre = titre_layout_name title.setText(titre) - title.setFont(QFont("Calibri", 15, False)) + Font = QFont("Calibri", 15, False) + Font.setBold(True) + title.setFont(Font) title.setItemRotation(self.template_parameters['Titre_rotate']) title.attemptResize(self.template_parameters['Titre_size']) title.attemptMove(self.template_parameters['Titre_locals']) @@ -551,7 +559,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): legend.setId('legende_model1') # legend.setTitle('Legende') legend.adjustBoxSize() - legend.setFrameEnabled(False) + legend.setFrameEnabled(self.template_parameters['Legande_frame']) legend.setAutoUpdateModel(False) legend.setLinkedMap(self.map_modele_test) @@ -608,6 +616,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): legend.rstyle(QgsLegendStyle.Group).setMargin(QgsLegendStyle.Top, 3) legend.rstyle(QgsLegendStyle.Subgroup).setMargin(QgsLegendStyle.Top, 3) legend.setColumnCount(self.spinBox.value()) + legend.setItemRotation(self.template_parameters['Legande_rotate']) legend.adjustBoxSize() legend.setBackgroundEnabled(True) @@ -660,12 +669,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # ajout de la fleche du Nord north = QgsLayoutItemPicture(self.layout) - north.setPicturePath(resources_path("mises_en_pages", "NorthArrow_02.svg")) + north.setPicturePath(resources_path("mises_en_pages", self.template_parameters['Arrow_path'])) self.layout.addLayoutItem(north) north.attemptMove(self.template_parameters['Arrow_locals']) north.attemptResize(self.template_parameters['Arrow_size']) north.setItemRotation(self.template_parameters['Arrow_rotate']) - north.setBackgroundEnabled(True) + north.setSvgStrokeColor(QColor(255, 255, 255, 255)) + north.setSvgFillColor(QColor(76, 76, 76, 255)) + north.setBackgroundEnabled(self.template_parameters['Arrow_background']) north.setBackgroundColor(QColor(255, 255, 255, 130)) if self.radioButton_10.isChecked() == 1: @@ -686,15 +697,17 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): credit_text = QgsLayoutItemLabel(self.layout) credit_text.setText(info[0]) credit_text.setFont(QFont("Calibri", 9)) - credit_text.setHAlign(Qt.AlignmentFlag(0x0002)) + credit_text.setHAlign(Qt.AlignmentFlag(self.template_parameters['Credit_alignment'])) credit_text.setVAlign(Qt.AlignmentFlag(0x0080)) + credit_text.setMarginX(2) credit_text.setBackgroundEnabled(True) credit_text.setBackgroundColor(QColor(255, 255, 255, 130)) credit_text2 = QgsLayoutItemLabel(self.layout) credit_text2.setText(info_text) credit_text2.setFont(QFont("Calibri", 9)) - credit_text2.setHAlign(Qt.AlignmentFlag(0x0002)) + credit_text2.setHAlign(Qt.AlignmentFlag(self.template_parameters['Source_alignment'])) credit_text2.setVAlign(Qt.AlignmentFlag(0x0080)) + credit_text2.setMarginX(2) credit_text.setItemRotation(self.template_parameters['Credit_rotate']) credit_text.attemptResize(self.template_parameters['Credit_size']) credit_text.attemptMove(self.template_parameters['Credit_locals']) @@ -714,10 +727,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): logo_credit.setMode(QgsLayoutItemPicture.FormatRaster) cur_x = self.template_parameters['Logo_2_locals'].x() logo_credit.attemptMove(self.template_parameters['Logo_2_locals']) - print(logo_credit.pictureAnchor()) - # logo_credit.setPictureAnchor(4) self.template_parameters['Logo_2_locals'].setX(cur_x + (logo_div / len_item)) logo_credit.setFixedSize(self.template_parameters['Logo_2_size']) + logo_credit.setItemRotation(self.template_parameters['Logo_2_rotate']) if logo_run[0] == ' ': logo_credit.setPicturePath(self.s.value("automap/logoteck", 1, type=str) + logo_run[1:]) else: diff --git a/CenRa_AUTOMAP/tools/logo_library/Natura_2000.png b/CenRa_AUTOMAP/tools/logo_library/Natura_2000.png new file mode 100644 index 0000000000000000000000000000000000000000..f319b760f3d61882c96c8ee2a8e540a155becd3f GIT binary patch literal 47149 zcmV)gK%~EkP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5&!@T5&_cPe*6Fcx57z8K~#8N?R^J; zUBz|w+4puOA!${RP%j_^s`R3Qodh>0o*Xb%A7@LME2k~N7kB}(2qq$*1R_njy^BS^*xSFIOY=h^<59Iv(f>* z?5&rbj&hn1olc}Vu~47^Jvi!sV5K-FP!NG82`A8Fj7}Idp>K<1j6&b$jx`Q7H`ZLWwX7|c#Vpvwr z(E5#g?ALcK&38EhvoK2kbL$eTuBo?+FPNZUB*&k$1}Zro{iJhI+WsgzxG z?ntDBHG()q4=b)Yo@nTi_}3j-`|+)dt>$0@PPw+=VMSr_vIoaEXg_F%I19^gu*n&e zCWNKzKYskIl~?YyNt~7e>UX61I>L)m85yW^CJs@08a67duQ#5U=rKsIGivMV?MHK# z*pGiXUy`d1;plhb%G^nalr36TW}o@zhuu1H*nt=HFUPzyo0VA};q;gI?^cbXWM%?Dbzq+04C%N-m?_8--kc*d3JpXb| zD7l6p!EFIvW|#)_;Pr+2(vRvd9Gmw{*6xPUx#9oaXM_5c=$f%rTld*lzVoCTnrxGe z8a_a&iEsYsc^!*jsU}YtrgI`1q2^l%PAv2oq;7`R3*?^Tob2YxBz|A<+%UI5$sXG ziK)6h2C2J2n?VDTlO}G0E3$)ihwQ8W`6Ofzl9x(bi4|M*zJqY3Y?pk5#Ec&xJW!cb`Tr*s_q5`tf zWNG}HJRZ|E^mFyTL-xa47pcr_su8`NwoA_s3)!fU)80axb-3(6qHRn(4 zAEAfyb&Q;AU)m{wOl32c%5Z#5+kzLXY|h=wA>4HDiNm`n=XJ?b>cQ&?c|+(1_MPsg zp z96%11Spu0T%6UjW_E3IKY?bXXNZkxyfaIQ$aMuhnb=Tu-?e0e*tS~5zh{-@GDVRk~ z4VEfyvTyz1Ia`D2TyDC?qt5dqB6oN9;8;L0x`n2Q9#YEIzOvV@{lx7WYy=EM9CR9+ z(pFnrZ-4!d52)|>%Ru`m8&f9^v+}LAcIzFBE!~*5Oz8NLBm3IG{=IS5Tul`V1C`(T zed3_UAayrrjNm4@jHPVR@(TOMZ$5@Fj;0w1RRd%TW(fkCwO(-RvzAH~+uy_8-?#q| z@?h!~9iecS#nIDs#{x8c)-#7G+puwmee`p8S~=H%*gY^*DfAidqGi)fHs{XewsqS+ z^mCK)6~jnTHYQCRV&D1Ea~OTUN0segG0qavnhGEx-EUJ$Gjx$jy|!g*u%kc9gOw=BfC3n8U2o`}+SB7oCp^bgmO zzV@TJR$F(_jZ_9Eo+>bP6!f-E3pd2ODHE*C!B=i`hqW}u)+E;eiM?QbA)z%!)dH{VRt`lV79nnkj zX&aw)g6j_<=Y6(0cdoMMpWCSOW}Xs4a&p>(*A?s%dO3GLvfh@iD6_^i3Nz&h)Hb_zo@l5Pi zm~etH(A%YxW^Lk{feb@3o(E0C5R*u|{^eaTMt58F!A46%z&Psh!N?*=As-EBf=|yy zPhV+*h~wIKYB$;)kF7%-PMhF4N$3Cv6GADO*PJlCl&mlBQo0kd&?6xYHIbEk~Eah-s%jcW0+D z#VgV)N4PGfJ8LL|#xK$$gz}Gnk;~gepM_ie zDO`;Ac1k{INXS^G#c}P++w3nte~(=GG~9OPf87y<%10)&hn6D>1e+L) z0u8VX1O*sJGI{kY+wI2B-*5Xdf;K^rct?%twN8+MX=A559 zlJiHXKAJMI7C+v#5tm(Bd(a8cCw0GvM##e);5n~pIN0B*Mi>no<+*09YHO{1=ARz4 zkNoYOR#~}QIU0)^G-zc|oXfxWZz0&v-q!#I9SwBhm&SCC)3r&M$|<@TO%4wuExJ6u zfi`$Eih~c?Nsz59P@M-xa@vt+6atQOXzIjvK?*1{@oD`0l#MLp`);_n$*B}M;;#5# z!85Aae+cdQ2_{aC%viBqI*a zZGkCugm=_{t|Q_EVapw7+Ih z**Joz&r(zrUqj&^SJvYj5&$$qOOk3|0Ot95_K~?RTx|2gcMM;4+!j6=QH^m zl|_9-{sXlzL_fZ5fxYd6x7oc9uQiM%h{ZGu?od&R55Hn?fl{S3okqXPKsj>W5Rg1~ zuNdjGFlrcFQpNDrKtmRT(WU2&RvMQTAFK%9x$iXPXl(P>9$Lzi{Iv&9mz3$Y!U})l zJ9z?r=>P`hIrN&~Okp9cKF6e3ss|p&Aj9~d+;RrznnYuqqM#HzGZDcDDgXXIom#~))wCP ze?Uc8?a=fANqf*WAWOkd8hIU~90QNff7!nIgSl3CqX}p6`_q?VvwHNT5iu( zz8bCoFfogXa7uR)j&E*q5t>GYY)YeD6f&+1G&a@Szg+m%T=SYRh5E^yW%l2%; z1DS#!6Y^;nHcH|MD%T&8x9s;jpD-LL`%kJR;`Qz&Xczw|*bG}yJH&b0GKj6)#%DrM#6)%N$_d(IXu+k`&J zSaB+48T1`J)GYF)gO}V?1n<{M5XUtj_Fs|irt+?6e#+e(IklrfLOQ>uAKql+hW4|^ ze)mzyRt6y(Hte#ReZ0wm!B2JKl(G`Mx7QO%xs7NktSvBY=_$Q!@>xT>z#t*_zb<>q zrl+6l)sp;6-sC3fB-yaLrr9tV4#7YZOg~>}Lt^`r+oeBfXk)~{5&fB3PD_OIW2+^P@J17?Sz&*9bbZV;zq z=o)apQEN!d&wk`}1N#!fLPNym^00uReorE*9s9iz#Zn$(`ENRBjQ!}QYf+Dq*d4!H zZWUGgaE?e0~;UPo4qihA-S{w|@7!lc>e*ATK1*81Wj02nQ-Y zuVNZT(J0JY_^Q3{6Ti0g+xPnXU$^lgQV=|*jm*vED-h&-oz21U7{^iZpT6{FopWWv zrvRi2G%B~!`Y85cYlbKGUHlPD+gf^p`_H%$ zk~d-bHIkW^j+e}xjOZ~)0EHxJEZi6|oKNE8T2}zW=`6uh`Pt7G*kAp_gSPizBc1pl zbeQos)nioU^JiRd;N6qFFecGjcoL**#u-EH+-W21XTN;GzVY=ZRJXdV=azq$fIZ;9 ztZjj}`?c>sj;pNp6t&eqNn_IzTI%1VF-pcUoSu=U`q_+4KX>R!JJ|FXB%rzAxWeme zqxk2KZSdzFNp;-;`_!lJweQ}(7*`zKXnJ5Ake-5-hA}GQ`;Af!S|4CoQV=6zcuR2+ zr0ZR8JKt{j#Bc4pzg=Lzeqx=?U$B)MmA(HMeRMYYN4Fh`*Ll*ryROPu}q4^E0ejK5g&DHTw9h2}4fm zem&_8k`$Znht74tF>Fw4DzSYv2kbMSyUV`&>$xsSywk<||1c8iY%hel0pkO)+-1!P zoZo3nS#c(8fk+Bp0$z99g3i~Ua=~1$K`nyuL>RYIDxZvC4>|>~@DI1IwoNtrF_P3{ zqE>7Ta6S2;YtlnXA{v{P`YxtzDPIyXFOPmF*5zp0^zaTOMEl*;lM5%kL5hMQq0kw_ zU~nK4Ygccx>#o1u9$Q_BP#6P@Vnx{!x!5!dy3H>+qIU%&gz((kAL)Ygae^SY@kb=j zTN3sNKj)o0q*E|AQgUM^>jOG4CG0`lAYcFZ*lJ(zOY?2kFazQ%dEB~sM1zy;(|Anw zVMGi|_BX@$OeBwT$Z<7o$_T&qfRhdU(I?xVxQlGhQjk7Ih}<;@V*4N)1|J8fge z3>1w~c1{*VnLgnONqjP>;ej;lTBAb7I@2lqH2?gjjR=+UL>fA2R}hisF3wy_Ud0>fim z?8Ar{m(0sF$#gL;H{fJ5Hg=Rh;oowNCkIY?gA^Z>A_a9!*MifIZ2 zE?yTN^Fr2K7F%u=cG4C6c33AcUh+zt)_0D zHKZDhs|hY9c@zp{M4^x+lPIDWLvXFV7AyqX!)T-C=^f4x+#6 zr5!mwqXQJib3TLCQokx)K#WhOYbib=#wF9RFF9T0^Kqj`_D7~TRXaIV^Q1ROT%6YP zzZ429vFTHW**U`pTPB^B_f#lU5v_%{geZW_lRPg(Qc#oN$_LZ;@9TH%ILi0n2!QDt zJtDpO6|CbliKETh)!S{){)4%`pc#s5H+t7Oy`*-~R(~eZUOX{nQuvO4NZPVAoY?3w zNMHd5C&_^108;RGpSj$MG8EzFE_-VRqcs!?Va(5CvaFm!6qL_!ZZpuE1E3s}Cioqg zpie#MC<1?Z$gL$=gFX1zOLB~5@;Uf`sooddEE(>8g+3AA6F;J*{)}-+#IWQs{zwmv zAL~AS{6NJ!FiIB4!^wb?-XQs1D@VKsGjrBhyL7@(Xpl1}l9e6-wC0~^H@H6YcUl;?0`6C?h$GfL3^@sOE>tLQ_ zzGh_>T=T~T?RYa|^ys8PI$R!32AuQ;Nu#39IGe|r|FADP!~qW$WebJ$ z6@u*opLGoTeHe@){`co|^~TLuhV}z-<74s!wR}?W#KJ@39OBN?ggI{BS2U1&Q66Ga#Yk{LTqFlb;7gf{yp6 zvmv*L8HD8>@4NtiUEuW6HGygUr_VYjgsdgRxTL@)!T8qV99};gpKao|{$JZYHmW7d zaHGv1fP$Q7teki<-NQOrbm~zJ=6 zcZwrV`BFHg^{T{AJ;D;M3GzbO0?SZAIB`&+^uF*eK;%gwZ+IAq|u6A ziYq~eUlK{Tzv$gkd@?L4v~7XU#tj_A_vCn<_R>c*ON*+&DL*E{7?gp*dFbKw_Py`T zwg0$jo_+WG&)dTfZ%{N5>Ew}oWp2KKAcko~Zw88%@0;o@NNZfriFB|pG$@2V^LBZk zxg0P}I7b?0TfKIt{nZ!mwLJ&;K}W>#%P(wC;upcXB9C&sY5~bSZJj57$+Dvt$IVEq zKwsR9>(jX7M?Jd=$9#(={9)K&=k2X)lxOnK|MN7A(sE2I(8)^a`$zm8L>QS77`=)1 z5QRkS2zOj0E-0fH&izXh{scc?u+AR`w5G()>9&Nn5XrQxJ9#7u<9VG*!T9lYC^=e* z_S;8c&y~$=`neaOP@Jz{v(w)9!8!JK-+9b_cHauS^}c2HzxTXgU-*wF>>bzs!oGXc zb5>jHuVV4Kc}EJJ0zPu-f*ojJa>f*8*-VmU2^MYLER>p?OObZb{`M@AZ0kMeJ@ zom^;NqF;A_MB19*xvW`PiJ)HS!Hj+FC-dz0cdb%5Awkp;c_<4ZPg|gn#M{19B^oo` z@t{zI_Z{hb?l4Atynwo=m$ETw%8ekwa-zT`1+PUR4Dh;}3vv>S^N&Zm2iIQu7C|G5 zJWQR-5xfZgYHAwoZ@zl3t=m?s_d3)1^LuisbZ@l0LGOS1*?p_+FK+y`-SN9+%3jn| z0``Ju;IpXVNX{QmNu!4%p&vR2GWu}EjP1!OJ=+x1q5t;Q9k53pdC9)?l?QFsRX?}i zKe--?pVst~rrkk<7SEf5<+jA@Tzx?74<2Khc#PrkJpPDedfHja8wa_k=Wc)mGvM&{ zo-8;nzB)nzH3*}l=FhLNkNm^E2xP~>V8GS=z?-Jn-+u0m)~~b#;ok8|&dlvXmc>t_ zK&x!d=TmmsJAQ1{2RY^=42H?Q0atPws@A@YmK44ucpc-~LrljbjnXf^ah1)UHCAEG z>24pndimTGkN96xd%$k|#2vQ2s@jcE6FdeQ8hDwUBI-?s;3vPj-pB=f@a5vO2HIa< zdy$PDJH)0rO=J{H5?j= zv4i^B$KE&7-uM1#O6%Hi1WJqaP$fzQ^-6+p`|nrUKmYVO2#X6a1%|tVXoP5@(g^k` zq9Y1pOUFXQIR28?g=syEhA?eE``T4@+3YbP<_OwGs91P;TeTxBk_c{$>W_#zFWM1@3fsc@-*us?$C(k z+t(Vz>o%}x(=HwJ${(g&@J{)fVBTPm0nMOq(s6Sm>t%29{ZamESiX3zk#+G)!^l^R z_VR&}h{*e7AMnUJ<8>0z5G4`w#`J}4PhK;Prw2W33mtUubNYxJ$+@pa7_ z-0^_CLBiyfGR5w52RsV8AIaJzTO%WNuD@CPx24b7H6vh z`jfQ<^S9bZ|KV=rN_j->tIw%U-p4%PaI+6_p9)<}`-&xZ=6tb6UtBDunl=@4q6)JU&me%o(PZ z@J7Hp=O0IYoNHRwAj8HmdX&6d34g--4kYM%WH|bi+3TYu`nU3Zv!XtnNe>SBT!Fo> z2^y6=kDO;oL^>nQ5j=0rvms)>WEc_4kMS)bnKxNSJSO9482Ls}J;TCJaD!Jqr9-zspvXQZt&?Fc-{2}e8N#Pa4}ykOPUhl1fjE_ez$BF_1kveheJhH~_R z!D_IVD|cBVf;DYGo=o`uJZYox;b)^oCwQO6F?tI{sa~KL6Fd~nV+!T5AJ`{+1utCz z<||IYjKSj~9Vi-R$KQsTZ#zvN{2M7NO_9gZE2fu3Z-V_A*9lwWYhgIg8OC3{ZVPRt zFD$$8I_51rCwMMdLHkqS4Zi_LgHDgH0c`}=?8-||w>MpWmfoX2j*pcnJNZmL;*c+{ z8FDnB4t@bg-3&R8;HA<8dRi%_eTes7ZWBKnr6&peC^{vhE?+!yW)Z1y3K7S)0C|Jd zltEeqYOjemGz%q=w-g#34q}*;pXUK=*VmRk3lHgZOxgUq=u+aC(d#RK3m1(+hrou1 zv~%Zgfc*@M>|0`QpLM3)_*XM* z+^7LcOSpV)AWv)7%FFiI^3_{y-TF$~SJPmdU)^eliu>A< zjWFmm8|1tA#3>%Vue9iu&rK6FVkImSaoHjWFOINv0O@fgi(G)c4-*B)YC>WWW)aZTloWnvKGr?iSPF#cc# zmj^DIc$%dlyVK7br~Xf8GB#tzc(A7zx-ny8M-PQpbqcu?YKiiJ^22$)bx{Wy64NEY zJWNmh0q{q8^#|q4$nX)IO4U}Rk0W3(tFE)P>$iJ-&|6KNk?@MQo(rd7V7^W-Jcpb? z;*?Dxh@|T+8x|7BJf6TU9TDAkSBOU2T64e#^yy{2dhyHt%+JOkCy0r4%1Ej4M+Q;H zq5>0YYWCZVYv-VfLlRV9*9i1LDZm2v{OQt*A+8K5FzoD+L+t!1BkZkjo@}#cjAd~W zbiYlU*7HsO_8$+~=DmJ9pA7eDf^(n{45!DDL^5qoxHwBsM=TdePRCqaBcEa)#{Oh^YgcWvy|sY(qaNZUPaOg*FTBO9m5Effi`C346rRU66gW30!AIlsB7vgfMb*2 z1xDM!JJpX^?-$TPej=00yc;(f@r%zKXT8xcdCT7&WN3 zjXJfDO*~_i4TtwLebPvqec2e%6l>$O47H2$`SUm1Pk+A97HryzYN!Z^r>7N|*AkL+ z=Q@s^kw{;7-4a?VCkdJaPMxm4=nVVzx8EH?Bl0|H8?B^6b>MEGA*Km^Bx{Xx9X*H; zjYzK`dPU3|;+>fF5&_-l?QR?2WqAZFpEb2fTX4jH#fR5OY*sp=kYqy(^6dFc|>7+L`!*E%OAbE zc+E8Y#jq@lQ5tQcai%=eJLEM7AbR%x;y}nEjWgRWBjR_L(=f{9lb7p*h0APcEB`1h z&bV-ndR1>wG>jV;%J3#tbO6bIuxO zpa1lq+L*DWq5(Cbyg*i9YqKdEh0edU5v{Fv^xBPk>?41BhgH`ekR@da-e~+Vij5wA zn*H^S7u&UOo5YqO2PK97ojDP4G{&Xz!!!s2N}6sAbKGuXi} zUdOPQE}16gk0`t@1WBJVYM}k{Cx2lBN_)A7q{an)w4OD<`!&};0!P5+ZOGApGHD+2 zG>xFZP`KSBKN;{mGtV7(F#Yh6!cpPA3ed4-#2Bd(|!+uZ6? zS$GFz)}+z)h0pwn?@K{3v|R!!LwaQ`$j>jx z@?~ZOnU}8{%7@>)g_X8uO_ja4tPDb5Wp#X3l}zUz6_l-wfiOn7B{k*^ozoGtB&^`XPI481uw!hIfT3Q3lt_M94Qpq^U^H@rp%O4eXBJ02uK*eC1D8*=v!@KRaU)L^qZ&Y9 z3DQlOKGI4DAa5i@5OsdqCJNK>nr(4qVT0z+t3W71Ko6gYudZpdb!)3I0w1!?uk5hO zz5A>TQwOGzf~Z5;v9S|s)}wj$@RH`xR_Sw`jf1aX?(3LR>QKqpOFrMJYT(fyDeDos%_Y?+g5I;A2w&DfKSr@& z!pq4u$@@cKc_EykGI7wAeEXZrkEZ0PE5>?BhzR91Gf0f0NA$$Jmu=zlt@iZX^{{xZ zpmFt|phCpij~W&VC6nFixq=s^Fu&(o4CM`ni|k_3pGi4Nz9dtz;L|3l`^c!dvR# zEz0y+xDRMrqiW>zgIf$5T<$XPRY-1bnSy;ozGK?MyqvDccmiCTQF^D7a-AHIREK1g zMuqiIrg6B@54OfZ8FT{r;10CcG)3RLZg3FE{qb{KUdLy(02ydjP zgYqvr<1`!CJ8csujj*#P4Y#2KdfBD3`4$P%$88ii1irT<58Z|9VUXs~AbsiEk2EcX z5!zB!Ct8ZpDOr938jazC8}~@$8%z}-Lz&VU?abnQ9xc~-FP*C)6e?WF(9p2a$cd3G z3o4c&!?`%gu;%ez9~cggjZUltBp57$ofkVk*8v4+DLjUWKA@$15y||m)e(`5PnQ2$ zP?&#EpI$a`)BwA1`Z$|1c_^lDeYHsM!sBVkn|z)iy*c>MK`;f$Y?(avRp5J)hEPxB zxtG>b0q)_j90@f3qAT&o6-ZMKAV1YaxQtL#0Gzf|Y#U(lq8tCHz^hkR*`fto?5TyD zv~bSpx8J?u0Es#f;L1m!EtGN66_j4n6cC|xP~FJ`ZDG)4%X#DwF8K`ukMjxbOI+hL zcb+#IJVqHNP07YGuk)Spo)0vDF0PlUKjJhhlpB%a+7i+>74;TBxMpe~IN-GxQMAw$AG zYJ%rfZ52EA+1ia;ZGRn@A%>yjiu%}+73+|;7cNLVnuWY%9L)+h9_lH1Fp8rNL9vMj zOvVN2)#r6{BFvCQO8(>U)Zf8a2qqjqi*2luesD&PoS@wn!t33;pXxfXMTc)g_wZP@cn1 z^I#ysh>)O=CsHiQm(!fPMtbU`vL-9fr9W~|#@yg}`{vE9v?rfjZ!fN`wDnteL2fa? za^Qm@a%1C$Dtb|@mtGDLr^qxSSsF4Ny}V;w2`r7w&!C`cQtd2LH%+1#h-Vo8#i_+M;l+PW*A3;(AkJ& z`B5N};5E~@@$gG=(TEtEDtav{hznbr1}X^d<8r!6`D0dn0(@Mw${HrmEnt z7I<^Ki}fI^iEkoA+H}T>GrjCWxautVl)h;@>&&4TLweib(zH#T%8wJGT!f4pHx$C$ z9~Ys&Da3&s7v9kCIG6G$hL_&2^dZ;`PPHgOTgvumQzb|Evdz1!vZ6+9sjS>`z)y|zd*1r=teVC0NGoYY74h;s# z%zr{I%G)S8;9wQ#@%(-vj`1{K9MY4vaB&ooFh~?@bRY>MH5y@H1Q^C3{mC< z`Jyoi=gdtwn?f9*#_~i9dc{^#eZW?%-EOrt^|oQvb`5kZR+roEgNN+Z^1W7%I@P)0 zT2z);7Qr|PLV~`C!myY&BE}VlCG)iu*AkL(ZKaE4$MU0R*H->`7sfA;k9P-o&AV(6 zM83_EYVRW&r@zeWp-0tyPmsSV21 zb7;+gIuOojxepZd9-MxHeU_3TqQvkSIxZITg?B|Za!5ZLIk?2$Fl&na#a~Rf(*C`b zpHd}-0bTL{QGP71BT#xun6d<(3G^7*J|8p>FVbap&6=GyZ{B8GwqlEIDBlGS>QJBq zgabVCIX?Cq)AMQkG^`V^iNd~v8PFRBd{E=d_2?lnKVv=5_|=%{OK@0Q-|7A z7@#p@2O}rr!B^yGpYh6v7V?R~Ka8W9`JG!RR5R4<@RIk_ZJ;Xot@L`Q2zDL@$^gD~!8TWV}`Wvwk)@Uk{>zVd1%28R->++A(k zY8vbi`vB?r61^nvc%(7vb4o8eXY@eJG#;>l{Ri0@69$P_GiQ#oK?8f+WK5S2r>_us z{zQZ(<{KHHOATHuk0ukxTw*}y`TAm1o)AMm8;8a&DJ`U>6Li-d8JIA z7b2!@FMV5OL?rXa^o8Xn(UJ0E9zUmmL+GI>8LlD8NchO?+ast9&U4S_M$CEUK#2N^ zHp-V=;Qg>%_A}$P4#jhn>_IBC80AoDG<`w&d{bsGSe#MtYDNwzRi5e7$EfVdQ-|1~ z{{3y{Y`&3z@IFhn$Kl~bjuTA7TuPRYZx75b$3W-KD?bNCiqwSz=N=Tw*F~(Wkfxx} z0ddx#wx}Sa^7&tj$fe6ANwmp{=n#@gBMq^r7{_oz>8LLe1$D%B<-H}>^X7dM(Nbpz_E>+SjZn{3hIEjE8?nQf|pfnv3M^aG0HcS;&Xg*Jl8 zYk;$xO~IUU-$^g`Fp!DS%F?$GZ8*1RufRdJESqR1UZAV-~>;ZDEy0Wyh|J=V~seXRHThFg)I! zBVv2G`IT{;vK3|O;nkGdsKNcMw0DV}an>-TN!g{d#)-yh(}&xDQvcY1*y7D=15^Oi zmrK`NP8`Xw1bu9)c-Dgx9fv(S(iv3O9I(CB4K{vkc#TJ)40a<#zSccTq+Df{HTKBE zYi;q03VROIJQ9=lB%pLuKoX`Cj4j-ULM7$)1*WCDp7OE?S75>oldqQ`xeNl7K8%uu z#)rvVq4FM~Uk76mjb2eo&t~Oz(;|!upT#KG7p=X%R4_g=jtEPGZW>)Kh(-mDVA*A}f>E;C5X{KAV+{%2mX&wc)l5`I~uh;EiC5iiBXA9^jgRFynI*n^L~ zWJ?y8*>f+JS^3^N_ZkqXTeev~tm=kDcTu#jgq|I)XuM!m$R2I3=W}v28n9+u!*Z~l zz6dPif;>zwuPS(5Or!D>1}h2Q_{O6zAaiY}i5uZSPOcmpog#nPKc_}Cz*-~XIvPA6 z8j5J(klJa$k&`Wi+JzH_*p%@@?d-FM+L&>t+U%KQy$s`y<2;xz(wI93dE^$&nvMud zrfVO0udy&+&L~4(V(^ib-GdVaUFacYZPBu=_Uu!e>~B9m(?@hDIaLDE)&0UHg+Z0E zPM$MN)pEhLIM8FZX3Z{}H+PFY^6Y9`TUHJ4h@qY*=Q#;52%3($vNN~8-vy>9crskL z)f6y+$VzWBM}MBvSh$hmF&d^AMyG{OwQG&2*zZ&ohv}xKQo-O6G>pvG#JgpnCDKfq z@CW%CZRDU5J8#l>n|#)3He=>^J7?Od$cegDg3}b++?@J6SV!zP+ROYS9K4s55!qgOdYYYmk;#+H+66YJdB=%OFh<++ZAzhDee4Xn?r?MT#Hl zR?Bd5I2~Di{^y~GH`)$Y$H97ycOe= zkV+K{7(E$WM??j4W8~{bjMm*p7$O$aNH0lGSM%+E4XDS{#g}pMVPzUX{}Kqx16`nR z=C~nt=IJBtl8Z;!WtW{{rI>y>_t|(Vdo&=?sGwe)@-9A19)2i`ZE0o%^0a$Cf?@eG zjvS~UNHrcD2_u5O_YGEYkvGB?0-ZBD8 z&j%?{j2=mbg6S2xGDIwxO6Nu+dO|doG(Nm-&TFk>k&Xa)I>j_ryuu$%#dsR(W809w z7&dXz=s|Yos8jV&ECs+T z@q_)!c+G5@s^LVR;^DdxA7&2kWMZ02CZ47>r1Q=hXQRiI+UcW9ZN_XG zAK#Ei!yCOZhtnJD!3nMrr-sM4LWAt#M5MLwoN$&PjCJCljQ$ZIUtaV2)~(%UBgYQ4 zHLEt+tXUIPYD|j*j={JmXz9U;i!NQ%Uc9{A<~~(!pa0xUTysjpS(zgE0`ob#v8Y9>UA2#dL4w+A>UiN^HTRR~4SYly1|j<+gv{ zAt{pbLz#RHh-HU5rC^6_{OKdCv>$Kfn@ycI(gqAX#m<>LL`Mhn(NG0M#a1DSHZZPL zgm%P2Vs`Zr*Va6^eFQ${jz@x)^DLNKZkJp($`;M5O6*%=GeM!+nKZaPIMLCCYe;5` zmQ~vGPrqzm_}m*qNDq!BwB$|YfomG$oUsCQ61*`bFZ9R?;bpeywW$;!Veo5evQ|;H z(~bnv1dT>U#$?{SEehe(%-6c0>0zH$G&HfC{4mC;71O&hVmPDd znepiRsPIEEymQI0wX4c(G9MwqMQOj@R>!$8K|1{ma2ma=HqfT!3gXQ)pkqsUHO_-E z!nMj);ju1GziC)?iDR3E_n;flV~|d8xLNV(BjE-m-|bpgvot)FtW{Oi+TQAY9>MfU zyA_~vkV$vTV1#^;n)|nc@*=#Ve77x_U#8!@`LF2nQgi23;8>v>2YYHVmZkAw7NpOn zO6>Xhs6)KrV!O|UcZ zZe}!Ql$vOR3PFLIKeyb*o<2Y?3!~@ZcNVGWRDO6<@lK{GWB%811j3VXCR+-gd^r z7%?l23iA7mh*Kv%UGLY?gImX!`NJ5^oHgD?kLk+@<%{E|A89yZz4>-E8)JEj--?x0 zHg)=NJ9R)mtF8%C#2lirW!|L0i)HuVXdy~n4^B|f%b_>Y+$hlqQB&PWtXaF$rcE89 zm~mrE^+pA$w!D{!yr?jaKbGw9atN)vr1-W<(@Vu>T{g<9wp82tHG5^0xFOT)r zkWO&0b2;@fcp*(Gcu7(+{F=fif6)B{2KKh8Q-?txef?zB>TOoDx4|D*p-WT5O`HBU z1cG`y6GlT`Mo{WjK?0D0hGEgX3cGZ6KA$8HakLXONb~1yvDvfvH5JyG%NkB%9!}k8 zSYh-K&M)~^l^?KGtIDl(AlIwHyTqA=e^6FU?LoWZiZew64Pn=hsa>!`In-_0S8e+n z<1J(UM+f7mcmghZ7KX@ObyiCO>_K;fFSai&?S*O3NM7mIyFg_V{HQ%R>@S3~Uo@T3 zwNKT!qngJVZy2f1dNWP?#)$AVD_2$8G#VqWYC|YCz(C%9=W5;R*Wjg80B1_E+??>V z4!t%8>8HWN8#iX4EyA>~rtY9jM1gDMPzXE-HSxBid& z_S=>7?zO9a8x2#VPYcx1R1Q~=9&|6X&O%KSXll$BEvT}Yvqt3=AN^8Z4$njZd=Xud z-nq0^k6J_|`s)a$Gk<>FIX3&UkuqZRm{doYvgg)|0;WtJY9IOd`GH(cAKM1Y(l&$8 z5E|gv)HFYi8EEzo9b{yP7|(QExUMLx#T95!GW=mVkmGo#t_MdKoi|7n2>m#h$J79V z#?h89nYSzi3g`D7sIx2Q-fthd@td=*HT@30I9jDk{TQP%h#AX1Xh8%ybep%|X@WQ@FqnHOMz>QZ_ZX zI(vF>6wxIXA+3#O{0uP-4Z0X!62ISN>0*C_D`YxZz0>@I>);$9?*2lwjiqZ83gR9wm3 z2($xgI6Y#f=Q+I((Zsc?U_e5Yuir4hy{Me=Y6Hp#I&#KKWoPwx$biyQWPBDbEHi$! z_lmbqv@5Qhs848fy^3VwNb8Y8IGhA% zuJ~>Y;&jI2Jd7wX66^{d5lv%6zl3{|MvWh!yIW(&46P$dj$ z6l{f~$PUTt34^?FiwD_or;CQ33R&ddY4a{+p77%UAx<{gy472?!I4Utf60D6AIqU< z#0OiqmepDL=Di4IJiG@mUEc690&TeEdR9Uh7Cyhp_E%?Y^tk>udD>uwxjiKPIg4VK z>b1ZbJ!@CKWxofCUxXWc?gaO@Yf@(6hpGKU-oY-DY-kQn$ZMjT9y*8Ls&C*|IsC=>O{x4y|LN1l+CRSO&uv(LzG}ifD)nms z(@UNb(~py_)4jW>SoB13j-&2ik~id5l3_Xi(2Jl~qccy(G75O-ip01W&eVR+&|JLw zRKdp{z!Dk`HCAmToCnEv#dC7gSGaiQ=_0QPhWcs969O7x$cl3d-;5*T;1J8|K}XSL zJGEOz>>%`APIyBYzcp0MJ01tEDNR?HolHYhY(LyqX~TbilYQgKyKTq5S{a{=@_Ak< z1AeYlCkyhtB*+6dMt;2G_p7v*#(6_!;xyUe#*4?if@!#*VL7bpY2>J2P^w&&KDc<+ ze7uT?l^kQ>luA6pxwkR4(~nMfzU@rst)wyGgw}cG=Wft)dB_(Iw7CA^O$!+)Xo*4~ zk78LK(t{&IzGu1(n6h#0heiaQq!9#jvJ|)Qv(qqr^INRmnMI8$`-fLo+OXe$*Z%#f zdu-RfY9?YqKvvrZxL(C`zf*Ujqh;YHuQ;xc8Z*c$w$ven+CpV=Wt2A)M)0U$UXJrS zDjea4E1{%1WnBCv5X!Kkc<1f)htu!0q;ej&BN<0HFOp$AQkLl1IKMoMOmLnskD#(s zwtDRjyZXITZOvLP{4<^jn#*D?PY;d=&AHfRNEEC2J?G$jG$F%nN%PUqIqRDd-k|s zpvl;%WK;-*g=sVOkIEK5Ekyn)J{WXYs0ilak8$zGGD4c%fp?@l?)639D{;ER+FF2{ z=jL>BN~QLYiHSBkyzQQk;I$h$-5JE?o|<|)9RtDMz4ZuluhdakP7jV0&3mdF;GM|M z@eZPgqtOVLMOnUE86!DA4V^84F@iN}@@bq#aZpFE>K`_(vD1G0ANKv{9hanxGMP{tGftc_ZhbN9Or*>44^S zGyd36I5(8;;l%d30bv*pxwboEo7f&72pJZxb;1s=wOhDFn~j83eH0?xZ;_}7$y=aj}s*Wl9$t{kyL zDN8<(@vcs9``o%kcKL7r+vY5M!Ws@8J9m1z6*-0CF?LtVD$1&D^tgVyDlI+5_Ehgj zibQvcZ$Q+O9B7oNKvYPc%OwR^zSqUB@ncI$x|K8tG$3qS$E@2LoM**_*OOjg9uv<xdnZ@2is?QJ%W&w*Py6b-!(&PATrio<}k|<0zL+ zLmn3x{^zI&@!~mYWOzIEcRSQJE)a7X0DvwAtzNy;o_utJT{3gLb{SiSoA)@4rO_?6 zabx=1n6Z3skMn^~wXa#e3sGnf(z0EAb}&;^Y+K9rS}i=Nk9_>%5KjKPA|6YI<@G^c z7AZ5US8umP^Ecb%X`>KA8DW3;-neu&WmBdOv4Mm5aymzC?Ll}=+a+@;CW2vNchP*U zU9-)`ju>cfd&eZCL^<4t$0Z6HDskrK5sEnTs(MJik{T`}DMn?1oGJR6@~+j`w{cUKi<7 z|AQQPYJTcruOs|6wax-9Nq+E!YGu}cz$tdlv|+h0K7*xH2MF12F{{4Hag6Q!(SO(AIu?Nv0bqP0G8f6uRpS+p)L%4p)FnR=S{EFZz zYrfBQC*+Oq29sf;w}8>6F`cy+8}{3cE1t7=-Tni6bp4AkMRK%JL1-eSjtYx9{SrbF zh3j<$?MR-E!tO}vl^th5F&50-VtZ@(Zfh7Lwt+v6$UJhRsM_aB!81OKMq{KmAdc=Y zMd8o)7=f=$*R#d}I4>No_u!c4NS2#oq;N1wRNOS@=*3VjgmYA4B1lD+`bW^81(1)gDCaTIe7Z<#NAtA|p2aH)_KeHMS;dxGTNqwJtF+aPlzHTV#X_DKwR^f@UZ{EiwKHhTO3y}XTY zK=3c#A{acT8TS_ql83x7D-RFs&YC&GrU!4&NTD zFe+nPKa~P9p;Sr_V?r02-V`8ew9jbp+F)| z^1a~KA2hb2n*U+kdMxbI4F3Zct7xA|sphR^6dzG*_+lj$zQQp607TYS1-Ai6pddG@;K%tk~@O6c+C#xk6sghnufT6qP`Vr z+Cn2mL4n)NG%SEqJS4h*-#&Z$+&|i9AGpOss9@YcruP+U_0dXEVpZLzG zY10Nv?uhcTYWv+ER^hluJf?h&9^22#x9nl(>6##?{Tp&j!=HPm(GbOc?m-?=GCK_# zgm9u!IrK>Z*zuwB6CK_*TxnRQyUVc*j$ru5a23h=y}bNX58#IY`GG`D^_uL5+sf^{ zN9Ne)@0nvO!z)jma;UHbCc=HJ?nmo9kk=$4__m&m?b};teM@_(!F<=x=FQdijw>eW zTW4Iq;J436^|a|jZT;%qfd`S#fj42KcC=piYk?Ha|ASg|%F$t97a-4vLL zPnljYw_M?W@xJNcZ?VmvSAl`yAVN4uGOrH`dHBG`puCsVypA3K!Ps}LL=vIkwvjg~ z-HjA17Qarab)%pxT$TLMj!ky%!*lF&_x{XQY=vQx5o@ljZv0+nKz3;;>uNIAzqGei zlpnAKFh0B;?H^rC*}ws(XaT!?%U)YJzufu{NLy`h zINl=Xk9XtXM)U4nQKs1bd&f4r@cudWsRwSh{SACh&ey7xGq~2TJ20~H`}BKj4uP`z z@M1NNyzYf?YRBKyX~Xo@*F_7;;63f~yxk0PDDHit7vUy}Vfe$q;~eE%cH4@TRcK3- zT{>$F+QzoxC()pnZZ-vcA3d%V2CK~K>ilD=zKE^U9vlI>*C1hP!4Ay*&_Rd)kfzOF zOL^M*ArGpKzoIM`#NiU9eL99{q)AyZH{=xYX>FJwaN#H0%Ip^lAGWlVi|YUgY&N}l zeL+JsWA->bE`nxy7#r;W@gu$X51MDpJl$r$VLX(HZ%F7~_~I|YC3LR!xw29jrL)I5 z1`H^**|Sc!QKOr0EcKJ9K3SwY#V&!tDjm>QGNm=n6M+Fo8Qp7;js|Erl0Sl0C;XaH z@fEEAH&;@S;3;LGI9mMXYfyluY}P*e(u+3#)pf39Nav&A>kBPx<2ZZv>F6xpaf~Vf z#cwtQqpfIi9JNQoaE%=|fC1eM4m7A3R(;E!tyb4~2#n(`angSLYb2*+;7=J&plA^ zH$g93-CSw93FIe?(JL@U*WEYAe)Q}gL7yumsXFcv+#FwDY;J`7K8}a6U({lTDV+Pq zdT^xZUW0T@0HZbUuyGXEQ;)8-DK2y)ya}T@4G-VTM8#f$5&r8>{$4_LOpNfP15z$Z zg2BlzzO(yawDDITMM%)g0pMtKFE<6!7`^|GbHKZL`^w9!?Uu#QDDD{GUZ){1lmmcx z&+Q}%#vyFTjXY*D#OakMxwIz&2aYbfUSioH?ZOr5Xef;C`4suCWe#cF^6v%+W13tF zC^C1)QL~hx*nYUZ%x+%%G-h}q?DYirNjhm@DBhYL1+ui&g8wD>o{sBEN_P}^OKjO) zWgoo%R$EeEF9S~+{%XauVH4`np`m+0e&^SN^!5qhaLK^HhrlG?UA}s7BX4_)CHvT=+W@w4GP3wAM7>Nnom$n>uo#Tkw27z2IMZO2ziE<VY{TU>+LpYL^?o6Is3;D6KZc$FIF8^? z2u5yqF*-joBo*=~0179C$6qNoy%2a(Uw!6&J5+yw2@uAe;b5Hm>F%i<0rCbY3OKL5 z46X_JXPsj@Poo#k0ep9}7D_{%{u~v(KBl7~ie(1c4l{P0Ko;fGs}v9LpGAX?eGP}~ zU!S_q7B?IKt2kXGKnL1FI+nmleenKY+rdKzIYxQg@Xsk^Szg}pf+SCy^(9Vy((HXh z4|`87Wrpzn>p{oil6(?_vob1BDg~v2pyd{f5%EynF8jt44@mK&2+|n1a&=srSZ;G8 z?ZO)$F<_h~TFuhIIAYZ0)BAVbu~H#E9Y9_YjZ-MKm+f^#G_R|ZU{NZYbvIfgt`8o{ z*eCD%rQN#MU*GDlgmFVe!>xyUF%4eSu;2dg19M>1521_@AIN0u@)RGthGevY4@Px=yrqTdx_fmF-;3U=2iag{lzI}mRdz81Pa9y-=EaW zzEQE(ez$6_>%Z=+yK8r2fI1j}%*#wS+1lkgLD> zMeXKgBR*l6x&m^gNt<1MLhYoZ5z$mc8W@;Nv@2UonrL#;_NzUW zcGGh(>RN}1w57y9>Gd&=LjHQc#2HrYidy{tj{l#0;1_n=?(Luj<&y?hMI!^t!rkuKG>uHw(zG;McVZe$Taf?bOP{m( zo7aU*0OH;2I=12KisC{7PIoSx-JlZ~Z~UcwZa!e{mg}jNm@@xu@^5%{zDELjR8wg#HH9?V{cLM+^P@`50qs*Hq;mcrHc1vHyB- zWazT5j$D1){kC;-c*#EnlXs&udbbBx*258%y|wtRfouW2q?B)D)1oyz08T-oqH~m# z(J0Q^+&_E2%|7ESU3XmhJ-<8|W#J|fmtTb9 z^#Q5%=vLChHKE7@q|(8!MIHXokVl6|+Z2%IJ$;ATZ{PcW?37-;6)bif^B@;eR#~yf z%F3!Oo54Ur53s2b-eA@m(`hR~H|(lCWbe3Qg6^1-E&M=3d*D0Idti3M7w)uMzk6Nx z7^J)_PK9X6pd=NgdkxN!A<~tnDJq>d#APyeX|H~E|9d}f!}<>P1kxy`_fb=qI-ya> z-(^Y0#fLAKui0+o+j=GeNw1l3aB5NIoQXUMD!xe?#XSMm23_ip5+Tdl; zfaq%)fd@23UwLII!h3@U@P;Ev~fK^Q!EAdvPF#t?Pm+0mcVIq zH-wF%NP#72-<=O(Zw~U_c<0Y-e*(}g6nBvu^e2JS*oKVuqX#AluqG{z512uIA^);BWV@|bm zruG=4LUgG?I^NI`#ii26*WhY(1P12*@{Lwke^4UGXnr7&ilf))Li*y{Gbx*ou3u?$ zc2(LppSlZa!%Nc;p~Z1178P{H?D4wG$2B7EUy%|rTHTXZ2<`O=B-hmP>mud)SmX>C zBUflnBUmjfA$4WCWyzEF_pdIqq6T;ZEEgW1HbCN+E1h}T;bEFDxMxdP zI2}OzYr@o*&%FI^`2wVH&w`sTW$WmPqTGBXIA=J{q8Fm(F(8+wJK=_(Rk<0=+LY!*5#T!8jVCva%XY)BJr_Jt#!C8zgpCi$BJ-6@L_dlroLD z1>w0L;?g*}j`HJ^RFt$WJao|RShfh+X_6S{f3%|+0?E8;9AfX=xD4Sb`{w3XZ2qhM z%G{{*Oyc{QvNj4+tr;`N>zn;+SMPFV3qtMnFf}G92|Bx)8;DQJ&-q+YcuP2ehnO00=$1Bx z?e15XLRvF0D2R6nqx8D)>Sy-KuI={Isx63sDq(d0+%tFC&bnG8ry$aZFe*O+^O~dY z9*nw*rvYNwBmw`jsF#;D@S>(n8=CW$a^N+}yvXCAPk z42>V!LnVU;sQpIT@W{pKtQBjoR{ILY9GtT0qn;TUCBAV1^{_6s?+Z^q06vA+zLExH zU|ZD`HV|%8e7{gcYsq~fo1Js+FvPQ5Dk#GF13aaF za;I!doyUb3LD&A1cj4r;4Jo`Eo=4X$v$xN^PxY{^mT7cjiFRq@XaEgFqY6h{l3y+S zV!K$rzQDmfRiSOff`)qg!ehU;{S7d}NaH)h_20quCxD(x+=$BTYF}7a>u$KGhWbSV z;k0XQQN}+&bi48N^);qT!IK?s3m29tUPS@o&CwzMxI$jade9;$I8AAomkbn2TLJX7 zGl*KT-M(V33z-t~zY8h@4%Ii)9Jq0o5H2)Tl?I4|Fg73t5|eRXyA zm4|<;v~kxnnc}80WjpHj*qtlq+x9xYF_7c)Q9_QFJP717!_)TM{Bo@csXh2@sn~0O z`28wdw}y}UP-fUdOu5Af=J7rZmpv#zk3nh%vZFamwD}K;Sd`*u=)xr7f~4KLce^dC z+MJhDfO5%z-!6x-vc5R=-MemX0Ob4j@+a-(JzEjN5g*E_sI1l2HdyI^Q{;ct*4Ep? zd7EwQ=>GP$x1WyKjLn;0Wi_?jg+zsbS0lyDE2qLxm|hYlwBNn-TsG~jvVU6m1W2RO z`64vet4Nkce3pqQHk+R;=j|;SX71f;2Sr(WgM6~7VO zi^GAxq5Vs(w4{#>zy14m!(BhJ-@%~ou8ViMjuyyE^3{18c}#BUKj@yn0J4DK_x|~G z8$G(8&0FxQRaDj}CpWm(*3_eI;0F?sx8BMgB+}P6Fbd2Y+ZxYJ{6uZ%=5q z8;9r0*4q91YN<;ofF8y{g!6t=FCDF@kNvW`%6_?ouX;rnKxw(=R9U_o#;D9Ln=wkC zG@@X7{VbOvn$mas$BplAi(rf@x9n?f{MnoA3m7R)sSxMJ2SK@J_!dm`$*n1zE zV~gu+5g*>K#QOBgU!;jfq05mdH{7Ko&9ruJfBG(44zH7-H06z6*1r6vYwfFJ&q4%@ zDLhs_&hzQ@i|zaeZ?V)bzHT?%`9JpWPu^p4s74 zX>IC>VD^jB;1}On<%TY0E7w%n=CWE#XG&mx7QL4n6__?Yk9Mg?Vt;>?`%$lhK$*e3MtqlNi%hM$2cxLLn`{cOt6 z;g$gz#mJwo&)E2pqpe?wKhi=t5BY~Lq-(HOcU4+F>WDkBHdj>Jco-Zm{AWuVZN)2P z)(HB29X@OcVLL&0D$``;Tld?TQT?o6?^4t~+9nJeZ2i*xR6dd8JNr!ribk_N{+}4Q z{tI{7oUVLyq&0(-bG?sMK)~8Wl76x(Do8{KtGoV7)~~oXyrpUz_M0C-$^4l(pUd)x za_D(LoLQ$n?~U_!^e?sFU;EeAw-=NVAuL^d3qn~?n~)?U8Y$*w1V?8HHdi-TCzK^O z1qx;Qt7mTu#t6nLzMM{JPi@OE?1W$@SVkH!y_qFUU~{V-Z*fu{rKt|?GzX% za*dN-DL0P$8?$!#ufL0FCOl8kh!%$O93-tf~yxyVN_O(5e$M>I&G<(-3fK>m2bqRgR0~k$3EB1|+#hkwRl<2{_TKmPq$5{+QTuJ0LAidW{g=x-X78$R7MAfO+ zMPnzW_VN@KgnZln{hHEDxa${s1V(_eaK%D(vK*w>%j#IZ7t^iqwMVpBj0wh|sov)7 z*=}EY=ytV@kBCUQg_QLzF1FjRy526v0N}xHR75`c#%Ja-y}dnJv%++g7w}%(z>>%8 zflw~_MMB8Cc*KukMSMjj^YTYJVPI%bR5Xn}$|uR>S5XtD#+$lu2Iv$gVeR<6ONMjp62~r|G z$5b9;I2D)z_|uh3^a8WHHot@v9093VE}&GBY!j8C$TCzAo+F>`Kq2jCH@slWD}CLB zb+QggC4^E}8r4}3%F>b9nUbThgJvbd!>AOTCYr6N+G3x-@0T|6H$Q^#uK_hsLq3Yn z5g$sHrUJ8Eii0c!FAPug!iNE_#7xC_D{~422s5DLtogY^MxKsFCgSUQ~I^7Gm(n!VuJUj}ysZvFKEhzs^_COZiB_xUo+~W5#~6 zb(5X<$6whGo_`o+N(xRobcsPazClH9{a0vYDL_OnoYMga-@;6Tee(Wa*o*b`$kj)J zt#u>aBF8xcXv8!c_rVWBti^5`rHp<2@jL7QUx?2Un0eJRv3vX&jZpHoK0`9`8W~xa zloDwlUc1shd;c%(ya#`6H|?lI1Pu_U8G)wIh71%at}#&owfme(M`i40cnyd2ayL$A zQW+Q+kk55DD)3h}ud&D0twkENn>67_+G&8VIO_uY<+(GoHiSk6Z-!GQ8VQh(Yvgjn zz-t*{@+f#8_<0L_$Fm`x&%}4t?*B1(Q~$L;uq1 zvH0K_X~5zG%S@+j5S$8fe;19i+2__RvA=)#ceYRRz;aF=cn@_Fk!dG7^IB}56bCYi zKez4O0U4ukQ4J)45IPtQ#L<{=?Sfy-rH~gPT^6G|u#u1 z4_WgE;{!H!IfLr!a-9ZvvyX(++?nwDs#sv{Yut>x%75LdFIHE+eCJng9 zg%jSvcPcj8+)eA1GFcNxWs0N=X1+W(Apl0&0}b`|%f(OFjNAUx-u}!V?Y@27SA_cM zRRm9m^|2(cKmHJ&Q$Qlm55LZ*^|g^?UjB&Ic$f??{1pQA@s1?rHVr-!o32Cxv8gFkE=13e$FX^4a2B~O`F+~m>wQbi+< zX|y?(o{xZZph10tAFE8!UCOxkzpDcL@$%^`jH-#?L22VAcKc|oxO45LDt1v`x%bU3~3p(V*UrXZncff26_ zWKe5NI&$W94Y(!&p)IDu7ugq{xzD!M)*w6!(RLxE38U^n<8T?gC;Xv`P)Wc2^xgI+ zx8G!cwQ8O%I(SIJpDl(0X89(7u0u-(xqU>QxAtor^4MSq7s7-3;={kOgZ!it!|{{i z<5yCWwwtc_uw7i-2jT7kX6Z4Z{3g)MG~@;E=FxcjwAhW3+Qg}oJQtTY*)`H8BN6Ii zIRAP*_=HU_Q?l+h5?7PAf7DaJ}eYNn&eFKhdw9G+GI&EEOCs<^kX~uixD_yZ33>z zpZuWZP+Ia*S9#>}0j%9=bn0bzj}S+m<0yjy^V$^Q_<&l*(VLx!b}p%Jux~u|2lQ#m zia8Zv7in~5T68&k41&0M_cpy_Y54DNvM;~9+Fm>a1;GC_M`KDGrw2iyUJJTz5a=9a zOz35R9DaJ~Yfs*tQ;H}R^fQL`>ukj~+%fXIWb7BD6mZ z#xd4`6e$?sq6|~I@^droZF{!ar|-QPo)U~Pn^IJQl);#?C^3YFk*(9)%zkV2zm8~&hGT+0 z_9W=gdIZkH9+x{Vy27qI{}O~zC>ZC*6&0K97fYYE|K8@WHKBrVL0Zq4;ap0Ha4t+| zQ}sBfa&$Au$A~09yMn(c!>64Tc9|3V{-g`+GjDu*zWh)>WsYwwxN_e82xdyJTT{(6 z_(Jc5{NMtUwAMWx8W?(1sVv`P9*hAD4hy7F%3w+c2UbhbmPY;z_$og0R}a!4@l4M` zwcUe{3xQU42Y&Q*i{$kn4f-jar9o-3nI*+`@!-=ih%hc=7mhdsrDbhxRk@tDdAqk@ zfP#TU9^Q$2cmF>2-77w56HXmL;z3PlpUz1y|D!#!8qO2RM3}NORG@K54Dz1ePx#6! zwo1S?d74Wp`N{_oRur3!rxvaO9n`EWH#iTqBHK!X`+bHMK)oG+b;N+NU+5rh1hp+2`h0cs`tJa@~hz zd}i3`HgV{18`2ic4evM5PAwe-Q%BxViQPcNqd=|1>8rb|?7`J5?2(GqcK^OQ zn^n@={`u0k+ZB_}RlG|;5@;vo3I9}jC@!K|9YRRYFxCl(9M8N z-(C#E;;|z*Y6i*K(iRfJ+yZNbez1Kr z!axsr!=3U?#@D>ikUI@hE_hK*CCJ!_uws-0m!XNqi7b{(aC*hmh$Elz&y|zBHW;6g zcIIiLZ1UidcJ^sw?TjHqm>6(^Xr$PGB90jV)f>t}1&Z~$ct-z<(|5CnHZHY)oA;P4 zY&d9N8gr)o-DU5xA^iuc3}#|+&1i~DNFbKWflFz`vzVFxofq6Ywe!F}Te0O;+g!I> zrL3&nWW9U$wn;-r!P#uGDZ|Ftxg*C}e+-^#KZ{~!{!w{{*WVhB8-wH>d9;zFsdM$` z1*>I@*X8@d4N3J=ftJ+WRkwrp{j0@WPec+vt4x(5XZ0C-440dKS>@Vx7*bDM~^?+4P+724Xb})_|%mJZ& zjp!trcl_ZXv$_*)*RKvu;Ba_5&)fkggcup<7V~~f&N#R@*LRd6fK%}9WaY>*>8bg1x zOo9gnxuM|&JP8Em!xJa*7z}2iapL)%%jepEta#oQ@-y!YCv})#-UtI)+6PnmELW_F!GL3<%%K*~HfqbK$)U^iyxMAZ=_vD*!${Y`A^y4OiQQQ%}=%vo!Ocywt7x1Q8UlIUl7UPbrDT3Wp=38$&&NVG?%8T}2kLD7 zu3eVSHrNt)E8IA+yT0CTtFA;@zBZGB=lo81XA}AlveWtvunR|xv$s#WNCk2+`9OW6 z{qWg8+E+Hch#=69^5xisn1W+<9D)gO3UnPRkoGNo2 z>IYLU(r)^Gy)oSd4bDS1!UX$-=QqMb>eesUszOwp8wt7%-L25=q3!x#e}i=5BP!rS zZ+MSgG5LHb2-oDoT1^o6$JQ^mE1tUtdgFIBkqE43BuxM}G$K70&oLGJ+|V{ zM~p`SDH~Ya$IgUDm1@Z9{Yg|lLT?oyic?zT<$4O=t<;E4-deZUDyw%%IjaxU+onBL zFdiA(vLDlsD25wy!>OmpxEZhh`y!kK-^?8f79MsZF6i&ah}SyxrJ){F=(ja#g#55ey zPCZg6V}uhffYX2@{s)sUw2#hwi}fik0iCE@G&%3$8d5vjcpM>iG@%YWHb6N~{s_uK z{Pm!7kiItZzD|?900sQZ2j=KCFftuE{<@+0=*5@YHz%B{sRS3R`864h*!oxj6c-&L zy=tVwqXZfoC^KKIMhAd*Gj$Ecmj^?`ArgP9OKA8zlUJkk~9S$LqA?fdHHHTKnqer*R}h&|A3 zcxiw8#+C24TNdRuAkY>iyjkyNK=k~NZRcNsRyq&qzQi746TJ9XP_`QLabqQ_dN2GC0s?3_5(bFM zpHm(hI>m&#X)I7d9LW5ANjwL6`W!h80Lx$v$jc3wC_hb8DcW#EnN(nZUy@JbsO&}D zJ zPR8=&yu5p>?K@O&FP3f8!vDIxTkT^Pyvct4gLQVxce!<=iwx3LbMCWkQ+A3ec_T!E zUT=ZVGo@v;L|=lDa&09u%|N*z3d0?()!9~Eg>kKg6Up*hitkFaS66Fojp$1HTB4=x z`k#Kwwe}~cPsUjyUC@pLjR)<|eshy8KFFu&VQ^>|xH-@c!8rKN`2wA82Zy&+12YXv zkP{jZdJR-N9r2IGF4CuDR7qH{TpmU&U>vlY|~P&7c^+t1u0`e9T#P@t6rV z`}8SZK9UMJ&(#^i^6f>LAzt(;mK!7QwmILu260T;NkoIRb?Q!Bk@*}I2r{|56{bD3 zEwHWA7X;)r8KfgYTRdtnj_7XwwpUM#Zw=i+Uy?6v*MCV#Z~Of_KWyXqsVRCC$$rE6 zE4#MZ`~P^GEw0~>OHPA01>vJ8m^M)nJB+s5>4qs(&gmXKEqEzUFSt-rcX%ZoiJ7nhMXV zfhLA?#faz2s$R8A|M(l@GPu;i=SI*?rs`Ndt+i9S*oboEfgylKLrO_+$ERG}GsG9S zWs4EPhkEJl$UDK{4jP|MDE1b z3bO=H8woJG;cxGFbv#~pIaa{9&S1ahN6OhCnOU>*;+c=kuN+BVvsj5^DP_BzGRIh9{CZn8feHNn%u zYaz0rarw?|wyAcvJ-uyOHuv+rE_7j|0zfv7%sNvKNV%xkt2r-iL_ z!%Va3X>;EF&g2h*6VpdYRTT5y&(o&~D!FqW$-(#d@2;C4EZl`HTpbX_fOf9h_rTuXGfB@yU-qQiSDAWBXv8}heb33X@3*vxtBsrqk@q> zjM~8{ef`OM?Vny*iGKBwyyIxCok5PEy4;`4Z_P;I@&ELGL+ni>M%nC9XV^ujj9e}|_x&lC+Q(J$*R!gJdZ@*+o3}Ks!b*9$>b3ai69&Yx^?(Md5XO$k6;q;d;tWfEwgZ8)> zgF(OE{p>7wc$0>YvI#J>!}||nihwK((tTZfm#rm(M9Z3Atb4uCp5V44NIeFr1+>T0 zB)Wq>)*s7ln-+DCj7?mRX|(xo`H;;Re>(b(dvcV_l`Bl0K6=Oh*v)nD_HmtC=V%wL zwG;Zl!r`UyW1&}{evbVqJfJu6%>zS+d%a5Mh}ZHkSY*<0KviW(n`J^G8c*g#TE@9- zGTe>WQW%VnJ^cWVmG;hl{q0+S_CA|7a;%ET71gXvAe19rCJ)?QQq<~-Ew-d$gDu*& z*?zpW-1KM+^UHJN-Y%vkIbNW@L=bV@+^I)N8tmPDPqVj;J;UBP^%A`m_4?1S<{C z1top$_wTyi&KNWd+1ZgSD__pO#(nnbdv38?_U>t>qiv(*b`I)QVppFr&E7rkY`c8q z8Jd>G`Y1ZhjSGNlO>dyg$*4F55<&zILNGkO=*(-hB~d0-obmti;xqQI%btgAX|T_Z z7;o=5`+U1#)C3#ae;|@4Xi_Hp$H~sRYFodf!j{7GSzJ|Sw^eUPeoo`uz(-rfc5qQ% zYj%Os9DM|hlkO%)!cYcJ;X-|8*chvMX0YA-U++daois?yyl8o)U31$#RyBFIQy1sB z9AR<?mxKs4N~qSO5o z=_xEHAFgN7DCTrIcxxNekLxi#`Z0`B-(G#COzsWjv1#Xa`}2o>Zi^2g4|xqbSr-+N zYRiuSNXbGt;WGjlhN1?$di*rIYV6r|<0OCY_v;6JVnA;p;IwhezI}H6v-j9@m0NO# z>XMRPHUrZswuE7gXj?C&pSyRbEves+_M{LOcaEb-{`f46^0zHvzK)ENnOEuknLX0w zyh3rfym8HR`{j4L;w~F1TC}3d-t(*bZRez&tOk|fFDzvdzj3Y>w1+4>g`kkN7I(5B z&jat!j_|Vw5%M;;?8-rsyu@@t4{YG_vzR*F^lpASiOaHyyGKll!%8Uaxew04Y>Ris z&*SEeB{;uzGB70eeJC!uq-`em}x*>$}td~ z6=uOH!9n#yYo^()-@S&EbQ0)H-ofB&H8UX6EhriT0(5&*%GB1c2W^2IBu~XxbYwiw zg>@2zb#1l}ytMeTi`RTiYg&rpN;KnXoH-o}x|uUJIBJ^${xx#H6vOEy7C;6q0bZy1=!=5!hsFpX zi|MfP{Z8U9!|?00L82R%O_kt?qO`>vov*gwnhiiLZT?t>M4_c$TX84HPatn~1V_Z@ z@MBO5d5+}Qth^R}hvjLh58L_`<}diQRA=(nQl6H7NZ#z{;ZguDDC;FXyc-4K;*i78h^q|fE`a;}(kq5b>RnaD=>AS8j95ANN^{`tZ;+RK0bX}jf5uC_Oh zI77;gB+AI67Rg^{xMAUxOPwL`b48@@^wLth`_1pQyRP^kyt_fp19(Nc^)DXug2*+f zjA)?r)&aL4fHySR-^oEUR>?2R(u@B&@3s6BVt7JJ{X9RYQXCYn2DS%pXb+AA)QTRy<>7|paD-_Ue^fG#myMW)q3#=&b4X+3B)lD?Q2V(Lm>IZjATS;iCYdYD;RF^*MnOH)3OA< zsj?{((#!a}*Ge$#hSlfVE#K{eyKHRY3(Lyws$V^5Ra3Wm=>W;dvf*k_4|>otf=srG z_5?nMoRS123<_^MQz0_aK&GPyK#vE?$i*a#)C1x1JoSzb+4)08NP(1H_uZL3YkTVV z+XFAZY9E^7?@}t#3*ET5jVTG!AQNd#lB;t3^mPYm%}u}Pp}>>TRcvCwrrK(|;n_Rv zxvB~efEUT#;~DOC(ye=Dz!Z!QrpkzXZW(c*pU=X{dm>kG&3+fZ)Nfh)@al8y*6&@F zB;~b%h9`s0(On0+wG4wHlHJ9;n-#bHqrklOp9HauUrTwCzn1bOe=X(d%3n)$CV!r; zYk1X}A39jS!m#A^Yxz-v+WNJWr^O#qH~Zz{Z~=_ zlCMW(0!}X-XwSUkMtkzzH`uuTgJ3icAqS>yAwS>e#JxmfK}SHN&&Oa`4}P>~>@D9< zMRx{3VO~D_tCJoQJEm@5qb=XI%^LcKTYIpeywk>)p0nZ(BXq7?;jTe@&5Mlg3dB(; z9=jTa<+j&0qO0h5t!;`l7Upd&ysN=4__B^@Fj%Xe7eoEUP2m7(gPT8kyFNzBJPZE+F8r-GoL5wQt6cjG6o=~zIZNvCp2zz^tU26`FSZQQeC8gD1T zEPRyYR~uH@zbt#)Hr0f?aY$DTL!!6*>Sk8k{U^gCJAexuwObubJGHpC{mH1a?LDVY zu**k`gCQKO^j&b{__ z9x4vVGn_#o&0%%625+0TGN=x3pYox6-XYM4sZRHJR>*%bOmr|)JmyYAd|L>4ST0jH zn;yhCc3}`Se)nF}36D}f(L<#~I?+XhLwj&mvJBK4^QiDV?YX*Q`AU~)8xoLSB*?`# zPumr68ojRrB4OPQwv}N2$0|L{KkTSeAVFgR4_k+)k=&^dybM9*2Cd3<0*{T*xMDXr zxw>11`j;o6tVj>D5?*ej-MV3|-Tcy0d$wwmivp9fZaz-Jn*~I4K3FJeQp0`gz`)*p z?axMz!f%3hsZYby*xvyV+7iw?ZIDDS{^SHf0XT4fLL5&(y%YmX3M4z|vc;8mZz1Rc z^Vwj(>M-(+h=zkt4PgYtIo~F%h6mczcnSvob!dc+1`ddd#P-re&}EOtisi>L$yFBZ zqb0*5T~0!dly>0HSfK=E$hU)Q7o@|>hbFLf$A>Qd^vO8}oIj+*o`EtI3t6y1Z{AiP4#0$wXQ0F1us% zMti<$vprS0$@VtvLtft2cOH-i<{8-c6uW%*MEkShBki&=6Yb)`{9vS0m}67upk}&( zLSpo5f`lzt5E-4oFgC@>3u1y=R3TdG6-MD#RYU^@KEc~4}q7WWe!!aOV|jw-Ey-J|vd0g3IUaB}ojc9qAt zJk%GVogU{(8qs#GNw6Fs_Hm>K<&uAdA4m`5f{6)6Cyv0meu?z(NQ5$8Gf;tcVzaFt zpz~PG(LjzTI>#UMjSPKgqYqfTbQ&4VbbcoS7#;4RMiwzof_Rg;% zg@U~kc+L=rd2EH(qtjf25T;MT0MQ+FV#8EG!i4z47~T@R0yRR#I6Vv}GiZRsRK>?Q zqJ3o~L~`;NPV!;-26C_|(yd|wVMySwVu%VFqH;8L3@(%z6bA*1Q#e50M=UcGNt#?Z zd>qYH3FL%Z$kW|EsB9=Jq;+G+w#9Keg6WV*f|=-7Mjb}ek@28Sr~(|kI#z|cpj=&H z@Hz;o5fu#wwG1-6aQRl7ao!k^hmb7VooFsej#JmR5QTVHu^%bxtrjn=QUL~(4ufBesUyXB7MAdsX%nAuM-5@Sb{+V{VHl}(v2$lDQw zpXVg9ZJ-b_l6ylyLtx0-mv`8;pZL8^J9C)*;ivCYIVvyoXYAHAgfc|~#OP`u$*S>9T1q&^WwJMfSc=+-|F0+9rXNP|7o7$!4QR4z$t3`=MWpZ2Yi6cKKyz*qh&Q zy5gvmY(NzHu7GGlUGaTAlZm@mFo+Gh|$@F0#8He#yT2oyWjS z3=W|WW?eAGe(|5zM^5;Y{YtW9`&Hds>==d8W3v_b}N&BpCkQ^yy#2dHe);|kO+ zKm-jD^J#>l_a-9+;lQXuC8sf*aqbBF#eZFmQR*zEq1C7QHx>1^FMjeewDW2kKVkqv z4q0&#M2a8m>i}qA$OcZg*fa{ymp=JMd-C=hG;%eiO3=>UD35~EXrH{{Vw-p0$L!iG zrrXVfoJJEc$&b%FS3+#a<{CKRVI9$oYtpiEz%50<`Sex6f|);+^)He|o?sojKfY z`o`OA%2`8g@rtc>!{6Rx>o&GepHF>Y_;t=rm}y(QY^#0sKOdLAjUF)&vNu|37rd~| zetOFi)UU)HLUY@dvM>MVleT`tZuRI}Fp!k?>y2(|w7>uMBRPJO4(9U?b+EeJ^fdIV zJVPEKcNN>}?1sO)8{XVOZ3lYG8z!pn7OyC`AKtbI>~cfazC^YIRykrsU%T{zu@Z24 z2*uV*F5s{3TuDvxZX%&bJsRH7pJCJ_0i#C@flJHx1Ose~ey(`@QFz;jD=e9yH4^+M zBj&<$(G%J@U%a$jDZNboN3%(*LfeMYO6YN+JQy{Cz-b3-su3yD_LuLw&}N@I)<(lC z&_*xP1tF!vPMtVZuKS?M$>X4|qO&piMe!kd>q|HhIzzc@L^Pl-CyA+4j3G`hX#)9>_QG?7=o}t2eV%>#hD+_y-`rqtnKedFhL`WCvA_ApyX>Ba*P}!lX_m_ZJ3v4?@MgFn zAT5tBcnKwg`^Ci&_ORQyJHfu>F>C^6yQr|Fg=6X@uestRcT{GjvHN7Alv zg#GZA1y&6wh3jWmz2i*#)|cMmPjVp5oI6)p<@SBdjjK)~&CvFls#mVNWa|4S?thV7laW z8(=B?wrJJ zGwkSm{WL!GA>&OODWRYEfC$E4f6WCUwORlE#daYE4Q>wHuyLC`Husef(;S+L3Qi;Y zkK)XAsjBVOk~_q*4a=T$_fnT33^0=>o@V_A z6xqdGJCd2ZYXMfC3YcJ_0yYV}^3?qw7@%>zXlrob`uMrnjheVfyyN zISZ9MAwI7Wn!nOJp|{Xmipbl4UQvKBmMkxG{^^g?p+6m{-cyrJ>|EcP(8RR@SodC8zRDtPZ@CPehO#J(G*VR3blTUA zn2)@n*p41Hz$TqNG?eEa&2fcR_{GuM;ccSek?&I{Vj2!)vp(V;sLk5L^ERU#@JOA| zHK0)-PdC0?ZF_6#e1ylyu=qvPMPAGBx##Wu6zOF@bPnumUzsByE$nj?uW2so?cX%pB9ZWx`=ur9@=Z{5YQ1XjL zz!z_{5)^XJ<7-s+k+S&7=U=t7I;P16_d5m0lnw5Gie(!i?{K@hoBgS|VQ?3D9WZz( z?#a0?`8lT2{M0t5`oy4qZaau4o_|>~(fJ+$*eU*83OXT8uYjRc#1dPC`EL2PT3o{l zBb>sZbYyU|9(Zl=2C*6RxacOPZPAKts)OOhMZK)7szz>XY^}0%u*0+=jouD2dtcEj zpc|O6`jkK8bNzcc0A(rs{3c(oO1n2{cFJE`Yo=VByj#@tofvV;@xS%i8*v zDGQW6@P_|!?COD#Yb0JI+9O(m$B6K^ym5j@;SUET%EC(<_bQFP^AAOj{g$&q@*n{o z5~uw0VIpPzH0yrj@q_2{b|9j3TdxDblH zaLrM8#ub8Ldx{-~hfK1t~;bSqgMTC6g00k^gig9h&aWvqdn23i&_ zEAtF+-#i(OSNq`T%ltWNk(q)e4=-D6V@LF}DHDbuB42LqTkAZBa%kfov*6EL-f*VM z%Pod>A);a)Re%pZ06~FG>dA(|m6a zrUDC>m5V;|#``kKqppxZ4!o#JW$}l0k{43el)Yv4nF`j^^5RRA)$BXyQ`r=#g+7o! zL~e*I=to_lO||ZW|fpU(lqIHreCPZM0h5>GDPr94RzXb{bxX_a(|h2Q7N>RX-+$K|E&%$1J7&``DXjjZ>Zz z0^m2>NHpV>!oX)tYt_#fAW|40e4<|)FH^&HP=?Ef1(R4Rb-Sm^@m%tOCa-YitC6GSnaB1@cqL0AA+g zBxP$i?$S}Rg*wNKC{+w+1(VJgqB7+Opq|w)ZHvXW2@W4LlDs8f1h1cW@n}>zC!nO` z58A;tHXv~?7{&coQB{j;#C1T1E4S5Hb?pJ2Gfz+xoU=dNlcav8iqp3C<((ZNxoyaE zP)DF#RKQgh-g0g%;)=QxQM>EtW8UbVR+{43vDgTGNfKs#iCbosU$>ZTiMwux!Gphr*y>T+*~qLH%e z-#d*YfOxNr!g1T3%cPHPxR{SZ+4-HcVmki>tzWQWtLm72-dHivnbBnBm36j`ZY=0I zBE<#G(W~>$gTkRI*75W2U6UK7Vu`%lNH8sVkm3}Uq%i@HFi?N`hOze7H(cb`T?F#k zJN@W_0?K;XUavn)ogok9TlcB$TzjCf5A569-u6arl60}_Dr&joYvD?|`)PX{JQ97! zp2h(*)zsDNjw|~siRjUG4Is;GBikiCaK8NScdylQkc>9|(_B5d&=+`lmvsR6arql2 zBEpFaCOp8)A()Rm%|MTMMMLI-=`#+WRv`r8+K&d*?DOT4_P}zv4)wzFEi5s}Dme-R z#Cn;A_8lQKN(^1UaW}Je244JLeegj#@WR7>GrNJc*`9}Dx`-ftvVQGD=qSAvslJQNf|bzFGkzBigZMV z@fbzU@X`}Se@eITW9YB%T86G6$K7cC-KYN4Mh)+)_#if&hAU7;-v;Dpd(~T~YmXMs z_30nbw@B+ARCiR0^x`|NMMo#$ML<4KW=;-*QR4fRTyoIYh-9xn@hlg38K1H@|LM3u z6LWf=!)1a72VwZXZ5swurX#|#| zF8&12{h@0wKqKI;qki5N<%n_XUCR-M0RB%?K!S320#V3lU+QWzwr1m2=s+=C;bArt zOw}z}x$GHRu+kUTi0F>C3zi*Dh1@mT&65zRgW@tdF-kWvF7F;LXJj?+jEf znxyGr3yAI2fDxvzuNf_5g>A(j2pHN_WW7O;+1gij**|{!2|eDzfne0gQoHs0SKD=0 zOhRJbv0PQ{_~QZ9(*r2mUW0biKsVV9SM%RCnvpLo!FxC6-3j`p2ybOEH9_QAKk1TUI;fiUSv zIOc2V6wruNvF5No4a?f3i9>DrnZwi?fBRk$Jd|>)*t#Fe5!P8+QKBP(D?gfn^5(DH zjE1Id);WClirIx1a&HE@PFAtW7B1T&Mo@W~Eq1~2j+`vDfT)yF(BqL|M~oKg@$m&_ zzX{$EI^o|Aj=3ohY4@$6=8 zhMYWUxE^(wG+{8VgL0-a_QH!{9Z5MzCFRa(=ysq|)eGL;{m5FinVVQ=oIA$OJ}W$> z&<2wI#DPsJLq{Da?uC0API-z_zQu%I4xe4@I5<$TJd`h4@p2=wa4ei(TmP`$ECx(JW0dtmo$N$1xvusgMk#(CIlu6Hydx>F zt%02$4N*kl^=kzMnd@Y!)G07dS^N2aU2FgSukVDi4Y7T78T-+kMfRo-+-&zex|W>< zprb&u#=O+PUboMosVhL~mBXtbZolnxx-QWTYz))xPIh@lx=YX;%TU91k2~TZAZ#?uuPU8%Ygx6840ML;dC%o zb$W2Sh--PGk^0VZ;mOjdHD&QboVUr_+BH3bide8JR0n`zIKS%cQ?-yu_c$8eN9S#^ zn*E2=z^;Hd*w0^FTBb(^E;(l$uCjLa#6iY!qKSqQ)fGc97cQ;vJmlyJVwBo~`URi@ zvcuywkvxB`NTW=yIq0nez@->h8W0G*kV{o}g@=;0 z#j7jPKEpKqG{_q7Tn#}mO&$%8%g93Qv&k#C>p)l3-yV2x&1}QVd#!A1Eof=9al;4O zo8E9bYClpPVE?&yueBG>NJ4vjw|s05r^R8=?*NpJQ|{a-?Q4EH!29H#Yw}WQf|22| zJ@7FxZj6<&Qyv^Oy+>Zo;Q*H9-WiOZLOKOfNiWhZGN)#O!m{?^_g;t#G7lBQAk@?z zuzMbU83eGAA#Eo>0W1RZ>uMWp-OIb>7EYaXDr?k}(5Lo2Ma*D*95o+bxKVlHZt>$C z>`d=aw$Xn{#Oq|Zgb652`Tzs_0WM+AhVEL_(-Fk0y9ayxZk_!O~omRn?sr zKlVFcl~Ix^u^H!$lIPXGe;*q+auDi;!lQon_LFnhNhS#?0|(D8sJ~s1ANbvR*HY2K zC5^wn;Zo5+gV`~JL02^60Om1wGzjW{DR(p^2nUZl*1y51WuXrVIcf@D5F%8z>ZXxH z-Aspntg(IgVmr&`AP{9Q$@@4}WLQ4*HN%Tw(gbt0r zLc}ok4c%@DU>AV{Koj@;aA!Pkv7u-h8}2jVTMj71e)FQ(9-F(-dj$fnw1<;=#8|wt z3hgSf#->J_c;-+_op9D!15pon6Y5y=(r(=y>Vhhd2r|6j|D$tX0iE?Wb~x`qpM^j$ zE)v@Tu*=e%O6lAUda@t&h)ytARB&#?>_`PPFysk0u=?5&od?b!@_BhfgvL*6SZGWB zO`q-SkJE|%PAuopd-ce;ZbkWJTe`#`u?caX0V)dfK`KAJ5N=Ss<{eYiKzS*;Wl3gn z4%zwY)ecmqs%N5qUV3?(8!6O5^-g6EiGLkoq3=_J{()xNhpk)dLf=DXG!67VVtZ0n z-vNr-1^p6^(wv}yL6J}$-QvFMZ4*UUBhL9YN!}6Qj-_OyI|UT8aM@-EUDiJGzVqzn z|Ge66`~G$I%l~?x{rx8|)7MG)K|pPoLkBKe?r(Y2_uY?kMB_riDl|?xVa0LZz5~tD zb|olMY4l|S7b#gZ2Ok`!gvS{gX{aC{t2gcj9S~-aA*0m=WIR6CpXk5gn(21y_pYq61K1@EZNchlg1Pb&sGS;g$C}(r8m~2Y|A9!|BYk*;nLEFZI<+ zFLBQkHQH?NK6fCv5X@zlNoVyj?QNf|ln zRGf7hUW7JffkE zY~8+JQ^R*(G0kRNFxoCTca&Xx{&4%yd(QzQOZ2iVK4niVUXD=}r1?~WG~$q~fau_q zBG+EQS?wMmgJJc_6KbEX19*b+J5YQ;pfRCDtYPXI!*x#goSa~NxmSTOy$lZ6}6cgXI3bhY~BGdEtWFbxvWjUU~zRM%}ml`(#v;!r!3pWa~&iV_0ffPEe(eNC{57IDT6y@51;)l~&Vy<3{YU@M_k!@{R;)iNY?h;&I=F*C8$5C7E;NhWE-j^> z2}27ZXT66h-nQU;gB#%c)gtV5kC`ilL&1-vY>0TBAhXZm-)NRQWK zcI9Q`@s~6~A&_Uo#vN9tJG>|YF`~88aO2L0d0pOBW3FtzfQ{3VF{1|9RTwPE26Ah| zhTSlx?LUGM+rpDEBL<=!Tp#6hhn{B`SkRy)E4TQ*E6~Bk@)6;YrglMIg4T=ps1<2r zg`5Hh8Dbp0Cg~653*gNI$wdeF$3cS9!ZpTT$fM74hd7nT!2;7YdVbR;4rQsG1O*g? zu_3(M!rSg7*2jM`%mw7yD<keE$(&C{N+n zVr^ z!>fGxLN^W3fqs2)1w3F#d&qk=L})+4$l}ZyEwrCcRxepv z1$t685V6L5pVw&bS*eCwfhY4e>v6zpIq9NxE6Ck|&Wkj@((jW%y(1+KmA z8d%zayiJs=w5ZR$Pv_s#<=YU}XcwKI*mQ{_Pf5?E=TgbYDF=I)9-6A9*VcaZ9RR&- z0`2wcQ4eYL(0kw=@l`0F`tYTsIs~U|(MsN2iFsQ`vi~QaIT$*GL5RW(y!c`j3M4nd zPl_05;9$r+GtcvP4z&;Ov*{CQ(0$t1sKK1l-y{RBaL5pi%2d8;2j|pFi9|bKlBtkW z_D>_K(&x(&CPyIU4?t74N>KJ$kWH4{DM;Y?qk^IHGihF+E>Vk-I5HGo!Czi`5hC1u zmeRsNvb zuH@SSaJhKdW-C!4Sv}>!w_k?d?Ht4!dI6l4K!Er;7!u9O^P^y~U3cYVPXp?>C`VVV zT_C&40jVsB#Ysh^P+9G~F0b5&I!Ec6rA@Q+5&}=)k(NRy*yGl)fb>gZy978 zk%s9Q=SabeI}JQ>y4WX{t+#cr!dqke*@x}IjfMba15P=tLI}Lbe5k*98<2m|VYa%#(eC`(2@!1c}1l_EW zJa4j^0|#s|Um_UpFtrKs2*1!-Z<&2M#sl7EWq08i(J*6WH$*$wZVt~)q% zvuXI~ElMp_5k|O|x7(c$t&{Qp@HOZ8Oez$SEU7)jwHfvR;SN2g4rmj+Vm-&GwIfeQ zkOXa3rMx)0vD7>VJw&nLtR<3Ruo@ki$J#=0yJsd@KQ`0>3J!tV*&&k&N_RD^3qV#Q{V9F9?{2V zTY1gGK6EW)6XkV;;1jeB6R3k9>g1q8=#C?WT_0T_4;0)k=pVBWlj$Fyy8(u<7p59qCrZi^8R5p8 z$uB*J3+pf#2&N}Txmf(7zjM7=+g>YJH!AY3@w-sO+E@2l<+ejsU6-*N|KDA9!)Ncc z>p%Yo`|ub4VBh@7vs%#Aa%(%#pvbnXMb3jyeHi_Xo}kX%de=(($*nIU3MnCQmtHUe z9;3gJv}5g~%)94)@wp>yCVu=tMLlHtN4GAt`ySrFn&i!W`Lk~n8D6aSal1fb4kCa3 z;ftVIyu+5ZC+2RlU){M3#)xv5(id#s{3m?BHuU#j0G+)?@J*0E_|<&7>^Fa0ZHErf(sK<9UJbmtC!T-B*29As zJhZ>wjV-AHos<*R#UABJ8=%tFp)J3=cb(nzi$!+VBg-Khy)BKhvhW6IPoH}3Ra>@h zhczB-)U9yxf-bzbsN=|`*8u_n`gqE174$Y2ud1@@+JpA{2iDl!C7bL&f40ze?%8M8 zT`|SJ@ukZp%xs_5Vz?$CQEMM;V+QFp=%C)a9^YX9_?<^>`MT{WlT&n*3Gav+a5p~= ziu7lWJe;eG zhw8OYrn8`Eb7wkd1>D*|eD7y-ZQVw`QkRAq{E?lc5g~PafgBoz-=}Ywq4cc+dA-|M zF7p(DXG3hks!FScj-HpE+ZAox4`tikrs z<1bl#hA;l#4qfBhIa2oCcTBU7z5gPmS3=1iPTHx&@2a7n&l-k)+G;PC?bI7T<}Tu! zIegRXe}C;=Heu{wr7yy0$0}Ykc*|V|2j^}$94uC!XlVhQ`&VqMwE=y5+2jtqf}s$# zbqDqSU4s1z-iQVop~5n`M~QU_q%WjXK8_AJAK32{o5Tk)BO=o~2)-|z?>nZl=4gS@ z<9RbL2p$GMsM%d0U!TP2vtW6J)zux)t?+B%88vI$Ye4}&w9_46AFF+Zd_@r7N5yY% z5&U{^9R?8^!Z-!zIg91ifFptAjX-{q6lHE8Upt~ZMGp1*c1+Dk7ZK7G;?nc{oAq4{ zzWb<}n?PGaqzO3E_DAs9z#q(6Xm>rdM&I^-^JQn)mp^%#55}E@KK=cpXTj?Vm3Q@( zXWOT*Z^v+U0MwHo!t0uI=L%e296 - Qt::Horizontal + Qt::Orientation::Horizontal @@ -100,7 +100,7 @@ 0 - Qt::Vertical + Qt::Orientation::Vertical true @@ -119,10 +119,10 @@ QFrame#frame{background-color: rgb(255, 255, 255, 170);} - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -133,14 +133,17 @@ 700 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) - QFrame::NoFrame + QFrame::Shape::NoFrame - QFrame::Plain + QFrame::Shadow::Plain 5 @@ -152,7 +155,7 @@ - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter 5 @@ -167,11 +170,14 @@ 240 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) - QFrame::Plain + QFrame::Shadow::Plain @@ -186,8 +192,11 @@ 460 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -202,8 +211,11 @@ 50 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -218,8 +230,11 @@ 25 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -234,8 +249,11 @@ 40 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -257,13 +275,13 @@ false - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) - QFrame::NoFrame + QFrame::Shape::NoFrame - QFrame::Raised + QFrame::Shadow::Raised -1 @@ -278,7 +296,7 @@ false - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTop|Qt::AlignmentFlag::AlignTrailing false @@ -299,8 +317,11 @@ 20 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -315,8 +336,11 @@ 20 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -338,13 +362,13 @@ false - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) - QFrame::NoFrame + QFrame::Shape::NoFrame - QFrame::Raised + QFrame::Shadow::Raised -1 @@ -359,7 +383,7 @@ false - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTop|Qt::AlignmentFlag::AlignTrailing false @@ -380,8 +404,11 @@ 45 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -396,8 +423,11 @@ 100 + + false + - background-color: rgb(10, 10, 10, 50) + background-color: rgba(10, 10, 10, 50) @@ -417,10 +447,10 @@ QFrame#frame_2{background-color: rgb(255, 255, 255, 170);} - QFrame::StyledPanel + QFrame::Shape::StyledPanel - QFrame::Raised + QFrame::Shadow::Raised @@ -435,13 +465,13 @@ 1 - Qt::ScrollBarAlwaysOff + Qt::ScrollBarPolicy::ScrollBarAlwaysOff - QAbstractScrollArea::AdjustToContentsOnFirstShow + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow - QAbstractItemView::NoEditTriggers + QAbstractItemView::EditTrigger::NoEditTriggers false @@ -453,19 +483,19 @@ false - QAbstractItemView::NoDragDrop + QAbstractItemView::DragDropMode::NoDragDrop - Qt::IgnoreAction + Qt::DropAction::IgnoreAction true - QAbstractItemView::SingleSelection + QAbstractItemView::SelectionMode::SingleSelection - QAbstractItemView::SelectRows + QAbstractItemView::SelectionBehavior::SelectRows @@ -474,7 +504,7 @@ - Qt::ElideMiddle + Qt::TextElideMode::ElideMiddle true @@ -566,16 +596,16 @@ - Qt::NoFocus + Qt::FocusPolicy::NoFocus - Qt::LeftToRight + Qt::LayoutDirection::LeftToRight false - Qt::ImhNone + Qt::InputMethodHint::ImhNone @@ -595,12 +625,12 @@ 240 10 - 61 + 88 22 - QAbstractSpinBox::NoButtons + QAbstractSpinBox::ButtonSymbols::NoButtons @@ -617,12 +647,12 @@ 310 10 - 61 + 88 22 - QAbstractSpinBox::NoButtons + QAbstractSpinBox::ButtonSymbols::NoButtons @@ -672,7 +702,7 @@ 40 - Qt::Vertical + Qt::Orientation::Vertical true From b893764961d581649d5f7c439b5aaa68c33e2a17 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Fri, 12 Dec 2025 16:02:56 +0100 Subject: [PATCH 03/13] flake8 + parametrage suplementaire --- CenRa_AUTOMAP/canvas_editor.py | 7 +- CenRa_AUTOMAP/metadata.txt | 4 +- .../tools/mises_en_pages/carto_standard.py | 378 ++++++++--------- .../tools/mises_en_pages/full_page.py | 386 +++++++++--------- .../tools/mises_en_pages/left_corner.py | 386 +++++++++--------- CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 102 ++--- CenRa_PAGERENDER/canvas_editor.py | 36 +- CenRa_PAGERENDER/demoV2.py | 334 +++++++++------ CenRa_PAGERENDER/metadata.txt | 4 +- .../tools/ui/CenRa_PageRender_base.ui | 115 +++++- plugins.xml | 12 +- 11 files changed, 1012 insertions(+), 752 deletions(-) diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index 59d5189b..298423bd 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -116,13 +116,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): 'Carte_size': None, 'Carte_locals': None, 'Carte_rotate': None, + 'Carte_frame': None, 'Carte_2_size': None, 'Carte_2_locals': None, 'Carte_2_rotate': None, 'Legande_size': None, 'Legande_locals': None, 'Legande_rotate': None, - 'Legande_frame':None, + 'Legande_frame': None, 'Arrow_size': None, 'Arrow_locals': None, 'Arrow_rotate': None, @@ -492,14 +493,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # overviewitem.addOverview(map_overview) self.position_map.refresh() - self.map_modele_test.setFrameEnabled(True) + self.map_modele_test.setFrameEnabled(self.template_parameters['Carte_frame']) self.position_map.setFrameEnabled(self.template_parameters['Carte_2_frame']) self.layout.addLayoutItem(self.position_map) self.position_map.setId("Carte_locals") self.map_modele_test.refresh() self.map_modele_test.setBackgroundColor(QColor(255, 255, 255, 255)) - self.map_modele_test.setFrameEnabled(True) + self.map_modele_test.setFrameEnabled(self.template_parameters['Carte_frame']) if self.radioButton_9.isChecked() == 1: self.map_modele_test.setAtlasDriven(True) self.layout.addLayoutItem(self.map_modele_test) diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index b7e09843..4fde3d5d 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.1 +version=2.2 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


+changelog=

CenRa_AUTOMAP:


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


# Tags are comma separated with spaces allowed tags=python diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/carto_standard.py b/CenRa_AUTOMAP/tools/mises_en_pages/carto_standard.py index bca49c89..5437b234 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/carto_standard.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/carto_standard.py @@ -1,192 +1,198 @@ from qgis.core import ( - QgsLayoutSize, - QgsUnitTypes, - QgsLayoutPoint, + 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 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['Carte_2_frame'] = False - 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['Legande_frame'] = False - 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['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - 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['Credit_alignment'] = 0x0002 - 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['Source_alignment'] = 0x0002 - 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['Carte_2_frame'] = False - 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['Legande_frame'] = False - 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['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - 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['Credit_alignment'] = 0x0002 - 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['Source_alignment'] = 0x0002 - 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 == '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_frame'] = True + 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['Carte_2_frame'] = False + 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['Legande_frame'] = False + 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['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + 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['Credit_alignment'] = 0x0002 + 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['Source_alignment'] = 0x0002 + 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_frame'] = True + 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['Carte_2_frame'] = False + 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['Legande_frame'] = False + 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['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + 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['Credit_alignment'] = 0x0002 + 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['Source_alignment'] = 0x0002 + 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['Carte_2_frame'] = False - 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['Legande_frame'] = False - 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['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - 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['Credit_alignment'] = 0x0002 - 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['Source_alignment'] = 0x0002 - 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['Carte_2_frame'] = False - 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['Legande_frame'] = False - 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['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - 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['Credit_alignment'] = 0x0002 - 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['Source_alignment'] = 0x0002 - 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 + 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_frame'] = True + 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['Carte_2_frame'] = False + 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['Legande_frame'] = False + 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['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + 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['Credit_alignment'] = 0x0002 + 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['Source_alignment'] = 0x0002 + 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_frame'] = True + 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['Carte_2_frame'] = False + 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['Legande_frame'] = False + 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['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + 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['Credit_alignment'] = 0x0002 + 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['Source_alignment'] = 0x0002 + 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 \ No newline at end of file + return self.template_parameters diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/full_page.py b/CenRa_AUTOMAP/tools/mises_en_pages/full_page.py index f30e79fd..448a43f6 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/full_page.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/full_page.py @@ -1,197 +1,203 @@ from qgis.core import ( - QgsLayoutSize, - QgsUnitTypes, - QgsLayoutPoint, + 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 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(210, 297, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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, 10, 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_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(133, 215, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 288, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 273, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(196, 283, 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, 4, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(55, 292, 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 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 - 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(297, 420, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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(48, 17, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 370, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(219, 324, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 410, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 395, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(271, 394, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(291, 125, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(98, 414, 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 + 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(210, 297, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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, 10, 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_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(133, 215, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 288, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 273, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(196, 283, 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, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(55, 292, 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 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 + 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(297, 420, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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(48, 17, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 370, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(219, 324, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 410, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 395, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(271, 394, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(100, 3.9, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(291, 125, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(98, 414, 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 - if page_rotate == 'Landscape': - if values_page == 'A3': - 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_size'] = QgsLayoutSize(420, 297, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_size'] = QgsLayoutSize(411, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(411, 8, 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_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 247, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(341, 196, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 287, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 272, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(394, 271, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(414, 123, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(185, 292, 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 - if values_page == 'A4': - 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_size'] = QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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(48, 17, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 2, 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(231, 135, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 201, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 186, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(283, 196, 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(98, 205, 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 + if page_rotate == 'Landscape': + if values_page == 'A3': + 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_size'] = QgsLayoutSize(420, 297, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_size'] = QgsLayoutSize(411, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(411, 8, 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_locals'] = QgsLayoutPoint(5, 2, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(50, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(5, 247, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(405, 203, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(341, 196, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 287, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 272, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(24, 24, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(394, 271, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(414, 123, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(100, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(185, 292, 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 + if values_page == 'A4': + 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_size'] = QgsLayoutSize(297, 210, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(0, 0, 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(48, 17, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(5, 2, 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(231, 135, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(64, 7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(3, 201, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(65, 15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(3, 186, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(12, 12, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(283, 196, 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(98, 205, 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 - # Retour des info # - return self.template_parameters \ No newline at end of file + # Retour des info # + return self.template_parameters diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/left_corner.py b/CenRa_AUTOMAP/tools/mises_en_pages/left_corner.py index d63274a4..330d5ea0 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/left_corner.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/left_corner.py @@ -1,197 +1,203 @@ from qgis.core import ( - QgsLayoutSize, - QgsUnitTypes, - QgsLayoutPoint, + 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 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 - 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 + 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 + 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 - 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 - 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 - self.template_parameters['Logo_2_rotate'] = 0 - self.template_parameters['Carte_2_frame'] = False - self.template_parameters['Legande_frame'] = False - self.template_parameters['Arrow_background'] = True - self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" - self.template_parameters['Credit_alignment'] = 0x0002 - self.template_parameters['Source_alignment'] = 0x0002 + 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 + 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 + self.template_parameters['Logo_2_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_frame'] = False + self.template_parameters['Legande_frame'] = False + self.template_parameters['Arrow_background'] = True + self.template_parameters['Arrow_path'] = "NorthArrow_02.svg" + self.template_parameters['Credit_alignment'] = 0x0002 + self.template_parameters['Source_alignment'] = 0x0002 - return self.template_parameters + return self.template_parameters diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py index 8d8cc064..3cbc5127 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py @@ -4,6 +4,8 @@ from qgis.core import ( QgsUnitTypes, QgsLayoutPoint, ) + + def fletch_canvas(self): if self.radioButton_6.isChecked(): values_page = 'A4' @@ -16,176 +18,180 @@ def fletch_canvas(self): if page_rotate == 'Portrait': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(206.0,200, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(2, 29, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 0 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(58.857142857142854,40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(58.857142857142854, 40, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(146, 218, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(198.85714285714286,36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(198.85714285714286, 36, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_locals'] = QgsLayoutPoint(6, 260, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_locals'] = QgsLayoutPoint(191, 32, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0,10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0, 10, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_locals'] = QgsLayoutPoint(85, 244, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 0 - self.template_parameters['Logo_size'] = QgsLayoutSize(40.0,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_locals'] = QgsLayoutPoint(6, 234, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 0 - self.template_parameters['Titre_size'] = QgsLayoutSize(206.0,10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 10, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 3, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 0 - self.template_parameters['Credit_size'] = QgsLayoutSize(198.0,5, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(198.0, 5, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_locals'] = QgsLayoutPoint(3, 228.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 270 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(198.0,5, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(198.0, 5, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_locals'] = QgsLayoutPoint(8, 228.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 270 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(4, 13, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 0 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0,13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0, 13, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(85, 233, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 0 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(48, 234, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 0 if values_page == 'A3': - self.template_parameters['Carte_size'] = QgsLayoutSize(290,282, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(3, 41, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 0 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(83,56, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(83, 56, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(206, 307, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(280,51, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(280, 51, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_locals'] = QgsLayoutPoint(8, 367, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_locals'] = QgsLayoutPoint(269, 45, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(70,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(70, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_locals'] = QgsLayoutPoint(125, 350, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 0 - self.template_parameters['Logo_size'] = QgsLayoutSize(56,28, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_size'] = QgsLayoutSize(56, 28, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_locals'] = QgsLayoutPoint(8, 330, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 0 - self.template_parameters['Titre_size'] = QgsLayoutSize(290,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_size'] = QgsLayoutSize(290, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 0 - self.template_parameters['Credit_size'] = QgsLayoutSize(280,7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(280, 7, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_locals'] = QgsLayoutPoint(4, 322, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 270 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(280,7, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(280, 7, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_locals'] = QgsLayoutPoint(11, 322, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 270 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(6, 19, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 0 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70,19, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70, 19, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(125, 330, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 0 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(56,28, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(56, 28, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(68, 330, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 0 if page_rotate == 'Landscape': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(206.0,200, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 208.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 270 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0,40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 270 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(206.0,36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(206.0, 36, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_locals'] = QgsLayoutPoint(258, 208.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 270 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_locals'] = QgsLayoutPoint(31, 19.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 270 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(50.857142857142854,8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(50.857142857142854, 8, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_locals'] = QgsLayoutPoint(233, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(40.0,30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_locals'] = QgsLayoutPoint(228, 206.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(206.0,11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 11, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(50.857142857142854,6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(50.857142857142854, 6, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_locals'] = QgsLayoutPoint(177, 196, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(50.857142857142854,6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(50.857142857142854, 6, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_locals'] = QgsLayoutPoint(177, 202, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0,14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.857142857142854,13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.857142857142854, 13, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(241, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0,30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(228, 162, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 270 if values_page == 'A3': - self.template_parameters['Carte_size'] = QgsLayoutSize(290,282, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 293, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 270 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(70,56, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 56, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(296, 76, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 270 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(290,51, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(290, 51, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_locals'] = QgsLayoutPoint(364, 293, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 270 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_locals'] = QgsLayoutPoint(44, 27, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 270 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(72,11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(72, 11, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_locals'] = QgsLayoutPoint(329, 159, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(56,42, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_size'] = QgsLayoutSize(56, 42, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_locals'] = QgsLayoutPoint(321, 290, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(290,15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_size'] = QgsLayoutSize(290, 15, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(72,8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(72, 8, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_locals'] = QgsLayoutPoint(250, 276, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(72,8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(72, 8, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_locals'] = QgsLayoutPoint(250, 285, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285,20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(72,19, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(72, 19, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(340, 159, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(56,42, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(56, 42, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(296, 229, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 270 return self.template_parameters diff --git a/CenRa_PAGERENDER/canvas_editor.py b/CenRa_PAGERENDER/canvas_editor.py index bc976cf2..67412b1c 100644 --- a/CenRa_PAGERENDER/canvas_editor.py +++ b/CenRa_PAGERENDER/canvas_editor.py @@ -68,6 +68,7 @@ class PageRender_Editor(QDialog, EDITOR_CLASS): 'Source': 0, 'Echelle_2': 0, 'Logo_2': 0} + self.varObject = {} path = '' ix = 0 @@ -83,6 +84,7 @@ class PageRender_Editor(QDialog, EDITOR_CLASS): self.horizontalSlider.valueChanged.connect(self.horizontal) self.verticalSlider.valueChanged.connect(self.vertical) self.tableWidget.itemSelectionChanged.connect(self.setSlider) + self.tableWidget_2.cellChanged.connect(self.setObject) self.radioButton.toggled.connect(self.setSlider) self.pushButton.clicked.connect(self.export) self.spinBox.editingFinished.connect(self.valueSlider) @@ -181,7 +183,7 @@ class PageRender_Editor(QDialog, EDITOR_CLASS): QApplication.restoreOverrideCursor() def select_file(self): - options = QFileDialog.Options() + # options = QFileDialog.Options() # options |= QFileDialog.getExistingDirectory() folder = QFileDialog.getOpenFileName(self, "Sélection du fichier ", '', 'Python(*.py)') if folder[0] != '': @@ -276,6 +278,8 @@ from qgis.core import ( QgsUnitTypes, QgsLayoutPoint, ) + + def fletch_canvas(self): if self.radioButton_6.isChecked(): values_page = 'A4' @@ -297,6 +301,16 @@ def fletch_canvas(self): if values_page == '""" + page_size + """':""" for children in all_children: selection = children + if selection.objectName() in self.varObject: + for parametre_object in self.varObject[selection.objectName()]: + if str(selection.objectName()) != "Arrow" and str(parametre_object) != "path": + export_str = export_str + """ + self.template_parameters['""" + str(selection.objectName()) + '_' + str(parametre_object) + """'] = """ + str(self.varObject[selection.objectName()][parametre_object]) + elif str(selection.objectName()) == "Arrow" and str(parametre_object) == "path": + if str(self.varObject[selection.objectName()][parametre_object]) == "": + self.varObject[selection.objectName()][parametre_object] = "NorthArrow_02.svg" + export_str = export_str + """ + self.template_parameters['""" + str(selection.objectName()) + '_' + str(parametre_object) + """'] = '""" + str(self.varObject[selection.objectName()][parametre_object]) + "'" if page_type == 'Portrait': item_rotate_object = self.varPortrait[selection.objectName() + '_rotate'][0] if item_rotate_object == 0 or item_rotate_object == 180: @@ -346,7 +360,7 @@ def fletch_canvas(self): locals_h = str(locals_h) export_str = export_str + """ - self.template_parameters['""" + selection.objectName() + """_size'] = QgsLayoutSize(""" + size_w + """,""" + size_h + """, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['""" + selection.objectName() + """_size'] = QgsLayoutSize(""" + size_w + """, """ + size_h + """, QgsUnitTypes.LayoutMillimeters) self.template_parameters['""" + selection.objectName() + """_locals'] = QgsLayoutPoint(""" + locals_w + """, """ + locals_h + """, QgsUnitTypes.LayoutMillimeters) self.template_parameters['""" + selection.objectName() + """_rotate'] = """ + str(item_rotate_object) export_str = export_str + """ @@ -406,9 +420,24 @@ def fletch_canvas(self): frame_y = self.frame.y() self.frame.move(frame_x, frame_y) + def setParameter(self, selection_name): + if selection_name in self.varObject: + for table2Range in range(0, self.tableWidget_2.rowCount() - 1): + rowName = self.tableWidget_2.item(table2Range, 0).text() + self.tableWidget_2.setItem(table2Range, 1, QTableWidgetItem(str(self.varObject[selection_name][rowName]))) + else: + self.varObject.update({selection_name: {"frame": True, "background": True, "path": "NorthArrow_02.svg"}}) + + def setObject(self, event): + selection_name = (self.tableWidget.currentItem()).text() + rowName = self.tableWidget_2.item(event, 0).text() + rowValue = self.tableWidget_2.item(event, 1).text() + self.varObject[selection_name][rowName] = rowValue + # print(self.varObject[selection_name][rowName]) + def setSlider(self): if self.tableWidget.currentItem() is not None: - print(self.tableWidget.tabKeyNavigation()) + # print(self.tableWidget.tabKeyNavigation()) selection_name = (self.tableWidget.currentItem()).text() all_children = self.frame.children() selection = 0 @@ -431,6 +460,7 @@ def fletch_canvas(self): self.verticalSlider.setValue(yy) self.spinBox.setValue(xx) self.spinBox_2.setValue(yy) + self.setParameter(selection_name) def rotate_color(self, selection, last_children): global last_select diff --git a/CenRa_PAGERENDER/demoV2.py b/CenRa_PAGERENDER/demoV2.py index 9bb47fe0..60fb7a2a 100644 --- a/CenRa_PAGERENDER/demoV2.py +++ b/CenRa_PAGERENDER/demoV2.py @@ -4,6 +4,8 @@ from qgis.core import ( QgsUnitTypes, QgsLayoutPoint, ) + + def fletch_canvas(self): if self.radioButton_6.isChecked(): values_page = 'A4' @@ -16,152 +18,244 @@ def fletch_canvas(self): if page_rotate == 'Portrait': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(206.0,200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(2, 29, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_background'] = True + 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(58.857142857142854,40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(146, 218, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Carte_2_background'] = True + 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(198.85714285714286,36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(6, 260, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_frame'] = True + self.template_parameters['Legande_background'] = True + 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.0,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(191, 32, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_path'] = 'NorthArrow_02.svg' + 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(50.0,10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(93, 233, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_frame'] = True + self.template_parameters['Echelle_background'] = True + 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(40.0,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(6, 234, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_frame'] = True + self.template_parameters['Logo_background'] = True + 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(206.0,10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 3, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_frame'] = True + self.template_parameters['Titre_background'] = True + 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(50.0,5, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(7, 229.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 270 - self.template_parameters['Source_size'] = QgsLayoutSize(50.0,5, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(12, 229.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 270 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(4, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_frame'] = True + self.template_parameters['Credit_background'] = True + 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_frame'] = True + self.template_parameters['Source_background'] = True + 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_frame'] = True + self.template_parameters['Sous_titre_background'] = True + 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(50.0,13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(93, 243, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_frame'] = True + self.template_parameters['Echelle_2_background'] = True + 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(40.0,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(48, 234, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_frame'] = True + self.template_parameters['Logo_2_background'] = True + 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(290,282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(3, 41, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_background'] = True + 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(83,56, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(206, 307, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Carte_2_background'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(121, 97, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(295, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 0 - self.template_parameters['Legande_size'] = QgsLayoutSize(280,51, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(8, 367, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_frame'] = True + self.template_parameters['Legande_background'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(121, 185, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(295, 104, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 0 - self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(269, 45, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_path'] = 'NorthArrow_02.svg' + 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(70,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(131, 329, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_frame'] = True + self.template_parameters['Echelle_background'] = True + 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(56,28, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(8, 330, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_frame'] = True + self.template_parameters['Logo_background'] = True + 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(290,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_frame'] = True + self.template_parameters['Titre_background'] = True + 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(70,7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(10, 322, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 270 - self.template_parameters['Source_size'] = QgsLayoutSize(70,7, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(17, 322, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 270 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(6, 19, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_frame'] = True + self.template_parameters['Credit_background'] = True + self.template_parameters['Credit_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(213, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 0 + self.template_parameters['Source_frame'] = True + self.template_parameters['Source_background'] = True + 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_frame'] = True + self.template_parameters['Sous_titre_background'] = True + 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(70,19, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(131, 342, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_frame'] = True + self.template_parameters['Echelle_2_background'] = True + 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(56,28, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(68, 330, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_frame'] = True + self.template_parameters['Logo_2_background'] = True + 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(206.0,200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0,40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 - self.template_parameters['Legande_size'] = QgsLayoutSize(206.0,36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(258, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 - self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(31, 19.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 - self.template_parameters['Echelle_size'] = QgsLayoutSize(50.857142857142854,8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(233, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(40.0,30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(228, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(206.0,11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(50.857142857142854,6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(177, 196, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_background'] = True + 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_frame'] = True + self.template_parameters['Carte_2_background'] = True + 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_frame'] = True + self.template_parameters['Legande_background'] = True + 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_path'] = 'NorthArrow_02.svg' + 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_frame'] = True + self.template_parameters['Echelle_background'] = True + 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_frame'] = True + self.template_parameters['Logo_background'] = True + 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_frame'] = True + self.template_parameters['Titre_background'] = True + 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_frame'] = True + self.template_parameters['Credit_background'] = True + 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(50.857142857142854,6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(177, 202, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_frame'] = True + self.template_parameters['Source_background'] = True + 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(202.0,14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.857142857142854,13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(241, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0,30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(210, 163.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Sous_titre_frame'] = True + self.template_parameters['Sous_titre_background'] = True + 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_frame'] = True + self.template_parameters['Echelle_2_background'] = True + 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_frame'] = True + self.template_parameters['Logo_2_background'] = True + 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(290,282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 - self.template_parameters['Carte_2_size'] = QgsLayoutSize(70,56, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(296, 76, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 - self.template_parameters['Legande_size'] = QgsLayoutSize(290,51, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(364, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 - self.template_parameters['Arrow_size'] = QgsLayoutSize(20,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(44, 27, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 - self.template_parameters['Echelle_size'] = QgsLayoutSize(72,11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(329, 159, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(56,42, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(321, 290, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(290,15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(72,8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(250, 276, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_background'] = True + 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_frame'] = True + self.template_parameters['Carte_2_background'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(121, 97, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(295, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 + self.template_parameters['Legande_frame'] = True + self.template_parameters['Legande_background'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(121, 185, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(295, 104, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 + self.template_parameters['Arrow_path'] = 'NorthArrow_02.svg' + 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_frame'] = True + self.template_parameters['Echelle_background'] = True + 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_frame'] = True + self.template_parameters['Logo_background'] = True + 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_frame'] = True + self.template_parameters['Titre_background'] = True + 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_frame'] = True + self.template_parameters['Credit_background'] = True + self.template_parameters['Credit_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(213, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 - self.template_parameters['Source_size'] = QgsLayoutSize(72,8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(250, 285, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_frame'] = True + self.template_parameters['Source_background'] = True + 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(285,20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(72,19, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(340, 159, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(56,42, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(296, 229, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Sous_titre_frame'] = True + self.template_parameters['Sous_titre_background'] = True + 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_frame'] = True + self.template_parameters['Echelle_2_background'] = True + 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_frame'] = True + self.template_parameters['Logo_2_background'] = True + 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 return self.template_parameters diff --git a/CenRa_PAGERENDER/metadata.txt b/CenRa_PAGERENDER/metadata.txt index e6ec1bc7..05c320ff 100644 --- a/CenRa_PAGERENDER/metadata.txt +++ b/CenRa_PAGERENDER/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_PageRender qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_PageRender -version=0.2.1 +version=0.2.2 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_PAGERENDER:


30/07/2025 - Version 0.2.1:

- Correctife de bug.


19/05/2025 - Version 0.2.0:

- Compatible PyQt5 et PyQt6


03/04/2025 - Version 0.1.6:

- Mise a jour de securite.


07/01/2025 - Version 0.1.5:

- ByPass du certif ssl ci erreur.

14/11/2024 - Version 0.1.4:

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


08/11/2024 - Version 0.1.3:

- Correctif de bug.

21/10/2024 - Version 0.1.1:

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


09/10/2024 - Version 0.1.0:

- Création.

+changelog=

CenRa_PAGERENDER:


12/12/2025 - Version 0.2.2:

- bug sur le background.


30/07/2025 - Version 0.2.1:

- Correctife de bug.


19/05/2025 - Version 0.2.0:

- Compatible PyQt5 et PyQt6


03/04/2025 - Version 0.1.6:

- Mise a jour de securite.


07/01/2025 - Version 0.1.5:

- ByPass du certif ssl ci erreur.

14/11/2024 - Version 0.1.4:

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


08/11/2024 - Version 0.1.3:

- Correctif de bug.

21/10/2024 - Version 0.1.1:

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


09/10/2024 - Version 0.1.0:

- Création.

# Tags are comma separated with spaces allowed tags=python diff --git a/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui b/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui index 4f692e5a..3c961701 100644 --- a/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui +++ b/CenRa_PAGERENDER/tools/ui/CenRa_PageRender_base.ui @@ -458,7 +458,7 @@ 10 10 161 - 641 + 381
@@ -565,7 +565,7 @@ 10 - 650 + 660 161 21 @@ -574,6 +574,117 @@ Load
+ + + + 10 + 400 + 161 + 241 + + + + 2 + + + 1 + + + Qt::ScrollBarPolicy::ScrollBarAlwaysOff + + + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow + + + QAbstractItemView::EditTrigger::DoubleClicked + + + false + + + false + + + false + + + QAbstractItemView::DragDropMode::NoDragDrop + + + Qt::DropAction::IgnoreAction + + + true + + + QAbstractItemView::SelectionMode::SingleSelection + + + QAbstractItemView::SelectionBehavior::SelectRows + + + + 5 + 5 + + + + Qt::TextElideMode::ElideMiddle + + + true + + + true + + + 3 + + + 2 + + + false + + + 50 + + + 78 + + + true + + + false + + + 20 + + + 30 + + + + + + + + + frame + + + + + background + + + + + path + + +
diff --git a/plugins.xml b/plugins.xml index 887299e3..d27c2a2e 100644 --- a/plugins.xml +++ b/plugins.xml @@ -84,9 +84,9 @@ cenra,metabase - + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.1 + 2.2 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip @@ -95,15 +95,15 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip CEN-Rhone-Alpes 2024-09-25 - 2025-07-30 + 2025-12-12 False False cenra,mise en page,atlas - + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 0.2.1 + 0.2.2 3.16 https://plateformesig.cenra-outils.org/ CenRa_PAGERENDER.zip @@ -112,7 +112,7 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip CEN-Rhone-Alpes 2024-10-09 - 2025-07-30 + 2025-12-12 True False cenra,mise en page,atlas From 8e93f7051a158149994a6f8609436e05711c462d Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Fri, 12 Dec 2025 17:04:52 +0100 Subject: [PATCH 04/13] loading parametre for old file --- CenRa_PAGERENDER/canvas_editor.py | 29 +++++-- CenRa_PAGERENDER/demoV2.py | 128 +++++------------------------- 2 files changed, 40 insertions(+), 117 deletions(-) diff --git a/CenRa_PAGERENDER/canvas_editor.py b/CenRa_PAGERENDER/canvas_editor.py index 67412b1c..66bba0ed 100644 --- a/CenRa_PAGERENDER/canvas_editor.py +++ b/CenRa_PAGERENDER/canvas_editor.py @@ -199,7 +199,7 @@ class PageRender_Editor(QDialog, EDITOR_CLASS): sourcefile = open(logopath, 'r') splitsource = sourcefile.read().splitlines() all_children = self.frame.children() - all_element = ['_locals', '_size', '_rotate'] + all_element = ['_locals', '_size', '_rotate', '_frame', '_background', '_path'] for children in all_children: flen = 0 for element in all_element: @@ -209,7 +209,17 @@ class PageRender_Editor(QDialog, EDITOR_CLASS): if find_it.find(recherche_element) != -1: flen = flen + 1 if flen == 1: - if element != '_rotate': + if element == '_frame' or element == '_background' or element == '_path': + value_find = (find_it.split('=')[1]).replace('"', '') + if children.objectName() in self.varObject: + if element[1:] in self.varObject[children.objectName()]: + self.varObject[children.objectName()][element[1:]] = value_find + else: + self.varObject[children.objectName()].update({element[1:]: value_find}) + else: + self.varObject.update({children.objectName(): {element[1:]: value_find}}) + # print(self.varObject) + elif element != '_rotate': value_find = (find_it[find_it[:].find('(') + 1:-33]).split(',') if element == '_size': Psize_h = float(value_find[0]) * 3.5 @@ -422,22 +432,27 @@ def fletch_canvas(self): def setParameter(self, selection_name): if selection_name in self.varObject: - for table2Range in range(0, self.tableWidget_2.rowCount() - 1): + for table2Range in range(0, self.tableWidget_2.rowCount()): rowName = self.tableWidget_2.item(table2Range, 0).text() - self.tableWidget_2.setItem(table2Range, 1, QTableWidgetItem(str(self.varObject[selection_name][rowName]))) + if rowName in self.varObject[selection_name]: + self.tableWidget_2.setItem(table2Range, 1, QTableWidgetItem(str(self.varObject[selection_name][rowName]))) + else: + self.varObject[selection_name].update({rowName: ""}) + self.tableWidget_2.setItem(table2Range, 1, QTableWidgetItem('')) else: - self.varObject.update({selection_name: {"frame": True, "background": True, "path": "NorthArrow_02.svg"}}) + self.varObject.update({selection_name: {"frame": "", "background": "", "path": ""}}) + self.tableWidget_2.setItem(1, 1, QTableWidgetItem('')) + self.tableWidget_2.setItem(2, 1, QTableWidgetItem('')) + self.tableWidget_2.setItem(3, 1, QTableWidgetItem('')) def setObject(self, event): selection_name = (self.tableWidget.currentItem()).text() rowName = self.tableWidget_2.item(event, 0).text() rowValue = self.tableWidget_2.item(event, 1).text() self.varObject[selection_name][rowName] = rowValue - # print(self.varObject[selection_name][rowName]) def setSlider(self): if self.tableWidget.currentItem() is not None: - # print(self.tableWidget.tabKeyNavigation()) selection_name = (self.tableWidget.currentItem()).text() all_children = self.frame.children() selection = 0 diff --git a/CenRa_PAGERENDER/demoV2.py b/CenRa_PAGERENDER/demoV2.py index 60fb7a2a..df678af7 100644 --- a/CenRa_PAGERENDER/demoV2.py +++ b/CenRa_PAGERENDER/demoV2.py @@ -18,244 +18,152 @@ def fletch_canvas(self): if page_rotate == 'Portrait': if values_page == 'A4': - self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_background'] = True 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_frame'] = True - self.template_parameters['Carte_2_background'] = True 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_frame'] = True - self.template_parameters['Legande_background'] = True 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_path'] = 'NorthArrow_02.svg' 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_frame'] = True - self.template_parameters['Echelle_background'] = True 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_frame'] = True - self.template_parameters['Logo_background'] = True 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_frame'] = True - self.template_parameters['Titre_background'] = True 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_frame'] = True - self.template_parameters['Credit_background'] = True 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_frame'] = True - self.template_parameters['Source_background'] = True 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_frame'] = True - self.template_parameters['Sous_titre_background'] = True 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_frame'] = True - self.template_parameters['Echelle_2_background'] = True 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_frame'] = True - self.template_parameters['Logo_2_background'] = True 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_frame'] = True - self.template_parameters['Carte_background'] = True 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_frame'] = True - self.template_parameters['Carte_2_background'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(121, 97, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(295, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(294, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 0 - self.template_parameters['Legande_frame'] = True - self.template_parameters['Legande_background'] = True self.template_parameters['Legande_size'] = QgsLayoutSize(121, 185, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(295, 104, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(294, 105, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 0 - self.template_parameters['Arrow_path'] = 'NorthArrow_02.svg' self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(267, 28, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(266, 28, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 - self.template_parameters['Echelle_frame'] = True - self.template_parameters['Echelle_background'] = True self.template_parameters['Echelle_size'] = QgsLayoutSize(73, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(13, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(12, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 0 - self.template_parameters['Logo_frame'] = True - self.template_parameters['Logo_background'] = True 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_frame'] = True - self.template_parameters['Titre_background'] = True self.template_parameters['Titre_size'] = QgsLayoutSize(218, 16, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(72, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(73, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 0 - self.template_parameters['Credit_frame'] = True - self.template_parameters['Credit_background'] = True self.template_parameters['Credit_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(213, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(214, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 - self.template_parameters['Source_frame'] = True - self.template_parameters['Source_background'] = True self.template_parameters['Source_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(323, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(322, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 - self.template_parameters['Sous_titre_frame'] = True - self.template_parameters['Sous_titre_background'] = True 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_frame'] = True - self.template_parameters['Echelle_2_background'] = True 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_locals'] = QgsLayoutPoint(12, 260, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 0 - self.template_parameters['Logo_2_frame'] = True - self.template_parameters['Logo_2_background'] = True 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_locals'] = QgsLayoutPoint(12, 214, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 0 if page_rotate == 'Landscape': if values_page == 'A4': - self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_background'] = True 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_frame'] = True - self.template_parameters['Carte_2_background'] = True 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_frame'] = True - self.template_parameters['Legande_background'] = True 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_path'] = 'NorthArrow_02.svg' 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_frame'] = True - self.template_parameters['Echelle_background'] = True 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_frame'] = True - self.template_parameters['Logo_background'] = True 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_frame'] = True - self.template_parameters['Titre_background'] = True 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_frame'] = True - self.template_parameters['Credit_background'] = True 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_frame'] = True - self.template_parameters['Source_background'] = True 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_frame'] = True - self.template_parameters['Sous_titre_background'] = True 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_frame'] = True - self.template_parameters['Echelle_2_background'] = True 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_frame'] = True - self.template_parameters['Logo_2_background'] = True 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_frame'] = True - self.template_parameters['Carte_background'] = True 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_frame'] = True - self.template_parameters['Carte_2_background'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(121, 97, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(295, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(294, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 0 - self.template_parameters['Legande_frame'] = True - self.template_parameters['Legande_background'] = True self.template_parameters['Legande_size'] = QgsLayoutSize(121, 185, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(295, 104, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(294, 105, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 0 - self.template_parameters['Arrow_path'] = 'NorthArrow_02.svg' self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(267, 28, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(266, 28, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 - self.template_parameters['Echelle_frame'] = True - self.template_parameters['Echelle_background'] = True self.template_parameters['Echelle_size'] = QgsLayoutSize(73, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(13, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(12, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 0 - self.template_parameters['Logo_frame'] = True - self.template_parameters['Logo_background'] = True 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_frame'] = True - self.template_parameters['Titre_background'] = True self.template_parameters['Titre_size'] = QgsLayoutSize(218, 16, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(72, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(73, 4, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 0 - self.template_parameters['Credit_frame'] = True - self.template_parameters['Credit_background'] = True self.template_parameters['Credit_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(213, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(214, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 - self.template_parameters['Source_frame'] = True - self.template_parameters['Source_background'] = True self.template_parameters['Source_size'] = QgsLayoutSize(73, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(323, 278, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(322, 278, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 - self.template_parameters['Sous_titre_frame'] = True - self.template_parameters['Sous_titre_background'] = True 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_frame'] = True - self.template_parameters['Echelle_2_background'] = True 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_locals'] = QgsLayoutPoint(12, 260, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 0 - self.template_parameters['Logo_2_frame'] = True - self.template_parameters['Logo_2_background'] = True 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_locals'] = QgsLayoutPoint(12, 214, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 0 return self.template_parameters From b3186f6e1621ecaa0fb444c0d04bcff89d969c75 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 15 Dec 2025 11:49:42 +0100 Subject: [PATCH 05/13] nouvelle mise en page pour n2000 v2 --- CenRa_AUTOMAP/canvas_editor.py | 15 +- CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 60 +++--- .../tools/mises_en_pages/n2000_comparaison.py | 197 ++++++++++++++++++ 3 files changed, 236 insertions(+), 36 deletions(-) create mode 100644 CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index 298423bd..1131db9b 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -465,7 +465,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.map_modele_test.setExtent(iface.mapCanvas().extent()) # Position de la carte dans le composeur - self.map_modele_test.setItemRotation(self.template_parameters['Carte_rotate']) + self.map_modele_test.setMapRotation(self.template_parameters['Carte_rotate']) self.map_modele_test.attemptResize(self.template_parameters['Carte_size']) self.map_modele_test.attemptMove(self.template_parameters['Carte_locals']) # on dimensionne le rendu de la carte (pour référence la page totale est une page A4 donc 297*210) @@ -479,7 +479,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): if self.radioButton_12.isChecked() == 1: self.position_map = QgsLayoutItemMap(self.layout) self.position_map.setRect(20, 20, 20, 20) - self.position_map.setExtent(QgsRectangle(641552, 6647386, 995856, 6331104)) + self.position_map.setExtent(QgsRectangle(618704, 6329245, 1018704, 6649245)) + # self.position_map.setExtent(QgsRectangle(641552, 6647386, 995856, 6331104)) self.position_map.setFollowVisibilityPreset(True) self.position_map.setFollowVisibilityPresetName(self.comboBox_6.currentText()) self.position_map.setItemRotation(self.template_parameters['Carte_2_rotate']) @@ -638,9 +639,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0) self.scalebarnumeric_qpt.setFont(QFont("Calibri", 12)) + self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate']) self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals']) self.scalebarnumeric_qpt.attemptResize(self.template_parameters['Echelle_size']) - self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate']) self.scalebarnumeric_qpt.setAlignment(QgsScaleBarSettings.Alignment(1)) self.scalebarnumeric_qpt.setBackgroundEnabled(True) self.scalebarnumeric_qpt.setBackgroundColor(QColor(255, 255, 255, 130)) @@ -651,6 +652,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebar_qpt = QgsLayoutItemScaleBar(self.layout) self.scalebar_qpt.setStyle('Single Box') self.scalebar_qpt.setLinkedMap(self.map_modele_test) + self.scalebar_qpt.setFillColor(QColor(144, 144, 144, 255)) self.scalebar_qpt.applyDefaultSize() self.scalebar_qpt.applyDefaultSettings() @@ -658,9 +660,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): self.scalebar_qpt.setNumberOfSegmentsLeft(0) self.scalebar_qpt.setFont(QFont("Calibri", 12)) + self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate']) self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals']) self.scalebar_qpt.attemptResize(self.template_parameters['Echelle_2_size']) - self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate']) self.scalebar_qpt.setAlignment(QgsScaleBarSettings.Alignment(1)) self.scalebar_qpt.setBackgroundEnabled(True) self.scalebar_qpt.setBackgroundColor(QColor(255, 255, 255, 130)) @@ -671,10 +673,11 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # ajout de la fleche du Nord north = QgsLayoutItemPicture(self.layout) north.setPicturePath(resources_path("mises_en_pages", self.template_parameters['Arrow_path'])) + north.setLinkedMap(self.map_modele_test) self.layout.addLayoutItem(north) + north.setItemRotation(self.template_parameters['Arrow_rotate']) north.attemptMove(self.template_parameters['Arrow_locals']) north.attemptResize(self.template_parameters['Arrow_size']) - north.setItemRotation(self.template_parameters['Arrow_rotate']) north.setSvgStrokeColor(QColor(255, 255, 255, 255)) north.setSvgFillColor(QColor(76, 76, 76, 255)) north.setBackgroundEnabled(self.template_parameters['Arrow_background']) @@ -727,10 +730,10 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom) logo_credit.setMode(QgsLayoutItemPicture.FormatRaster) cur_x = self.template_parameters['Logo_2_locals'].x() + logo_credit.setItemRotation(self.template_parameters['Logo_2_rotate']) logo_credit.attemptMove(self.template_parameters['Logo_2_locals']) self.template_parameters['Logo_2_locals'].setX(cur_x + (logo_div / len_item)) logo_credit.setFixedSize(self.template_parameters['Logo_2_size']) - logo_credit.setItemRotation(self.template_parameters['Logo_2_rotate']) if logo_run[0] == ' ': logo_credit.setPicturePath(self.s.value("automap/logoteck", 1, type=str) + logo_run[1:]) else: diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py index 3cbc5127..2d4c4dae 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py @@ -108,7 +108,7 @@ def fletch_canvas(self): if page_rotate == 'Landscape': if values_page == 'A4': self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 208.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(29, 8.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 270 self.template_parameters['Carte_frame'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) @@ -120,78 +120,78 @@ def fletch_canvas(self): self.template_parameters['Legande_rotate'] = 270 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(31, 19.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(30, 23.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 270 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(50.857142857142854, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(233, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(241, 112, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 270 self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(228, 206.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(237, 206.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 270 self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 11, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(50.857142857142854, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(177, 196, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(28, 202, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(50.857142857142854, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(177, 202, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(28, 196, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.857142857142854, 13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(241, 112.85714285714286, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(233, 112, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 270 self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(228, 162, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(237, 162, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 270 if values_page == 'A3': self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 56, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(296, 76, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 55, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(320, 80, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_rotate'] = 270 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(290, 51, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(364, 293, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_size'] = QgsLayoutSize(290, 5., QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(365, 295, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Legande_rotate'] = 270 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(44, 27, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(41, 31, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 270 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" self.template_parameters['Echelle_size'] = QgsLayoutSize(72, 11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(329, 159, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(360, 160, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(56, 42, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(321, 290, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(340, 290, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_rotate'] = 270 self.template_parameters['Titre_size'] = QgsLayoutSize(290, 15, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(72, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(250, 276, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(39, 282, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(72, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(250, 285, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(39, 274, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(72, 19, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(340, 159, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(330, 159, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(56, 42, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(296, 229, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(340, 230, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 270 return self.template_parameters diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py new file mode 100644 index 00000000..cc64f785 --- /dev/null +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py @@ -0,0 +1,197 @@ + +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(145.0, 140, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 3, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(165, 55, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(198.85714285714286, 36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(185, 145, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_frame'] = True + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(29, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 + self.template_parameters['Arrow_background'] = False + self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" + self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(196, 210, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(185, 290, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 270 + self.template_parameters['Titre_size'] = QgsLayoutSize(290.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 295, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 270 + self.template_parameters['Credit_size'] = QgsLayoutSize(145.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(173, 143.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 180 + self.template_parameters['Credit_alignment'] = 0x0001 + self.template_parameters['Source_size'] = QgsLayoutSize(145.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(173, 137.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 180 + self.template_parameters['Source_alignment'] = 0x0001 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(290, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(12, 295, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(185, 210, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(185, 248, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 270 + if values_page == 'A3': + self.template_parameters['Carte_size'] = QgsLayoutSize(225.0, 200, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 3, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(250, 55, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(200, 36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(260, 235, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_frame'] = True + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(29, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 + self.template_parameters['Arrow_background'] = False + self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" + self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(276, 325, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(265, 410, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 270 + self.template_parameters['Titre_size'] = QgsLayoutSize(405.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 410, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 270 + self.template_parameters['Credit_size'] = QgsLayoutSize(225.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(253, 203.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 180 + self.template_parameters['Credit_alignment'] = 0x0001 + self.template_parameters['Source_size'] = QgsLayoutSize(225.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(253, 197.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 180 + self.template_parameters['Source_alignment'] = 0x0001 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(405, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(12, 410, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(265, 325, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(265, 365, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 270 + if page_rotate == 'Landscape': + if values_page == 'A4': + self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(29, 8.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(206.0, 36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(258, 208.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_frame'] = True + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(30, 23.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_background'] = False + self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" + self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(241, 112, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(237, 206.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 270 + self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 270 + self.template_parameters['Credit_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(28, 202, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 0 + self.template_parameters['Credit_alignment'] = 0x0001 + self.template_parameters['Source_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(28, 196, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 0 + self.template_parameters['Source_alignment'] = 0x0001 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(233, 112, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(237, 162, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 270 + if values_page == 'A3': + self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 0 + self.template_parameters['Carte_frame'] = True + self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 55, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(320, 80, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_frame'] = True + self.template_parameters['Legande_size'] = QgsLayoutSize(290, 5., QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(365, 295, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_frame'] = True + self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(41, 31, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_background'] = False + self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" + self.template_parameters['Echelle_size'] = QgsLayoutSize(72, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(360, 160, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Logo_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(340, 290, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 270 + self.template_parameters['Titre_size'] = QgsLayoutSize(290, 15, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 270 + self.template_parameters['Credit_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(39, 282, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 0 + self.template_parameters['Credit_alignment'] = 0x0001 + self.template_parameters['Source_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(39, 274, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 0 + self.template_parameters['Source_alignment'] = 0x0001 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70, 20, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(330, 159, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(340, 230, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 270 + return self.template_parameters From 102fd306865591fe44e8e2255d05ce9bcbec8c9d Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 15 Dec 2025 12:00:16 +0100 Subject: [PATCH 06/13] MAJ --- CenRa_AUTOMAP/metadata.txt | 4 ++-- CenRa_PAGERENDER/metadata.txt | 4 ++-- plugins.xml | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index 4fde3d5d..b407401f 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.2 +version=2.3 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


+changelog=

CenRa_AUTOMAP:


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


# Tags are comma separated with spaces allowed tags=python diff --git a/CenRa_PAGERENDER/metadata.txt b/CenRa_PAGERENDER/metadata.txt index 05c320ff..48f00c90 100644 --- a/CenRa_PAGERENDER/metadata.txt +++ b/CenRa_PAGERENDER/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_PageRender qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_PageRender -version=0.2.2 +version=0.2.3 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_PAGERENDER:


12/12/2025 - Version 0.2.2:

- bug sur le background.


30/07/2025 - Version 0.2.1:

- Correctife de bug.


19/05/2025 - Version 0.2.0:

- Compatible PyQt5 et PyQt6


03/04/2025 - Version 0.1.6:

- Mise a jour de securite.


07/01/2025 - Version 0.1.5:

- ByPass du certif ssl ci erreur.

14/11/2024 - Version 0.1.4:

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


08/11/2024 - Version 0.1.3:

- Correctif de bug.

21/10/2024 - Version 0.1.1:

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


09/10/2024 - Version 0.1.0:

- Création.

+changelog=

CenRa_PAGERENDER:


15/12/2025 - Version 0.2.3:

- nouveau systeme de parametrage.


12/12/2025 - Version 0.2.2:

- bug sur le background.


30/07/2025 - Version 0.2.1:

- Correctife de bug.


19/05/2025 - Version 0.2.0:

- Compatible PyQt5 et PyQt6


03/04/2025 - Version 0.1.6:

- Mise a jour de securite.


07/01/2025 - Version 0.1.5:

- ByPass du certif ssl ci erreur.

14/11/2024 - Version 0.1.4:

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


08/11/2024 - Version 0.1.3:

- Correctif de bug.

21/10/2024 - Version 0.1.1:

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


09/10/2024 - Version 0.1.0:

- Création.

# Tags are comma separated with spaces allowed tags=python diff --git a/plugins.xml b/plugins.xml index d27c2a2e..637c1a81 100644 --- a/plugins.xml +++ b/plugins.xml @@ -84,9 +84,9 @@ cenra,metabase
- + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.2 + 2.3 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip @@ -95,15 +95,15 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip CEN-Rhone-Alpes 2024-09-25 - 2025-12-12 + 2025-12-15 False False cenra,mise en page,atlas - + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 0.2.2 + 0.2.3 3.16 https://plateformesig.cenra-outils.org/ CenRa_PAGERENDER.zip @@ -112,7 +112,7 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip CEN-Rhone-Alpes 2024-10-09 - 2025-12-12 + 2025-12-15 True False cenra,mise en page,atlas From 43acfca13b6d38be7dbab6f7ddb344b23d53ba08 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 15 Dec 2025 14:29:31 +0100 Subject: [PATCH 07/13] n2000 landscape --- CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 2 +- .../tools/mises_en_pages/n2000_comparaison.py | 132 +++++++++--------- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py index 2d4c4dae..990bdb12 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py @@ -109,7 +109,7 @@ def fletch_canvas(self): if values_page == 'A4': self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(29, 8.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py index cc64f785..5b83c891 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py @@ -107,91 +107,91 @@ def fletch_canvas(self): self.template_parameters['Logo_2_rotate'] = 270 if page_rotate == 'Landscape': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(29, 8.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_size'] = QgsLayoutSize(145.0, 140, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(150, 27.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(253, 144.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(206.0, 36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(258, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_size'] = QgsLayoutSize(110.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(183, 175.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(30, 23.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(278, 29.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(241, 112, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(110, 191, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(237, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(28, 202, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 0 + self.template_parameters['Logo_locals'] = QgsLayoutPoint(7, 175.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(288.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 1.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 + self.template_parameters['Credit_size'] = QgsLayoutSize(140, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(150, 167, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 270 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(28, 196, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 0 + self.template_parameters['Source_size'] = QgsLayoutSize(140, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(156, 167, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 270 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(288.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(3, 11.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(233, 112, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(110, 180, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(237, 162, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(52, 175, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 if values_page == 'A3': - self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(200.0, 230, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(216, 27.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 55, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(320, 80, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(373, 234.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(290, 5., QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(365, 295, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_size'] = QgsLayoutSize(110.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(253, 264.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(41, 31, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(401, 29.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(72, 11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(360, 160, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(340, 290, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(290, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(39, 282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 0 + self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(150, 281, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(7, 265.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(413.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 1.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 + self.template_parameters['Credit_size'] = QgsLayoutSize(230, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(216, 257, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 270 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(39, 274, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 0 + self.template_parameters['Source_size'] = QgsLayoutSize(230, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(222, 257, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 270 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(330, 159, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(340, 230, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(413.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(3, 11.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(150, 270, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(72, 265, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 return self.template_parameters From 83e22782f71427af4c3574cdbcbeefee45353568 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 15 Dec 2025 15:03:34 +0100 Subject: [PATCH 08/13] maj n2000 landscape --- CenRa_AUTOMAP/metadata.txt | 4 ++-- plugins.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index b407401f..d005a5f9 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.3 +version=2.4 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


+changelog=

CenRa_AUTOMAP:


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


# Tags are comma separated with spaces allowed tags=python diff --git a/plugins.xml b/plugins.xml index 637c1a81..60073a69 100644 --- a/plugins.xml +++ b/plugins.xml @@ -84,9 +84,9 @@ cenra,metabase
- + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.3 + 2.4 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip From 06321e4e26e63ecdac800a1fdbf5c004747900be Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 15 Dec 2025 16:05:12 +0100 Subject: [PATCH 09/13] check droit user sigdb only to check all db --- CenRa_FLUX/flux_editor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CenRa_FLUX/flux_editor.py b/CenRa_FLUX/flux_editor.py index 1e096781..051415b8 100644 --- a/CenRa_FLUX/flux_editor.py +++ b/CenRa_FLUX/flux_editor.py @@ -335,7 +335,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS): item = QTableWidgetItem(table_name) self.tableWidget.setItem(i, 3, item) - if dbtype == sigdb: + if True: if (str(value[0]) + '.' + str(value[1])) in GrandUser: pass else: @@ -483,7 +483,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS): for row in range(0, self.tableWidget_2.rowCount()): color_rgba_db = 855030089 color_rgba_droit = 851150528 - print(self.tableWidget_2.item(row, 1).background().color().rgba()) + # print(self.tableWidget_2.item(row, 1).background().color().rgba()) if self.tableWidget_2.item(row, 1).background().color().rgba() == color_rgba_droit: self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "Vous ne disposez pas des droit pour la couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» !", QMessageBox.StandardButton(0x00004000)) elif self.tableWidget_2.item(row, 1).background().color().rgba() != color_rgba_db: From 3c9a6a8b881c8d4424699160b5cc90862ab827e1 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Tue, 16 Dec 2025 17:25:27 +0100 Subject: [PATCH 10/13] v2 n2000 landscape simple --- CenRa_AUTOMAP/canvas_editor.py | 3 ++ CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 54 ++++++++++----------- CenRa_FLUX/metadata.txt | 4 +- plugins.xml | 6 +-- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index 1131db9b..cfa8d029 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -14,6 +14,7 @@ from qgis.core import ( QgsLayoutItemLabel, QgsLayoutItemPicture, QgsLayoutItemLegend, + QgsLayoutItem, QgsLegendStyle, QgsLayoutItemScaleBar, QgsLayerTreeGroup, @@ -547,6 +548,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): # Ajout du logo CEN NA en haut à gauche de la page logo = QgsLayoutItemPicture(self.layout) logo.setResizeMode(QgsLayoutItemPicture.Zoom) + logo.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) logo.setMode(QgsLayoutItemPicture.FormatRaster) logo.setItemRotation(self.template_parameters['Logo_rotate']) logo.setFixedSize(self.template_parameters['Logo_size']) @@ -728,6 +730,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): for logo_run in self.mComboBox_4.checkedItems(): logo_credit = QgsLayoutItemPicture(self.layout) logo_credit.setResizeMode(QgsLayoutItemPicture.Zoom) + logo_credit.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) logo_credit.setMode(QgsLayoutItemPicture.FormatRaster) cur_x = self.template_parameters['Logo_2_locals'].x() logo_credit.setItemRotation(self.template_parameters['Logo_2_rotate']) diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py index 990bdb12..98602763 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py @@ -107,49 +107,49 @@ def fletch_canvas(self): self.template_parameters['Logo_2_rotate'] = 0 if page_rotate == 'Landscape': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(206.0, 200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(29, 8.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(189.0, 189, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(9, 18.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(210, 54.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(194, 20.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(206.0, 36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(258, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_size'] = QgsLayoutSize(203.0, 62, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(199, 63.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(30, 23.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(177, 20.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(241, 112, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(247, 43, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(237, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(206.0, 11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 208.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(28, 202, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(209, 174.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(289.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 1.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 + self.template_parameters['Credit_size'] = QgsLayoutSize(191, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(8, 201, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(207, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(28, 196, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(191, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(8, 195, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(202.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(13, 206.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(289.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(3, 12.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(233, 112, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(249, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(237, 162, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(252, 174, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 if values_page == 'A3': self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 8, QgsUnitTypes.LayoutMillimeters) diff --git a/CenRa_FLUX/metadata.txt b/CenRa_FLUX/metadata.txt index 1dc5ec3c..b8635a72 100644 --- a/CenRa_FLUX/metadata.txt +++ b/CenRa_FLUX/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_FLUX qgisMinimumVersion=3.0 supportsQt6=True description=Permet d'ouvrire une table dans la base PostGis -version=3.14 +version=3.15 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -32,7 +32,7 @@ icon=icon.png # experimental flag experimental=False -changelog=

CenRa_FLUX:


08/12/2025 - Version 3.14:

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


08/12/2025 - Version 3.13:

- Detection des droit utilisateur.


25/09/2025 - Version 3.12:

- version +1.


25/09/2025 - Version 3.11:

- Correctife sur les code 00.


24/09/2025 - Version 3.10:

- Erreur sur l ouverture des couche raster.


24/09/2025 - Version 3.9:

- bugfix lier aux extention pgsql.


09/09/2025 - Version 3.8:

- Bug REF fix.


05/09/2025 - Version 3.7:

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


30/07/2025 - Version 3.6:

- Correctife de bug.


29/07/2025 - Version 3.5:

- Bug fix sur les donnee raster.


23/07/2025 - Version 3.4:

- Ouverture raster dans la base SIG.


23/07/2025 - Version 3.3:

- Optimisation des chargement.


22/07/2025 - Version 3.2:

- Visualisation des format raster et vecteur dans REF.


21/07/2025 - Version 3.1:

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


19/05/2025 - Version 3.0:

- Compatible PyQt5 et PyQt6.


09/04/2025 - Version 2.9:

- Correctif bug en TT.


09/04/2025 - Version 2.8:

- Optimisation pour le TT.


07/04/2025 - Version 2.7:

- mode debug.


03/04/2025 - Version 2.6:

- Mise a jour de securite.


20/03/2025 - Version 2.5:

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


13/02/2025 - Version 2.4:

- Ajoute redimensionnement et déplacement mollette.


05/02/2025 - Version 2.3:

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


07/01/2025 - Version 2.2:

- ByPass du certif ssl ci erreur.


22/10/2024 - Version 2.1:

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


22/10/2024 - Version 2.0:

- Reformatage du code.


03/10/2024 - Version 1.14:

- Remonte la fênetre dans la pille.

13/09/2024 - Version 1.13:

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


10/09/2024 - Version 1.11:

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


26/08/2024 - Version 1.10:

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

+changelog=

CenRa_FLUX:


15/12/2025 - Version 3.15:

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


08/12/2025 - Version 3.14:

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


08/12/2025 - Version 3.13:

- Detection des droit utilisateur.


25/09/2025 - Version 3.12:

- version +1.


25/09/2025 - Version 3.11:

- Correctife sur les code 00.


24/09/2025 - Version 3.10:

- Erreur sur l ouverture des couche raster.


24/09/2025 - Version 3.9:

- bugfix lier aux extention pgsql.


09/09/2025 - Version 3.8:

- Bug REF fix.


05/09/2025 - Version 3.7:

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


30/07/2025 - Version 3.6:

- Correctife de bug.


29/07/2025 - Version 3.5:

- Bug fix sur les donnee raster.


23/07/2025 - Version 3.4:

- Ouverture raster dans la base SIG.


23/07/2025 - Version 3.3:

- Optimisation des chargement.


22/07/2025 - Version 3.2:

- Visualisation des format raster et vecteur dans REF.


21/07/2025 - Version 3.1:

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


19/05/2025 - Version 3.0:

- Compatible PyQt5 et PyQt6.


09/04/2025 - Version 2.9:

- Correctif bug en TT.


09/04/2025 - Version 2.8:

- Optimisation pour le TT.


07/04/2025 - Version 2.7:

- mode debug.


03/04/2025 - Version 2.6:

- Mise a jour de securite.


20/03/2025 - Version 2.5:

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


13/02/2025 - Version 2.4:

- Ajoute redimensionnement et déplacement mollette.


05/02/2025 - Version 2.3:

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


07/01/2025 - Version 2.2:

- ByPass du certif ssl ci erreur.


22/10/2024 - Version 2.1:

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


22/10/2024 - Version 2.0:

- Reformatage du code.


03/10/2024 - Version 1.14:

- Remonte la fênetre dans la pille.

13/09/2024 - Version 1.13:

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


10/09/2024 - Version 1.11:

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


26/08/2024 - Version 1.10:

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

# deprecated flag (applies to the whole plugin, not just a single version) deprecated=False diff --git a/plugins.xml b/plugins.xml index 60073a69..afc90651 100644 --- a/plugins.xml +++ b/plugins.xml @@ -50,9 +50,9 @@ cenra,sicen
- + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 3.14 + 3.15 3.16 https://plateformesig.cenra-outils.org/ CenRa_FLUX.zip @@ -61,7 +61,7 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip CEN-Rhone-Alpes 2024-02-06 - 2025-12-08 + 2025-12-15 False False cenra,flux From ec677ffc5a808fe2a8738f809125422911fd731b Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Wed, 17 Dec 2025 10:20:32 +0100 Subject: [PATCH 11/13] v2 n2000 A3 + comparaison --- CenRa_AUTOMAP/canvas_editor.py | 1 + CenRa_AUTOMAP/tools/mises_en_pages/n2000.py | 66 +++++------ .../tools/mises_en_pages/n2000_comparaison.py | 110 +++++++++--------- 3 files changed, 89 insertions(+), 88 deletions(-) diff --git a/CenRa_AUTOMAP/canvas_editor.py b/CenRa_AUTOMAP/canvas_editor.py index cfa8d029..93a7b21d 100644 --- a/CenRa_AUTOMAP/canvas_editor.py +++ b/CenRa_AUTOMAP/canvas_editor.py @@ -677,6 +677,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS): north.setPicturePath(resources_path("mises_en_pages", self.template_parameters['Arrow_path'])) north.setLinkedMap(self.map_modele_test) self.layout.addLayoutItem(north) + north.setPictureAnchor(QgsLayoutItem.ReferencePoint(4)) north.setItemRotation(self.template_parameters['Arrow_rotate']) north.attemptMove(self.template_parameters['Arrow_locals']) north.attemptResize(self.template_parameters['Arrow_size']) diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py index 98602763..57aa2214 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000.py @@ -151,47 +151,47 @@ def fletch_canvas(self): self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(252, 174, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Logo_2_rotate'] = 0 if values_page == 'A3': - self.template_parameters['Carte_size'] = QgsLayoutSize(290, 282, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(39, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_size'] = QgsLayoutSize(305.0, 273, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(9, 18.0, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True - self.template_parameters['Carte_2_size'] = QgsLayoutSize(70, 55, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(320, 80, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_size'] = QgsLayoutSize(50.0, 40, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(311, 20.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(290, 5., QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(365, 295, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_size'] = QgsLayoutSize(203.0, 62, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(317, 63.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True - self.template_parameters['Arrow_size'] = QgsLayoutSize(20, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(41, 31, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_rotate'] = 270 + self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(296, 20.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" - self.template_parameters['Echelle_size'] = QgsLayoutSize(72, 11, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(360, 160, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 - self.template_parameters['Logo_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(340, 290, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(290, 15, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 293, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(39, 282, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_size'] = QgsLayoutSize(50, 8, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(364, 43, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 + self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_locals'] = QgsLayoutPoint(320, 264.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(413.0, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(3, 1.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 + self.template_parameters['Credit_size'] = QgsLayoutSize(306, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(8, 285, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(290, 8, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(39, 274, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_size'] = QgsLayoutSize(306, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(8, 279, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(285, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(19, 291, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 - self.template_parameters['Echelle_2_size'] = QgsLayoutSize(70, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(330, 159, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 - self.template_parameters['Logo_2_size'] = QgsLayoutSize(40, 30, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(340, 230, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(413.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(3, 12.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 + self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50, 13, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(366, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 + self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 30, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(369, 264, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 return self.template_parameters diff --git a/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py index 5b83c891..d88ac879 100644 --- a/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py +++ b/CenRa_AUTOMAP/tools/mises_en_pages/n2000_comparaison.py @@ -18,93 +18,93 @@ def fletch_canvas(self): if page_rotate == 'Portrait': if values_page == 'A4': - self.template_parameters['Carte_size'] = QgsLayoutSize(145.0, 140, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 3, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_size'] = QgsLayoutSize(145.0, 135, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(4, 18, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(165, 55, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(146, 21, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True self.template_parameters['Legande_size'] = QgsLayoutSize(198.85714285714286, 36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(185, 145, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_locals'] = QgsLayoutPoint(153, 64, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(29, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(6, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(196, 210, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(154, 220, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(185, 290, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(290.0, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 295, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 + self.template_parameters['Logo_locals'] = QgsLayoutPoint(160, 264, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(205.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 1, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 self.template_parameters['Credit_size'] = QgsLayoutSize(145.0, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(173, 143.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 180 + self.template_parameters['Credit_locals'] = QgsLayoutPoint(4, 147.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 self.template_parameters['Source_size'] = QgsLayoutSize(145.0, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(173, 137.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 180 + self.template_parameters['Source_locals'] = QgsLayoutPoint(4, 141.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(290, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(12, 295, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(205, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(2, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0, 13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(185, 210, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(162, 208, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(185, 248, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(160, 234, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 if values_page == 'A3': - self.template_parameters['Carte_size'] = QgsLayoutSize(225.0, 200, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_locals'] = QgsLayoutPoint(28, 3, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_rotate'] = 270 + self.template_parameters['Carte_size'] = QgsLayoutSize(233.0, 192, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_locals'] = QgsLayoutPoint(4, 18, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_rotate'] = 0 self.template_parameters['Carte_frame'] = True self.template_parameters['Carte_2_size'] = QgsLayoutSize(50, 40, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(250, 55, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Carte_2_rotate'] = 270 + self.template_parameters['Carte_2_locals'] = QgsLayoutPoint(234, 21, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Carte_2_rotate'] = 0 self.template_parameters['Carte_2_frame'] = True - self.template_parameters['Legande_size'] = QgsLayoutSize(200, 36, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_locals'] = QgsLayoutPoint(260, 235, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Legande_rotate'] = 270 + self.template_parameters['Legande_size'] = QgsLayoutSize(190, 36, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_locals'] = QgsLayoutPoint(242, 64, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Legande_rotate'] = 0 self.template_parameters['Legande_frame'] = True self.template_parameters['Arrow_size'] = QgsLayoutSize(14.0, 14, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Arrow_locals'] = QgsLayoutPoint(29, 4, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Arrow_locals'] = QgsLayoutPoint(6, 20, QgsUnitTypes.LayoutMillimeters) self.template_parameters['Arrow_rotate'] = 0 self.template_parameters['Arrow_background'] = False self.template_parameters['Arrow_path'] = "NorthArrow_03.svg" self.template_parameters['Echelle_size'] = QgsLayoutSize(50.0, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_locals'] = QgsLayoutPoint(276, 325, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_rotate'] = 270 + self.template_parameters['Echelle_locals'] = QgsLayoutPoint(154, 220, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_rotate'] = 0 self.template_parameters['Logo_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_locals'] = QgsLayoutPoint(265, 410, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_rotate'] = 270 - self.template_parameters['Titre_size'] = QgsLayoutSize(405.0, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 410, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Titre_rotate'] = 270 - self.template_parameters['Credit_size'] = QgsLayoutSize(225.0, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_locals'] = QgsLayoutPoint(253, 203.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Credit_rotate'] = 180 + self.template_parameters['Logo_locals'] = QgsLayoutPoint(248, 386, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_rotate'] = 0 + self.template_parameters['Titre_size'] = QgsLayoutSize(293.0, 10, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_locals'] = QgsLayoutPoint(2, 1, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Titre_rotate'] = 0 + self.template_parameters['Credit_size'] = QgsLayoutSize(233.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_locals'] = QgsLayoutPoint(4, 204.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Credit_rotate'] = 0 self.template_parameters['Credit_alignment'] = 0x0001 - self.template_parameters['Source_size'] = QgsLayoutSize(225.0, 6, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_locals'] = QgsLayoutPoint(253, 197.0, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Source_rotate'] = 180 + self.template_parameters['Source_size'] = QgsLayoutSize(233.0, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_locals'] = QgsLayoutPoint(4, 198.0, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Source_rotate'] = 0 self.template_parameters['Source_alignment'] = 0x0001 - self.template_parameters['Sous_titre_size'] = QgsLayoutSize(405, 10, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(12, 410, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Sous_titre_rotate'] = 270 + self.template_parameters['Sous_titre_size'] = QgsLayoutSize(293, 6, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_locals'] = QgsLayoutPoint(2, 11, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Sous_titre_rotate'] = 0 self.template_parameters['Echelle_2_size'] = QgsLayoutSize(50.0, 13, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(265, 325, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Echelle_2_rotate'] = 270 + self.template_parameters['Echelle_2_locals'] = QgsLayoutPoint(252, 330, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Echelle_2_rotate'] = 0 self.template_parameters['Logo_2_size'] = QgsLayoutSize(40.0, 20, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(265, 365, QgsUnitTypes.LayoutMillimeters) - self.template_parameters['Logo_2_rotate'] = 270 + self.template_parameters['Logo_2_locals'] = QgsLayoutPoint(160, 234, QgsUnitTypes.LayoutMillimeters) + self.template_parameters['Logo_2_rotate'] = 0 if page_rotate == 'Landscape': if values_page == 'A4': self.template_parameters['Carte_size'] = QgsLayoutSize(145.0, 140, QgsUnitTypes.LayoutMillimeters) From 2842526605ba6e9d1ced78ab02121f592ca6af9c Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Thu, 18 Dec 2025 15:40:03 +0100 Subject: [PATCH 12/13] nouvelle image --- CenRa_AUTOMAP/metadata.txt | 4 ++-- .../NATURA 2000_logo_générique_RVB_blanc.png | Bin 0 -> 116031 bytes plugins.xml | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index d005a5f9..dbe4739b 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.4 +version=2.6 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


+changelog=

CenRa_AUTOMAP:


18/12/2025 - Version 2.6:

- ajoue du logo n2000 et region.


17/12/2025 - Version 2.5:

- Carte n2000 mise a jour landscape et portrait.


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


# Tags are comma separated with spaces allowed tags=python diff --git a/CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png b/CenRa_AUTOMAP/tools/logo_library/NATURA 2000_logo_générique_RVB_blanc.png new file mode 100644 index 0000000000000000000000000000000000000000..e034b197898678e69550d6d7041c28e5c144cbf7 GIT binary patch literal 116031 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 literal 0 HcmV?d00001 diff --git a/plugins.xml b/plugins.xml index afc90651..15548e8e 100644 --- a/plugins.xml +++ b/plugins.xml @@ -84,9 +84,9 @@ cenra,metabase
- + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.4 + 2.6 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip @@ -95,7 +95,7 @@ https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip CEN-Rhone-Alpes 2024-09-25 - 2025-12-15 + 2025-12-18 False False cenra,mise en page,atlas From d9f27eaa0fe15dcbcb91cc883269a8a96193de27 Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Thu, 18 Dec 2025 15:49:14 +0100 Subject: [PATCH 13/13] maj --- CenRa_AUTOMAP/metadata.txt | 4 ++-- plugins.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt index dbe4739b..ee4d58e1 100644 --- a/CenRa_AUTOMAP/metadata.txt +++ b/CenRa_AUTOMAP/metadata.txt @@ -7,7 +7,7 @@ name=CenRa_AutoMap qgisMinimumVersion=3.0 supportsQt6=True description=CenRa_AutoMap -version=2.6 +version=2.7 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -22,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues hasProcessingProvider=no # Uncomment the following line and add your changelog: -changelog=

CenRa_AUTOMAP:


18/12/2025 - Version 2.6:

- ajoue du logo n2000 et region.


17/12/2025 - Version 2.5:

- Carte n2000 mise a jour landscape et portrait.


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


+changelog=

CenRa_AUTOMAP:


18/12/2025 - Version 2.7:

- fix de bug gitea.


18/12/2025 - Version 2.6:

- ajoue du logo n2000 et region.


17/12/2025 - Version 2.5:

- Carte n2000 mise a jour landscape et portrait.


15/12/2025 - Version 2.4:

- Landescape pour n2000.


15/12/2025 - Version 2.3:

- nouvelle mise en page n2000.


12/12/2025 - Version 2.2:

- nouvelle mise en page pour n2000.


30/07/2025 - Version 2.1:

- Correctife de bug.


19/05/2025 - Version 2.0:

- Compatible PyQt5 et PyQt6


11/04/2025 - Version 1.7:

- Correctif d'orthographe.


09/04/2025 - Version 1.6:

- Correctif bug en TT.


09/04/2025 - Version 1.5:

- Optimisation pour le TT.


03/04/2025 - Version 1.4:

- Mise a jour de securite.


20/03/2025 - Version 1.3:

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


25/02/2025 - Version 1.2:

- DockWidget pour ouverture de couche avec theme.


28/01/2025 - Version 1.1:

- Multi-Composeur pris en charge.


27/01/2025 - Version 1.0:

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


13/01/2025 - Version 0.1.10:

- Correctif.


07/01/2025 - Version 0.1.9:

- ByPass du certif ssl ci erreur.


19/12/2024 - Version 0.1.8:

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


21/10/2024 - Version 0.1.7:

- Epurations du code.


07/10/2024 - Version 0.1.6:

- Option de bibliotheque de logo custome.


03/10/2024 - Version 0.1.5:

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


02/10/2024 - Version 0.1.4:

- Mise en page plein écrant.


01/10/2024 - Version 0.1.3:

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


30/09/2024 - Version 0.1.2:

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


27/09/2024 - Version 0.1.1:

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


26/09/2024 - Version 0.1.0:

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


# Tags are comma separated with spaces allowed tags=python diff --git a/plugins.xml b/plugins.xml index 15548e8e..b1f53efd 100644 --- a/plugins.xml +++ b/plugins.xml @@ -84,9 +84,9 @@ cenra,metabase
- + Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub. - 2.6 + 2.7 3.16 https://plateformesig.cenra-outils.org/ CenRa_AUTOMAP.zip