mirror of https://gitlab.com/pamhyr/pamhyr2
doc: dev: Some minor change.
parent
48851c7d71
commit
89353b656f
|
|
@ -75,62 +75,41 @@ https://doc.qt.io/qt-5/model-view-programming.html (last access
|
|||
|
||||
* TODO Architecture
|
||||
|
||||
Pamhyr2 architecture is based on Qt Model/View programming[fn:qt-mv] architecture.
|
||||
Pamhyr2's architecture is based on Qt Model/View, see Figure
|
||||
[[graph-architecture]]. It is made up of several different components: the
|
||||
model (in blue), the graphical components (in red), the
|
||||
actions/delegates (in green), the commands (in purple), the solvers
|
||||
(in yellow) and the save file (in grey).
|
||||
|
||||
#+name: graph-pipeline
|
||||
#+header: :results drawer
|
||||
#+header: :exports results
|
||||
#+header: :post attr_wrap(width="12cm", data=*this*, name="graph-pipeline", caption="Pamhyr2 solver execution pipeline architecture scheme", float="t")
|
||||
#+begin_src dot :file "images/graph-pipeline.png" :cache no
|
||||
digraph {
|
||||
node[colorscheme=set19,shape=box,style="filled",fillcolor=9];
|
||||
|
||||
subgraph cluster0 {
|
||||
label="Pamhyr2"
|
||||
config[label="Config",fillcolor=5];
|
||||
model[label="Model",fillcolor=2];
|
||||
obj[label="Solver",fillcolor=6];
|
||||
results[label="Results",fillcolor=2];
|
||||
view[label="View",fillcolor=1];
|
||||
|
||||
results -> model[style="dotted"];
|
||||
results -> obj[style="dotted"];
|
||||
}
|
||||
|
||||
config -> obj[label=""];
|
||||
obj -> model;
|
||||
|
||||
subgraph cluster1{
|
||||
label="System";
|
||||
in[label="Solver input files",shape=note];
|
||||
out[label="Solver output files",shape=note];
|
||||
bin[label="Solver binary",shape=note];
|
||||
}
|
||||
|
||||
obj -> in[label="Write"];
|
||||
bin -> in[label="Read"];
|
||||
obj -> bin[label="Execute"];
|
||||
bin -> out[label="Write"];
|
||||
obj -> results[label="Create"];
|
||||
results -> out[label="Read"];
|
||||
view -> model;
|
||||
view -> results;
|
||||
}
|
||||
#+end_src
|
||||
The model is a set of python classes and can be exported to a single
|
||||
SQLite3 format backup file. The view can be made up of various
|
||||
components, generally a Qt window with other view components, such as:
|
||||
a table, a text box, a button, a plot, and so on. The user can view
|
||||
the data using the view and interact with certain components. These
|
||||
components are linked to an action (such as a Python function) or to a
|
||||
delegate class. These actions or delegate can create a command (based
|
||||
on Qt UndoCommand class), this command must implement two functions:
|
||||
One to modify the model, one to reverte this modification and reset
|
||||
the model to previous state. All model modification must be perform by
|
||||
a command to be cancelled. The user can also run a solver and add some
|
||||
simulation results to model data.
|
||||
|
||||
#+name: graph-architecture
|
||||
#+header: :results drawer
|
||||
#+header: :exports results
|
||||
#+header: :post attr_wrap(width="7cm", data=*this*, name="graph-architecture", caption="Pamhyr2 Model/View architecture scheme (inspired by Qt Model/View architecture [[https://doc.qt.io/qt-5/model-view-programming.html]])", float="t")
|
||||
#+header: :post attr_wrap(width="9cm", data=*this*, name="graph-architecture", caption="Pamhyr2 Model/View architecture scheme (inspired by Qt Model/View architecture [[https://doc.qt.io/qt-5/model-view-programming.html]])", float="t")
|
||||
#+begin_src dot :file "images/graph-architecture.png" :cache no
|
||||
digraph {
|
||||
bgcolor="transparent";
|
||||
node[colorscheme=set19,shape=box,style="filled",fillcolor=white];
|
||||
|
||||
save[label="Pamhyr save",fillcolor="9",shape=note];
|
||||
model[label="Model",fillcolor="2"];
|
||||
view[label="View",fillcolor="1"];
|
||||
delegate[label="Delegate",fillcolor="3"];
|
||||
undocommand[label="UndoCommand",fillcolor="4"];
|
||||
action[label="Action",fillcolor="3"];
|
||||
solver[label="Solver",fillcolor="6"];
|
||||
undocommand[label="Command",fillcolor="4"];
|
||||
user[label="User",shape=ellipse];
|
||||
|
||||
model -> save[label="Save"];
|
||||
|
|
@ -139,19 +118,37 @@ Pamhyr2 architecture is based on Qt Model/View programming[fn:qt-mv] architectur
|
|||
model -> view[label="Rendering"];
|
||||
view -> delegate[label="Rendering"];
|
||||
delegate -> undocommand[label="Create"];
|
||||
undocommand -> model[label="Modify"]
|
||||
action -> undocommand[label="Create"];
|
||||
action -> solver[label="Run"];
|
||||
solver -> model[label="Add results"];
|
||||
undocommand -> model[label="Modify"];
|
||||
|
||||
view -> user[label="Vizualize"];
|
||||
user -> delegate[label="Modify"];
|
||||
user -> action[label="Activate"];
|
||||
}
|
||||
#+end_src
|
||||
|
||||
All the model source code are in the directory {{{file(src/Model)}}}
|
||||
(let see section [[Model]] for more details), the View components,
|
||||
delegate and command are in {{{file(src/View)}}} (see section [[View]]). Solvers classes are
|
||||
in {{{file(src/Solver)}}} (see section [[Solver]]).
|
||||
|
||||
[fn:qt-mv] The Qt Model/View documentation web page:
|
||||
https://doc.qt.io/qt-5/model-view-programming.html
|
||||
|
||||
** TODO Model
|
||||
|
||||
- Model de donnée Python
|
||||
- Correspond à une sauvegarde SQL
|
||||
|
||||
#+name: graph-model
|
||||
#+header: :results drawer
|
||||
#+header: :exports results
|
||||
#+header: :post attr_wrap(width="16cm", data=*this*, name="graph-model", caption="Pamhyr2 Model architecture scheme", float="t")
|
||||
#+header: :post attr_wrap(width="16cm", data=*this*, name="graph-model", caption="Pamhyr2 model class dependencies", float="t")
|
||||
#+begin_src dot :file "images/graph-model.png" :cache no
|
||||
digraph {
|
||||
bgcolor="transparent";
|
||||
node[colorscheme=set19,shape=box,style="filled",fillcolor="2"];
|
||||
|
||||
study[label="Study"];
|
||||
|
|
@ -202,6 +199,14 @@ Pamhyr2 architecture is based on Qt Model/View programming[fn:qt-mv] architectur
|
|||
geopoint[label="Point"];
|
||||
}
|
||||
|
||||
subgraph cluster07 {
|
||||
label="Results"
|
||||
results[label="Results"]
|
||||
rriver[label="River"];
|
||||
rreach[label="Reach"];
|
||||
rcrosssection[label="Cross-section"];
|
||||
}
|
||||
|
||||
study -> river;
|
||||
river -> rnode;
|
||||
river -> redge;
|
||||
|
|
@ -218,20 +223,71 @@ Pamhyr2 architecture is based on Qt Model/View programming[fn:qt-mv] architectur
|
|||
geocrosssection -> sedimentlayer;
|
||||
geopoint -> sedimentlayer;
|
||||
|
||||
results -> study[style="dashed"];
|
||||
results -> rriver;
|
||||
rriver -> river[style="dashed"];
|
||||
rriver -> rreach;
|
||||
rreach -> georeach[style="dashed"];
|
||||
rreach -> rcrosssection;
|
||||
rcrosssection -> geocrosssection[style="dashed"];
|
||||
}
|
||||
#+end_src
|
||||
|
||||
[fn:qt-mv] The Qt Model/View documentation web page:
|
||||
https://doc.qt.io/qt-5/model-view-programming.html
|
||||
|
||||
** TODO Model
|
||||
*** TODO SQL study file
|
||||
*** TODO List class
|
||||
*** TODO Dict class
|
||||
** TODO View
|
||||
*** TODO UI file
|
||||
*** TODO Window class
|
||||
** TODO UndoCommand
|
||||
** TODO Table
|
||||
** TODO Plot
|
||||
*** TODO Translate
|
||||
*** TODO Window
|
||||
*** TODO UndoCommand
|
||||
*** TODO Table
|
||||
*** TODO Plot
|
||||
*** TODO Mainwindow
|
||||
** TODO Solver
|
||||
|
||||
#+name: graph-pipeline
|
||||
#+header: :results drawer
|
||||
#+header: :exports results
|
||||
#+header: :post attr_wrap(width="12cm", data=*this*, name="graph-pipeline", caption="Pamhyr2 solver execution pipeline architecture scheme", float="t")
|
||||
#+begin_src dot :file "images/graph-pipeline.png" :cache no
|
||||
digraph {
|
||||
bgcolor="transparent";
|
||||
node[colorscheme=set19,shape=box,style="filled",fillcolor=9];
|
||||
|
||||
subgraph cluster0 {
|
||||
label="Pamhyr2"
|
||||
config[label="Config",fillcolor=5];
|
||||
model[label="Model",fillcolor=2];
|
||||
obj[label="Solver",fillcolor=6];
|
||||
results[label="Results",fillcolor=2];
|
||||
view[label="View",fillcolor=1];
|
||||
|
||||
results -> model[style="dashed"];
|
||||
results -> obj[style="dashed"];
|
||||
}
|
||||
|
||||
config -> obj[label=""];
|
||||
obj -> model[style="dashed"];
|
||||
|
||||
subgraph cluster1{
|
||||
label="System";
|
||||
in[label="Solver input files",shape=note];
|
||||
out[label="Solver output files",shape=note];
|
||||
bin[label="Solver binary",shape=note];
|
||||
}
|
||||
|
||||
obj -> in[label="Write (1)"];
|
||||
obj -> bin[label="Execute (2)"];
|
||||
bin -> in[label="Read (2.1)"];
|
||||
bin -> out[label="Write (2.2)"];
|
||||
obj -> results[label="Create (3)"];
|
||||
obj -> out[label="Read (3.1)"];
|
||||
view -> model[style="dashed"];
|
||||
view -> results[style="dashed"];
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** TODO Unit tests
|
||||
** TODO The debug mode
|
||||
* TODO Build the project
|
||||
|
|
@ -530,10 +586,9 @@ file and make a merge request.
|
|||
#+end_src
|
||||
|
||||
#+NAME: qt-linguist-setup
|
||||
#+ATTR_HTML: :width 8cm
|
||||
#+ATTR_LATEX: :width 8cm
|
||||
#+CAPTION: Qt linguist lang setup example with italian.
|
||||
[[../images/Qt-linguist-setup-lang.png]]
|
||||
[[./images/Qt-linguist-setup-lang.png]]
|
||||
|
||||
[fn:qt-linguist] The Qt linguist documentation web page:
|
||||
https://doc.qt.io/qt-5/qtlinguist-index.html (last access 2023-09-18)
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Loading…
Reference in New Issue