X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FTools%2FMGCleanerPlug%2FMGCleanerMonPlugDialog.py;h=122bb455876949c0c0b73c1075038d4f9d3ed92e;hb=eb75a450cceabb83064e079ca4f907bde33b38de;hp=9b729c52d74dd2ac513787296a0f0af653680ef5;hpb=071166030d371561258a1cb63d56113e6748018a;p=modules%2Fsmesh.git diff --git a/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py b/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py index 9b729c52d..122bb4558 100644 --- a/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py +++ b/src/Tools/MGCleanerPlug/MGCleanerMonPlugDialog.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D +# Copyright (C) 2013-2015 EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -22,10 +22,9 @@ # Modules Eficas import os, subprocess -from MGCleanerPlugDialog import Ui_MGCleanerPlugDialog +from MGCleanerPlugDialog_ui import Ui_MGCleanerPlugDialog from MGCleanerMonViewText import MGCleanerMonViewText -from PyQt4.QtGui import * -from PyQt4.QtCore import * +from qtsalome import * class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): @@ -67,7 +66,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): self.PB_MeshFile.setIcon(icon) self.PB_MeshFile.setToolTip("source mesh from a file in disk") - #Ces parametres ne sont pas remis à rien par le clean + #Ces parametres ne sont pas remis ?? rien par le clean self.paramsFile= os.path.abspath(os.path.join(os.environ["HOME"],".MGCleaner.dat")) self.LE_ParamsFile.setText(self.paramsFile) self.LE_MeshFile.setText("") @@ -78,61 +77,71 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): #v1.setTop(10000.) v1.setDecimals(4) self.SP_MinHoleSize.setValidator(v1) + self.SP_MinHoleSize.titleForWarning="MinHoleSize" v2=QDoubleValidator(self) v2.setBottom(0.) #v2.setTop(10000.) v2.setDecimals(4) self.SP_ToleranceDisplacement.setValidator(v2) + self.SP_ToleranceDisplacement.titleForWarning="ToleranceDisplacement" v3=QDoubleValidator(self) v3.setBottom(0.) #v3.setTop(10000.) v3.setDecimals(4) self.SP_ResolutionLength.setValidator(v3) + self.SP_ResolutionLength.titleForWarning="ResolutionLength" v4=QDoubleValidator(self) v4.setBottom(0.) #v4.setTop(10000.) v4.setDecimals(4) self.SP_OverlapDistance.setValidator(v4) + self.SP_OverlapDistance.titleForWarning="OverlapDistance" self.resize(800, 500) self.clean() def connecterSignaux(self) : - self.connect(self.PB_Cancel,SIGNAL("clicked()"),self.PBCancelPressed) - self.connect(self.PB_Default,SIGNAL("clicked()"),self.clean) - self.connect(self.PB_Help,SIGNAL("clicked()"),self.PBHelpPressed) - self.connect(self.PB_OK,SIGNAL("clicked()"),self.PBOKPressed) + self.PB_Cancel.clicked.connect(self.PBCancelPressed) + self.PB_Default.clicked.connect(self.clean) + self.PB_Help.clicked.connect(self.PBHelpPressed) + self.PB_OK.clicked.connect(self.PBOKPressed) - self.connect(self.PB_Load,SIGNAL("clicked()"),self.PBLoadPressed) - self.connect(self.PB_Save,SIGNAL("clicked()"),self.PBSavePressed) - self.connect(self.PB_LoadHyp,SIGNAL("clicked()"),self.PBLoadHypPressed) - self.connect(self.PB_SaveHyp,SIGNAL("clicked()"),self.PBSaveHypPressed) + self.PB_Load.clicked.connect(self.PBLoadPressed) + self.PB_Save.clicked.connect(self.PBSavePressed) + self.PB_LoadHyp.clicked.connect(self.PBLoadHypPressed) + self.PB_SaveHyp.clicked.connect(self.PBSaveHypPressed) - self.connect(self.PB_MeshFile,SIGNAL("clicked()"),self.PBMeshFilePressed) - self.connect(self.PB_MeshSmesh,SIGNAL("clicked()"),self.PBMeshSmeshPressed) - self.connect(self.LE_MeshSmesh,SIGNAL("returnPressed()"),self.meshSmeshNameChanged) - self.connect(self.PB_ParamsFileExplorer,SIGNAL("clicked()"),self.setParamsFileName) - self.connect(self.LE_MeshFile,SIGNAL("returnPressed()"),self.meshFileNameChanged) - self.connect(self.LE_ParamsFile,SIGNAL("returnPressed()"),self.paramsFileNameChanged) + self.PB_MeshFile.clicked.connect(self.PBMeshFilePressed) + self.PB_MeshSmesh.clicked.connect(self.PBMeshSmeshPressed) + self.LE_MeshSmesh.returnPressed.connect(self.meshSmeshNameChanged) + self.PB_ParamsFileExplorer.clicked.connect(self.setParamsFileName) + self.LE_MeshFile.returnPressed.connect(self.meshFileNameChanged) + self.LE_ParamsFile.returnPressed.connect(self.paramsFileNameChanged) #QtCore.QObject.connect(self.checkBox, QtCore.SIGNAL("stateChanged(int)"), self.change) - self.connect(self.CB_FillHoles,SIGNAL("stateChanged(int)"),self.SP_MinHoleSize.setEnabled) - self.connect(self.CB_ComputedToleranceDisplacement,SIGNAL("stateChanged(int)"),self.SP_ToleranceDisplacement.setDisabled) - self.connect(self.CB_ComputedResolutionLength,SIGNAL("stateChanged(int)"),self.SP_ResolutionLength.setDisabled) - self.connect(self.CB_ComputedOverlapDistance,SIGNAL("stateChanged(int)"),self.SP_OverlapDistance.setDisabled) + self.CB_FillHoles.stateChanged[int].connect(self.SP_MinHoleSize.setEnabled) + self.CB_ComputedToleranceDisplacement.stateChanged[int].connect(self.SP_ToleranceDisplacement.setDisabled) + self.CB_ComputedResolutionLength.stateChanged[int].connect(self.SP_ResolutionLength.setDisabled) + self.CB_ComputedOverlapDistance.stateChanged[int].connect(self.SP_OverlapDistance.setDisabled) def PBHelpPressed(self): + import SalomePyQt + sgPyQt = SalomePyQt.SalomePyQt() try: mydir=os.environ["SMESH_ROOT_DIR"] except Exception: QMessageBox.warning( self, "Help", "Help unavailable $SMESH_ROOT_DIR not found") return - maDoc=mydir+"/share/doc/salome/gui/SMESH/MGCleaner/_downloads/mg-cleaner_user_manual.pdf" - command="xdg-open "+maDoc+";" - subprocess.call(command, shell=True) + + maDoc=mydir+"/share/doc/salome/gui/SMESH/MGCleaner/index.html" + sgPyQt.helpContext(maDoc,"") + + #maDoc=mydir+"/share/doc/salome/gui/SMESH/MGCleaner/_downloads/mg-cleaner_user_manual.pdf" + #command="xdg-open "+maDoc+";" + #subprocess.call(command, shell=True) def PBOKPressed(self): if not(self.PrepareLigneCommande()): @@ -253,12 +262,30 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): """ def SP_toStr(self, widget): + """only for a QLineEdit widget""" #cr, pos=widget.validator().validate(res, 0) #n.b. "1,3" is acceptable !locale! try: - return str(float(widget.text())) + val=float(widget.text()) except: - widget.setProperty("text", "0.0") - return "0.0" + QMessageBox.warning(self, widget.titleForWarning, "float value is incorrect: '"+widget.text()+"'") + res=str(widget.validator().bottom()) + widget.setProperty("text", res) + return res + valtest=widget.validator().bottom() + if valtest!=None: + if valvaltest: + QMessageBox.warning(self, widget.titleForWarning, "float value is over maximum: "+str(val)+" > "+str(valtest)) + res=str(valtest) + widget.setProperty("text", res) + return res + return str(val) def getResumeData(self, separator="\n"): text="" @@ -325,15 +352,15 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): def PBLoadPressed(self): """load last hypothesis saved in tail of file""" try: - f=open(self.paramsFile,"r") - except : - QMessageBox.warning(self, "File", "Unable to open "+self.paramsFile) - return + f=open(self.paramsFile,"r") + except: + QMessageBox.warning(self, "File", "Unable to open "+self.paramsFile) + return try: - text=f.read() - except : - QMessageBox.warning(self, "File", "Unable to read "+self.paramsFile) - return + text=f.read() + except: + QMessageBox.warning(self, "File", "Unable to read "+self.paramsFile) + return f.close() self.loadResumeData(text, separator="\n") @@ -378,7 +405,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): if fd.exec_(): infile = fd.selectedFiles()[0] self.LE_MeshFile.setText(infile) - self.fichierIn=infile.toLatin1() + self.fichierIn=unicode(infile).encode("latin-1") self.MeshIn="" self.LE_MeshSmesh.setText("") @@ -387,7 +414,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): if fd.exec_(): infile = fd.selectedFiles()[0] self.LE_ParamsFile.setText(infile) - self.paramsFile=infile.toLatin1() + self.paramsFile=unicode(infile).encode("latin-1") def meshFileNameChanged(self): self.fichierIn=str(self.LE_MeshFile.text()) @@ -504,7 +531,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget): self.commande+=" --overlap_distance " + self.SP_toStr(self.SP_OverlapDistance) self.commande+=" --overlap_angle " + str(self.SP_OverlapAngle.value()) return True - + def clean(self): self.RB_Check.setChecked(False) self.RB_Fix1.setChecked(False) @@ -533,7 +560,7 @@ def getDialog(): """ global __dialog if __dialog is None: - __dialog = MGCleanerMonPlugDialog() + __dialog = MGCleanerMonPlugDialog() #else : # __dialog.clean() return __dialog @@ -548,10 +575,10 @@ def TEST_standalone(): """ works only if a salome is launched yet with a study loaded to launch standalone python do: - /export/home/wambeke/2013/V6_main_MGC_CO6.4_64/APPLI/runSession + ./APPLI/runSession python or (do not works) - python /export/home/wambeke/2013/V6_main_MGC_CO6.4_64/INSTALL/SMESH/share/salome/plugins/smesh/MGCleanerMonPlugDialog.py + python ./INSTALL/SMESH/share/salome/plugins/smesh/MGCleanerMonPlugDialog.py """ import salome import SMESH @@ -566,12 +593,10 @@ def TEST_standalone(): # ============================================================================== # def TEST_MGCleanerMonPlugDialog(): - #print "TEST_MGCleanerMonPlugDialog" import sys - from PyQt4.QtGui import QApplication - from PyQt4.QtCore import QObject, SIGNAL, SLOT + from qtsalome import QApplication app = QApplication(sys.argv) - QObject.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()")) + app.lastWindowClosed.connect(app.quit) dlg=MGCleanerMonPlugDialog() dlg.show()