2 # -*- coding: iso-8859-1 -*-
3 # Copyright (C) 2008 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 # This library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Lesser General Public
8 # License as published by the Free Software Foundation; either
9 # version 2.1 of the License.
11 # This library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Lesser General Public License for more details.
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this library; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 # File : salome_notebook.py
25 # Author : Roman NIKOLAEV, Open CASCADE S.A.S.
29 Module salome_notebook gives access to Salome Notebook.
34 class PseudoStudyForNoteBook(object):
36 def __init__(self, **kwargs):
40 def GetVariableNames(self):
41 return self.kwargs.keys()
43 def IsVariable(self, variableName):
44 return variableName in self.kwargs
46 def IsReal(self, variableName):
47 val = self.kwargs[variableName]
58 def IsString(self, variableName):
59 return not self.IsReal(variableName)
61 def GetString(self, variableName):
62 return self.kwargs[variableName]
64 def GetReal(self, variableName):
65 return float(self.kwargs[variableName])
74 def __init__(self, Study):
77 def set(self, variableName, variable):
79 Create (or modify) variable with name "variableName"
80 and value equal "theValue".
82 if type(variable) == float:
83 self.myStudy.SetReal(variableName, variable)
85 elif type(variable) == int:
86 self.myStudy.SetInteger(variableName, variable)
88 elif type(variable) == bool:
89 self.myStudy.SetBoolean(variableName, variable)
91 elif type(variable) == str:
92 self.myStudy.SetString(variableName, variable)
94 def get(self, variableName):
96 Return value of the variable with name "variableName".
99 if self.myStudy.IsVariable(variableName):
101 if self.myStudy.IsReal(variableName):
102 aResult = self.myStudy.GetReal(variableName)
104 elif self.myStudy.IsInteger(variableName):
105 aResult = self.myStudy.GetInteger(variableName)
107 elif self.myStudy.IsBoolean(variableName):
108 aResult = self.myStudy.GetBoolean(variableName)
110 elif self.myStudy.IsString(variableName):
111 aResult = self.myStudy.GetString(variableName)
112 aResult_orig = aResult
113 l = self.myStudy.GetVariableNames()
114 l.remove(variableName)
116 # To avoid the smallest strings to be replaced first,
117 # the list is sorted by decreasing lengths
119 l.sort(key=str.__len__)
122 if aResult.find(name) >= 0:
124 aResult = aResult.replace(name, "%s"%(val))
128 aResult = eval(aResult)
132 msg += "A problem occurs while parsing "
133 msg += "the variable %s "%(variableName.__repr__())
134 msg += "with value %s ..."%(aResult_orig.__repr__())
136 msg += "Please, check your notebook !"
142 def isVariable(self, variableName):
144 Return true if variable with name "variableName"
145 exists in the study, otherwise return false.
147 return self.myStudy.IsVariable(variableName)
149 def setAs(self, variableName, typ):
150 value = self.get(variableName)
151 value = float(typ(value))
152 self.myStudy.SetStringAsDouble(variableName, value)
155 def setAsReal(self, variableName):
156 self.setAs(variableName, float)
159 def setAsInteger(self, variableName):
160 self.setAs(variableName, int)
163 def setAsBool(self, variableName):
164 self.setAs(variableName, bool)
168 for variableName in self.myStudy.GetVariableNames():
169 self.get(variableName)
175 def checkThisNoteBook(**kwargs):
176 study = PseudoStudyForNoteBook(**kwargs)
177 note_book = NoteBook(study)
181 notebook = NoteBook(salome.myStudy)