]> SALOME platform Git repositories - tools/solverlab.git/blob - CoreFlows/gui/doc/packagespy.rst
Salome HOME
Added sphinx documentation of the GUI
[tools/solverlab.git] / CoreFlows / gui / doc / packagespy.rst
1
2 .. include:: ./rst_prolog.rst
3
4
5 .. _packagespy:
6
7
8 =============
9 Packagespy
10 =============
11
12 Packagespy est une bibliothèque python développé au CEA permettant la création d'interface graphique. Elle est basé sur le design du Model-Vue-Controller.
13 Le Model est une structure de donnée de type Arbre ou les feuilles contiennent les valeurs.
14 (Chaque partie est normalement indépendante et ne peux pas agir directement sur l'autre ainsi elle communique la l'aide de request au coeur de l'api)
15
16 Vue
17 --------------------
18
19 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.
20
21
22 Model
23 -----------
24
25 Le Model est la structure de donnée qui va enregistrer les données entrées par l'utilisateur. Packagespy à été concu pour fonctionner avec un arbre de donnée. Chaque noeud comportant une Key, son nom et une Value, sa classe.
26
27 Toute les classes utilisées en tant que noeud doivent hérité de xyz.BaseFreeXyz
28 Packagespy fournit des classes abstraites (reconnaissable car commançant par "_" ) ainsi que des classes basique permettant de répondre a une grande parties des besoins de la plupart des structures de données necessaire aux lancements des applications.
29
30 Une classe typique est composé de 3 éléments:
31
32 - _attributesList : une liste contenant les fils du noeud actuel.
33 - _helpDict : un dictionnaire contenant des tooltips a afficher a l'utilisateur pour chaque fils du noeud.
34 - __init__ : la fonction qui va definir le comportement a l'initialisation.
35
36 .. code-block:: python
37
38     class AnimalList(StrInListXyz):
39       _allowedList = ["None", "Cat", "Dog", "Other"]
40
41     class NodeExample(_XyzContrainBase):
42       _attributesList = [
43       ("Name","StringXyz"),
44       ("Room","IntPosXyz"),
45       ("Animal","AnimalList")
46       ]
47       
48       _helpDict = {
49       "Name": ("Name of the customer",""),
50       "Room": ("Room of the customer",""),
51       "Animal":("Which animal is with him ?",""),
52       }
53       
54        def __init__(self):
55          super(NodeExample, self).__init__()
56          self.setIsCast(True)
57          self._setAllAttributesList()
58       
59     class ListExample(ListOfBaseXyz)
60       _allowedClasses = ["NodeExample"]
61
62     class MyModel(_XyzConstrainBase):
63       
64       _atributesList = [
65       ("Customers","ListExample"),
66       ]
67       
68       _helpDict = {
69       "Customers": ("List of all actual customer","")
70       }
71       
72       def __init__(self):
73         super(MyModel, self).__init__()
74         self.setIsCast(True)
75         self._defautNameAsRoot = "Hotel"
76         self._setAllAttributesList()
77       
78       
79 Controller
80 ------------
81
82 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.
83