1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
4 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
28 import SALOME_Session_idl
38 _AP_LISTS_LIST_ = "AP_LISTS_LIST"
39 _AP_ENTRIES_LIST_ = "AP_ENTRIES_LIST"
40 _AP_PROPERTIES_LIST_ = "AP_PROPERTIES_LIST"
41 _AP_DUMP_PYTHON_ = "AP_DUMP_PYTHON"
47 if vp_session is None:
48 vp_session = salome.naming_service.Resolve("/Kernel/Session")
49 vp_session = vp_session._narrow(SALOME.Session)
55 Interface IParameters was designed to provide a common way to set up
56 named parameters. The interface is initialized by AttributeParameter that
57 is used as a container of stored data.
58 The interface supports 3 types of named parameters:
59 1. Named list - a named list consists of string values.
60 One can append value to list (method 'append'), get a number of values
61 in the list (method 'nbValues'), get all values of the given list
62 (method 'getValues') and get names of all created named lists.
63 2. Parameters - that is a set of named string values associated with some named
64 entity. Parameter consists of tree elements: entity name, a parameter name
65 and a parameter value. Thus for one named entity there are an arbitrary number
66 of pair 'name parameter : value'.
67 One can add a new parameter to entry (method 'setParameter'), get a value of
68 a given named parameter of the given entry (method 'getParameter'), get a number
69 of parameters of the given entry (method 'getNbParameters'), get all names of
70 parameters for the given entry (method 'getAllParameterNames'), get all
71 values of parameters for the entry (method 'getAllParameterValues') and get all
72 stored entries (method 'getEntries')
73 3. Property - a property has a name and a string value.
74 One can set property (method 'setProperty'), getProperty (method 'getProperty') and
75 get a list of all stored properties (method 'getProperties').
78 Methods not mentioned above are private and is not supposed to be used
79 by module's developers.
82 def __init__(self, attributeParameter):
83 """Initializes the instance"""
84 self._ap = attributeParameter
87 def append(self, listName, value):
88 """Appends a value to the named list"""
89 if self._ap is None: return -1
91 if self._ap.IsSet(listName, PT_STRARRAY) == 0:
92 if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: self._ap.SetStrArray(_AP_LISTS_LIST_, v);
93 if listName != _AP_ENTRIES_LIST_ and listName != _AP_PROPERTIES_LIST_:
94 self.append(_AP_LISTS_LIST_, listName)
96 self._ap.SetStrArray(listName, v)
99 v = self._ap.GetStrArray(listName)
101 self._ap.SetStrArray(listName, v)
104 def nbValues(self, listName):
105 """Returns a number of values in the named list"""
106 if self._ap is None: return -1
107 if self._ap.IsSet(listName, PT_STRARRAY) == 0: return 0
108 v = self._ap.GetStrArray(listName)
111 def getValues(self, listName):
112 """Returns a list of values in the named list"""
114 if self._ap is None: return v
115 if self._ap.IsSet(listName, PT_STRARRAY) == 0: return v
116 return self._ap.GetStrArray(listName)
119 """Returns a list of named lists' names"""
121 if self._ap is None: return v
122 if self._ap.IsSet(_AP_LISTS_LIST_, PT_STRARRAY) == 0: return v
123 return self._ap.GetStrArray(_AP_LISTS_LIST_)
125 def setParameter(self, entry, parameterName, value):
126 """Sets a value of the named parameter for the entry"""
127 if self._ap is None: return
129 if self._ap.IsSet(entry, PT_STRARRAY) ==0:
130 self.append(_AP_ENTRIES_LIST_, entry) #Add the entry to the internal list of entries
131 self._ap.SetStrArray(entry, v)
134 v = self._ap.GetStrArray(entry)
135 v.append(parameterName)
137 self._ap.SetStrArray(entry, v)
140 def getParameter(self, entry, parameterName):
141 """Returns a value of the named parameter for the entry"""
142 if self._ap is None: return ""
143 if self._ap.IsSet(entry, PT_STRARRAY) == 0: return ""
144 v = self._ap.GetStrArray(entry)
148 if v[i] == parameterName: return v[i+1]
154 def getAllParameterNames(self, entry):
155 """Returns all parameter names of the given entry"""
158 if self._ap is None: return v
159 if self._ap.IsSet(entry, PT_STRARRAY) == 0: return v
160 v = self._ap.GetStrArray(entry)
170 def getAllParameterValues(self, entry):
171 """Returns all parameter values of the given entry"""
174 if self._ap is None: return v
175 if self._ap.IsSet(entry, PT_STRARRAY) == 0: return v
176 v = self._ap.GetStrArray(entry)
180 values.append(v[i]+1)
186 def getNbParameters(self, entry):
187 """Returns a number of parameters of the entry"""
188 if self._ap is None: return -1
189 if self._ap.IsSet(entry, PT_STRARRAY) == 0: return -1
190 return len(self._ap.GetStrArray(entry))/2
192 def getEntries(self):
193 """Returns all entries"""
195 if self._ap is None: return v
196 if self._ap.IsSet(_AP_ENTRIES_LIST_, PT_STRARRAY) == 0: return v
197 return self._ap.GetStrArray(_AP_ENTRIES_LIST_)
199 def setProperty(self, name, value):
200 """Sets a property value"""
201 if self._ap is None: return
202 if self._ap.IsSet(name, PT_STRING) == 0:
203 self.append(_AP_PROPERTIES_LIST_, name) #Add the property to the internal list of properties
205 self._ap.SetString(name, value)
208 def getProperty(self, name):
209 """Returns a value of the named property"""
210 if self._ap is None: return ""
211 if self._ap.IsSet(name, PT_STRING) == 0: return ""
212 return self._ap.GetString(name)
214 def getProperties(self):
215 """Returns all propetries"""
217 if self._ap is None: return v
218 if self._ap.IsSet(_AP_PROPERTIES_LIST_, PT_STRARRAY) == 0: return v
219 return self._ap.GetStrArray(_AP_PROPERTIES_LIST_)
221 def parseValue(self, value, separator, fromEnd):
222 """Breaks a value string in two parts which is divided by separator."""
225 if fromEnd == 1: pos = value.rfind(separator)
226 else: pos = value.find(separator)
233 part2 = value[pos+1:len(value)]
238 def setDumpPython(self, isDumping):
239 """Enables/Disables the dumping to Python"""
240 if self._ap is None: return
241 _ap.SetBool(_AP_DUMP_PYTHON_, isDumping)
244 def isDumpPython(self):
245 """Returns whether there is the dumping to Python"""
246 if self._ap is None: return 0
247 if self._ap.IsSet(_AP_DUMP_PYTHON_, PT_BOOLEAN) == 0: return 0
248 return self._ap.GetBool(_AP_DUMP_PYTHON_)