Skip to content
Snippets Groups Projects
Commit f20d4e2d authored by Boman Romain's avatar Boman Romain
Browse files

Merge remote-tracking branch 'origin/master' into boman

parents e45bf132 c7567002
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,7 @@ import externalProgramPath ...@@ -13,6 +13,7 @@ import externalProgramPath
# Variable globale # Variable globale
import threading import threading
matlock = threading.Lock() # un seul matlab a la fois (merdouille avec le R2009a sous windows) matlock = threading.Lock() # un seul matlab a la fois (merdouille avec le R2009a sous windows)
sciLock = threading.Lock() # un seul SciLab a la fois (vérifier nécessité)
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
class PostProLoop(PRMSet): class PostProLoop(PRMSet):
...@@ -47,6 +48,12 @@ class PostProLoop(PRMSet): ...@@ -47,6 +48,12 @@ class PostProLoop(PRMSet):
TextPRM (self.pars, 'MATLABCMD', 'Matlab Command (script called)', '') TextPRM (self.pars, 'MATLABCMD', 'Matlab Command (script called)', '')
TextPRM (self.pars, 'MATLABPATH', 'Path to Matlab scripts', '') TextPRM (self.pars, 'MATLABPATH', 'Path to Matlab scripts', '')
TextPRM (self.pars, 'MATLABREQUEST', 'Requested file to run Matlab script', 'parameters.m') #'result.mat', ... TextPRM (self.pars, 'MATLABREQUEST', 'Requested file to run Matlab script', 'parameters.m') #'result.mat', ...
# Scilab
YesNoPRM(self.pars, 'SCILABRUN', 'Execute a Scilab function', False)
TextPRM (self.pars, 'SCILABEXE', 'Path To Scilab Exe', progs['SCILAB'])
TextPRM (self.pars, 'SCILABCMD', 'Scilab Command (script called)', '')
TextPRM (self.pars, 'SCILABPATH', 'Path to Scilab scripts', '')
TextPRM (self.pars, 'SCILABREQUEST', 'Requested file to run Scilab script', 'parameters.sci') #'result.sod', ...
# GS # GS
YesNoPRM(self.pars, 'GSRUN', 'Run GS on Eps Files', False) YesNoPRM(self.pars, 'GSRUN', 'Run GS on Eps Files', False)
TextPRM (self.pars, 'GSEXE', 'Path To Matlab Exe', progs['GHOSTSCRIPT']) TextPRM (self.pars, 'GSEXE', 'Path To Matlab Exe', progs['GHOSTSCRIPT'])
...@@ -76,6 +83,14 @@ class PostProLoop(PRMSet): ...@@ -76,6 +83,14 @@ class PostProLoop(PRMSet):
PRMAction(self.actions, 'i', self.pars['MATLABPATH']) PRMAction(self.actions, 'i', self.pars['MATLABPATH'])
PRMAction(self.actions, 'j', self.pars['MATLABREQUEST']) PRMAction(self.actions, 'j', self.pars['MATLABREQUEST'])
NoAction(self.actions) NoAction(self.actions)
# Scilab
NoAction(self.actions)
PRMAction(self.actions, '1', self.pars['SCILABRUN'])
PRMAction(self.actions, '2', self.pars['SCILABEXE'])
PRMAction(self.actions, '3', self.pars['SCILABCMD'])
PRMAction(self.actions, '4', self.pars['SCILABPATH'])
PRMAction(self.actions, '5', self.pars['SCILABREQUEST'])
NoAction(self.actions)
# GhostScript # GhostScript
PRMAction(self.actions, 'k', self.pars['GSRUN']) PRMAction(self.actions, 'k', self.pars['GSRUN'])
PRMAction(self.actions, 'l', self.pars['GSEXE']) PRMAction(self.actions, 'l', self.pars['GSEXE'])
...@@ -107,6 +122,11 @@ class PostProLoop(PRMSet): ...@@ -107,6 +122,11 @@ class PostProLoop(PRMSet):
self.pars['MATLABEXE'].enable(self.pars['MATLABRUN'].val==True) self.pars['MATLABEXE'].enable(self.pars['MATLABRUN'].val==True)
self.pars['MATLABPATH'].enable(self.pars['MATLABRUN'].val==True) self.pars['MATLABPATH'].enable(self.pars['MATLABRUN'].val==True)
self.pars['MATLABREQUEST'].enable(self.pars['MATLABRUN'].val==True) self.pars['MATLABREQUEST'].enable(self.pars['MATLABRUN'].val==True)
# Scilab
self.pars['SCILABCMD'].enable(self.pars['SCILABRUN'].val==True)
self.pars['SCILABEXE'].enable(self.pars['SCILABRUN'].val==True)
self.pars['SCILABPATH'].enable(self.pars['SCILABRUN'].val==True)
self.pars['SCILABREQUEST'].enable(self.pars['SCILABRUN'].val==True)
# GhostScript # GhostScript
self.pars['GSEXE'].enable(self.pars['GSRUN'].val==True) self.pars['GSEXE'].enable(self.pars['GSRUN'].val==True)
self.pars['GSFILTER'].enable(self.pars['GSRUN'].val==True) self.pars['GSFILTER'].enable(self.pars['GSRUN'].val==True)
...@@ -184,6 +204,11 @@ class PostProLoop(PRMSet): ...@@ -184,6 +204,11 @@ class PostProLoop(PRMSet):
#out = matlab.execMatlabScript(self.pars['MATLABCMD'].val , self.pars['MATLABPATH'].val) #out = matlab.execMatlabScript(self.pars['MATLABCMD'].val , self.pars['MATLABPATH'].val)
print("matlab done") print("matlab done")
if self.pars['SCILABRUN'].val and self.checkRequest(self.pars['SCILABREQUEST'].val):
print ("launch scilab...")
out = execScilabScript(self.pars['SCILABEXE'].val, self.pars['SCILABCMD'].val , self.pars['SCILABPATH'].val)
#out = scilab.execScilabScript(self.pars['SCILABCMD'].val , self.pars['SCILABPATH'].val)
print ("scilab done")
if self.pars['GSRUN'].val and self.checkRequest(self.pars['GSREQUEST'].val): if self.pars['GSRUN'].val and self.checkRequest(self.pars['GSREQUEST'].val):
print("launch Ghostscript translation of eps files...") print("launch Ghostscript translation of eps files...")
#execGhostScriptPostPro(device='png256', outExt='png',res=300) #execGhostScriptPostPro(device='png256', outExt='png',res=300)
...@@ -243,7 +268,51 @@ def execMatlabScript(matlabExe, matlabCmd, mFilePath=None): ...@@ -243,7 +268,51 @@ def execMatlabScript(matlabExe, matlabCmd, mFilePath=None):
return a return a
#================================================================================= #=================================================================================
#================================================================================= #=================================================================================
def execScilabScript(scilabExe, scilabCmd, sciFilePath=None, verb=True):
sciCmd = ""
if sciFilePath :
print ("sciFilePath = ",sciFilePath)
sciCmd = sciCmd + "getd('%s'); " %sciFilePath
sciCmd = sciCmd + scilabCmd
if verb :
print ("entering execSciLabPostPro")
print ("sciCmd = ",sciCmd)
progs = externalProgramPath.ExtProgs()
if not progs.checkValidity('SCILAB') :
return 0
# log file
logFile = os.path.abspath("sciLab.log")
if verb :
print ("logFile = ",logFile)
# Command line
#import toolbox.pyutils as pyutils
# -nwni = génération de la db, mais pas de génération de figure (nécessite l'affichage)
# -nw = génération de la db, & génération des figures en background
# Argument "-nw" is no longer supported since Scilab 6.0.2.
# scilab -nw starts WScilex-cli.exe: Scilab CLI with full functionnalities.
#cmd = '"%s" -e "%s" > "%s" 2>&1' % (scilabExe, sciCmd, logFile)
cmd = '"%s" -nw -e "%s" > "%s" 2>&1' % (scilabExe, sciCmd, logFile)
if verb :
print ('subprocess command : ', cmd)
# acquire sciLock
tim0 = time.time()
sciLock.acquire()
try :
print ("Running Scilab...")
import subprocess
scilabProcess = subprocess.call(cmd, shell=True)
print ("Running Scilab... Done")
a = 1.0
except :
# fonction objectif doit retourner un double
print ("problem during Scilab run")
a = 0.0
# release sciLock
sciLock.release()
print (" Scilab exec time = %d sec" %(time.time()-tim0))
return a
#=================================================================================
#=================================================================================
def execGhostScript(gsExe, inFilter = '*.eps', device='png256', res=300): def execGhostScript(gsExe, inFilter = '*.eps', device='png256', res=300):
import subprocess, os, time import subprocess, os, time
tim0 = time.time() tim0 = time.time()
......
...@@ -47,6 +47,9 @@ class PostProLoopGui(QWidget): ...@@ -47,6 +47,9 @@ class PostProLoopGui(QWidget):
# | Matlab : | # | Matlab : |
# | - options | # | - options |
# |--------------------------------| # |--------------------------------|
# | Scilab : |
# | - options |
# |--------------------------------|
# | GhostScript : | # | GhostScript : |
# | - options | # | - options |
# |--------------------------------| # |--------------------------------|
...@@ -105,43 +108,56 @@ class PostProLoopGui(QWidget): ...@@ -105,43 +108,56 @@ class PostProLoopGui(QWidget):
self.sf['MATLABCMD'] = TextLine (self, grplay2, self.postProLoop.pars['MATLABCMD'], 2, 0, 4) self.sf['MATLABCMD'] = TextLine (self, grplay2, self.postProLoop.pars['MATLABCMD'], 2, 0, 4)
self.sf['MATLABPATH'] = PathLine (self, grplay2, self.postProLoop.pars['MATLABPATH'], 3, 0, 4) self.sf['MATLABPATH'] = PathLine (self, grplay2, self.postProLoop.pars['MATLABPATH'], 3, 0, 4)
self.sf['MATLABREQUEST'] = TextLine (self, grplay2, self.postProLoop.pars['MATLABREQUEST'], 4, 0, 4) self.sf['MATLABREQUEST'] = TextLine (self, grplay2, self.postProLoop.pars['MATLABREQUEST'], 4, 0, 4)
#GhostScript box #Scilab box
self.mesherGrpBox = QGroupBox("GhostScript (eps -> png)") self.mesherGrpBox = QGroupBox("Scilab")
box.addWidget(self.mesherGrpBox) box.addWidget(self.mesherGrpBox)
grplay3 = QGridLayout() grplay3 = QGridLayout()
grplay3.setColumnStretch(2,1) grplay3.setColumnStretch(2,1)
self.mesherGrpBox.setLayout(grplay3) self.mesherGrpBox.setLayout(grplay3)
self.sf['GSRUN'] = CheckBoxLine(self, grplay3, self.postProLoop.pars['GSRUN'], 0, 0) self.sf['SCILABRUN'] = CheckBoxLine(self, grplay3, self.postProLoop.pars['SCILABRUN'], 0, 0)
self.sf['GSEXE'] = ExeFileLine (self, grplay3, self.postProLoop.pars['GSEXE'], exeFileType, 1, 0, 4) self.sf['SCILABEXE'] = ExeFileLine (self, grplay3, self.postProLoop.pars['SCILABEXE'], exeFileType, 1, 0, 4)
self.sf['GSFILTER'] = TextLine (self, grplay3, self.postProLoop.pars['GSFILTER'], 2, 0, 1) self.sf['SCILABCMD'] = TextLine (self, grplay3, self.postProLoop.pars['SCILABCMD'], 2, 0, 4)
self.sf['GSOUTPUTFORMAT'] = MultiPMRLine(self, grplay3, self.postProLoop.pars['GSOUTPUTFORMAT'],3, 0) self.sf['SCILABPATH'] = PathLine (self, grplay3, self.postProLoop.pars['SCILABPATH'], 3, 0, 4)
self.sf['GSDEFINITION'] = TextLine (self, grplay3, self.postProLoop.pars['GSDEFINITION'], 3, 3, 1, QIntValidator(72,1800)) self.sf['SCILABREQUEST'] = TextLine (self, grplay3, self.postProLoop.pars['SCILABREQUEST'], 4, 0, 4)
self.sf['GSREQUEST'] = TextLine (self, grplay3, self.postProLoop.pars['GSREQUEST'], 4, 0, 1)
#GhostScript box
#build Latex box self.mesherGrpBox = QGroupBox("GhostScript (eps -> png)")
self.mesherGrpBox = QGroupBox("Python")
box.addWidget(self.mesherGrpBox) box.addWidget(self.mesherGrpBox)
grplay4 = QGridLayout() grplay4 = QGridLayout()
grplay4.setColumnStretch(2,1) grplay4.setColumnStretch(2,1)
self.mesherGrpBox.setLayout(grplay4) self.mesherGrpBox.setLayout(grplay4)
self.sf['PYTHONRUN'] = CheckBoxLine(self, grplay4, self.postProLoop.pars['PYTHONRUN'], 0, 0) self.sf['GSRUN'] = CheckBoxLine(self, grplay4, self.postProLoop.pars['GSRUN'], 0, 0)
self.sf['PYTHONMODULE'] = FileLine (self, grplay4, self.postProLoop.pars['PYTHONMODULE'], '*.py', 1, 0, 4) self.sf['GSEXE'] = ExeFileLine (self, grplay4, self.postProLoop.pars['GSEXE'], exeFileType, 1, 0, 4)
self.sf['PYTHONSCRIPT'] = TextLine (self, grplay4, self.postProLoop.pars['PYTHONSCRIPT'], 2, 0, 4) self.sf['GSFILTER'] = TextLine (self, grplay4, self.postProLoop.pars['GSFILTER'], 2, 0, 1)
self.sf['PYTHONREQUEST'] = TextLine (self, grplay4, self.postProLoop.pars['PYTHONREQUEST'], 3, 0, 4) self.sf['GSOUTPUTFORMAT'] = MultiPMRLine(self, grplay4, self.postProLoop.pars['GSOUTPUTFORMAT'],3, 0)
''' self.sf['GSDEFINITION'] = TextLine (self, grplay4, self.postProLoop.pars['GSDEFINITION'], 3, 3, 1, QIntValidator(72,1800))
self.sf['GSREQUEST'] = TextLine (self, grplay4, self.postProLoop.pars['GSREQUEST'], 4, 0, 1)
#build Latex box #build Latex box
self.mesherGrpBox = QGroupBox("Latex") self.mesherGrpBox = QGroupBox("Python")
box.addWidget(self.mesherGrpBox) box.addWidget(self.mesherGrpBox)
grplay5 = QGridLayout() grplay5 = QGridLayout()
grplay5.setColumnStretch(2,1) grplay5.setColumnStretch(2,1)
self.mesherGrpBox.setLayout(grplay5) self.mesherGrpBox.setLayout(grplay5)
self.sf['LATEXRUN'] = CheckBoxLine(self, grplay5, self.postProLoop.pars['LATEXRUN'], 0, 0) self.sf['PYTHONRUN'] = CheckBoxLine(self, grplay5, self.postProLoop.pars['PYTHONRUN'], 0, 0)
self.sf['LATEXCMD'] = TextLine (self, grplay5, self.postProLoop.pars['LATEXCMD'], 1, 0, 4) self.sf['PYTHONMODULE'] = FileLine (self, grplay5, self.postProLoop.pars['PYTHONMODULE'], '*.py', 1, 0, 4)
self.sf['LATEXREQUEST'] = TextLine (self, grplay5, self.postProLoop.pars['LATEXREQUEST'], 2, 0, 4) self.sf['PYTHONSCRIPT'] = TextLine (self, grplay5, self.postProLoop.pars['PYTHONSCRIPT'], 2, 0, 4)
self.sf['PYTHONREQUEST'] = TextLine (self, grplay5, self.postProLoop.pars['PYTHONREQUEST'], 3, 0, 4)
'''
#build Latex box
self.mesherGrpBox = QGroupBox("Latex")
box.addWidget(self.mesherGrpBox)
grplay6 = QGridLayout()
grplay6.setColumnStretch(2,1)
self.mesherGrpBox.setLayout(grplay6)
self.sf['LATEXRUN'] = CheckBoxLine(self, grplay6, self.postProLoop.pars['LATEXRUN'], 0, 0)
self.sf['LATEXCMD'] = TextLine (self, grplay6, self.postProLoop.pars['LATEXCMD'], 1, 0, 4)
self.sf['LATEXREQUEST'] = TextLine (self, grplay6, self.postProLoop.pars['LATEXREQUEST'], 2, 0, 4)
''' '''
def buildButtonFrame(self, box): def buildButtonFrame(self, box):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment