Skip to content
Snippets Groups Projects
Commit b36f7eda authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

new openProject onelab command (to match the behavior of GmshOpenProject)

parent 7b080a56
No related branches found
No related tags found
No related merge requests found
...@@ -85,6 +85,7 @@ class GmshSocket{ ...@@ -85,6 +85,7 @@ class GmshSocket{
GMSH_SPEED_TEST = 30, GMSH_SPEED_TEST = 30,
GMSH_PARAMETER_CLEAR = 31, GMSH_PARAMETER_CLEAR = 31,
GMSH_PARAMETER_UPDATE = 32, GMSH_PARAMETER_UPDATE = 32,
GMSH_OPEN_PROJECT = 33,
GMSH_OPTION_1 = 100, GMSH_OPTION_1 = 100,
GMSH_OPTION_2 = 101, GMSH_OPTION_2 = 101,
GMSH_OPTION_3 = 102, GMSH_OPTION_3 = 102,
...@@ -193,6 +194,7 @@ class GmshSocket{ ...@@ -193,6 +194,7 @@ class GmshSocket{
void Error(const char *str){ SendString(GMSH_ERROR, str); } void Error(const char *str){ SendString(GMSH_ERROR, str); }
void Progress(const char *str){ SendString(GMSH_PROGRESS, str); } void Progress(const char *str){ SendString(GMSH_PROGRESS, str); }
void MergeFile(const char *str){ SendString(GMSH_MERGE_FILE, str); } void MergeFile(const char *str){ SendString(GMSH_MERGE_FILE, str); }
void OpenProject(const char *str){ SendString(GMSH_OPEN_PROJECT, str); }
void ParseString(const char *str){ SendString(GMSH_PARSE_STRING, str); } void ParseString(const char *str){ SendString(GMSH_PARSE_STRING, str); }
void SpeedTest(const char *str){ SendString(GMSH_SPEED_TEST, str); } void SpeedTest(const char *str){ SendString(GMSH_SPEED_TEST, str); }
void Option(int num, const char *str) void Option(int num, const char *str)
......
...@@ -849,6 +849,7 @@ namespace onelab{ ...@@ -849,6 +849,7 @@ namespace onelab{
virtual void sendError(const std::string &msg){ std::cerr << msg << std::endl; } virtual void sendError(const std::string &msg){ std::cerr << msg << std::endl; }
virtual void sendProgress(const std::string &msg){ std::cout << msg << std::endl; } virtual void sendProgress(const std::string &msg){ std::cout << msg << std::endl; }
virtual void sendMergeFileRequest(const std::string &msg){} virtual void sendMergeFileRequest(const std::string &msg){}
virtual void sendOpenProjectRequest(const std::string &msg){}
virtual void sendParseStringRequest(const std::string &msg){} virtual void sendParseStringRequest(const std::string &msg){}
virtual void sendVertexArray(const std::string &msg){} virtual void sendVertexArray(const std::string &msg){}
virtual bool clear(const std::string &name) = 0; virtual bool clear(const std::string &name) = 0;
...@@ -1230,6 +1231,10 @@ namespace onelab{ ...@@ -1230,6 +1231,10 @@ namespace onelab{
{ {
if(_gmshClient) _gmshClient->MergeFile(msg.c_str()); if(_gmshClient) _gmshClient->MergeFile(msg.c_str());
} }
void sendOpenProjectRequest(const std::string &msg)
{
if(_gmshClient) _gmshClient->OpenProject(msg.c_str());
}
void sendParseStringRequest(const std::string &msg) void sendParseStringRequest(const std::string &msg)
{ {
if(_gmshClient) _gmshClient->ParseString(msg.c_str()); if(_gmshClient) _gmshClient->ParseString(msg.c_str());
......
...@@ -351,6 +351,10 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master) ...@@ -351,6 +351,10 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
} }
} }
break; break;
case GmshSocket::GMSH_OPEN_PROJECT:
OpenProject(message);
drawContext::global()->draw();
break;
case GmshSocket::GMSH_PARSE_STRING: case GmshSocket::GMSH_PARSE_STRING:
ParseString(message); ParseString(message);
drawContext::global()->draw(); drawContext::global()->draw();
......
...@@ -139,6 +139,17 @@ class client : ...@@ -139,6 +139,17 @@ class client :
_GMSH_PARAMETER_NOT_FOUND = 29 _GMSH_PARAMETER_NOT_FOUND = 29
_GMSH_PARAMETER_CLEAR = 31 _GMSH_PARAMETER_CLEAR = 31
_GMSH_PARAMETER_UPDATE = 32 _GMSH_PARAMETER_UPDATE = 32
_GMSH_OPEN_PROJECT = 33
def _createSocket(self) :
addr = self.addr
if '/' in addr or '\\' in addr or ':' not in addr :
self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.socket.connect(addr)
else :
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = addr.split(':')
self.socket.connect((s[0], int(s[1])))
def _receive(self) : def _receive(self) :
def buffered_receive(l) : def buffered_receive(l) :
...@@ -180,6 +191,16 @@ class client : ...@@ -180,6 +191,16 @@ class client :
self._send(self._GMSH_PARAMETER, p.tochar()) self._send(self._GMSH_PARAMETER, p.tochar())
return p.value return p.value
def _getParameter(self, param, warn_if_not_found=True) :
if not self.socket :
return
self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
param.fromchar(msg)
elif t == self._GMSH_PARAMETER_NOT_FOUND and warn_if_not_found :
print ('Unknown parameter %s' %(param.name))
def defineNumber(self, name, **param): def defineNumber(self, name, **param):
if 'labels' in param : if 'labels' in param :
param["choices"] = param["labels"].keys() param["choices"] = param["labels"].keys()
...@@ -237,16 +258,6 @@ class client : ...@@ -237,16 +258,6 @@ class client :
print ('Unknown parameter %s' %(param.name)) print ('Unknown parameter %s' %(param.name))
self._send(self._GMSH_PARAMETER, p.tochar()) self._send(self._GMSH_PARAMETER, p.tochar())
def _getParameter(self, param, warn_if_not_found=True) :
if not self.socket :
return
self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
(t, msg) = self._receive()
if t == self._GMSH_PARAMETER :
param.fromchar(msg)
elif t == self._GMSH_PARAMETER_NOT_FOUND and warn_if_not_found :
print ('Unknown parameter %s' %(param.name))
def getNumber(self, name, warn_if_not_found=True): def getNumber(self, name, warn_if_not_found=True):
param = _parameter('number', name=name) param = _parameter('number', name=name)
self._getParameter(param, warn_if_not_found) self._getParameter(param, warn_if_not_found)
...@@ -288,6 +299,11 @@ class client : ...@@ -288,6 +299,11 @@ class client :
return return
self._send(self._GMSH_MERGE_FILE, filename) self._send(self._GMSH_MERGE_FILE, filename)
def openProject(self, filename) :
if not self.socket or not filename :
return
self._send(self._GMSH_OPEN_PROJECT, filename)
def reloadGeometry(self, filename) : def reloadGeometry(self, filename) :
if not self.socket or not filename : if not self.socket or not filename :
return return
...@@ -330,16 +346,6 @@ class client : ...@@ -330,16 +346,6 @@ class client :
return True return True
return False return False
def _createSocket(self) :
addr = self.addr
if '/' in addr or '\\' in addr or ':' not in addr :
self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.socket.connect(addr)
else :
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = addr.split(':')
self.socket.connect((s[0], int(s[1])))
def waitOnSubClients(self): def waitOnSubClients(self):
if not self.socket : if not self.socket :
return return
...@@ -349,7 +355,6 @@ class client : ...@@ -349,7 +355,6 @@ class client :
self._numSubClients -= 1 self._numSubClients -= 1
def runNonBlockingSubClient(self, name, command, arguments=''): def runNonBlockingSubClient(self, name, command, arguments=''):
# create command line
if self.action == "check": if self.action == "check":
cmd = command cmd = command
else: else:
...@@ -440,7 +445,6 @@ class client : ...@@ -440,7 +445,6 @@ class client :
self._send(self._GMSH_INFO, 'upload: ' + ' '.join(argv)) self._send(self._GMSH_INFO, 'upload: ' + ' '.join(argv))
else : else :
print(call.stderr.read()) print(call.stderr.read())
## self._send(self._GMSH_ERROR, 'upload failed !!\n' + call.stderr.read().encode('utf-8'))
def download(self, here, there, remote='') : def download(self, here, there, remote='') :
if not here or not there : if not here or not there :
...@@ -456,7 +460,6 @@ class client : ...@@ -456,7 +460,6 @@ class client :
self._send(self._GMSH_INFO, 'download: ' + ' '.join(argv)) self._send(self._GMSH_INFO, 'download: ' + ' '.join(argv))
else : else :
print(call.stderr.read()) print(call.stderr.read())
##self._send(self._GMSH_ERROR, 'download failed !!\n' + call.stderr.read().encode('utf-8'))
def solutionFiles(self, list) : def solutionFiles(self, list) :
self.defineNumber('0Metamodel/9Use restored solution', value=0, choices=[0,1]) self.defineNumber('0Metamodel/9Use restored solution', value=0, choices=[0,1])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment