Skip to content
Snippets Groups Projects
Commit 57364e2f authored by Francois Henrotte's avatar Francois Henrotte
Browse files

new stuff: path (on the model of fixRelativePath), addNumberChoice,...

new stuff: path (on the model of fixRelativePath), addNumberChoice, preProcessing of ol files now blocking, etc
parent bb164f2c
No related branches found
No related tags found
No related merge requests found
......@@ -37,6 +37,11 @@ def file_exist(filename):
except IOError:
return False
def path(ref,inp):
if inp[0] == '/' or inp[0] == '\\' or (len(inp) > 2 and inp[1] == '\:'):
return inp # do nothing, inp is an absolute path
else: # append inp to the path of the reference file
return os.path.dirname(ref) + os.sep + inp
class _parameter() :
_membersbase = [
......@@ -145,17 +150,15 @@ class client :
def _define_parameter(self, param) :
if not self.socket :
return
return param.value
self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
self._send(self._GMSH_PARAMETER_UPDATE, param.tochar()) #enrich a previous decl.
value = param.fromchar(msg).value # use value from server
return param.fromchar(msg).value # use value from server
elif t == self._GMSH_PARAMETER_NOT_FOUND :
self._send(self._GMSH_PARAMETER, param.tochar()) #declaration
value = param.value
return value
#print param.tochar()
return param.value
def defineNumber(self, name, **param):
if 'labels' in param :
......@@ -185,10 +188,7 @@ class client :
p.fromchar(msg).modify(**param)
elif t == self._GMSH_PARAMETER_NOT_FOUND :
p.modify(**param)
p.readOnly = 1
p.attributes={'Highlight':'AliceBlue'}
self._send(self._GMSH_PARAMETER, p.tochar())
#return p.value What for?
def setString(self, name, **param):
if not self.socket :
......@@ -204,6 +204,18 @@ class client :
p.attributes={'Highlight':'AliceBlue'}
self._send(self._GMSH_PARAMETER, p.tochar())
def addNumberChoice(self, name, value):
if not self.socket :
return
p = _parameter('number', name=name)
self._send(self._GMSH_PARAMETER_QUERY, p.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
p.fromchar(msg).choices.append(value)
elif t == self._GMSH_PARAMETER_NOT_FOUND :
print 'Unknown parameter %s' %(param.name)
self._send(self._GMSH_PARAMETER, p.tochar())
def _get_parameter(self, param, warn_if_not_found=True) :
if not self.socket :
return
......@@ -224,6 +236,17 @@ class client :
self._get_parameter(param, warn_if_not_found)
return param.value
def show(self, name) :
if not self.socket :
return
param = _parameter('number', name=name)
self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
print msg
elif t == self._GMSH_PARAMETER_NOT_FOUND :
print 'Unknown parameter %s' %(name)
def openGeometry(self, filename) :
if not self.socket or not filename :
return
......@@ -232,8 +255,8 @@ class client :
return
else :
self.setString('Gmsh/MergedGeo', value=filename)
if filename[0] != '/' :
filename = os.getcwd() + "/" + filename
# if filename[0] != '/' :
# filename = os.getcwd() + "/" + filename
self._send(self._GMSH_MERGE_FILE, filename)
def mesh(self, filename) :
......@@ -251,16 +274,16 @@ class client :
def mergeFile(self, filename) :
if not self.socket :
return
if filename and filename[0] != '/' :
filename = os.getcwd() + "/" + filename;
self._send(self._GMSH_PARSE_STRING, 'Merge "' + filename + '";')
#self._send(self._GMSH_PARSE_STRING, 'Merge "' + filename + '";')
self._send(self._GMSH_MERGE_FILE,filename)
def preProcess(self, filename) :
if not self.socket :
return
if filename and filename[0] != '/' :
filename = os.getcwd() + "/" + filename;
self._send(self._GMSH_OLPARSE, filename)
(t, msg) = self._receive()
if t == self._GMSH_OLPARSE :
print msg
def _createSocket(self) :
addr = self.addr
......@@ -271,8 +294,6 @@ class client :
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = addr.split(':')
self.socket.connect((s[0], int(s[1])))
#self.socket.setblocking(1)
#self.socket.settimeout(5.0)
def _wait_on_subclients(self):
if not self.socket :
......@@ -310,7 +331,6 @@ class client :
def __del__(self) :
self._wait_on_subclients()
#print "Calling destructor of %s with %d subclients" %(self.name, self.NumSubClients)
if self.socket :
self._send(self._GMSH_STOP, 'Goodbye!')
self.socket.close()
......@@ -6,6 +6,7 @@ import onelab
OL = onelab.client()
A = OL.getNumber('A')
B = OL.setNumber('Group/B', 20)
print 'A= %f' %(A)
OL.setNumber('Group/B', value=20)
print 'A= %f B = %f' %(A, B)
......@@ -7,8 +7,10 @@ modelName = 'coin'
OL = onelab.client()
print('\nStarting METAMODEL - Action = %s' %(OL.getString('python/Action')))
A = OL.defineNumber('A', value=10)
print __file__
A = OL.defineNumber('A', value=10)
B = OL.defineNumber('Group/B', value=0, min = -10, max = 10, step = 1)
C = OL.defineNumber('Group/C', value=2, choices = [0, 1, 2, 3], attributes={'Highlight':'Pink'})
D = OL.defineNumber('Group/D', value=3, labels = {0:'zero', 1:'un', 2:'deux', 3:'trois'}, attributes={'Highlight':'Blue'})
......@@ -23,8 +25,14 @@ if OL.action == 'compute' :
OL.run('subclient', './sub.py','')
OL.show('A')
OL.addNumberChoice('A',1.234)
OL.addNumberChoice('A',2.345)
OL.addNumberChoice('A',3.456)
OL.show('A')
OL.setNumber('A', choices=[])
OL.show('A')
#B = oc.defineNumber('Group/B', 0, min = -10, max = 10, step = 1)
#utf-8 are allowed everywhere
#(should be prefixed by 'u' in python 2, not required in python 3)
#Omega = OL.getString(u'Ω', u'∫(∂φ/∂α)³dx', help=u'ask someone@universe.org',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment