From 3ad2da4153c2cd4d00383dcc4e1264dfd5b5fcf2 Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 20 Jan 2022 17:55:00 +0100 Subject: [PATCH] Updated GUI documentation --- CoreFlows/gui/doc/FAQ.rst | 44 ------ CoreFlows/gui/doc/apidoc.rst | 16 --- .../gui/doc/apidoc_solverlabpy/modules.rst | 7 - CoreFlows/gui/doc/background.rst | 2 +- CoreFlows/gui/doc/conf.py | 10 +- CoreFlows/gui/doc/configuration.rst | 46 ------ CoreFlows/gui/doc/documentation.rst | 88 ------------ CoreFlows/gui/doc/exploredirwidget.rst | 68 --------- CoreFlows/gui/doc/generaluse.rst | 36 +++-- .../gui/doc/images/diffusionequationtree.png | Bin 63251 -> 41480 bytes CoreFlows/gui/doc/images/emptyTreeview.png | Bin 33609 -> 34144 bytes CoreFlows/gui/doc/index.rst | 6 +- CoreFlows/gui/doc/installation.rst | 128 ----------------- CoreFlows/gui/doc/iramainwidget.rst | 6 +- CoreFlows/gui/doc/iratreeviewwidget.rst | 71 ---------- CoreFlows/gui/doc/logruncodewidget.rst | 32 ----- CoreFlows/gui/doc/modelusage.rst | 11 +- CoreFlows/gui/doc/packagespy.rst | 78 ++++++++++- CoreFlows/gui/doc/prerequisites.rst | 107 -------------- CoreFlows/gui/doc/rst_prolog.rst | 45 ------ CoreFlows/gui/doc/solverlabcode.rst | 132 ------------------ CoreFlows/gui/doc/specificinstall.rst | 0 CoreFlows/gui/doc/svlinstallation.rst | 38 ++++- CoreFlows/gui/doc/svlotherfilewidget.rst | 19 --- CoreFlows/gui/doc/tips.rst | 65 --------- CoreFlows/gui/doc/usage.rst | 71 ---------- 26 files changed, 148 insertions(+), 978 deletions(-) delete mode 100644 CoreFlows/gui/doc/FAQ.rst delete mode 100644 CoreFlows/gui/doc/apidoc.rst delete mode 100644 CoreFlows/gui/doc/apidoc_solverlabpy/modules.rst delete mode 100644 CoreFlows/gui/doc/configuration.rst delete mode 100644 CoreFlows/gui/doc/documentation.rst delete mode 100644 CoreFlows/gui/doc/exploredirwidget.rst delete mode 100644 CoreFlows/gui/doc/installation.rst delete mode 100644 CoreFlows/gui/doc/iratreeviewwidget.rst delete mode 100644 CoreFlows/gui/doc/logruncodewidget.rst delete mode 100644 CoreFlows/gui/doc/prerequisites.rst delete mode 100644 CoreFlows/gui/doc/rst_prolog.rst delete mode 100644 CoreFlows/gui/doc/solverlabcode.rst delete mode 100644 CoreFlows/gui/doc/specificinstall.rst delete mode 100644 CoreFlows/gui/doc/svlotherfilewidget.rst delete mode 100644 CoreFlows/gui/doc/tips.rst delete mode 100644 CoreFlows/gui/doc/usage.rst diff --git a/CoreFlows/gui/doc/FAQ.rst b/CoreFlows/gui/doc/FAQ.rst deleted file mode 100644 index 6a15ee6..0000000 --- a/CoreFlows/gui/doc/FAQ.rst +++ /dev/null @@ -1,44 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraFaq: - -************************************ -Add an Item in this FAQ -************************************ - -Edit *solverlabGUI/doc/src/FAQ.rst* and read documentation :ref:`iraDocumentation_compilation`. - - -************************************ -FAQ -************************************ - - -Why there is NOT all options of Solverlab code in SolverlabObjects tree ? -.......................................................................... - -Default user mode is set to **simple**, for beginners use. - -Select action *change user mode* in contextual menu of *Solverlab* node of tree -(which is first line/node of tree). - -.. image:: images/iraUserMode1.png - :align: center - -Then Apply as **advanced**. - -.. image:: images/iraUserMode2.png - :align: center - -User can edit/modify value *General.usermode* parameter in the -:ref:`iraConfiguration`, to get a permanent setting. - - -Next question ? -........................... - -Here there is your next answer etc. - - - diff --git a/CoreFlows/gui/doc/apidoc.rst b/CoreFlows/gui/doc/apidoc.rst deleted file mode 100644 index 3c6ada4..0000000 --- a/CoreFlows/gui/doc/apidoc.rst +++ /dev/null @@ -1,16 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -Code documentation -================== - -.. toctree:: - :maxdepth: 1 - - solverlabpy - configparserpy - settingspy - filewatcherpy - - diff --git a/CoreFlows/gui/doc/apidoc_solverlabpy/modules.rst b/CoreFlows/gui/doc/apidoc_solverlabpy/modules.rst deleted file mode 100644 index 431d197..0000000 --- a/CoreFlows/gui/doc/apidoc_solverlabpy/modules.rst +++ /dev/null @@ -1,7 +0,0 @@ -solverlabpy -=========== - -.. toctree:: - :maxdepth: 4 - - solverlabpy diff --git a/CoreFlows/gui/doc/background.rst b/CoreFlows/gui/doc/background.rst index c728029..7d7017f 100644 --- a/CoreFlows/gui/doc/background.rst +++ b/CoreFlows/gui/doc/background.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _iraBackground: diff --git a/CoreFlows/gui/doc/conf.py b/CoreFlows/gui/doc/conf.py index 921b8d2..7a8a32e 100644 --- a/CoreFlows/gui/doc/conf.py +++ b/CoreFlows/gui/doc/conf.py @@ -75,16 +75,16 @@ master_doc = 'index' # General information about the project. project = 'solverlabGUI' -copyright = '2018-2022, CEA' +copyright = '2018-2020, CEA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = 'Sphinx @SPHINX_TARGET_VERSION_MAJOR@.@SPHINX_TARGET_VERSION_MINOR@' +version = '0.0' # The full version, including alpha/beta/rc tags. -release = '@SOLVERLAB_VERSION_MAJOR@.@SOLVERLAB_VERSION_MINOR@.@SOLVERLAB_VERSION_SUBMINOR@' +release = '0.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -247,7 +247,7 @@ latex_elements = { # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'solverlabGUI.tex', 'solverlabGUI Documentation', - 'CEA DES/ISAS/DM2S/STMF/LGLS', 'manual'), + 'CEA DEN/DANS/DM2S/STMF/LGLS', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -280,6 +280,6 @@ latex_show_urls = 'footnote' # sphinx version 1.7 # True # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'solverlabGUI', 'solverlabGUI Documentation', - ['CEA DES/ISAS/DM2S/STMF/LGLS'], 1) + ['CEA DEN/DANS/DM2S/STMF/LGLS'], 1) ] diff --git a/CoreFlows/gui/doc/configuration.rst b/CoreFlows/gui/doc/configuration.rst deleted file mode 100644 index 37d4f8c..0000000 --- a/CoreFlows/gui/doc/configuration.rst +++ /dev/null @@ -1,46 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraConfiguration: - -**************************** -SolverlabGUI configuration -**************************** - -SolverlabGUI uses files to store its configuration parameters. -It uses ConfigParser_ package, from The Python Standard Library. - -Two configuration files are created or used at solverlabGUI launch, -and located at *SOLVERLABGUI_WORKDIR* directory. - -#. file *.../SOLVERLABGUI_WORKDIR/solverlabGUI_user.cfg* -#. file *.../SOLVERLABGUI_WORKDIR/solverlabGUI_default.cfg* - -.. note:: **User may edit/modify** file *solverlabGUI_user.cfg* - - -Syntax -======== - -See https://docs.python.org/3/library/configparser.html - - -.. _iraConfiguration_description: - -Description -============= - -The effective configuration **is a merge** of these two previous files. -Parameters in *solverlabGUI_user.cfg* override parameters in *solverlabGUI_default.cfg*. - -User will find **all allowed parameters** in systematically up-to-dated -*solverlabGUI_default.cfg*. - - - - - - - - - diff --git a/CoreFlows/gui/doc/documentation.rst b/CoreFlows/gui/doc/documentation.rst deleted file mode 100644 index be1a2fb..0000000 --- a/CoreFlows/gui/doc/documentation.rst +++ /dev/null @@ -1,88 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraDocumentation: - -************************************ -Documentation -************************************ - -.. _iraDocumentation_consultation: - - -Doc consultation -================= - -To display solverlabGUI html documentation in your web browser *firefox*, or *else*. -The initial entry file is located at *solverlabGUI/doc/build/html/index.html*. - -.. code-block:: bash - - # Linux bash, as an example - cd .../solverlabGUI - firefox doc/build/html/index.html & - # or as CLI_ - solverlabGUI --doc - -.. _iraDocumentation_modification: - -Doc modification -================= - -To modify solverlabGUI documentation with simple editor *pluma*, or else. - -Read the manual, see http://www.sphinx-doc.org/en/stable/tutorial.html, -or may be copy/paste from 'Show Source' item. - -.. code-block:: bash - - # Linux bash, as an example - cd ...solverlabGUI/ - tmp=$(find doc -name "*.rst") - pluma $tmp & - - -.. _iraDocumentation_compilation: - -Doc compilation Linux -====================== - -On a Linux system, to compile solverlabGUI html documentation, -programmers use installed GNU_ *make*, and SPHINX_. - -.. warning:: To make documentation **pdf** programmers needs - installed *texlive* package (preferably up to date version). - See: https://www.tug.org/texlive/quickinstall.html - - -.. code-block:: text - - cd ...solverlabGUI/doc - cat README # read some environment setup information - # ... and read it - make - Please use `make ' where is one of - html to make standalone HTML files - dirhtml to make HTML files named index.html in directories - singlehtml to make a single large HTML file - pickle to make pickle files - json to make JSON files - htmlhelp to make HTML files and a HTML help project - qthelp to make HTML files and a qthelp project - devhelp to make HTML files and a Devhelp project - epub to make an epub - latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - latexpdf to make LaTeX files and run them through pdflatex - text to make text files - man to make manual pages - changes to make an overview of all changed/added/deprecated items - linkcheck to check all external links for integrity - doctest to run all doctests embedded in the documentation (if enabled) - - # and then - make html # make html doc - make latexpdf # make pdf doc - - - - diff --git a/CoreFlows/gui/doc/exploredirwidget.rst b/CoreFlows/gui/doc/exploredirwidget.rst deleted file mode 100644 index 5a0ec4f..0000000 --- a/CoreFlows/gui/doc/exploredirwidget.rst +++ /dev/null @@ -1,68 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraExploreDirWidget: - -Explore Dir widget --------------------------- - -This widget displays the contents of user solverlabGUI working directory. -This directory is usually referenced as *SOLVERLABGUI_WORKDIR*. - -Its usage is like a **simple** file explorer. - -.. note:: Theses result files of Solverlab code are located in sub-directories named *output*. - - -.. image:: images/solverlabExploreDirWidget1.png - :scale: 80 % - :align: center - -There are three main widgets (from left to right): - -#. Directories names widget -#. Files names widget -#. File contents widget - -.. note:: The lower *selected files* widget is for future improvments, no usage *yet*. - - -There are some contextual menus to explore directories, and to display input/output text files. - - -Directories names widget menu -:::::::::::::::::::::::::::::: - -.. image:: images/solverlabExploreDirectoriesMenu1.png - :scale: 80 % - :align: center - -This menu contains some elementary actions to navigate in **all** disk directories. - - -.. _iraFilesNamesMenu: - -Files names widget menu -::::::::::::::::::::::::: - -.. image:: images/solverlabExploreFilesMenu1.png - :scale: 80 % - :align: center - - -This menu contains some actions to apply on selected file. - - -Files contents widget menu -:::::::::::::::::::::::::::::::::: - -.. image:: images/solverlabExploreDisplayMenu1.png - :scale: 80 % - :align: center - -This menu contains some elementary actions to apply on displayed file. -The files are *syntax highlighted* if possible, using highlight_ tool, only on Linux distributions for now. - -.. warning:: The lower *highlight theme* action is displayed only for Linux distribution. - - diff --git a/CoreFlows/gui/doc/generaluse.rst b/CoreFlows/gui/doc/generaluse.rst index 4097450..fda9f46 100644 --- a/CoreFlows/gui/doc/generaluse.rst +++ b/CoreFlows/gui/doc/generaluse.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _generalUse: @@ -9,22 +9,36 @@ Usage of the GUI Create a new *Solverlab tree* by clicking on the first item in the **TOOLBAR** +.. image:: images/guitips1.png + :align: center + Right click on the *fileMed* Field to import your .med you want to study. + +.. image:: images/guitips2.png + :align: center + Then Right click on *Model* to choose the physical model you want to apply on your file. +.. image:: images/guitips3.png + :align: center + .. note:: All model are not implemented yet in the GUI. You can now modify all the data on your model. - -Before launching the simulation check *Analysis* to select how you want to launch the simulation. - -.. warning:: file_name under *Model/computation_parameters* is the name of the result file. - name under *Analysis/dataInformations* is the directory name where the result file will be stored. -All model use *computation_parameters*. -(TODO explicit paramters with pictures) +All model use *computation_parameters* and *numerical_parameters*. + +.. image:: images/guitips5.png + :align: center +*file_name* is the name of the result file solverlab at the end of the simulation. + To launch the simulation you have to go in the *Analysis* section of the **TREE VIEW**. -(picture of analysis field) -You can select where to save your file. -Choose to launch in foreground (will stop the gui until the solverlab is done) or background and launch another simulation. +Before launching the simulation check *Analysis* to select how you want to launch the simulation. + +.. image:: images/guitips4.png + :align: center + +*name* under *Analysis/dataInformations* is the directory name where the result file will be stored. + +Choose to launch in foreground (this can stop the gui for a long time if the simulation is big) or background and launch another simulation. diff --git a/CoreFlows/gui/doc/images/diffusionequationtree.png b/CoreFlows/gui/doc/images/diffusionequationtree.png index 2fd6d65176bbda3bd8f2105bb11e6af8ea87b470..8026e0f82e2a1317b73e2e6be3275616832d6a34 100644 GIT binary patch delta 5749 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 F`7a>nd_4dF delta 27691 zcmag`by$`A)-MhtU?7MHDh(pt-K8KPEv>X5UDC~s0s=}%ORETo2uODc(jg$-UDDmZ zG1uPD+0S{eeXe)?v(}>KoZlGZQ{xV5M2}j>cz+igJ?GjLG&Hn|6Fh+kDr#i-MkB|y zM;BT5X>kJc8R-)xM{r9{r-oGdHZV-_NIuRUh*~Ujgna+AFdf$TQ)1xu4UEfA>#EJj zJ93lcdX&xagW3w z5Mm^-x{&2<$fBWLzha^O)aj|BLViQQB@8|R-Y9u=4%EL3eb66Y!>kb@pDt{>F5!!Q z53LaQo!up5sB+^6LvG2d2JzSeqfgWf*MctJzH^6XAHC-8kAv4LKN^Ra@za7?_hUbs z|E20_%)K@+G(&od&ub~6e*2ci=hqC635GUq&d`uP>G^6`w^+l*HYCVx)+JWhP`KE! zPUh_`AtCWrw>B{F>iYURnt+hd%-mcfd+q7xKa-WNb_oc-U6@?@XRSPa9?L(EtvtoW z#aUQbo@A-Jd3f}e*yt!F34AKYlA*bI z5WFR`ZX|_u+tFJ^N>Hr(Z7rTeq;CFWC-%fCG%_->B8t(`Q3683s}FQ_$-=_I5Q=Lt z*F8Nwjf{;Az9u6k=H`zrEx)N=Op5Dn9W)zwZCwr}<DQ&!qXM z=F-mZPm;s=##b#YEXV{M{6j);gk0B8$4VwDoZlhv^LMoGl9FcMc}Fiho0reQ&E1!P ztVyM=zGG_Ja@RZ!z>A!FEA`oP81pI~Il10ceyHO4-`{+Ed}CGaYK-me?bJd-Bsw}e z>5GvuG3n8;sv80OHpa#cYon#bv9xq_Oi19HHw7h@L#%RTm(Y(|P0Ik1){ z>5+XWXXjt7t-<8NE~s_AfQ%ktsIi$@GyE_%YhiJ5|J%zC)YYT$-yz4k*i}pK zHmBnk$tkJ)Y0B{T{4Z3=xPE!~@=!;f|am#ig{R=&*VOlWv` znC0mY-@kvYtE#Hdz8cilaPh<@Cbqx5gD~rxPl}0&d7Z44%5~5F48SH6^-yP2mX)n< zZ1n%8k&XUxxtBJKOi=YpMIa9G&&5pMn$DobnS$N;~}5j z-sj;}NlOOenrzRt>Q*>mUA=nMWo<<2XnX$B2QHKA;gsT2HLsR!yGEzTy#DWS;c{;}_QJx#(8x${p_y`em05QRnXrpO zR;_liWs%ij?qlbJ_3=bsU$n9DaeEiUg{_y5S|;pKx+-!T&`j;YnPhl2xi=8qC#u{^#pM_@o~$VF(eBRLH!(?~gjdwY$4A z3durmDxAlMt4|oxWR#~1yYC_n>th$PFa7cCM2}L&toB#)2;DaCrT^wKHYTtf%smNT z5qDl8a(6F3JPLiJr4`o{n%GxWe)Z&F<7ej@xgeUvHCcz5z5GH)!}i!v5wEYwOCcc& zOOulal!KJS#1H$wDQO?*J2`x7t??G7Ig|)0O~KKsF>Pu(YVBxg`SRd3!p(QS$bX`! zj690xGAWLYVbuwf3Gam;g+Gk{nm=(#-{dt0gI3SZ&%^ugy6FHbKE)m9#5&wBd+YNrxuv{;^R`6{~NHk-yGLD(1zK zqf;7#hD{~M^MAH3lyorK9JY)>WiA1=U$PDo*O33cgSQRt-n~miLSh8fF*q0t3ijV2 zmEB=+TuL#87$%LPSQArI_}=3eFTP+tMQ!=1o%h+^;FpXHd{WYO&yDKlsd_&sFW)ew zBa;pdta`s-^<^q&s%0vbm6uO1EHvE|Km8b;r(d1mvA6Qv!a}zH8=?^})CENv-atD*9aLVp9 zneaKopqZ1K>gf{7%Hahj?OfJF9J_maST}EKwXy3}JgRhA`%zMoAstH6k;osOltgA^ zWaPF{eehU8q45{;>oOrBp;C&7Y#=T<+S2b&7;J28EYAw&;`h+Lq^CcJPy6Hvp7ZL! zuRnjH*T*ZPA|rnmS@eBbR}0~8b|nipM>DEz?(IpX^`IHT z`wk-)E^}PO{q*S*nZQfmy1EBBYy5T-9j8Y-!QtVVK4-_s?n?hV zp@;PJ^!%NuPW<@sUM#zTQo3Bs(?Zi5nwpyafq?`R6iV%}tb#A6(9o{plHC&#NotLv z7cWey9jQUQg;8I+fB*H+(9;BdJJfFmg@n*>aJUOhP!OKsIvt9 z6PE2wp;0ph(H7BM!k%4%wBn|o?wZhq~7r6m&@?6whnqDP37)TbWv$I8mh6BGJY zC)e*VF(7e_YFCQ2L*wJ)2MUUcPO5oSy_y? zZr##e>?&Nj6*exfgGLL#l^tV(gX2th1SCbsHWV~@>o|-FCT%M z3H3p@#_Jh6+gn!XXl*gff$8bAXD0`lGT{_nr(4Z(?Cdl&{?MVHo0-XEDkU!s=1~&R zDWHAS%+WqPJbaR=ME*S|N6=yJ8k*x`m&xu@&r=;8ZmWUsiv!dtitzy-P1dMgC)z#F{5DGv;1D!?|df{7sZ*OltTb$?zx2YZc7D|7w^tYG$h`!!ituAGzu;iTiHS})Jvh&wXSTGpHU9aNBpa1sY!Q$6 zjdXP24CER7TJCF>g*MfhP)y9vhGw<;7T-zb{^23c^R*H7rHN{GTwIOo(N;Vp`x}$3 zxq6fK2e$Y5_+p4SjYRfVc+m`}e};2%7a9)z;B4dbyW-s3ZAZhZQ-V;j{Jko6Vog=; zarDEa{R$U1_tIE7q4#lBdnB!+fagBWz`&i&gH+j2l47*7m(yfcgFey<3Or0PZ-ty! zxLv-B-@Q8@vvan;hA9`rMZ?AQ8rnSUKf^}Jz>JG_=jf)@@*cUK6!rC8BD%@=e%n4 z$gWn;aJYc|S)nO5ujQYa+3-vT6KujR8oC8KW-VLO#jXbRY)!xAK6>*`T((E{re<34 zxa2~G9(!*k+7H%7>q{qneg#r?(Fz=5`dtk-Yzhgcp`*L)PKf{*o9;@+eEoX=htV$~ zmyPq-EH#SwZZ2Dzw4&)?ZW`w0d4tzaYrIl4lb=5q|6Ocl zH;_BtHuEd{Y2`k*?RZ7j-kX8nzu(u@-Gfc;>d&4g6S}Q?KP;X`@RIMR=N2NO!gwSV z2jQ+?+~FG`rHCtk&Ys5}$=9mN)lpYGt-Nz3r`;QXPX*k!8D^Ui-}rbz50B%+;~E*G z8Jqjm)HHRU8;L~RFl*0TBA}YyW*9BDV#c_Nn`Ws&@8qP;V>?EsrNyt5d|cDAx4OK{ zX+885=Z3sm@izikx6h`XLVt2r-@JNtX<}kL=MLBQd@bG2dw|8vv3$qm-HJaq?)OsHHpg|oT8zZrwZ?mJFacg~<{>16; zkl)s9AeZGI8lSU0!h(VV^NFhB0ilJ3yKR$}&Wvr*jO|cB-F6uet|nMttDL+%y9W*q zk(h{9G!Y$L1`g3wGu)PEU#1=u>aV-$<58(E>mZe zWMOT$5*;w-0Tg0vX!rmQBPrka8Gv3QKBq*!-@hxs8D`L6LbzT4hRpGXH_OFE!5AJI z5>iZOqLJM{R_Q7enZ!`zzH!P|kjrH)f|`Z@D(K~Nh)L9v!1WE7d4oL>BQ zy5Z`@SJqUoZ7N&a4Lm#!?Ba^sDk>2;#J!}U($rV46X$wa#V6|E5jY}+?Q!N*`96nYCEr1U&g@!|Jk$n@7l#U^z?*(|1ufd+RC=a+B~gr!gXCAyK;|rkBVNI zf|h)mV4{v0(zeo0Jg)GuEKB`+&oHVr|Jy_A0SWY6nQy* z0H_7B`L_)Kv&CphS^*0+HM!l!g7q*yivbo?ZBi~>#vQU=PE3d7t+Gl7KpC3h70Z{(mZ3EhZUEG&1gN_$X zK<1ARHp1V%!%mlvGhH7m$G4{Pe@}B@%Bo$oR7@j8PEMY{WASsPKRZjWvIJ8b^>?b> z0lwwY_5gf(i}a+)^i{b#{;@3n*EeInKLV&P5jj>%*JCqQrh@)YuacwS=H~YD_NM)Z zX64S&3Lps5(b-8$Bynx)O3RG|`3JAt+u9`3dOr4;x3soWadQ)hii+;;&TU?&ny_uV zk)Tsz&Di4>8W|a>uXD2t2)|CLtpzJ7BILx7ikz2Y>R+Q072Gz)ylin9-A|rXt&?<{TZ{^u{l1!owVF< zlvF~4Y1h;c$Oy~p?p6fkz-MSw*vQhd$@h{EK=W8;t)H|@|KfHtsY~Z8$Ush_2wd?P zCMEorC@zFmpQ!8vtw&#eJS*#FJa2m{h3K(bP6CSO!oI#CCXSz)@863V^t|xlf`i`N z-ya%5O)vK`0JUj}$}i7OPHMK5pMg@q;qskweLa*&*o8?*Na$Y&L+g}4*V>wAw&}(v zcgLHjr-(FE3`G|gJ^+^ZPE?IL%H6L7Sy!|^{7EpH07lH>75{vS+!eJwINdRKcT6bKgx2B2oZBEHSeW@gsPjrPSx zX+QjCJ)fmuor#Hww|ZnK?f3savmGm|hbr1OR_+LQH4jq{r3pxEn$pnI*Tz0F17=rf z+6iQ=3CI*^JE|2YALSbadPqL@Fplr5ixFqnY}bIB<6dlaPeuEohSZ)gDVrOE0JD zE|u6#b^)>cpSQ_B>%2Dw`r`*tPrkuC1DSMH6dAqCs@?ee6W8-^coGbSctzI3s{gxs z$gvRTp2o>5D14E6cQ+u`d3`MY*E>RSXJmA0YAVx5V>(J%>=Q@>_=Z%Ef&sQe!IAS( zW@Gv58vF*e$x^u})CzANYQy75f?sWKZe)MpUi8ya9URK{!MwWh{^ND3bKbeW7(3Wm zoy{ec1k4%Q?|LVKt{Ze*HY2)NZ{Tt?)+&Nn1VDi4R=1?GvhoNUf;!Y9wdWqMpdVak z<>ur2clDqbm|=M5ZtnlpPTcnI$7tiov3=KtBb>J+Hv)ssA#fc zqNd~Vu04gw7&umjvH^y3_p5wiYUR|!^I7Q_7jo7yUH-y+}!-!@FN}5 z3W@V7pJB%bMixDxz*Gd6nwR&Eqoe%s0j0vpe)1)tFU_Nsg6HSlNBg6SV>RT;XU8|< z`E1xGy$WAJ+XN6Xy~vMmw_*F>JT&*XzU|FVE}yx%xIQ5lgo*bTVU52(&Bs+!;|`+`t*dh9KHMM0b8>QeTXx2Yj&910 zxcpTQBf~OjjTHQos~1kpy#V@4)9y0Cwd>m5A2`*}o|e6&BPL${u3Jt_O-)^MY)KB1 z&Qv>l>1Wk>10PZ66;EIfqCf&(omx2{#V@CuMZ6AuP1*+xO*CGWl@Xcfz-upb=_&ns zThiDxG1G99-Vngd#)KF<*&-!^i2O23&1v}cE9T3W$`GPy$$;y3EQWqCg5u}q>1wjj z5dbThZ!->myJW$eYVLN9lZ(e5m^GCjTAsmwahRmVo91g=W6Do zH_3+N-3~AF*^J1RJ4lb!rs_`Z(fhjzZr4XicvwM0FnaMq^B>HD(da!JxR^E#TOBAODd^MZbPf{_YWSBOxtEN^{%pfqrZ3*$9hum0KI2__me8< z0_HpMrs1Z1F+UqyMx8Mt-+qdmC-Ub_ z59Ba_Fck<&1lo9o`{y3>^T^%eRc!2&S77Eq5x1lj>_}R^X|6An@gK%>J^Te#LzkxJ zov%;o-(V4Bh@M?rIz7vOJ5lYuG(H+wRHQ!e{V4h}wkbZ*VN6nx#Hl2g?oraC10j4e z-zc>kKYt=hmyR5N+KldZpML^I)LURe8q1d4kStsp)9AE4r{ds1L0BGU+NqsyJuCw7 zIuxZ=?cd$n$_M%vm6(`~GoGFy_Tu7voPB%(nu^2blo(Hf$j=6Lhr^c~Ya`CbY2#T> zpJ_b7*EL^CS**c&Ebocx6F>6vG46p{fu#BzZ&Cg#@;s=q9wTb$&#q1DnTv>t`St7F zVo-RvhDRE_6j&pSqfYB%?>1`1KQ@Z;^T&Pt`q<}WZAR_Dacf2}SFch|U!UU5n{-rF zuBfPRK)+5UT0YYb5)1ZSua5Ur)tr2M>CXxW$b^b6DEpT;E;t`PT>ZfDT!0Z_JYdx7 zx(1XT3X8^^5Y%K)l9`&q_D~JSYW2E80#7nDCJv)UH#%h>N@HWSwpdnq5GIb6GcRh? zbpY2l1Yj>dEw&_vo?G8-cRQ4X7sGI>?i0(?P0ohEgJw7^a7`IG{vNu5%sM|-o=U{^ zg&#;aH0K?pOIYzjMWoVcIkcuG;nzDe`x6&*;FAJ^{ZKMx(cC;-rv79ZJFPCr!bcn} zrTn7JOTW;05*=pkz5YhxUP)SKCuc!+IhS`-Brh3BiW@$9EduXzc9;)A&VRvwF05ux; zaP~jW-7Ac%cP(^o-n==GtH=B>8lj<2nctjlfNLs+PW6bYD^)!F)2HXJQUT6Y#h$r) zdUAtxct1zjc1!?vh-uOOR;$)Ef4mt+&|)~bxlanUK6;3ry}ojTR-meMCSA4_IH^Xoyi!Q2}L}5Ik_u zTemhh@6pm;oaZRNVNP|Wz?OCR)wR%>7%z^9ZEbD+$umd=0B!$wh_fq6Q1a(|6M6BowX;m(Qu&%nUL!1ZFL>=6A!zu4MIZ>cPBLfE-Mu+}s4Fr>6l$0hs{__%k5X&@(Vx`+qqfxzV7H#Dmfu_5OVwP!Typ!;fSFDligy^(`$y;KJOxd$$Qp?|29>IIb$m%cpst?87Z_01Fyi z|9E~o3J;GF47+Zj@Bo@}qt@>3aFme+ZdrKvO;{Wj-7-7^0s=B}aI?_>03OiV*7 zt9OuWfQ`hweA%Lt;<=$=-B7-9@%i~m_F^|5K0dw#PylQ~w#K0$B2iI96pqd#5clVO zt1!#yv_jOsZZ0+^nzThf%+a*cV@EkJkXt~5utAi8&ymz>ROqv3&%l2Zb)*D86uc0t ze)kiX^FN~b`S}6@0_L4*3rkCnb#>4EbL{QyFSEUFm$Fw$A{X-_Qd3jQ*?G83^;I3^ z7Nv-K&TMRiBgMtV10@+58Eu<%zQx77AjeWOGq1+0F-pnE%q}f4^sxfl?KUzq3-t5D z0HwlxTJJEf%-7b+O5Vwdha^;5)(KXAXlPE^&)C>Fji!+vpMYTAFv#evsdsFw>UROy z{otK7|9IX2HS&(A=l&OP_vMZt6ySEaNrgyDOQVgI*<)a1V}k}W;QY6?u(Xt(iRmpk zNQ)_%d8>XLw84+Q`jd!x2~2t)kVCwJPFOe*Y(%hou&}Y!CN${&aY1zFgsQ8nW&f*H z0^y1|FhR&*6@0hX<624sKOPsyH|#srQr3Kv2NM#N6DRmV`ThSbK3IZW6tar@tT)OG7V* zsima_A5zND@E#cZs9P05EyF}FnWJ62xwZ94DOm^%634lgh{XZK!pKMhf(_t@{p{)r zgKzcZ8Hm#F*4B7$-oL+?w91qLWg26}sNAf~N4gO)j7u5Rt`dsQq z?4P^>?){q{0~Y*0mJZ6YaYwaJ0k^AYi(O}wq8_K2jiSwHKYsl9A|0v?PDVI%Uo;Mz5do-UosGei zz4^wjCZiudm|wZE5>``lDG+ylGTwZ&c^F{CTxqbCl@%U#q z0oV154}3NvfbT*3y#c`MvAq2J-(l{*qor!H4ru%PF<4l`IWcn*5-!i}HXeI?WLC);nqgx`S?sm6caF6kBPPxo)tb%{D3i>hHhNQrkUoekMFz zyehmtq1f1zflngbay~B91te|NE+>vjH$w|B#?14>dQ#B9w~|f1?PjX zt9CtMhMd%B$po25newyPn3&eqC>aPgI7Xxp)@7+pas!D4rpkz=RK=H{kMw{y071LV z`#E{p+46z7$#9;|nvXnR%fwk2xqN6wR%VKZ=ap_H?dvu`!vdd#;|d;vW|F7M2G98u&kx z7*8r)^ehLyho&GY6kro@x@}$qZ{k_@Ii!QK)G~b{l=OXrf|wzJq53VFs;i3)4J5_H zokhfGcd0d++3XSU><|*(V8A*r7nSN6-A76{I=aOJBch#d`U2fIvbO%V`y};Tn(KrGwHrLaD)A3T<)N*sC7_%6BA|zE0$)j^|#)sBp3AEV7t={5Z&y zIV==MD;7^$nht!gVv+~$&9U$Cx-%5Bhbx@Z3Y4U!uY`s5p9=(k9{%zC4n(D<5dbA} zd5qlLeyZs>7Xt3@Vj0@vN=-rc_&ae%-X7Q8P+uSM3L~($%pQAvO!kqC%vE4`ZO3<* zN6=p$tlM;SvKFlr6ca6L5P;xi;#mxlrIavEvcpg1x0oL<+e%XsziI z0jEcINO{bEjucPgQ}{#x{z>^9@?GS)iN+-}Gr|(<;TE{+ANV)a*mMPSKCXjy@T|s* z6}3F0rG9FeHT2Zfeh%~JNn=BB>E&ZF#rBZbm7dh|lF**=!7@sW=RU*MZHBzkTUuZ* zI20o2H^W^5Vv+6EKqw@V59(O{tf)SclHz*t*e)k(8)1)nC9VZ@#-jHNt)O7Ipc8{X z$_dNWlVLQNxE?Ak39*OBC4BsC_5vMkZ9;7=P~V1Y&a6NuZb+A}1#_*krF%6zwjKLH zl}ky9i~3i?hUtbAa9h~WfX94@k5|i0+EOcB9m*HxHaqUi(MiqJSL^HVZ|Gn_W(JUh z3DV{m=IQS`rIA z#S3PYe7yEO$}M2??Jy&!{$KnLB_%Oyv6*a4 ztO2W=h3f2g)z84v0OSWKISByJ)R|(qye!P0lK6snxb=%ro|xyWFv*Rw%G!o##;6o+ z0|@3=^!$thD#{J90zwaci7Htjq|-aygFBrFKPid_TUcZf5fiIHMBvpc1IWN!Urt}1 zS=jHwUIUyVR94PwG~4vRwBy6g2jGs6l-hkS)=%Ukht9|b%HuFN;ICe_%gW0`NGs%c zkCek{X{mJfMoW~e+6^3*c@3t2T)cm0=Ww*%5|+5EErKEV^>+bshk3xrMC0LW8vjGB z_y2$C<_sf1qq+~AM>{(6b90a)2E{-twc*x%*k_;7$h?a zfYa>iYIbp0R1|^ZLPvyQFuujFw|5{BcjqYuAwn4V=@V5Pn_jOr1u^l_82_8k_aKpi zwFh}32(euhul4oxOhcL&SrCHEFNorm_>w52L#_h20f$N3?W*c(i-GUNiiv#lwHIf3 zsuX}0Q^mZAc+Bx2zy}}^96^8stiWrU+uEQAlR5(ZGfAYMx3#s6M%WEfAcCClvZj3x z5wHh^1(mq7u~7u(dbBraP`nQghxi*@@;2d(DoJ27V9}>*0_2-efd9!aDKXugs@L9m zdgff_0QC&6Q5Yn5X8*-pmzS3>zhT}OuMEt~V~4oh(C8@lixxak;EIiSypNqAL4x=v zCX&J%Io)iyc{ydHZ${-QP5>&XW7ksSeR4P*NXcMOBLWoo3ou~d(2$6^Aa4emgu;_Ay8V0v@{zuzDzB;Ogo+Qe@!=y9b7vDKKkP%q~MQ zvA}Ur=?x^3KR)!kE|LeFA%ccCSMIvQ5qt`<4F3*Q4e{01&L5UhFb+5fBnM41^4#1Nk%kh^F8{_TJti{1ud z!u-rpAGi!qg){){phluHfD=`Mp8Ip%=j230EmtYM9zaKc82!_yPZXaWG>LFFT{uvAtKkj>4y@o{oA05kwR4?)b0UIV7CxUL zIC%PSYZk0uB4D@*ii*#Q%x{4#OUt+4{p>36gBT*vN+2~M1982G|LkH=ak2BOW_x?2 zYh5SbNGfL=jt-Yu7g;RJv(GH@^7063)6m8s36BcGS3ubm0Q!94#s5Y1xt(2J%o8xV zi%U3pcxZTeHHIe|8YHu;K*wM|8w0k761eN@A3odv;tlK*i27ags87$&{qvMZcB|ZO z-<71AD54*Hm8xKP`pCtlM6>)ojn)jr(=A17>}Ri}q@=XXBDLLGCJ=R(q4a(P!PM(H z-N1rCN9+T?58dQnDf=jpH89@C#mP816-6qfG&eQ987;N5Vg)y^v8gFzlj?GR;nh2k z#OpEVflne|u0(j}PI~m6UpxP-gIgb@6B&U=!%Z4I-Zgpgf(9lMfR)L<-bF`Vlob#i z9k1pIx~`K!Uft_xJ`TmT0d$Evp8;*-vKn9kQA!zbFDTEbYl1qIzMv3=U&g+>*{3WX z5f|4CY*qj{7kMwvQvpH$T!UJatp(}3dl2toXV1G|+z)9?yV^6&Dk!8rBZ`anq^Qcrk0^F4amsN(-Rf7grFdtRu~BQ z@)#ER^JPGN8S- }*LdK?dkf5lyY|nXK^!vKroNeBzmRXFG34F-3$JXfO}S4cKQm zwq-3_p86vGZhfF7g=A%A4HSU?%8elBUUylZ0@KC-4W}8DG*D_dpfq8PV5^!^F<7_A zoqFppqQ_Ca}@w zu)S_>W%jEBiWcusUuSsEPK3m~%{M;dQI$Q1R;yWiBao`QiHr!mahy1YyDl7!t3n;7E=^+|W*8iBJ z|F<`a_5)rSGNElN{SUwPrvsIyqn5#)OAEi-`{Q|3W(hUu;uoixREd0RG)yZ(_4UH7 zot?j$GqKTD2a!Ms7`-Fx&bJ+x`4bw2Cs_B;8&f} zOU6wK&zE}zPfs0*V52^OD^Po32ml|a?u#sS^dwv!um;myH(tr<0E2Jo?3`cC8?*;> z)Z43?rQILglSV(g^i*+pV{H@*Tr7yIV=ga;FZHB}gQ*ll_~9^>n}g${O!&EP2M=;j zcAeE3a$Kfey8hMG)PTKwAw>w8Qc)nwZ~puV453(i2M9NT|KJ`wJE7f1Zbwo%9%O4u zY)%r0x#{vvQl4kM_*eHGm87(>wRH#Bb%35Q znY41>MyV-+uL%u06taoD;Oa&DpJ;&%0D8`oyDW!EkYR@6B~7PHA^YUFEy#)351tO) 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 diff --git a/CoreFlows/gui/doc/images/emptyTreeview.png b/CoreFlows/gui/doc/images/emptyTreeview.png index 9b8f3c20df0750b426b81b2803d42f38a635af21..6f271dddd5588191d977fbe44d5ef18c56962c10 100644 GIT binary patch literal 34144 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%0D(2#+PK}d`Lw#FLI<5J0 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 literal 33609 zcmZ_01yoh<);$cOq6ngbARr(jAs|RMD2>uxf^({#?a8x*2Kzg z3!_#54eb${q{vGp$GG(gCoQFcv$~z`4m1qEpTFq*eS}g{QnJEcZ~C2ipII(`4_{DN z&F}cv$8r{9v=CE~9#OFsb4%UQz;ebr=_A&!{D$!<^2Yhb$9Z4)wubzf8u*t4j^f6K zoEGC;7PXZnBz!*K5xPO~>Kfk1>o~-B$jNoaE$+e(8WnAJW<}BdHI3h<_;N>xPx$+> z*Bv1r1(AET@OpW_D8Ae}i_u~VF0QD0PfWq^W1jfin3$OEXB(W^N?E&gr-~UeR2&=; zUbhGZ2CWqp6f)HcA15a#mseIUX)c)_y@8L|Gd!8iudvzB__PpCudLToa97r#_6idKMNJ&-Ww?Yt_2Pm%JOAU0OOSxNxHT_3KxHW5@cs`Dahhkt!!v9oL;} zs`=UrONk!T6cnEpJ7e+g-&dYjBjvHH8yY(DEt5y?X{oK`U9rj7>vlQY9? zAUlAJe^gF9qkm_og?w&nD>x&AhLqQSe!Rl=#NKSVCs``$dA-Tl?+xc(!9G2sM^J_2La0Sm_q>2R=6c;xR4Mm32 ztLo|NHv|x|2Iy@})g}_^xZahOmHq9o)s?GRhHVHjp*!-+(7X258cE$u!&jVz$;rt8 zQeJ|OGVwe_?n7CMU!C?AL&C$G%B|vsV9U|DsiW9 z2KmBkaH`M+_anv0(q-4grPT?wJ1;M9wrYOY56RHsVpBZWk50v3C{i_-)1;et=E zBN^{LcpwqU_(noXszb5NYN`hLaXoW7!t_^|yb&Q9R_e50Di&dD6`+B_$Qb{*FLbS2vE&>E6e(N$2*=F4%n2 z@p5MPc*EB3RIbM}U)Lup2|rF$I`kLl3iI*t1swL8uwBK(EHVz>xv5p{%&u8xxiH)0 z&&9*T^0w~dxy%B_*uGEpph>hQJ8lDukmL_OOD|t?qdrliv!f07q4g$GivX@a#U}rws5;xMJl}0+68m5_lqbD4SuLM4@Gn<065g%AY=908!p8c;hfdDYoE&4iug#)3qR z+=w4Po^&Pfzcw7L=7SZS%M*Dd8U;9y%RXqqN}Y1jTY%ElU2uT^$P~;mm~SNp`E$ zDYKmL@%7bR{g?H{%d0n2o-$oJmbw-0D?u1lW3ThiS&>H8`S>pCqFCdZ+v$FNe}59 zu%^_kta$Ml{HZPs zF^axCS5(??_`}gn2NqoTd{*kq{wNwJ%2<>1Tw{5xY(rqX`Qt>?Dqb2VY zOUwrNT3qF(uH%w*4CZQ%6zF0^M@RoiOS7KeS|Md+Wi_|3sBk^`MKRf%DtLW6LLZ;@9j)2XH$|C0j zvs9jVo)5EipD>`Pe6m?++u5w#>dRKniNn*?`vd1En$`HWesjPKq&>Ka{wgQi!;P^> zV>a@K52fVf?l3bmBPabny~;c<{Z3NN$=O+vQ75rcS6nM(`RA;xsSu3bYv)_FC;_XQ z6Y8w2ENpUtI6`g5PjFeWuz`9;Mq-^Y?0XmAD8JlEG04=)x;MsQ^*B>eH8uZW!U`&= zQq9)xY3T`zh7uYu_-UltSso^jYR3fu|(zPFJAeyJfd_*t^_~iZta~E5#--s zaj|m%SFbbrlLyQy>{b-4IYoVpsi*FGKp`70)W;OO*bnXPKO|;16KM$|B@%Q$FS1C3 zDB8HZ>yfWr-D6e)r|7Y4wf)BE%))~5vhYuvxxWmbX{E8^R?CWt<|Z7b(nS3UoXF1T zP%pmRXJQ-rk#MDDTZ2L_kLzcTvv~z2tcc8{PZtTG>Pa2<$?; zl|I+@)YR0K@d{Q;OG_?p?%p4gcnuC$(MzqSf`Wr_ZxJxm_4nh6i;GjsCP=}1LM3aQ zoJ@f8vUj#sOL8cW?`2hc5yA6eb$WhY1hNgc^!j=L z?By*&M%Q2Q_hz5AJ2d9gVnNAR>Ca$=x(6WcscK$avXnf&9S^DJb(~qatd@WO!XUeU zPT+U3xjc7j3ww%D2QbFR$7gzdqzKA(xT?037Y63-=kEp?RDP<}17dimma~Fw(Z^Vyy8eP`ekr)W2}sZfgu2* zb!K^40?I|g%PlWQSMSFB{uOMJ`=T%Nhx)S=X%GklSB-=6*>~m#I8H-D^ZD~yuHIR>|<(fTEyLn%tJ zUFy1e?OHM|7U0FI!_jv?wX0*`j`_zzDH~vOqC?pEv1JL;$C8JT##S&|<+&nUrY!X=sRM*1ry) z#{Q6=it3u6pkT!%^_S;WW#cIK>FMbgW2F}ArRGEjYeU9>V*!GYOzIFYYW;;ku7EN? z9Ow=82OxIfEdKuKR7;Kf1rM|}SFc`uP-<*oFul3SxFw&`=s2zK1pR{OXt8MnppJmj z?ihA|fH#HuEw|eunQ%WwMh@v;Bu;g92DXOMw1-9CnN7wfV)-&z?E+nl2~tPDlDpri z>x$=%=CmRcM4hujIYZmunyRfk%KBy4{yii_xA++&W7qa*XD1FWE-s|zqcG>kjs2?2 zIIcEjZrk;k|MGRFwr^_4<3pDJ8XHRjK!n!s4-{?Rz`)Ku->RhOFK6vGWq}WvKL-n( z`n(FKo7viu1#Cqlo6tBg5Dq`!k7s@Kg_e1jWCw%IwC}31vGM8Q#_NsIk}U1&-!pD) zqobqGX-@!uk5oD^343F=I)v#|+FL*<%4%p3FD@=ZTKco>W&!<5@w=fQKsJ4)7MlOe z*a1#IdGe$O8oOC8Dj~k&D}+ZAsIiHOc<32eJuY1v4tM5SSZ(GdAmx2YOQV7u4f&<0 zPVJI873Wae2RBss_ z)z}gEQub@!3M&YK$X6PDKv>2>J;3NdH7UBT3LWhsHUE{nm7I z;F@T5tx4~a>u&3rY%V`iOv{XU1`@Lrhixar2;0T=-1W$NmmU|qe;RCP|G2emR?@#l z>cnM7ZQxx?mychut9*Tjh_Xq?-@or`P8L1RPmF1y;|OEgk_aR&iQ=->NIts>^)#)Q zRr*|A@@`agrbJ&vMw|nCu|vQ7i4vuBzUac*R~7Ey**AetES#jI@$FjgMvasc67NAx zNzy2Zfd+~0XRd{>-|tqdT2ePLe!4iB4A#@l9|+YkP8M|xsa;q|$hF3BaF7FlZH@${ zLRxbOfk&jXif*M&E)iA=Z$o!=ue)WcxYr~;oIBCOOoyYvt3aadQe7Q+1T8hoD>Kk+Pkf-?X-2k z?{-?Lra8u9zkao$l;5Sa(4bXl@aKr%tF*^#`%eJIJ>om3Q&AbTTN{jJeB+GH-MeFy1Jh4oI%5T z<8`~uRZQF@#SAi0o^AvV>5@4HPEAaNLV2>?Uq(+&gfHecH`V7cvi{r-^?kZ%dL+SR z`{|3cW<}ik3)d8(2pI|i`5BvE7&l`}zrSC+vbb{ew-H}?c;XmekYv7q~@sUS2R`V+syAM%yA$f1S{h3(dd1F2pQ?wzj9?L8Du?S1aN z&kGnCXbX=k(|g^UeJr{_(`4(Vu8SDw17hfq zkFZHcLlgMNewp@b2%mJt3-*_7-5HOsV2!*VKpjpq>g2grS|%2#p_HS7 zfrp3J7G9*+lQhKjVbvj(M?he}Wa2kJU3iSyfLTwvG^YLfaYfJGBghl@q9J)ZOVp@= zoJe#&yFSbw7fd|@w{W&wEwr7Pzgt`G09O2-txUFv#ve1dERc&;k~!9VLo?5 zg}J#ue*6c}5{0fVVQX94Nt>RS7|+UzX;iEx+Jm6T_K}hBTZCQriB*x^@_Wp**)Dxq zkxw3>XDLjiDSnt}TUX{sf8WykoAW-tbdIX9ay3C)qOkK*yC`-E1eri&Ru z%uJ_+QqrB!SYki`QZcOG!y(~luCMpa%+!QSoG%vc#Umy4N=;R)Vb&Ec)wGYTSi?5&P351SWd1-ho_nNj z?IwxK%bHwV_?MsHJi%3eJteCxDe0u7a%-q>E7vp1{zFGkFc3(;{QX|9&dDv-4+N+5 z9?7p?iF}yDTKJ{M%&MHsIHzG!_2Y*K0mE^?>&ULqn3z|uUa^doUi{6~3^_g-xN3uU z!t$8XDyiSF&}QMD-ERhB4)Zvx4y^m*nJT%|iSDO&eSL4TS&om(4HoL-Lg!YWEbP*| z@(bG1#nBRaNT?*8@LaTeyzIN|^ornwwVSu2{#p2jUP$ggeLAkFsju04`yDywJ^E|kett-*kmWGz z|05U~6&)QC9o_mt}nL^RWF!k<*>R$ z$HP;M;k4@Piq{NS1-SA#lqMLkggL!_fTH!&^e~_uEsi!a?#`k}+B&{h6Da zc=62Te)vr~O{+M|#1=}{hqkt?Qqt1Ud^f;18DmTGBhIh;klr!jv$4Q`n#jf?RrCL} zenR-<4X(}&-UEI`q`1<(^t8@R%WJl6Q>f5NY55mv@~s!U2*YPaL9v9B|9akQf8K|y zt78&pgzg1~0S1;ImXaS?&(eABb=I6;N~;QZEx*IbEsYi7AsALDt5nPZh5#*6kw zqAPrI$y6f77saH_R5Fwc8_!$u9X{kOp>g@ zZNm2?KIq>+;Xk_hS0pjID_T9)N03}yOPavr47li>qa&tGBPb48%J5OQ`O#{GH5KG1o|)OC=MfYX->+XW0sH}P8;LZgrw40-p#lOp>gwuIF$9;z4O#%W88k}+ z)QgOWN}s*?9R_s8j43-JC$MgJh@V3ruHPQs1?5c{;Xk`*RQicYYJ_K zXKwDZgVljK&9$4}W_lr|DtI0TM$DwI_`)`Sa)AFsUX)BaY>@kF}hBg*y z70{sh5fK;f2i+mnt)Zde=Iz_ffa0Nb*jbFV0zOTTR?vF(>Zebifcf5qKK=d4?t)M^ zh)6yeYk(`s$;pEra{uWTM49i~&i}pZ>gwu;Pr0<_M2CM_@=7P%E2Z_bRC(>+@pL}A zA|*M0C}3GQ|pdv-T>WW8$?PIQ|VJfQGguv2?LY3Nv%-t8t_xIz}@`=J%WtixxfSE?tXEg3J8A~lpf8}`SBJMT+Ymv6|!qoZX>ktI5LCBCtG+FOTG$59{;6j7|F+yYV z{I_|b>xm69r==87t=MC5cbN)lSinJFvk^Ok#$P10_rdCq^mIhGfnSz8?mW(riJx5^ z$f-Kg?&`laH#fI3Tu2GTC+0$%=maj| zCLZ-$D=VEJ5B$F4EXyY|KRJ$jcjPRWV>5U$A)a>KOG;_=PyW_awF@Dd>X1hQRypL; zhRg{NVF0e{>FFVw3hHbM1ts|p(1RdD+`D_Xex%44ZU!hejE-nlOcD|jAULD>T{v8h zHmO*46R&wg=a&rF6*;E)I)YFEn`shVKL-ZlfC5)+()$^YMh0#BU`VGQNC9AgzKEsP zgO&vBC~QNF(3ydyWfu^I*dCf18uuPP?11Bs4wS=BU`r^3cLhvLpb9Xk|N8RppVDBy zPB-*&fo)|LW7q4TN0tEPqM)S25RQO1hsDJ2`ydbj5$Y+HnhfuKLM9F?Riwx;bZi@n z0(JzQjBaH~4(*z#{Ds?4!nisb)zWo=w%XeK{3~{}ryg#P|7N^F0|5O8$gGc`lI@OJ z)$Xk2*Y*KYz!#l?EP>`kPyv|vE-9%rw77KPZFey0+S_k^1VNHc<>!r${{H^SRlxQF z*^r7WV%Q!*#m&9c*9egb40Lg?-!UR2OibL`2=(;Dpr&p{MSsO15%VW_76l|Lh*DI~ zo;{no<^pV^;ra0nEcjQ@*qFNu^K@!~4R8n;{V}u#Sdt1PNJLFge}DXg;1L$Z7e}_H z(sCwXMr+);=xi)U_5Yr6=O3tNO4;hH$!DPwB2>^saSaHa32W(;v*kbnLFA6NZy$YQ z)#KpgY=Lwv$Ha-gIa+ed*m#N0`tjq(a`;|w>LJ~rzb$u9h}|cT0Kp_7A)zBtP;kno zga_3cdw#kG(j@SIBpl{%fkE8g7$an5E#f<1U|?9DsN_s^-M#s4D6g|j8pz=%Y;0^( z`l^|7pO%+RQZ0ZrJ{i0Z?Wj5a+R(}R#s)dXis!4eZ?VTXrqc3qrfl4|Q2&yC3*OCs zX_!p8MEs(@|AH>u59GrgpxO2g$E<9Dvx98uK?Tf*pq}%+q`GuDuQ1j66vum%7D`i_vu}pKhy92|ROk4^ zCG18aWFc5~lY#8}aGu#rdXzr;p8c;E;3KqpHjp42W=nxW_eQvL$X|2Q({=t#HGknt z9LjaLy4#=}0Cx%`8?}mxiuc-T@E;I#fwbEhP}P}PS@DJ31!^wKlT*ks{cu>#27mfO zRd6|6f6AtfWUYXJA5bKrG!v-hyPoW_L3!z3xbjz>so>oZW1d#UXJB68^6Zv-J^|T^ z_7>D&S;31&g^JecG`8U~8V;lYjcHO-EI>gHP+VKukZjm)^ zX9Nz4$h(RnxF~qxSqSHL;rrrbn?y0%k^4PSOLkCrb+=S;wo2WeJCt%haYNhtRqE(~ zC3b)1<6v`kdCW!PFHkU{D1qwZ0u(z^%9S3ApU>_%IyfA?% zFJU~N5{?$F8@8|DlX+L`Qeg!DcE7l(4HOTQu&-3U|K<6g?4X{30(dm(;wclatvml0 z9mL`|%LxtQHYoN8BjQ)+h2nzV6MElg2z>fN`w9NY;%GDX2@TE8T=3cPYR=Ysha-dI z?ICh*?Mi#5{-5e-ckj-Kjg^^?NE8{NOT}?5TE{XVE5Igs?%^L)<6G%M)xf_+`Y_I< zpL)yl9hvu6ajH^_vtAQmF$HI5W)9S>5#mXlN@oc}0Od+>cC;lTkKYx?{jw!!B1@}+ zj@4L3cdq%|%8i87&EMeO5TiaX0@kvRHK*k2>Hi+r#>Ag}L zrqa{j0?M8Q(!AEZ8X;4H{$!Q9h?uuxmco7LJofEmeGr@+5peto#PUcE3m%~2Ue}=9 zSwRzEDt3paZmv174rm4Tccle(E4bso@3*Fi?ggw?RH~-vi8=(4@n5YgwTOkg2%T|9 ziTZ+q)7a>%Z!+?WR1oFr!#NrCH&`&w<&W_TfT5-ozNowN)VsP3%}E0>ig|JOg}(+F zZB1?fhhQ}oo~y|T5?a?MjLMr>tLJis@aA8_!`UZ(AH2*}ncLV9K0ADqV1tY7dA>n5 z>aK|R)a+z6S8DiyU&>p!Uud-q+ck(wIZgY%U%MrsKag!$wJr1^E>4S#ZZMvgSt)bc zs5m$$XJ-l_OynhJJ+4B32wuALuMX3W|!5c*n~0Z`?egnmWBW!__}rzs6=he4MO*?K%fF za0OHDyw_hqzXob<6ipD)(BQMc=MoSYM)4lKtGTcjfGC4Hf`f@E4*Gwhl}%Y;A=RU# zOUfoX)h<8vqMEmt=dvf8l~#qt4B~r>7Q?k3OZ}Va$hLi(DXcOwy4^HE0Ff@lM^zEL z5T5lvdQ~G5^kI+x#|qR~P@b>bVAeG9UxyGBBQ`Ti=q&({$M9!F+%``@ zIbv;m$YVzfnOdvT9!F78@z0+>1*N6#V#ab1r;?ySJ_1D98Oyl`<_bs^&_(?j8zW(2 zVuBLH^?n-7cCn+rx%s-LrY6u&oscl0GO#rwcLLT6G|+0S_ZFqWYk_Z_ui$s=)0tv%k`Rt@)o>$@uRNh#Z10S7N3NeG1vy zIAlb}8i`pgx$;pYR&1M8HP8*aQH10@TESrnd59zXrLAABD zGfM!G8k?IJNmw~8b(xJjqCVy4GeHR|uc+98)xZNw+gmq?<+R`@?sX7CqVnZ73$GG> z`Q4{ap~Zqq{oEY3E++XWtql{=csFbz$V_*LiOr57M6sZxxy(nEmX;zwY;UO>=~2MC z&MLAAZ?UN&wN%s#@FVQ(>>#cb z5NZgycL1f@g5~R1Q4!7<==e<_Rse~I?_8ZwT+D`aYhYILf5^(gF=!Gp1NGJ5_#=oH zvH*6UGlv*Hgj{n8dCv-w@gc@xl@VzWlwicFfHviJL<-u=@!1(Lz0yB_{#2`Rbqdix zS{=BRtMa-nbsHv#DhO}J*5dj{oJ=3$ZLU012LH*;2&y!%zQO%dBb-zHi6ha8@ z_G>7OED~hk*a7W_2i!E^6_}Bi`HCcsFhq-&l#oaQ%gz60j%$z)T05#dOG-)t{^K3& z`#;Ixzmj^x_pNW=_Wn12VEnJrE_se*(x;Do1<7yT++ll1@Ip&#-IE>z;>F-}-yzW^ z2eOb)i>e+T%4MtiB~(W9iQlazE+QgaoiW#Xet&4tGmA!Kjwxk5Ji(9uS4oWB-rlB5 zCqUE!lm!*f&QLyz1^Vil-G#W8o>e>b^~vhMq@*sfgW0()X4^%4Xv!qZET2WQuc5$A z_B;%HdMr-6nm{s#p=12MbI)ej#6whm_?IDuC+1O-+gWqKgWkyg3=fY}QhbE?DYzGZ z%ubABF=o#ea0+q`G>({?o8bYgZu`A1pph21o`^*-O-Tp|@sYdjC&+_ahkI>kYuW>) z*|s^M8E}X?S;G1G<_ySGkH&~+m_%&L?CCP3;!;xo`nP@{w|F&txe@mc{y(paGY6#1 z4d%uI{>+g-*%<4M<2fMFZ>|!quu%!4H*Q+)wX&UU%m->#SV{^X`r)_pf6Jb8men;k zN1$VfJ!pd74+pAE%h(uZ_$%oK@4)RN-04W2L;m(Wz(99`a~lPV23lLM>F5Zm@~B#ZZ^EQ8neeW!RwGBkB=BXT%E*)oxHG`gU15>emCtd_^TBe zMe9PJN35-_oS;&MY-L7DBaQpV!;Q+_dQ80KKB@;`p-E*C7pK7&rJ$y6`*xn1@)-U7 z`}bn<`vyiv-{a!Gq#1I5)tv5|H!_1$Q}Lis1K(R<)MvRHhH310P%sn z`&T^VG#4pRP*A)Q61wt#7vJb;2P9_;q$B#_4SBZzj|uky!4bQ;S}xbv&fiU{l_=CZ zYDPmP>`dcktDz#$O4znp8bng*HW!hAZ(@8hUp4c=mvpCvX6~GdjgE(>Ac;WTD&q}^bN>MTJ#r!nCCa&s| z7ZpY``<|GH$1CKM219YotmQA{3fEuF`{>By2feB4Y^hAmTs7-TwzdAL?d~IZ8`bKi zzrRhU&rsCchIgdm4Q8Yn=BhsHfj#Tw-`HHlABdx;N=z?4u-aAkXR}>Cu~kn`&{lR0St4Q3xW;~-<*nu%e@An79c7$I5783g**EZ4q>dXhQ>XpZWtdjD@X_4|0 zJd}md=DT_Xk@Bkic%WPM{rJN9v91FvI_=uJw^*nxj!v%1o{%A-z^eQwKbeT(v9N}k zpWZos-2Oq$gikNQ6LAw4*LbBbEso3jGniT$8zoBRLcGGumvyySSGtMxee+J` z^2*_lo=nbeGef6fBklx661)EloI`p5+aP;C7=R0V2ws~1fFVF;!s_7G%G9c00hR*H zbGxJO@~we1a}DMM#`*Stp(GmOSVXuG@Eo9lfdSY7pbZ)u8^3^xwitU{qVWtQk}uxg z-=m{_Q&TCKpxH=v1C~Vo6u*78<}4J|K<)N1{R16KnhyVOOy}7x?c4Xi`FcMK(Xbbb zdC&Z^GyDmTFGU$ch+J-4WK`B5KfU6ckWr%qX=%!u%1n}#ECyImNu~w;hv~Dpj;sOSEmW5#E9MvTd z0XsQmfH^??TA|d^f515cxYT;)kC)IH9UPMVr=`jl6|E@UQ1`sr6c+Uh7q-YPgF7}< z3D0V$M1(nfN2t%E-!}WIDL(F(Dkzf+d63xX{l?>t`{6^5h->-A9dG_c0*MPQ3n<@p zz-9oTam_f}vjrz9IR5LSnDxuw&s_1iI3NU!!nm(_4dQ;Ga;s(zV9Pl$KtM_j$pOE@ zu9BxEX<+aK;&BG9+7LjplV0Y4*`(tf4luvvt|u&jb-sICmCynzk2kH^Xio)4OiPW%q@Om1yoo~ z2_S?WP{E&LV`FvCz!hsclt&6|xe{90H(gFsc%WihvXK38}dBif46op zl&nh(Byn9dMw<(BgKy@ad3t(z?=H$sYR&vj>|MX)|4bskQ$7;AWBFQhl>M;#=+rT< z$)6ApA72DM$Qm5E=T$({SMB$`X3(xW{OrfZO9;HAK=^kR%b!<%9!@Ac&iEl4jQ z(fueN+m(O}#>~n}$;%t-P}Zo>-+zyum3@dQj`9kj0{(qd>%yv`K5x2kIsymVTg6~2 z1>oNWRxGTG_u%yu;`<30(!gl4H5!L;vzd<(u)`zcf94h`lmg80jV_#yxxzR?f4+0= zwy^VXmY`&5F2JFQSmj`B;>pS_=sL1rtt+8wvy|w>YLvXGWqkL|v~I$?5Ldr#ZzL<( z&e4EmubKqBJC=ik1Namj4+d2IE4dMXXG`V&AEW0TuXcy*|1v}?f}-;H(Kdi^ceI=> z(@zthNS-1uRi$#bo(laobpvHHY@ra!`nTgRH6?$nIaTa#kYU!MYI2muQ{;98h;~q~ zjnad@QL0)OGl@?)-_Lqe`B=Fs{;8Ekd+s|^bG0+xl@+JNVpXO8gO2gc59ZDmV^O^& z?_TrRnFzVM&Xln;%FxJ?WoVW~G)-Uw-Bbv4Q+u!HkhO#T%QQ|ZZf#jn2V>W4Ws%5h zW^BuS9cs0wj>%=yZr{a%$^HU;#Q#qK47HGW6GZboE>7=*-GaY8(&}w{gz)h2Fu!Al z@pRc#P;Zg3W~#;JW&$?(r89Gh1SDMn$@6ntY1DaziIknnljap)f0c6E*Yy*reBn7f z-{LYUnJN6k!Wb;QGi*=)h3i=!gyP-*aEq7M1k=R-Y zBBhhkZ2nFnzl-;mFUPL!V9S8*Qwh<(aAFDCuPpshNvk$ukUF?LvVTGK>tN)epmXGM zr9*k-Lw}jXpaXd?9`s4v03t%dcH>01#*w0o!otEdS@Jo}-2`si?;!t?1JMSV0LajW z;X*uGoyibUe}Sdlg<7>=^RK}x?j0G)N$!5Eo_sdHR5EmW_l{g*L4p5xb?jbP9neue zwH|1^4wkw*vnNlesX+sw$yVA~xHuA=X$!AaE0|Vf)VcJxS@;R|3=Frk+b_Yb7!mPG zPL5J6$ko5v#Q{XBzch&*#?y6{Qc>IJK(x~EoDzIkt@`V-<<^+3{CcG3f(E=p4_FNF zU%q^U<`Y;AK$3iSNC#T1j>i6ee{lK8=W0k>P6a{YHXW}d6o+9ZG{>d*ERgeAp_c*O z3Ip+ePI=Tufs~J+=&~|g=np(2Rl_k4`IpWUr*rZJXy{g{!Kv(U^y+-e!(TpYp0)7K z?1|DWUTtM14QL>g%)MMEn(8Ax8Qs%g{qB>7f2QugVi|MKp(W0~KIor?xu}W}2Yp1` zBYIwchWMZ#|CAWDeyjh8g8qiAwAB8mPOazuzMa7N`xN;Ku~gmtWrs|SgKK?#3el`f z!az|{gQI7zWN31BeS{SpgI>^%iH>GG5)XR#cCxBzcyzSTVe2;BV%uoR7-Havh*(f7 zUbaQpMKnoC->SVX37}FsL4Ill<_}m2&gY;r@MJ*0GvCe>scU8?rlCQHhIxB^wy2vR zxz_}iNIrm={bSx6mqPao8JYOgz@sU0SfG3(|EA@YPFXx=`wDy z136{W%gY_dJ6n4z8T~jLpX1)0A8A%Q6MtB zYHA@zkz-u1dR1v3-wM`?KVE|9Cn{fId6j3svJVb&-<)h~Yc6=kxuU5#hX2c0Tm83` zLf>}@311q4r$Gl(Z)S}|u9&Wv{xJISJtSJpNaZ?~^K|{tvA$jkm+j(JO7R-6ii&F- z9HrO~p8v^|0dpMKKdu8`h;)D8f3RNtx8>FB7UuT(^Y6FsVr@4Bo)_G7*lfH*;zBd^ zn}VYDt)=D5T6bX(mm0u#RPBsoFjh()xO%Y4en(M}HPr&+I(EzCBsvKRFXB!D4_-Vk zGN5BRTyPh*R;!x$`n=Q_r`bPjpp9Xm@s$)1pi7x7WsWoaQ3UmcN8on8rjnojNyo(_Xjdp zqJLvcv8B`c39Y{|mg;1XkbF(e&L1xI<~rKuCayM`!%~+;2MCwx)AUNu-Hl!VCjhj; z6NdH2fO*jj41R8z!C!J}@oOKm)>cFW2SF9-EOdPwZyTK*?i=&2f%w z)tV~d1h%G89NwJ)rejC?F z?qE=**EBRv=@s?pEJb5* zXA?5U8O}Bi?d)a?U7RxU>*YgkuFY+fJ(%hq9bF6w6?h@-;gEeAjhFbarTPcgYPEr< zXDC4rECIWnGbycHSsn({VE$p9aM!O&DrpZ@S zyE#36oG18CAUFs3eOPIj)x!dZ6JiuAGUDDC{ouacg-h}D=}j6MLgBtCNRz2vG4}Qg zk`g{N%*@Gk4{|jf-gd?qiil0V$Y|GFXro%TQ%A`3Pc7YDT}FufLPeFLkOeKCcxrD_ zuL)VLEtGEZgYkgl#IPYT&bfBf#{6-98JG1cooYiWx`bq_h?md{e$3|TiLAdnz(BVe zCrTSP`Ut2&RxG!+y-hZ*PfN~e$#RRpwRy2q5D^jf7IQ}`Z2gn@xEz63mC`>uOx!-q zYa6ea;(MRiq70ga?IMH0%%2LdZp8gEd}azZzWREMgkfg1(MKO7E+)k>F%4>u-wh4{!L!vL3>;h&F>hU%*V0;B^<2hW!ZveVA0Rh2(rW4OH($aci3KYgIXcg13p)Q5UJIRmAMS-Cu5#)V+LqpLV zmE7Gh)OG_dh@aRXL@+Sy3cQ&_3;Vo-(@a#WsiSWTKMO@b}3s=B(cw6wXs z-5;3_T~?<;9eJR{tDO%Dii#TGr$ag(@n61t-g=j$t$X1A;!c$0Z-k z^*(_?>b)gf0=)_FW&k;ii1XlbK|JWG!2)_f4tPHRqlqC5NtsX8#6wbp!w9wz=CIi4 z=-vujV=zV}T9LqPD_Ct9G>Uy7MbAHFdPRZ-N{iv72g>dAXe-gG0z4U%;z0)BkT{7D z%)G$FB{LW<&_xDV!NtSsc4~*%kU)sQ{s8@G^Z!s2ph%owo^8SW+kl+=QWvSf$vhsT zR(Tz~1Q{Q+s@f3?IaR#}+SjZ9P8nmtOf;g%eEf(8T(&u_PO-^da1MdT65Yzm3K=Rf zGD`2g1osEhaU#o^ugwpO(E@`$+Xn|tKn%c|k-~_`FbyAH-1PKYP(8AgvhIQOP5t!g z)9&Iap>smyHbDnRhp7bkH4%8G&@9GE+0PI6_U53!qvGRxcm}XRGA; zfg}%shB&Zb#8h6VrEhaf9G)!j-{%6Py(Z!?e_&O8Kmh%!R4hjz@*0m_x!-oC&WG!g zX|KX<0_(@e<6gq2z`|ZEhs(ChVs|5l3Bn$j)W09xVeOayW#NhX;kSOc^q+-8#S2@} zG&MyIy$>jFCjT<;LZjRp2~FBfn8_I)8&mutaTf@q3g?4tclY=2pMxW+8JrbhC)w^5 zCtq+myYzpuQ!4~LE`v@@9GJ+EQ5LwMEOMtVcpZ%C-ND0a02yl-hDAW3x!w+fMGWFG zA|jH6_8z$&=xrD0TSH+Iwh%nULc&E;y@}ty3xPd`Ryi9V(N#c*K?e1cl9GmMCWP>R z015Nleq9aN88JIMHeg_oQ6jWcqy1`^Bb%8&*Faqf&*#Cwz&I$ofmqEzEZg6E6-N6K zR6VuI!`8RzkSi7-(!tR%lcrY-q7N<^UlLG>6UFgccoj(-x^U^ z2kRqvszd9^<`)+iU@2ylmzPHalzSUe89vrE7`y)gmNuBrZ+v?K!>;mhauFZRU@qL_ z_}kO{6=V~BsxiaBc6KexaJ3638uCzrh=>R-F0Sp9rNkm&3x~>^gz))Fc+L)<76%x>M(Mx((Q}`Zq^XqNljfH==u)8$$E0>pn-tGui>Fr3xnD)^&Jo%u3R&; zx7-}Kn__*%k1^wK0 z)N>e+2DsbU(xPu{eAI1~bO$8_Bf&<%bHN-JtK;@tZ~`|V&mA~ALcKmfGA+1eV3zBk z-_;GLWe55R9N4pIn6_5}lM=9Bi(DZd2~klG;I>2|odeS(7IXq5VDLX=#Q*zrfY?!ampoZu3#4@R&Z> z@c_QwB_#X`zQGqkEyv(kUV#Z{D0nGwjbV&$c&4PA;GqeKs0hg$U`33+JBT&F4N)>P zhX4t*GUv5U?*f+qE)rolLTKeM0S9DGh5f&?oCLy#+Lz!dgBo<&4Wx1^WFV)Ap%ptg zu@i4cVR}*x<{80-l3~#LJ)dFF1H*Kc3Hmlk6EYazlWPKH8q7BVI#(YFHG2CTwAvJz)E;((Pvfy?@DB6 z(ACz)lDV}b;J7Zj1LK5HwFI}}7+OwNwZh{$D&YKr)e?Og43dBpk!KmeUbeu<9O%M+ z^{HOq^?wRUTNiEy)B%#8ThdP;knkC`qD=eKXO@=4!TPm4kTaxX>FwGvIvNAhnRxJw z14I#aaG-&L4Y=Y$SpL?|6z~(x@Qe*wg&#K%sTXu>2(7hz1vtYUkPzO(^gm4fVZMbK zNm$TWL`8%5L&6_L^hKmxTxXBh>i}&sRibSVP%$hy_bl@K!%)& zOp~IyT?A_?Yvb37rOt%P3iNKF#>%X0kGFN*P;@04od5|DM==af!|=yTWQY+SibDMN z(j^+=2@+=-jLV-M2)gAQN~hkqb*sOrrA4qzT?C9R{s&uA>dW@_dw`G~aFNLG6J8@em~&|`#~8zt2@tUZPWf`i6nF^XB9?wjffwXJ z`V?gdri~@=w{WLdR#w7TR__%bi7Fqq0|awhm21VGHvC}}up)x*gsRYgsKT4x&=q;| zAD}KKau4QNfg-o;VnFeDc6haf{~rRLYJ zU0W1O_n*;pQtNOmR+I{DK0WM+#Wl?oC#z6Lf-gKS(@W{wohEBCJguCkd%kzBb4xvs8MYAld^d#RhY&Q~I z>B-e387*0ZN26?!{6tMSXu=IyUAe*ofglPXyX$b{EB30#AS~eV;TStStLU|$#Zp%% zj9>?v_Ae@?Hjkl!j14{oVK9b>ZH$h{s?8sjSFhJd%gTZ=HP|;O2z(CL#%sx6qb?`V zP8PqJ3E*l>;`&24>|97Z^m|x zti;y_NpadBjM1kTl!xD*e!_53t9E9dYmrS8@}m2ZPHnr=cg=IFAzPUOd>0`vJ;f9& z?fGF3MoQk1P>SvA@6L}Xst;=% z9JEJVx@eGbec?@jm}!R048kBhxPyvTq4E8rLLS$|aqktmlQ3#=p_b_TioP0mM9#RI(D^fP4uN_TXgwzY%`|Q_^W3{v5e%WJ z<8uzP^x@tpET%W7@iq%|a@EcV<5p1S04c#)DLah6$_m12ZSa}#a6vE(EZ+xi5C&QL zbB54jIFFzQ$~vWRww>FW3IaOWdSmpy=L*bj&&4}vq^iU&XJjdj=wtI;?6G+XA(phh zKEK|R(-{Yftsq1SJ9!~}LF*~wNA zOoHOQDai9*W@l%`+9NC;aBl8J`cc(l5gyjVU9lRwUw@I&Zv(DpNGwdoUFRuG4vQV# zVRXv3U%$?Y6tFy*DC_MF!6qBW|$4#7?!YWMAmRb^1=%%6iSVOmFu-AnhF7VIu`Ww`k3 zLzLT8xfuC4!VO-Z%LzM`_8z-?B|dMX6l_Vpv9X%Oe-7ID(V)mpU~YneEK+fztXwJ1 zywsA~-O1D&!^-Iz9Cw5~n{IjQ)*R|T35|SUb)QR07-eK`cnu?eV-O4LY~h_P=y(JK z1j;W^5H(>SateOJ7gjk}+MlJQe1tf0I#D+Gwu_5Fj;+qE3HJ~S`;N_n&52#uPv#AO zF1;NI71s%r@j*B`> zn6jW*y4aFb2(u}Hg9meypFi6?m1oK4t1QY<=rKhK$S0LpZzM|_S3Px zzP&3kFVDxtmAy))!qb!fcnpPu5PH?tzG!SrKl$oppqh8V*6O+!i}F}LO&$^_zdZM* zH5yi#__e$f{o-yVCD+!E=B3I>CsSVt$=}|x_195sotQ23>8As{y!c@rNN}BJn7usS zk+11PU)MMcLj*TZOx!~rmDz?r50`IzjM*m>b6{#+wv|UJ6{$HCu5=OVeY`s+E=5ix zH$}>*0H?b7L`%TF@RT3SRo*-HcMepC(asFZ3^klF8_(;v>OxDr1^UIB@N@%Vmc^i7 zU%y5@eVU>;sM0xzLVfq{vX-}(ITf6SLhRa6IQ$(>E=7Ktd;oi9Ti4Q;fZY_MU9z$p zp@j8XKhi(DvTn@-vlkFe!v1yaLU*XECn8gFe%yyhEG`~Fcw$c`Bu^Z#RYG45(qhRb zn0nyirTAGt>hRMwBW?DzpS@+|VMN7Qg~+MBv}`Mdy!X9bz9PdY-m)&YJy-GxvyeL) z&M6F2kRNk$yuL6LzZbELkw+Jjs6BWh_gX2}P58LAyBDelg0s6g=Aov}YV zT~M7VM9FF};pEv!I(X1$u;NUz?z-B#I{E9rT>VQRwd>C+H8MqT@LXE?X6C3_p7 z=M8vYci}vjvOTGyruJ?4VE38^q1f<{t6AXK81r zvG|wO=EuxV42I*%f_Yrr_{g9r3r(l{$2A~_)Z%YbzW&WqfjVOJ8r7n`u$}dUlYNI*U4QmSf^!Who`3-%=OA&RWvni(a;bgO6kO! zO&xiRx-JX*X;}Y4ARjPM?9u$O6GsRBz?Cawbl(QY$B!H?yXs|watO#s;iSlZIbGd) z>?nQ7F}f&m&%zQg?ggxAPTUi3ElJJ0dMPw9LWwv5SC_UXn|!Q)$kiS^J?KF;?=UcM zMm&`wqU;*7Yx~IKJv~Rdiqui>AS@^IhPdnW01xmol`e7mkOi|fa&ipl>Z>aP(>%va zmk>ZUkT`;jBW3iw$c6EJ^27oOK~hrln`sXw#boLqa+owWGz@_>skgVh>zGbm5&Q7( z-{{)pW@qz1d>}RmHt}aVsCeLKU%#p0rR~>eOKGbG?`*$DBUdN;Ql;RzoTbru9&Z;D z?1tAIddZ7_H?-P@as~S+73G9S+B{uQSI@oP{fYbH#c}lTCF$qe;DV@oB5Jh8TMdR_ zc9RcopE~kS$U9t+!)KJ0b-?ejZEk!u2ph_d73TWtW+HfJ@*nArePyC{F<{gXuBfGG zv9zk2?Hxd}fyFZ*DaxX;T{Lrc;zv&4(ZFZf*ZbMRB~~Bc&zpaJm5u}vAH2|pvd2eG zpJsD(4E~;fLk7J|-bdFsec|m2PFz4pE|%Pj>?q*S1zU~N@%ng&O?TB19qfGwu;4K_ zuSDh`K+Ek=vIIp$j+)CgvWuPd%H)k%Rt6p-A??}h*-pc2*RK1CkOF@!)w<`o zacC4#hQXzL@t)TpQlU^LZ!Px^>qhlNYQ$hcMEpX@^_G5ti>76R>F0&16KC=q*zVr_ z(=<$EvmgfbuXmQqZB``c<-#AUh%AYfn&rd3Z329~vXDIs?ceVWti{;4W4nsGRz_j^ zT`s>?L`7WvDT~9!2f+!z1X2wXKNK}=Jv7m|ZtAZ{ZMgU-WWZG($_x~?Y)kLSZ|B44 zMrgPG3h6td7TmQHHLbY&qJUTf&^@8SD-=W;X#{C(Vw9ZM zfj!3S&(C71A&1xc!pPGVLEcc3R@k$R{bmDsN}{>s<#*UEgCHD@aaVYurxN8Kpgot~ zf(GEFzA!Rw6CBKWP=Y6umnCj1S4TX5ds!4pKk?HUbl>JPJ;#boqUfJ!ohlk_4z9Pd zeO5e3z3;d*lBNkGYsJIJGmS4dKek5^*bh$g`l`@YLcxL_#IoKv!Q-T!FEs?^d{eQ9 z^ZTm@7dqIv*T`!OGV@6i^7_f1)!LZif>?FN-o%uX4aLuGP+(!(h*VnEMmxTF%h~y7 ze9XNQoU*SO<|ir})7m`Q1y_@+Sc_dUG((jI#l{W*I1<|X#$MHj|NdS+fK=W1o%!|8 z4?6F`?w=_iM}1#uwDJ!Lxtae_d}{HnKW{g1G!*;GYJ17{@!9t4Gz!MHJbT%aAAc%L z?P|}`=YGN$=Mf4K&r(-EH&v!Nw88w^($4T(k+J(Vl256Jua(Y>*H+QAP1t#$D4<%A zI!{;+eLZO5yaR*4#@@hFUN%D?sc^8lMf!_YL-*%IT9$cnzxb$~mX_z<+01`A{?s$a z`TWQ?`;}h*e?E-y_Faa_$sTq0LhJMWo3tsy36oRyuaR`qwy z6N#VxG-2zkzYBZzT3Q`&8`4+xp;V*ZehRT@(c2}|fDeQ9D4UqToY2EuOTIh>^Gw#G zGKTx!Q3*CClH3)ZKi=;Pr!Rl=?nX&-bx^_+r+o?nY~SY2D6my@q|!0SC_3D5dggJRUZM+x}KW7o1XkQ+-fVJkREDLd$){? zSMBTLwqM2SSC_LaEEA@G<~Zn@e7L7;LvwbAn9Q}u2oY)Q8Fc8Y*ou_SV{ku$FA@P{ zi&;;Cv-lqU)-Q{9P6D0EZ17N?qM~z!+I3)Q8Ysj-8oiP0R(6TbvJ%a}e32k$&L;w* z{0|nsr{x_uXCCLPnjVmpkQPqEJ$&FY7r*$FvY)}AL6VBcWE2iZP@3wXNpZB|TzK_D zF>;lA5N2Kxql||E0kqIKT8(|r0thq|v31Lqm&pD>6gB*Rb%+p~orYkQh<=@#n@h58 ziX*T$s02v>h<(nbTLSk3@dBNMI@s6Y=KiWjL0~76(J%n<@9yg(f<%F)nFlRozkLh( z@-n{k#+K#TQ4Rdy?wHY0goL57eAPWL0JtXyl>pDo<;p-#BHwSzzan}ca>_|m-a+ki z6l4Xk*h;X*_;h9t4jcUea0&aa{$N2w8T4sYK&PWWPGCm;o{5?0FnV=z4|2~Q^V`TH zSs4H1_SGQOH|Tt>q{Bj^xRc=A5Q|`}PD#6}PMxiQ@JMuZrb@$+W?=Ts(a^hU;Swg* z7Dq8ANMfcExMM`z0CjNC;UR(J{TI|E*4emKt zrZOXsrahatK4qky{&xpURdKJ)>?X?oX6sY^+!TR~ZlfXTI`Vk@yEliEt6d*?r=$oY zd87&yAyoIEEpX^L!iTo;5VY5rI7jeb-dbn^?X7&wuR)sO7mreMCGu{8K&6}(UpDFe z=sdBp8;0*s&CN`Jy_KmeHz4fWd3evp z(NOnm@II(xlYpwO1o55->EnF2Loo=@hX~LZ*eP}3d;Jb2aP&=>hQ17|c$72fg;4QS zBvXmubu`R!zACg^gc>80U%q*>G0bMJapo+?&|5=;1R=F%eijBEIABu58=swh`DUsv zyAuq@a47lO-2X`ilJ({>h}lr0L(5Kh&SAAQhoA{oi5svbB5OMJOjcZx1o~6daTsji zx&|0pluHb-lW{>T6$jsj@dqaaTWm&;2OhjhlDc5An~(3Fnm1i#xrAxK0m$2}KomSg zK;nM8Z$wo0>SP!aqb(30;06`&(q+(((54hnvXiYk)A>jUCF##@P$oiHmfV@K7Iq5> zK~S>c!Zt}yge2fFB)=EI*4Hp~bho=p$O;dYBK_`tKd+laf~ki2wYA^EFIa~B;*R_3 zFzvyh>8F`w{8h|Xd#yK3R1_x%{eFYz=ljoQ1_!g7oqqa1v;YjCnm{Cg&^F&Y0rJdg zq?IsLbPo>t7^Xs1^1b_U4#Xr)uTF_dOG^_179tK2YX$_-i4=WaOp%DpKiRptRwzpe zMFpIHBYhvp%kL?NVbkU$$%jxb5lRRIGrvO$0tl2hSK6gl6$v2+jE#sZ`TLMJQ!0aJ z8A%AhFt$J~Qrg@c0`m%yF6z}|X#eZOWJ7t~u12G&E-XsUq@q9FJ12DJ12P zC=gy$bYrT>$Orl608I^E2a#6(`V3>DVHNV6&*WcEbZ^J-!0>wvd>&C`=jFxf3q!Vt zsRGQo9)jSbm~$9KOoUZ&&%VlF&{144w-W>)2zux%w!#F9*h~#r8X$J$MVKqEghUY5 zCB{bsQ|a&V6$oCsF_gr~0ac7)-ehRjr%iO*KjE@~dMrN#^a8WFzOvv5S3vZ{rETo& z8bol(yLU){0mfXwbr~w-Qiuqe5ao;96Fl>eoEkFS4a}B&*LWss*UNOpXu3q1ghX{i z>9SBw2u34NWM0C2X4zx79>XfA^Q;UjoscvA7yRI%uEmD(a&NF} zeVAW}k{}Eq7zCW)z1`g;3n2qA&1m_KVe=qNQ*e~tzUBkX5q8$gRLUwMICs=SRn7wq zQUW|RVETv+4+i7Fqw!Vq6tg!M))1l~(8fgGEF2Dl!qYe|rEOb{S4siRwb~; zc;S*=Kze$5QA82p6trhyyCpR^* z_g~)n&HVTfRu1U|_Lncu(OYfpicA91hgk+@_{i*R|7bHsL-Y?ho0k5eAV2e7vB_klt0+i zzm0EKEdRPqL9HI)5w3n7{EPMrI}}|UVh9LpEtG2&oC4C1L*4QYH zkWJfFX#k9Hib`30IRn}4!r)~u1niXFo5EuyOZ&2OENJxOFGcZjw zT%!;C6g^e{@`Ur~AP&=K0Nx-E5(m)8Dss~N%Oj}+2d#=P8YQ=6*|nX99PBW>u?YDD ze-_~B86@A^p6AF4g`d?(>mrN9SSjKnrR+PM#ybmjn&JdtZj*qXJ^+I7;l9k1sXMTy zdV5L{W!B`gaqF|JYrmv%auF0wc|Zhm8Vy)P!d!dDe0AXUk}(%uH+{m%2}4+14s`*>@j zKSjfL@NpS+hjq@`h2>nFT}kn$)7szJ?8G)`QTjk1%+9n)!{W3RvIyki?S~y485M4; ztaCHN%+T0c&5f1k<==LgAK&Sf7KpbDdtFp-xptOK%MMh94RT#$_0x4;cpyd)We^M`IwH5`9Q5Cf{LWUci2wIq~TJ zeS?DsI}49_-9ed+m})c?MrZRJ1m@;~V7kE6*|s#palhEZ6~%l>B@aV=77z4TWh;v{ zvs7a!A}YXSK9#+?hMPN@fMB5;g_!sjN~`G{YU$@788CfX5fT~}7V8ULi?wrXb0+5` zKHC>ZnFEP|^f4H0JOoQ?u!SB1q4f7uuFH+Wp^uaAh&0ol&u34k|L_kC6o=+yH!m-} z=V%-CLPs9&`VBh0e{wmmW6mKO_dY^jaX7pFdM-dIP1rfIAISmnriB%FSW3lx-OVOGbZ;{KG8U%BMhFJ^Bw)t73WE_akUY%(G2A~+|U zZ11lAjQsxHRncYJ^T7`*t3P|XyHm{Cvim3g1*D$eqco1RY(^Hk|zQG=4FXXkeavOsB z%lzUIr@_3f5r?fN$Tq-myc#R+?pNtDQs(|F2f}mTVWWmm8!)?A4zYOEB78l3bBctSc*f zf~M?qX=YrL1x_2^U_B`ks_Da}4|GzEGNnMxfpI{Ig1q**f_fbmds2R{$5w1JXAmh0 zhL3=iwGubCvej&4eKfizghv(4H7nM+QPXSwbd%F(xqqn!fBXVLi`}vi3S1s~)c{RJ`Q!Eqf<>U2QGa0wtTW z9oMy(@9nA)o#^B3JRZoI3-*Vy)bRfO95E#6nxSlH*gU(t<5h4Fv0&tY;nGPgh;D!v+n>TNE@$;8nh{Sfw zwKMAPDZ=i9nh5=deu{o))l5u+Ve0G@ddwz3&Q24Z;ggeg1hWBE_I-j`zt%B`kk1=^ zM-O1}q;*+3J2Qa7LnKg+@o1(&JUuwL@-L59pDL4i1+<>5eapO5=xVU>a?I+By2gKwY@IkI;wfYxEj^aQSDIhx$U$msa|%NJjd zTk6rcx9I~I-od9qzErEy8O%{+CXEe&#UL=c#G-zf* z{{@$X0Pa{EblZq_t*ehAhKP7-9bT$YOcvS z4&ivrKJs_eEMR(u?c8!J0J}7q|2P@yZx!~7uw{0v~)%$Q;=7nY5 z+vo59C;HhE(*eqKiPIOntj? z)aF|)4-`Z9?mdt)|GW>P=&C1srg6M&gk&ZD*yCPQh~a&e3@UP+m8&8!EgnL0HqKdS z+cWWn*TfoSt|7imXJJ=)ef`}JH#w27mfv$GG*vPq1ow`CNX{(O%Um`_aX zI6DtdaB8ZyY9(Kp*;~sxLzsNOM3~j@8PZ3wXD0eD-IvV>J5?!JkD5??iVzFk8vA}Y zR8X7-;;Z`$_K%X>r($k^ut2253G6yhRK#jW9NMuzgfLDlg8hOI<36KHM{8zrFOQ>O z;jTUe$Gf%I$TaR2jMX2Y3~2Hmmffk)dis5Bs%3nPApQqmDwmF-Vp6@Sq=fMOU45!7 zyWq2!;z>HRCcl8BvH5Z6+R_RCnGrd@{p7I&-&N-2`Vkeem;QP=)xXx>=-HieuItBn z@@AP-I^FWyN+_&1{lCj(c}t43#eCEIxVSfLL#2K3-< zq>_C);qNcpTQe?T`DS|l>Du$f+o&u%+oQtoZxN{*YD#+F3AVxLuH;)TUnRpqQe%J%68J5l0CD-_Qd2& zCcgg2nj|97#*;All_7UQT$<7Oyo|C(CA)?;vzn_BfRc&K_>-R_+y$(6xY3Zp3{_*! zd2bdTycZbhUn5mjt9U)sE~`C$GSIr)D>;fIHS(O+hcg##UR^AWw3dyox~k8`YbsN< zthOQ$vOxRgB$Y|=SbaiyZ_Crvu-eVSi-t96Pu{GqC>`~wc-b^EWLg*6epRcfKs|f#75J?vMVA2ThmkDt7 zI4f*^CVffAI+V;nuZfb$=k|bhz-rwZQxF{Y;&|Y zbd$TdQcR^y4PSWjtxTWO;W?|swTgdged`4*c`2uyh-tYvTWds2w**7sy=1}Lc5j^y z3nbi7;JeGX)qn5sp#zq-0;?k|vck?%3V!2X6{SvyYPMP1n3ZgG4G{9FsW8^DQ2U@f zoJ+3xdV#W{k5Dep<(pt+q-YKS>kht+JGS>+ZHp zU)?*iw2$qZTd6;sUJo6u^uM;TrD#F<#h<}T+jB>EFh67OJJe;Xc)ZG@yumrOXZ1HX zHClT?b_}u7JRwfN;ctUJJ?DR!pj$vTsMTsyj_^GyZ3tUTYR~6kOcTKewR%tQhjQnqcR8E56G5PRLq;Y$=Sft+aT;1l))`yHcN^!RV zHqV^L_2kTB`i=U!(JMSBlIxQpub6Ft>J%}RN1cZMs+Me+XE!NW;6xz_fTpX_T6$_~ zkJj?sL`z(GD0AR*xzhHmOUzwv*_`KpjE`CKco~u5OogF7oOKlKQkW-z!d&OrP z^)%`@s3=pB8gc4Hl*!PK9Cp;RvYOHt|r2xCP`;`=zEqZREZW4_mCG;QjVdXn$e_YZDCGA8b|}c9S(f5GQ~w$!K8jQ zuBm{-eyiJw_v!`8xc30f?NgjjS>$C^T*q051|OlZ$@l1W3e11|Q(0}l)yD96C?Xu{ z=jP2rPcKmb3P4-iGn#2Mnp_ttvjHySN4%Fbb#zL)in%XUxK+q?z2<|E5K5bEEc>8I zGJ0dxK#!6i?%q#b#Zjuiz{)=mKQ9~GWYPS_Tn28#yQwyFDX!4IiJjZ`yvswyM=OyS zX+nI4(|A>3d7g&|G}1hN9FX8;Le)A@w+cgRY{}f7FcHL4H5{CHH-LMh5T5OM|Go=C zwAB5W5+e^dDv)Tr*M@0%hlbMr`RUw)I)nfXz+ml#E)%H{<$lZ>Q1SQU+d$T=`Yppm z3kbycxGB+3FU>w5Y9m9hhwFXHz}q7ou3+_+I@~=BpYm@cpM5`OhrSQioSlH;UYdNI zC!uAq=rL#eEMX16cbst1!2lW82$cO}<$9^IXfCI* zHd)juXB&I`+GS-z zGll^;k#<_?#f!IQ=4cIqQGO$B#d)`21<`z+%@Mhe)=dopXy|Mc9sAgDr-}s{{illZ zzL=MEoO4<3QJ|$Pdp?KZo(U#K#{m2WTvTW!f6=ZZZv*5V^-u(@U++}*L=S%QLvjQ#w>hRJ~iDT{qibn{E!q-03D)384rLx+6f5QQ-4s4F) zW*Gp5l>szeu%9?qcqb6i057lptVic!01Y#A0{QN%&x#7vUdDP*d!YX9{ry`FPnKoh zpFyCd+k zN;z@?%9Pf$HebuS6+CA-`U~s~Yv0@$6hz9Z7M|WfB+O$@edsfA4T^EZ7PJzGQqmz2 z64xfF<$g9n!K98Nawvp{pk}HgGSScDrjciu1)wwy@VY^h)O@Ds`Ytzj zQ#WPx3{p zeDDVdxdUR%aM9?ZC&ovZg~sdZ{EXO))$1nUkE{6&bip;#->}S~PsnqYtiEv0&@k>D zlb^?n-ITW2EA2E`@i9<LU{|4-+9&dsf(t4QQwa4@a{Jrc8m%kogce*#j6hSS*O z7c}(eGim_SklKy@1|!oFRytVaKJGCqic?)gc!QA433Y%@(VU?ZLUoo8_Zkc%Ji%a3Z zA)rOixVmK_$1Y-OR{ZRz$9{5w`(}#;$xCztxL^mL{Y_8QAnqN7BL4|;@`d4KW)D{r z{KoQtK_n1@TAe@p@z$QY=T<7$jgocA=wu*iX2jVB=M!XCjBK~W8kWGg0i(S<(K&&Z z3R{&m6EpJxz`*Fdh}e`yvo%!a&f7wsJnjcR4Y#P^R>Z}{L1r#MVBz9FN$^f+AZWk# zrTQ{Xdrdt(Bt5lw)Q^_oUK9B{GrM-^2tp7F9Ibw$IA-13iBgrKS8ua#eCp`nf_@sB zD+07FD_f7Jpr_Zx;(%=$DqAEoMI8yS41MzC*u{%$OG<8}oXbg~*s93g#)?4O)wSJQ zt?Jo+?PK`B*3?i!U=7f(*u|XJ^q%olu^>0MDS^SEHy=s9eTOa1zUw7;{p|?h#ry_4 zP3ba?0Mda!26*`y5&(DXv(|#PaShNH3jnD=-4R_l2cig~bs{q$#pK|`%{J@|&?o_` zG=$6PkY&6=z=en^T9BC z4;&~2>v4vOukZtZ{2=T4<;~FIZn5Y(4~-fw1IRF5k+~~$!O{}BAvb5H>3KT!945IS z)xuT>N>QgPM9O`Ig-zlGBI8}16o`vuu$8)v-%_+UQB$meOdsAB8Rzknve%3Q5v}O8 zDflt>YA;XnfA>UPvK{%`+e~z@3wqUGe9@8XKKm!s@DkrY5!(L?^FbtP|L0$c$W(#{ z`p;XcCc diff --git a/CoreFlows/gui/doc/index.rst b/CoreFlows/gui/doc/index.rst index 2b8168d..79d370f 100644 --- a/CoreFlows/gui/doc/index.rst +++ b/CoreFlows/gui/doc/index.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. empty first toctree is used for pdf contents maxdepth, see sphinx/builders/latex/__init__.py, toctrees[0].get('maxdepth') @@ -62,6 +62,6 @@ Release Notes .. toctree:: :maxdepth: 1 - Release Notes 9.8.0 + Release Notes 1.0.0 -.. [1] solverlabGUI/doc/src/solverlabDocuments/solverlab_manual.pdf +.. [1] solverlabGUI/doc/src/solverlabDocuments/20140804_solverlab_manual.pdf diff --git a/CoreFlows/gui/doc/installation.rst b/CoreFlows/gui/doc/installation.rst deleted file mode 100644 index 33139ad..0000000 --- a/CoreFlows/gui/doc/installation.rst +++ /dev/null @@ -1,128 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraInstallation: - -************************** -Development installations -************************** - -A development installation of solverlabGUI allows programmer improvments. -It is a classical usage of Python_ packages. -It needs a directory for Python_ interpreter (usually named *miniconda3*), -and another directory for solverlabGUI scripts (usually named *solverlabGUI*), - -*In fine*, user could find (and use) command *solverlabGUI* directly after a -*detar/unzip* installation. Or a *git clone*. - -.. warning:: #. **Windows7-10** all-in-one installation is a *development installation* of solverlabGUI, - which allows programmer improvments. - #. Users find *miniconda3* and *solverlabGUI* directories in parent directory named - *C:\\Users\\Public\\solverlab*. - #. **Linux** all-in-one installation PyInstaller_ bundle is **NOT** like that. - #. To get *development installation* **Linux** (freely located) of solverlabGUI, - users have to follow the two next chapters. - - -.. _iraInstallation_pythonlinux: - -Python installation Linux -============================ - -To install python3 (and its mandatory packages PyQt5 etc.) *locally*, we suggest to use miniconda_. -Note that *miniconda* is windows7-10 compliant. - -.. note:: You may use this Python interpreter for another python scripting code than solverlabGUI. - -For information: - -#. https://conda.io/miniconda.html -#. https://conda.io/docs/index.html - -Example of install *(Linux-bash)*: - -.. code-block:: bash - - bash Miniconda3-latest-Linux-x86_64.sh - # -> Miniconda3 will now be installed into this location: - # -> /volatile/common/miniconda3 (for example. It is located as you want.) - # -> Thank you for installing Miniconda3! - - export PATH=/volatile/common/miniconda3/bin:$PATH - which conda - # -> /volatile/common/miniconda3/bin/conda - - conda create --name py3qt5 python=3 \ - pip jupyter matplotlib numpy pandas pandas-datareader \ - pyqt=5 scipy sympy jsonschema pyyaml libxml2 paramiko - # -> Solving environment: done - # -> Proceed ([y]/n)? y - # -> Downloading and Extracting Packages - # -> To activate this environment, use: - # -> source activate py3qt5 - - conda info --envs - # -> conda environments: - # -> base /volatile/common/miniconda3 - # -> py3qt5 /volatile/common/miniconda3/envs/py3qt5 - # -> etc... - - source activate py3qt5 - which python - # - > /volatile/common/miniconda3/envs/py3qt5/bin/python - - -.. _iraInstallation_linux: - -solverlabGUI installation Linux -================================= - - -.. warning:: Python interpreter py3qt5 is supposed to be set - and useful in environment path. - Usually command *source activate py3qt5* assume that. - -Example of install/launch *(Linux-bash)*: - -.. code-block:: bash - - cd whereYouWant - tar -xf .../solverlabGUI_xxxx.tgz - cd solverlabGUI - ls -l solverlabGUI # the launch executable command (is a script python) - which python # --> py3qt5 - ./solverlabGUI -h # on line help - ./solverlabGUI -g -w ... # launch GUI - - -.. _iraInstallation_windows: - -solverlabGUI installation Windows7-10 -====================================== - -.. warning:: Python interpreter py3qt5 is supposed to be set - and useful in environment path, at **mandatory** usual location - *C:\\Users\\Public\\solverlab\\miniconda3*. - Usually command *conda activate py3qt5* assume that. - - -Example of install/launch *(Windows7/10-cmd.exe shell)*, using 7-zip_: - -.. code-block:: bat - - C:\ - cd C:\Users\Public\solverlab # this is mandatory location, useful for all users - "C:\Program Files\7-Zip\7z.exe" x .../solverlabGUI_xxxx.7z - cd C:\Users\Public\solverlab\solverlabGUI - where python # --> py3qt5 - python solverlabGUI -h # on line help - python solverlabGUI -g -w ... # launch GUI - - -.. note:: To launch solverlab GUI, you may use Windows shortcut - *C:\\User\\Public\\solverlab\\solverlabGUI\\LaunchSolverlabGUI(.lnk)* - . - - - - diff --git a/CoreFlows/gui/doc/iramainwidget.rst b/CoreFlows/gui/doc/iramainwidget.rst index 4e7d769..2d0a2d1 100644 --- a/CoreFlows/gui/doc/iramainwidget.rst +++ b/CoreFlows/gui/doc/iramainwidget.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _iraMainWidget: @@ -125,9 +125,7 @@ This widget displays the content of the selected med file. It use the MEDCoupling API to do so. .. image:: images/solverlabOtherTab.png - -How to use -+++++++++++ + :align: center The user can *mouse-right-click* on the fileMed field in the **TREE VIEW** and select the "Dump ascii content" context menu. diff --git a/CoreFlows/gui/doc/iratreeviewwidget.rst b/CoreFlows/gui/doc/iratreeviewwidget.rst deleted file mode 100644 index 36d0b19..0000000 --- a/CoreFlows/gui/doc/iratreeviewwidget.rst +++ /dev/null @@ -1,71 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _iraTreeViewWidget: - -Solverlab tree view widget --------------------------- - -From this tree view widget named *SolverlabObjects* users can prepare Solverlab code data. - - -.. image:: images/solverlabTreeViewWidget1.png - :scale: 70 % - :align: center - - -.. _iraModifyTreeViewWidget: - -Modify tree view widget items values -:::::::::::::::::::::::::::::::::::::: - -There are some values as leaves of tree. Names and tooltips are *almost* as Solverlab code naming usage. - -#. **Simple scalar values**. - User can modify value on *mouse-left-double-click*, selecting tree item nodes **hovering column value**. -#. **Other specific values**. - User can modify value on *mouse-right-click*, to get a contextual menu for modification, - selecting tree item nodes **hovering columns name and value**. - -.. note:: Some values are context specific and can be displayed only when they are needed. - - -Tree view widget menus -::::::::::::::::::::::::: - -There are some menus, as *contextual menu* on *mouse-right-click* when selected tree item nodes. -Some menu are generic, and other are specific to node, as contextual actions. -This is a **NOT exhaustive** list of menus: - - -.. _iraExpandMenu: - -Expand/collapse menu -++++++++++++++++++++++ - -.. image:: images/solverlabExpandMenu1.png - :scale: 80 % - :align: center - -This menu contains some actions to expand or collapse all or selected part of -data tree. -To activate this menu users have to *mouse-right-click* on **head of arrow** -of tree item nodes (at **left** of item icon). - - -.. _iraDeleteMenu: - -Delete/Insert menu -++++++++++++++++++++++ - -.. image:: images/solverlabDeleteMenu1.png - :scale: 80 % - :align: center - -This menu contains some actions to insert, delete and reset all or selected part of -data tree. -To activate this menu users have to *mouse-right-click* on 'name' of tree item nodes -(at right of item icon). -The concerned items are usually not leaves (are items without a value). - diff --git a/CoreFlows/gui/doc/logruncodewidget.rst b/CoreFlows/gui/doc/logruncodewidget.rst deleted file mode 100644 index 8c3fce3..0000000 --- a/CoreFlows/gui/doc/logruncodewidget.rst +++ /dev/null @@ -1,32 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _iraLogRunCodeWidget: - -Log Run Code widget --------------------------- - -This widget displays log trace of Solverlab code execution. - -Solverlab code is executed when users activate *Launch Solverlab calculus* button -in :ref:`iraMainWidgetToolbar`. - -.. image:: images/solverlabLogRunCodeWidget1.png - :scale: 80 % - :align: center - -Log Run Code widget menu -::::::::::::::::::::::::: - -.. image:: images/solverlabLogWidgetMenu1.png - :scale: 80 % - :align: center - -This menu contains some actions to display, but **also** edit all or selected part of -current log trace, considering log trace as an ascii file. -To activate this menu users have to *mouse-right-click* **somewhere in** Log Run Code widget. - -.. note:: Using *Open* and *Save* actions in this menu, users can use this widget as - an elementary text file viewer/editor. - diff --git a/CoreFlows/gui/doc/modelusage.rst b/CoreFlows/gui/doc/modelusage.rst index c41305e..095aa97 100644 --- a/CoreFlows/gui/doc/modelusage.rst +++ b/CoreFlows/gui/doc/modelusage.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _modelUsage: @@ -37,10 +37,13 @@ The Solverlab Tree Object you can see in the **TREE VIEW** broke down as follows Diffusion Equation +++++++++++++++++++ -You can see the documentation here (TODO put link to solverlab git hub doc) +You can see the documentation `here `_ .. image:: images/diffusionequationtree.png :align: center -Some value can be a scalar or use a field already in your .med file you can select which mode to use and the GUI will adapt itself. -(Todo show how to switch mode) +A field need to be present in your mesh file to be visible in the GUI. All "field_option" are here for advanced user, it is recommanded to leave them with default value. + +Some value can be a field present in the mesh file or a scalar and the GUI let you choose between those two options. + +The boundary condition are created dynamically by reading in the .med file. diff --git a/CoreFlows/gui/doc/packagespy.rst b/CoreFlows/gui/doc/packagespy.rst index ab494a0..837fcd5 100644 --- a/CoreFlows/gui/doc/packagespy.rst +++ b/CoreFlows/gui/doc/packagespy.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _packagespy: @@ -16,7 +16,26 @@ Le Model est une structure de donnée de type Arbre ou les feuilles contiennent Vue -------------------- -Packagespy a d'abord été pensé pour une disposition graphique spécifique. Un arbre (TREEVIEW) dans le dock de gauche, un barre d'action (TOOLBAR) dans le dock du haut et une fenetre central pour afficher du contenu. +Packagespy a d'abord été pensé pour une disposition graphique spécifique et est basé sur PyQt5. Un arbre (TREEVIEW) dans le dock de gauche, un barre d'action (TOOLBAR) dans le dock du haut et une fenetre central pour afficher du contenu. +La classe TreeXmlXyz peut être directement instancié et utilisera donc des réglages par defaut. +On peut aussi la dériver et créer un affichage spécifique pour une application. + +.. code-block:: python + + class TreeViewSvl(TreeXmlXyz): + class COLS: + labels = ['Name', 'Value', 'Attributes'] + Tag = 0 + Text = 1 + Attributes = 2 + + def __init__(self, parent=None): + super(TreeViewSvl, self).__init__(parent) + + self.setHeaderLabels(self.COLS.labels) + self.setAlternatingRowColors(True) + self.formats_treeview = FORMATS_TREEVIEW + Model @@ -35,6 +54,10 @@ Une classe typique est composé de 3 éléments: .. code-block:: python + import xyzpy.classFactoryXyz as CLFX + from xyzpy.intFloatListXyz import StrInListXyz #only need to import class we want to derivate. + from xyzpy.baseXyz import _XyzConstrainBase, ListOfBaseXyz + class AnimalList(StrInListXyz): _allowedList = ["None", "Cat", "Dog", "Other"] @@ -56,12 +79,12 @@ Une classe typique est composé de 3 éléments: self.setIsCast(True) self._setAllAttributesList() - class ListExample(ListOfBaseXyz) + class ListExample(ListOfBaseXy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z) _allowedClasses = ["NodeExample"] class MyModel(_XyzConstrainBase): - _atributesList = [ + _attributesList = [ ("Customers","ListExample"), ] @@ -75,9 +98,56 @@ Une classe typique est composé de 3 éléments: self._defautNameAsRoot = "Hotel" self._setAllAttributesList() + CLFX.appendAllXyzClasses([AnimalList, NodeExample, ListExample, MyModel]) Controller ------------ Le Controller est la partie du code qui va gérer les interactions entre le Model en mémoire et les actions de l'utilisateur sur la fenetre ainsi que celle avec le code sur lequel la GUI s'appuie. + +.. code-block:: python + + + + + +Ajouter un model dans SolverlabGui +------------------------------------ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CoreFlows/gui/doc/prerequisites.rst b/CoreFlows/gui/doc/prerequisites.rst deleted file mode 100644 index 5f4e2f3..0000000 --- a/CoreFlows/gui/doc/prerequisites.rst +++ /dev/null @@ -1,107 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _iraPrerequisites: - -*************** -Prerequisites -*************** - -There are some definitions, and links. - -#. Solverlab_ code, and its `manual `_. -#. PYTHON_ 3.5, with packages PyQt5_, numpy, matplotlib_, pandas_, etc. (usually named *py3qt5*). -#. PyInstaller_ 3.4, free sofware to make solverlabGUI bundle (*only* valid for Linux). -#. 7-zip_, free sofware to compress/uncompress .7z files (for Windows installations). - -Installation needs a PYTHON_ 3.6 interpreter, which is included in -*All-in-one* solverlab installations (Linux *and* Windows). -see :ref:`iraInstallation_pythonlinux`. - -PyInstaller_ is a program that freezes Python programs -in *bundle*, which is **almost** a python package. -For more information about *bundle*, see `PyInstaller manual `_. - - -.. _iraAllInOneInstallation: - -********************************* -All-in-one installation -********************************* - -These installations contain in **one** compressed file: - -#. the solverlabGUI python scripts. -#. An interpreter PYTHON_. -#. The Solverlab code (GPL), its **source files**, and - two executable files, one for Linux and one Windows. -#. The useful Corteo_ data base (4bits). - - -.. warning:: Corteo data base used version in solverlabGUI is **NOT** Version 20160816. - - -********************************* -All-in-one installation Linux -********************************* - -.. warning:: This is a PyInstaller_ bundle, - installed locally **where users want**. - Python interpreter (named py3qt5) is simultaneously installed, - - -Source tar file *solverlabGUI_bundle_xxxx.tgz* is the **one** compressed archive file -of the PyInstaller bundle in *one folder* mode. -See `more information here `_. - -There are two ways to install solverlabGUI: - -#. Install solverlabGUI directly, using usual *file manager* functionalities: - uncompress tar file in user's choice directory. -#. Install solverlabGUI typing bash command, in usual *terminal*: - - .. code-block:: bash - - # install - cd yourChoiceDirectory # which is really where you want - tar -xf .../solverlabGUI_bundle_xxxx.tgz - # launch - cd solverlabGUI_bundle # folder name as linux pyinstaller bundle - ./solverlabGUI -h # on line help - ./solverlabGUI -g -w ... # launch GUI - - -********************************************* -All-in-one installation Windows7-10 -********************************************* - -.. warning:: #. This is **not** a PyInstaller_ bundle. - #. The **mandatory located** root directory is *C:\\Users\\Public\\solverlab*. - #. The **mandatory located** solverlabGUI directory - is *C:\\Users\\Public\\solverlab\\solverlabGUI*. - #. The **mandatory located** Python interpreter py3qt5 directory - is *C:\\Users\\Public\\solverlab\\miniconda3*. - #. The sofware tool to uncompress .7z files is 7-zip_, which **has to be installed**. - -Source .7z file *solverlabGUI_xxxx.7z* is the **one** compressed archive file. - -There are two ways to install solverlabGUI: - -#. Install solverlabGUI directly, using usual *file manager* functionalities: - uncompress .7z file in mandatory *C:\\Users\\Public* directory. -#. Install solverlabGUI typing DOS command, in usual *(Windows7/10-cmd.exe shell)*: - - .. code-block:: bat - - rem install - C:\ - cd C:\Users\Public # this is mandatory location, useful for all users - "C:\Program Files\7-Zip\7z.exe" x .../solverlab_xxxx.7z - rem launch - C:\User\Public\solverlab\solverlabGUI\LaunchSolverlabGUI.bat - -.. note:: To launch solverlab GUI, you may use Windows shortcut - *C:\\User\\Public\\solverlab\\solverlabGUI\\LaunchSolverlabGUI(.lnk)* - - . diff --git a/CoreFlows/gui/doc/rst_prolog.rst b/CoreFlows/gui/doc/rst_prolog.rst deleted file mode 100644 index 6c0b973..0000000 --- a/CoreFlows/gui/doc/rst_prolog.rst +++ /dev/null @@ -1,45 +0,0 @@ - -.. raw:: latex - - \clearpage - -.. _SOLVERLAB: https://www.nano.uni-jena.de/en/solverlab.html -.. _SALOME: http://www.salome-platform.org -.. _SPHINX: http://sphinx-doc.org -.. _MATPLOTLIB: https://matplotlib.org -.. _PANDAS: https://pandas.pydata.org -.. _NavToolPlt: http://matplotlib.org/users/navigation_toolbar.html?highlight=toolbar -.. _C++: http://www.cplusplus.com/ -.. _CMake: https://cmake.org/ -.. _Python: https://docs.python.org/3.5 -.. _Python3: https://docs.python.org/3.5 -.. _ParaView: http://www.paraview.org -.. _Anaconda: https://docs.continuum.io/anaconda/pkg-docs# -.. _Miniconda: http://conda.pydata.org/miniconda.html -.. _Git: https://git-scm.com -.. _Git-windows: https://git-scm.com -.. _GitCheatSheet: https://services.github.com/kit/downloads/github-git-cheat-sheet.pdf -.. _SolverlabCheatSheet: ../solverlab-cheat-sheet.pdf -.. _SolverlabGuiPdf: ./../../src/solverlabDocuments/solverlabGUI.pdf -.. _SolverlabManualPdf: https://github.com/ndjinga/SOLVERLAB/blob/master/README.md -.. _SolverlabPresentationPdf: https://github.com/ndjinga/SOLVERLAB/blob/master/CoreFlows/Documentation/PhysicalModels.md -.. _CLI: https://en.wikipedia.org/wiki/Command-line_interface -.. _Tar: https://en.wikipedia.org/wiki/Tar_(computing) -.. _OS: https://en.wikipedia.org/wiki/Operating_system -.. _VCS: https://en.wikipedia.org/wiki/Version_control -.. _CVS: https://fr.wikipedia.org/wiki/Concurrent_versions_system -.. _SVN: https://en.wikipedia.org/wiki/Apache_Subversion -.. _GUI: https://en.wikipedia.org/wiki/Graphical_user_interface -.. _RestructuredText: https://en.wikipedia.org/wiki/ReStructuredText -.. _PyQt5: https://pypi.org/project/PyQt5 -.. _ConfigParser: https://docs.python.org/3/library/configparser.html -.. _PyInstaller: https://www.pyinstaller.org -.. _PyInstallerManual: https://pyinstaller.readthedocs.io/en/stable -.. _Corteo: http://www.lps.umontreal.ca/~schiette/index.php?n=Recherche.Corteo -.. _highlight: http://www.andre-simon.de/doku/highlight/en/highlight.php -.. _CSV: https://en.wikipedia.org/wiki/Comma-separated_values -.. _MinGW: http://www.mingw.org -.. _GNU: https://www.gnu.org/home.en.html -.. _GNUgcc: https://www.gnu.org/software/gcc -.. _7-zip: https://www.7-zip.org -.. _Solveralabinstall: https://github.com/ndjinga/SOLVERLAB#compile-and-install-solverlab diff --git a/CoreFlows/gui/doc/solverlabcode.rst b/CoreFlows/gui/doc/solverlabcode.rst deleted file mode 100644 index 06277b3..0000000 --- a/CoreFlows/gui/doc/solverlabcode.rst +++ /dev/null @@ -1,132 +0,0 @@ - -.. include:: ./rst_prolog.rst - -.. _iraSolverlabCode: - -*************************** -Solverlab code compilation -*************************** - -SolverlabGUI uses a specific version of Solverlab code, modified by J.P. Crocombette (cea), -which is tagged version 1.1.x for now. -This code comes from original version 1.0.8 by Christian Borschel. - -Users find two current compiled executable files, which are used by solverlabGUI, located at -*.../solverlabGUI/solverlabCode*. - -#. *solverlab_mingw64.exe*, compiled by MinGW_ gcc compiler, for Windows (64 bits). -#. *solverlab_linux64.exe*, compiled by GNU_ `gcc `_ compiler, for Linux (64 bits). - -A development installation of Solverlab code allows programmer improvments. -The following chapters explain Solverlab code compilation processes. - - -.. _iraSolverlabCodeSources: - -Solverlab code sources -============================ - -With GPL licence, sources are available in solverlabGUI directory tree, located at -*.../solverlabGUI/solverlabCodes/solverlab_cea*. - -User find also the useful Corteo_ data base, located at -*.../solverlabGUI/solverlabCodes/data_4bit* - -.. code-block:: bash - - .../solverlabCodes > tree - . - ├── data_4bit - │   ├── 10.asp - │   ├── 11.asp - etc. - │   ├── corteo.mat - │   └── erfinv.dat - ├── doc - │   ├── 20140804_solverlab_manual.pdf - │   ├── Corteo20160816.pdf - │   ├── solverlab-1-s2.0-S0168583X11006318-main.pdf - │   └── Solverlab_tuto_installation.pdf - ├── solverlab_cea - │   ├── compileSolverlab.bat - │   ├── fileio.c - │   ├── fileio.h - │   ├── fromcorteo.c - │   ├── fromcorteo.h - │   ├── geometry.c - │   ├── geometry.h - │   ├── indexvalues6bit.h - │   ├── indexvalues.h - │   ├── solverlab.c - │   ├── solverlab.h - │   ├── license.txt - │   ├── makefile_cea - │   ├── target.c - │   ├── target.h - │   ├── transport.c - │   ├── transport.h - │   ├── utils.c - │   └── utils.h - ├── compileSolverlab.lnk - └── README.txt - - - -.. _iraSolverlabCodeCompilation_linux: - -Solverlab code compilation Linux -================================== - -Example of compilation *(Linux-bash)*: - -.. code-block:: bash - - # this is your location - cd .../solverlabGUI/solverlabCodes/solverlab_cea - # verifications - cat README.txt - # compilation - make -f makefile_cea clean - make -f makefile_cea solverlab - make -f makefile_cea installGUI # install executable in solverlabGUI/solverlabCode - - - -.. _iraSolverlabCodeCompilation_windows: - -Solverlab code compilation Windows7-10 -======================================= - -.. warning:: #. MinGW_ is supposed to be set - and useful in environment path, at an usual location - *C:\\MinGW* (for example). - #. Git-windows_ is supposed to be set - and useful in environment path, at an usual location - *C:\\Program Files\\Git* (for example). - In order to use like-Linux commands. - - -Example of compilation *(Windows7/10-cmd.exe shell)*: - -.. code-block:: bat - - # this is mandatory location - C:\ - cd C:\Users\Public\solverlab\solverlabGUI\solverlabCodes\solverlab_cea - # verifications - where make # --> C:\MinGW\bin\make.exe - where gcc # --> C:\MinGW\bin\gcc.exe - where uname # --> C:\Program Files\Git\usr\bin\uname.exe - # compilation - make -f makefile_cea clean - make -f makefile_cea solverlab - make -f makefile_cea installGUI # install executable in solverlabGUI/solverlabCode - - -.. note:: To launch Solverlab code compilation, you may use Windows shortcut - *C:\\User\\Public\\solverlab\\solverlabGUI\\solverlabCodes\\compileSolverlab(.lnk)* - . - - - - diff --git a/CoreFlows/gui/doc/specificinstall.rst b/CoreFlows/gui/doc/specificinstall.rst deleted file mode 100644 index e69de29..0000000 diff --git a/CoreFlows/gui/doc/svlinstallation.rst b/CoreFlows/gui/doc/svlinstallation.rst index 14ae60e..c55dcb7 100644 --- a/CoreFlows/gui/doc/svlinstallation.rst +++ b/CoreFlows/gui/doc/svlinstallation.rst @@ -1,5 +1,5 @@ -.. include:: ./rst_prolog.rst +.. include:: ../rst_prolog.rst .. _svlInstallation: @@ -21,24 +21,48 @@ Some dependencies are needed for the installation and need to be on your compute - cmake3 - g++ (or another C++ compiler) - python3-dev, python3-numpy, swig3 +- PyQt5_ Standalone installation -------------------------- The most simple installation process and should suit to most users. +This way of installation will download the some dependencies, you need to have internet. -To use the GUI you need to have installed Python3_ on your computer with the following dependency: +Start by creating two folders on the same level as the source. -- PyQt5_ +.. code-block:: bash + + cd ~/workspace/SOLVERLAB + mkdir SOLVERLAB_build + mkdir SOLVERLAB_install + +Then we are going to compile the project with cmake in the build folder and install it. + +.. code-block:: bash + + cd SOLVERLAB_build + cmake ../SOLVERLAB-master/ -DCMAKE_INSTALL_PREFIX=../SOLVERLAB_install -DCMAKE_BUILD_TYPE=Release -DSOLVERLAB_WITH_GUI=ON -DSOLVERLAB_WITH_DOCUMENTATION=ON + make + make install + +To check if your installation use -- TODO packagespy +.. code-block:: bash -.. warning:: For the moment Solverlab **doesn't** work with Conda TODO why ? can't find some librairy + make validation + +If all test succed you can now go in the install folder. -When all the dependency are installed on your computer you can follow the `Solverlab install process `_ +Before any use of Solverlab don't forget to set its environement variable. +You will find the script env_SOLVERLAB.sh in the install folder. + +.. code-block:: bash + + source ~/workspace/SOLVERLAB/SOLVERLAB_install/env_SOLVERLAB.sh -When it's done you should be able to launch the GUI with the command +You can now launch the GUI with .. code-block:: bash diff --git a/CoreFlows/gui/doc/svlotherfilewidget.rst b/CoreFlows/gui/doc/svlotherfilewidget.rst deleted file mode 100644 index 3fdfc54..0000000 --- a/CoreFlows/gui/doc/svlotherfilewidget.rst +++ /dev/null @@ -1,19 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _svlOtherFileWidget: - -Other File widget ------------------- - -This widget displays the content of the selected med file. -It use the MEDCoupling API to do so. - -.. image:: images/solverlabOtherTab.png - -How to use -..................... - -The user can *mouse-right-click* on the fileMed field in the **TREE VIEW** and select the "Dump ascii content" context menu. - diff --git a/CoreFlows/gui/doc/tips.rst b/CoreFlows/gui/doc/tips.rst deleted file mode 100644 index c8cfd63..0000000 --- a/CoreFlows/gui/doc/tips.rst +++ /dev/null @@ -1,65 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _iraTips: - -Tips --------------------------- - -Tip 01 -======= -.. image:: images_tips/tip_01_solverlabMainWidgetToolbar1.png - :scale: 80 % - :align: center - -Tip 05 -======= -.. image:: images_tips/tip_05_solverlabMainWidgetToolbar1.png - :scale: 80 % - :align: center - -Tip 08 -======= -.. image:: images_tips/tip_08_solverlabMainWidgetToolbar1.png - :scale: 80 % - :align: center - -Tip 20 -======= -.. image:: images_tips/tip_20_expand.png - :scale: 80 % - :align: center - -Tip 25 -======= -.. image:: images_tips/tip_25_contextual_menu.png - :scale: 80 % - :align: center - -Tip 28 -======= -.. image:: images_tips/tip_28_mouseover_tooltip.png - :scale: 80 % - :align: center - -Tip 30 -======= -.. image:: images_tips/tip_30_modify_values.png - :scale: 80 % - :align: center - -Tip 98 -======= -.. image:: images_tips/tip_98_solverlabMainWidgetToolbar1.png - :scale: 80 % - :align: center - -Tip 99 -======= -.. image:: images_tips/tip_99_solverlabMainWidgetToolbar1.png - :scale: 80 % - :align: center - - - diff --git a/CoreFlows/gui/doc/usage.rst b/CoreFlows/gui/doc/usage.rst deleted file mode 100644 index 62150c7..0000000 --- a/CoreFlows/gui/doc/usage.rst +++ /dev/null @@ -1,71 +0,0 @@ - -.. include:: ./rst_prolog.rst - - -.. _iraUsage: - -********************** -Usage of solverlabGUI -********************** - -Usage -===== - -SolverlabGUI usage is a Command Line Interface (CLI_), which is -Windows *and* Linux compatible (but only tested on Linus for the moment). - -.. code-block:: bash - - solverlabGUI --[options] - - -Options of solverlabGUI -............................ - -Useful but *not exhaustive* generic options of *solverlabGUI* CLI. - - -Option *--help or -h* -............................ - -Get help as simple text. - -.. code-block:: bash - - solverlabGUI --help # get list of existing options - - -Option *--doc or -d* -............................ - -Get documentation as browser html. - -.. code-block:: bash - - solverlabGUI --doc # see html doc - - -Option *--verbose or -v* -............................ - -Change verbosity level (default is 'info'). - -.. code-block:: bash - - # execute solverlabGUI command in verbose debug mode - solverlabGUI -v debug - - -Option *--workdir or -w* -............................ - -Change working directory (user data directory). Default is -../SOLVERLABGUI_WORKDIR - -.. code-block:: bash - - # execute solverlabGUI in user choice working directory - solverlabGUI -w .../MY_WORKDIR - - - -- 2.39.2