From b6f3d448f830ec2f8623943bdae845f5c98358fa Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Tue, 26 May 2015 16:22:15 +0200 Subject: [PATCH] ajout Matrice --- InterfaceQT4/composimp.py | 7 +- InterfaceQT4/monWidgetMatrice.py | 176 ++++++++++++++++++++ UiQT4/CMakeLists.txt | 1 + UiQT4/desWidgetMatrice.ui | 154 +++++++++++++++++ UiQT4/desWidgetUniqueSDCO.ui | 277 +++++++++++++++++++++++++++++++ UiQT4/makefile | 3 +- 6 files changed, 616 insertions(+), 2 deletions(-) create mode 100644 InterfaceQT4/monWidgetMatrice.py create mode 100644 UiQT4/desWidgetMatrice.ui create mode 100644 UiQT4/desWidgetUniqueSDCO.ui diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index f97c0a95..d0c1641d 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -130,7 +130,12 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): # Attention l ordre des if est important # Attention il faut gerer les blocs et les facteurs # a gerer comme dans composimp - # Gerer les matrices --> Actuellement pas dans ce type de panneau + # Gestion des matrices + if self.item.wait_matrice (): + from monWidgetMatrice import MonWidgetMatrice + widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande) + self.widget=widget + return widget #print "____________________________", monNom, self.item.wait_co() #print "____________________________", monNom, self.item.wait_assd() diff --git a/InterfaceQT4/monWidgetMatrice.py b/InterfaceQT4/monWidgetMatrice.py new file mode 100644 index 00000000..c74491e8 --- /dev/null +++ b/InterfaceQT4/monWidgetMatrice.py @@ -0,0 +1,176 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2013 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. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +# Modules Python +import string,types,os + +# Modules Eficas +from PyQt4.QtGui import * +from PyQt4.QtCore import * +from Extensions.i18n import tr +from feuille import Feuille + + +from desWidgetMatrice import Ui_desWidgetMatrice + + +class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille): +# c est juste la taille des differents widgets de base qui change + + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.monType= self.node.item.object.definition.type[0] + parentQt.commandesLayout.insertWidget(-1,self) + self.nbLigs=0 + self.nbCols=0 + self.nomVariables={} + self.creeColonnes() + self.connecterSignaux() + if self.node.item.get_valeur()== None: self.initialSsValeur() + else : + try : self.initialValeur() + except : self.initialSsValeur() + + + def connecterSignaux(self) : + self.connect(self.TBMatrice,SIGNAL("itemChanged(QTableWidgetItem *)"),self.itemChanged) + + def itemChanged(self): + monItem=self.TBMatrice.currentItem() + if monItem==None : return + texte=monItem.text() + if texte=="" : return + val,ok=texte.toDouble() + if ok == False : + self.editor.affiche_infos(tr("Entrer un float SVP"),Qt.red) + monItem.setText("") + return + if self.monType.valSup != None : + if val > self.monType.valSup : + self.editor.affiche_infos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red) + monItem.setText("") + return + if self.monType.valMin != None : + if val < self.monType.valMin : + self.editor.affiche_infos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red) + monItem.setText("") + return + self.editor.affiche_infos("") + if self.monType.structure != None: apply (MonWidgetMatrice.__dict__[self.monType.structure],(self,)) + self.acceptVal() + + + def symetrique(self): + monItem=self.TBMatrice.currentItem() + texte=monItem.text() + if monItem.row() != monItem.column(): + print monItem.row(), monItem.column() + monItemSym=self.TBMatrice.item(monItem.column(), monItem.row()) + monItemSym.setText(texte) + + def creeColonnes(self): + if self.monType.methodeCalculTaille != None : + #try: + if 1 : + apply (MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille],(self,)) + else : + #except : + QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille ) + return + else : + self.nbLigs=self.monType.nbLigs + self.nbCols=self.monType.nbCols + + + def NbDeVariables(self): + jdc=self.node.item.object.jdc + etape=self.node.item.object.etape + self.listeVariables=jdc.get_variables(etape) + if self.listeVariables == [] : + QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) + return + self.TBMatrice.setColumnCount(len(self.listeVariables)) + self.TBMatrice.setRowCount(len(self.listeVariables)) + self.nbLigs=len(self.listeVariables) + self.nbCols=len(self.listeVariables) + + def NbDeDistributions(self): + jdc=self.node.item.object.jdc + etape=self.node.item.object.etape + self.listeVariables=jdc.get_distributions(etape) + if self.listeVariables == [] : + QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue")) + return + self.TBMatrice.setColumnCount(len(self.listeVariables)) + self.TBMatrice.setRowCount(len(self.listeVariables)) + self.nbLigs=len(self.listeVariables) + self.nbCols=len(self.listeVariables) + + def initialSsValeur(self): + for row in range(self.nbLigs): + for column in range(self.nbCols): + if row == column : + initialFloat=1 + else : + initialFloat=0 + self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat))) + header=QStringList() + for var in self.listeVariables : + header << var + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) + + def initialValeur(self): + liste=self.node.item.get_valeur() + dejaAffiche=0 + if (len(liste)) != self.nbLigs +1 : + QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + dejaAffiche=1 + for i in range(self.nbLigs): + inter=liste[i+1] + if (len(inter)) != self.nbCols and (dejaAffiche == 0 ) : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + dejaAffiche=1 + for j in range(self.nbCols): + self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i+1][j]))) + header=QStringList() + for var in liste[0]: + header << var + self.TBMatrice.setVerticalHeaderLabels(header) + self.TBMatrice.setHorizontalHeaderLabels(header) + + def acceptVal(self): + liste=[] + liste.append(self.listeVariables) + if self.TBMatrice.rowCount() != self.nbLigs : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs)) + if self.TBMatrice.columnCount() != self.nbCols : + QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols)) + for i in range(self.nbLigs): + listeCol=[] + for j in range(self.nbCols): + monItem=self.TBMatrice.item(i,j) + texte=monItem.text() + val,ok=texte.toDouble() + if ok == False : + QMessageBox.critical( self, tr("Mauvaise Valeur"),tr( "l element ") + str(i) + "," +str(j) +tr("n est pas correct")) + listeCol.append(val) + liste.append(listeCol) + # on ajoute l ordre des variables aux valeurs + self.node.item.set_valeur(liste) diff --git a/UiQT4/CMakeLists.txt b/UiQT4/CMakeLists.txt index 6469948a..23fcb7b9 100644 --- a/UiQT4/CMakeLists.txt +++ b/UiQT4/CMakeLists.txt @@ -52,6 +52,7 @@ eficas_compile_ui ( desWidgetFact.ui ) eficas_compile_ui ( desWidgetFactPlie.ui ) eficas_compile_ui ( desWidgetHeure.ui ) eficas_compile_ui ( desWidgetInformation.ui ) +eficas_compile_ui ( desWidgetMatrice.ui ) eficas_compile_ui ( desWidgetParam.ui ) eficas_compile_ui ( desWidgetPlusieursBase.ui ) eficas_compile_ui ( desWidgetPlusieursInto.ui ) diff --git a/UiQT4/desWidgetMatrice.ui b/UiQT4/desWidgetMatrice.ui new file mode 100644 index 00000000..ac04cd81 --- /dev/null +++ b/UiQT4/desWidgetMatrice.ui @@ -0,0 +1,154 @@ + + + desWidgetMatrice + + + + 0 + 0 + 802 + 300 + + + + Dialog + + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../../../../../../home/A96028/GitEficasTravail/eficas/Editeur/icons/ast-green-ball.png../../../../../../home/A96028/GitEficasTravail/eficas/Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT4/desWidgetUniqueSDCO.ui b/UiQT4/desWidgetUniqueSDCO.ui new file mode 100644 index 00000000..178cfc04 --- /dev/null +++ b/UiQT4/desWidgetUniqueSDCO.ui @@ -0,0 +1,277 @@ + + + WidgetUniqueSDCO + + + + 0 + 0 + 1069 + 56 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 1 + + + 0 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 2 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + 0 + + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + Attend un objet de type CO + + + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 79 + 17 + + + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + Qt::Vertical + + + + 20 + 2 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + LESDCO + + + +
diff --git a/UiQT4/makefile b/UiQT4/makefile index 82bb7ea6..15e0c3af 100644 --- a/UiQT4/makefile +++ b/UiQT4/makefile @@ -11,7 +11,8 @@ PY_FILES = desSelectVal.py desViewTexte.py desChoixCommandes.py desWidgetComman desChoixCata.py desWidgetPlusieursInto.py desWidgetPlusieursIntoOrdonne.py desBaseWidget.py desWidgetOptionnel.py \ desWidgetSimpFichier.py desWidgetSimpTxt.py desRecherche.py desWidgetCommentaire.py\ desWidgetTuple2.py desWidgetTuple3.py desWidgetCreeParam.py desWidgetParam.py desWidgetHeure.py desWidgetDate.py\ - desWidgetVide.py desWidgetInformation.py desVisu.py desSelectVal.py desWidgetUniqueSDCO.py desWidgetSDCOInto.py + desWidgetVide.py desWidgetInformation.py desVisu.py desSelectVal.py desWidgetUniqueSDCO.py desWidgetSDCOInto.py\ + desWidgetMatrice.py QM_FILES=eficas_en.qm -- 2.39.2