Salome HOME
Open and Edit case
[modules/adao.git] / src / daSalome / daGUI / daGuiImpl / datassimStudyEditor.py
1 # -*- coding: iso-8859-1 -*-
2 #  Copyright (C) 2010 EDF R&D
3 #
4 #  This library is free software; you can redistribute it and/or
5 #  modify it under the terms of the GNU Lesser General Public
6 #  License as published by the Free Software Foundation; either
7 #  version 2.1 of the License.
8 #
9 #  This library is distributed in the hope that it will be useful,
10 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 #  Lesser General Public License for more details.
13 #
14 #  You should have received a copy of the GNU Lesser General Public
15 #  License along with this library; if not, write to the Free Software
16 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 __author__="aribes/gboulant"
22
23 from enumerate import Enumerate
24 import studyedit
25 import datassimModuleHelper
26 from daGuiImpl.datassimCase import DatassimCase
27
28 #
29 # ==============================================================================
30 # Constant parameters and identifiers
31 # ==============================================================================
32 #
33 DATASSIM_ITEM_TYPES = Enumerate([
34     "DATASSIM_CASE",
35 ])
36
37 #
38 # ==============================================================================
39 # Function dedicated to the data management in the salome study
40 # ==============================================================================
41
42 # For developpers, note that the data structures used here are:
43 # - the SALOME study whose API is defined by SALOMEDS::Study
44 # - an item in a study whose API is defined by SALOMEDS:SObject
45 # - a study component, whose API is defined by SALOMEDS::SComponent
46 #   a SComponent is a reference in a study toward a SALOME component
47 #
48
49 def addInStudy(salomeStudyId, datassimCase):
50     """
51     This function adds in the specified SALOME study a study entry that corresponds
52     to the specified datassim case. This study case is put in a folder under
53     the DATASSIM component and is identified by the case name.
54     """
55
56     studyEditor = studyedit.getStudyEditor(salomeStudyId)
57
58     datassimRootEntry = studyEditor.findOrCreateComponent(
59         engineName    = datassimModuleHelper.componentName(),
60         componentName = datassimModuleHelper.componentUserName())
61
62     itemName  = datassimCase.get_name()
63     itemValue = ""
64     itemType  = DATASSIM_ITEM_TYPES.DATASSIM_CASE
65
66     salomeStudyItem = studyEditor.createItem(
67         datassimRootEntry, itemName,
68         comment = itemValue,
69         typeId  = itemType)
70     # _MEM_ Note that we use the comment attribute to store the serialize
71     # description of the data.
72
73     return salomeStudyItem
74
75 def updateItem(salomeStudyId, salomeStudyItem, datassimCase):
76
77     studyEditor = studyedit.getStudyEditor(salomeStudyId)
78     
79     itemName  = datassimCase.get_name()
80     itemValue = ""
81
82     studyEditor.setItem(salomeStudyItem,
83         name    = itemName,
84         comment = itemValue)
85
86 def removeItem(salomeStudyId, item):
87     """
88     Remove the item from the specified study.
89     """
90     studyEditor = studyedit.getStudyEditor(salomeStudyId)
91     return studyEditor.removeItem(item,True)
92
93
94 def isValidDatassimCaseItem(salomeStudyId,item):
95     """
96     Return true if the specified item corresponds to a valid datassimCase
97     """
98     if item is None:
99         return False
100
101     studyEditor = studyedit.getStudyEditor(salomeStudyId)
102     itemType = studyEditor.getTypeId(item)
103     if itemType != DATASSIM_ITEM_TYPES.DATASSIM_CASE:
104         return False
105
106     return True