1 # -*- coding: utf-8 -*-
3 # Copyright (C) 2006-2015 EDF R&D
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.
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.
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
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 # if you already have plugins defined in a salome_plugins.py file, add this file at the end.
23 # if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
27 from blocFissure import gmu
29 def fissureGeneraleDlg(context):
30 # get context study, studyId, salomeGui
32 studyId = context.studyId
38 from PyQt4 import QtCore
39 from PyQt4 import QtGui
40 from PyQt4.QtGui import QFileDialog
41 from PyQt4.QtGui import QMessageBox
42 from PyQt4.QtGui import QPalette
43 from PyQt4.QtGui import QColor
44 from fissureGenerale_ui import Ui_Dialog
46 class fissureGeneraleDialog(QtGui.QDialog):
50 QtGui.QDialog.__init__(self)
51 # Set up the user interface from Designer.
55 self.blackPalette = self.ui.dsb_influence.palette()
56 self.redPalette = QPalette()
57 self.redPalette.setColor(QPalette.Text, QColor(255,0,0))
61 self.initDialog(self.defaut)
62 self.ui.lb_calcul.hide()
64 # Connect up the buttons.
65 self.connect(self.ui.pb_valPrec, QtCore.SIGNAL("clicked()"),
67 self.connect(self.ui.pb_reset, QtCore.SIGNAL("clicked()"),
69 self.connect(self.ui.pb_recharger, QtCore.SIGNAL("clicked()"),
71 self.connect(self.ui.pb_sauver, QtCore.SIGNAL("clicked()"),
73 self.connect(self.ui.pb_maillage, QtCore.SIGNAL("clicked()"),
75 self.connect(self.ui.pb_facefiss, QtCore.SIGNAL("clicked()"),
77 self.disconnect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"), self.accept)
78 self.connect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"),
84 maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'),
85 brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"),
93 areteFaceFissure = 10)
96 def initDialog(self, dico):
97 self.ui.le_maillage.setText(dico['maillageSain'])
98 self.ui.le_facefiss.setText(dico['brepFaceFissure'])
99 self.ui.le_fondfiss.setText(str(dico['edgeFissIds']))
100 self.ui.dsb_influence.setValue(dico['lgInfluence'])
101 self.ui.dsb_meshBrepMin.setValue(dico['meshBrep'][0])
102 self.ui.dsb_meshBrepMax.setValue(dico['meshBrep'][1])
103 self.ui.dsb_rayonPipe.setValue(dico['rayonPipe'])
104 self.ui.dsb_lenSegPipe.setValue(dico['lenSegPipe'])
105 self.ui.sb_couronnes.setValue(dico['nbSegRad'])
106 self.ui.sb_secteurs.setValue(dico['nbSegCercle'])
107 self.ui.dsb_areteFaceFissure.setValue(dico['areteFaceFissure'])
108 incomplet = self.testval(dico)
111 def testval(self, dico):
113 if not os.path.lexists(dico['maillageSain']):
114 self.ui.le_maillage.setPalette(self.redPalette)
117 self.ui.le_maillage.setPalette(self.blackPalette)
118 if not os.path.lexists(dico['brepFaceFissure']):
119 self.ui.le_facefiss.setPalette(self.redPalette)
122 self.ui.le_facefiss.setPalette(self.blackPalette)
125 l = dico['edgeFissIds']
127 if not isinstance(i, int):
128 print"not isinstance(i, int)"
137 self.ui.le_fondfiss.setPalette(self.blackPalette)
139 self.ui.le_fondfiss.setPalette(self.redPalette)
140 if dico['meshBrep'][0] == 0:
141 self.ui.dsb_meshBrepMin.setPalette(self.redPalette)
144 self.ui.dsb_meshBrepMin.setPalette(self.blackPalette)
145 if dico['meshBrep'][1] == 0:
146 self.ui.dsb_meshBrepMax.setPalette(self.redPalette)
149 self.ui.dsb_meshBrepMax.setPalette(self.blackPalette)
150 if dico['rayonPipe'] == 0:
151 self.ui.dsb_rayonPipe.setPalette(self.redPalette)
154 self.ui.dsb_rayonPipe.setPalette(self.blackPalette)
155 if dico['lenSegPipe'] == 0:
156 self.ui.dsb_lenSegPipe.setPalette(self.redPalette)
159 self.ui.dsb_lenSegPipe.setPalette(self.blackPalette)
160 if dico['areteFaceFissure'] == 0:
161 self.ui.dsb_areteFaceFissure.setPalette(self.redPalette)
164 self.ui.dsb_areteFaceFissure.setPalette(self.blackPalette)
166 print "incomplet: ", incomplet
169 def fileDefault(self):
170 filedef = os.path.expanduser("~/.config/salome/dialogFissureGenerale.dic")
174 def writeDefault(self, dico):
175 filedef = self.fileDefault()
176 f = open(filedef, 'w')
180 def readValPrec(self):
181 filedef = self.fileDefault()
182 if os.path.exists(filedef):
183 f = open(filedef, 'r')
187 self.initDialog(dico)
191 self.initDialog(self.defaut)
193 def setLogVerbosity(self):
194 from blocFissure.gmu import initLog # le mode de log s'initialise une seule fois
195 print "setLogVerbosity"
196 index = self.ui.cb_log.currentIndex()
208 fileDiag = QFileDialog(self)
209 fileDiag.setFileMode(QFileDialog.AnyFile)
210 fileDiag.setNameFilter("Parametres *.dic (*.dic)")
211 fileDiag.setViewMode(QFileDialog.List)
212 if fileDiag.exec_() :
213 fileNames = fileDiag.selectedFiles()
214 filedef = fileNames[0]
215 dico = self.creeDico()
216 f = open(filedef, 'w')
222 fileDiag = QFileDialog(self)
223 fileDiag.setFileMode(QFileDialog.ExistingFile)
224 fileDiag.setNameFilter("Parametres *.dic (*.dic)")
225 fileDiag.setViewMode(QFileDialog.Detail)
226 if fileDiag.exec_() :
227 fileNames = fileDiag.selectedFiles()
228 filedef = fileNames[0]
230 if os.path.exists(filedef):
231 f = open(filedef, 'r')
235 self.initDialog(dico)
237 def selectMaillage(self):
238 fileDiag = QFileDialog(self)
239 fileDiag.setFileMode(QFileDialog.ExistingFile)
240 fileDiag.setNameFilter("Maillage *.med (*.med)")
241 fileDiag.setViewMode(QFileDialog.Detail)
242 if fileDiag.exec_() :
243 fileNames = fileDiag.selectedFiles()
244 filedef = fileNames[0]
246 self.ui.le_maillage.setText(filedef)
248 def selectFacefiss(self):
249 fileDiag = QFileDialog(self)
250 fileDiag.setFileMode(QFileDialog.ExistingFile)
251 fileDiag.setNameFilter("Face fissure *.brep (*.brep)")
252 fileDiag.setViewMode(QFileDialog.Detail)
253 if fileDiag.exec_() :
254 fileNames = fileDiag.selectedFiles()
255 filedef = fileNames[0]
257 self.ui.le_facefiss.setText(filedef)
261 maillageSain = str(self.ui.le_maillage.text()),
262 brepFaceFissure = str(self.ui.le_facefiss.text()),
263 edgeFissIds = eval(str(self.ui.le_fondfiss.text())),
264 lgInfluence = self.ui.dsb_influence.value(),
265 meshBrep = [self.ui.dsb_meshBrepMin.value(),self.ui.dsb_meshBrepMax.value()],
266 rayonPipe = self.ui.dsb_rayonPipe.value(),
267 lenSegPipe = self.ui.dsb_lenSegPipe.value(),
268 nbSegRad = self.ui.sb_couronnes.value(),
269 nbSegCercle = self.ui.sb_secteurs.value(),
270 areteFaceFissure = self.ui.dsb_areteFaceFissure.value()
275 def checkValues(self):
280 dico = self.creeDico()
281 NOK = self.testval(dico)
283 self.writeDefault(dico)
284 self.ui.lb_calcul.show()
285 self.setLogVerbosity()
286 from blocFissure.gmu import geomsmesh # après intialisation log dans setLogVerbosity
287 from blocFissure.gmu.casStandard import casStandard # après intialisation log dans setLogVerbosity
288 execInstance = casStandard(dico)
294 # ----------------------------------------------------------------------------
297 window = fissureGeneraleDialog()
302 result = window.result()
305 print "dialog accepted, check"
306 retry = window.checkValues()
308 print "dialog rejected, exit"