Salome HOME
ad76ff3d2a55333bcb45a3fb8fb052526cbfddb4
[tools/eficas.git] / InterfaceQT4 / eficas_go.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # Copyright (C) 2007-2013   EDF R&D
4 #
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License.
9 #
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 # Lesser General Public License for more details.
14 #
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18 #
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #
21
22 # Modules Python
23 import sys,os
24 repIni=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),".."))
25 from  determine import monEnvQT5
26 if monEnvQT5 : 
27     ihmQTDir=os.path.join(repIni,"UiQT5")
28     from PyQt5.QtWidgets import QApplication
29 else         : 
30     ihmQTDir=os.path.join(repIni,"UiQT4")
31     from PyQt4.QtGui import QApplication
32 editeurDir=os.path.join(repIni,"Editeur")
33 ihmDir=os.path.join(repIni,"InterfaceQT4")
34 if ihmDir not in sys.path : sys.path.append(ihmDir)
35 if ihmQTDir not in sys.path : sys.path.append(ihmQTDir)
36 if editeurDir not in sys.path :sys.path.append(editeurDir)
37
38
39 def lance_eficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
40     """
41         Lance l'appli EFICAS
42     """
43     # Analyse des arguments de la ligne de commande
44     from Editeur  import session
45     options=session.parse(sys.argv)
46     if options.code!= None : code=options.code
47     if options.ssCode!= None : ssCode=options.ssCode
48
49     from qtEficas import Appli
50     app = QApplication(sys.argv)
51     Eficas=Appli(code=code,ssCode=ssCode,multi=multi,langue=langue)
52     Eficas.show()
53
54     res=app.exec_()
55     sys.exit(res)
56
57
58 def lance_eficas_ssIhm(code=None,fichier=None,ssCode=None,version=None):
59     """
60         Lance l'appli EFICAS pour trouver les noms des groupes
61     """
62     # Analyse des arguments de la ligne de commande
63     from Editeur  import session
64     options=session.parse(sys.argv)
65     if version!=None and options.cata==None : options.cata=version
66     if fichier==None : fichier=options.comm[0]
67     if code == None : code=options.code
68
69     from qtEficas import Appli
70     app = QApplication(sys.argv)
71     Eficas=Appli(code=code,ssCode=ssCode,ssIhm=True)
72
73     from ssIhm  import QWParentSSIhm
74     parent=QWParentSSIhm(code,Eficas,version)
75
76     import readercata
77     if not hasattr ( Eficas, 'readercata'):
78            monreadercata  = readercata.READERCATA( parent, Eficas )
79            Eficas.readercata=monreadercata
80
81     from editor import JDCEditor
82     monEditeur=JDCEditor(Eficas,fichier)
83     return monEditeur
84
85 def lance_eficas_ssIhm_cherche_Groupes(code=None,fichier=None,ssCode=None,version=None):
86     monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
87     print monEditeur.cherche_Groupes()
88
89 def lance_eficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=None):
90     monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
91     print monEditeur.jdc.cr
92
93 def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False):
94     monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
95     if ou == None : 
96        fileName=fichier.split(".")[0]+"_reecrit.comm"
97        fn=fichier.split(".")[0]+"_cr.txt"
98     else :
99        f=fichier.split(".")[0]+"_reecrit.comm"
100        f1=os.path.basename(f)
101        fn=fichier.split(".")[0]+"_cr.txt"
102        f2=os.path.basename(fn)
103        fileName=os.path.join(ou,f1)
104        fileCr=os.path.join(ou,f2)
105     monEditeur.saveFileAs(fileName=fileName)
106     if cr:
107        f = open(fileCr, 'wb')
108        f.write(str(monEditeur.jdc.report()))
109        f.close()
110
111
112 def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'):
113     """
114         Lance l'appli EFICAS pour trouver les noms des groupes
115     """
116     # Analyse des arguments de la ligne de commande
117     from Editeur  import session
118     options=session.parse(sys.argv)
119
120     from qtEficas import Appli
121     app = QApplication(sys.argv)
122     Eficas=Appli(code=code,ssCode=None)
123
124     from ssIhm  import QWParentSSIhm
125     parent=QWParentSSIhm(code,Eficas,version)
126
127     import readercata
128     if not hasattr ( Eficas, 'readercata'):
129            monreadercata  = readercata.READERCATA( parent, Eficas )
130            Eficas.readercata=monreadercata
131
132     from editor import JDCEditor
133     monEditeur=JDCEditor(Eficas,fichier)
134     texte=loadJDC(fichier)
135     parameters=getJdcParameters(texte,macro)
136     return parameters
137
138 def getJdcParameters(jdc,macro):
139     """
140     This function converts the data from the specified macro of the
141     specified jdc text to a python dictionnary whose keys are the
142     names of the data of the macro.
143     """
144     context = {}
145     source = "def args_to_dict(**kwargs): return kwargs \n"
146     source+= "%s = _F = args_to_dict          \n"%macro
147     source+= "parameters="+jdc+"                        \n"
148     source+= "context['parameters'] = parameters         \n"
149     code = compile(source, 'file.py', 'exec')
150     eval(code)
151     parameters = context['parameters']
152     return parameters
153
154 def loadJDC(filename):
155     """
156     This function loads the text from the specified JdC file. A JdC
157     file is the persistence file of Eficas (*.comm).
158     """
159     fcomm=open(filename,'r')
160     jdc = ""
161     for line in fcomm.readlines():
162         if not (line[0]=='#'):
163            jdc+="%s"%line
164
165     # Warning, we have to make sure that the jdc comes as a simple
166     # string without any extra spaces/newlines
167     return jdc.strip()
168
169 if __name__ == "__main__":
170     import sys
171     sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
172     lance_eficas(code=None,fichier=None,ssCode=None,multi=True)
173     
174