1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 from __future__ import absolute_import
22 from __future__ import print_function
24 from builtins import str
25 from builtins import range
31 from Extensions.i18n import tr
32 from .feuille import Feuille
35 from desWidgetMatrice import Ui_desWidgetMatrice
37 from six.moves import range
38 from PyQt5.QtCore import QSize, Qt
39 from PyQt5.QtWidgets import QTableWidgetItem
40 from PyQt5.QtGui import QIcon
43 class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
44 # c est juste la taille des differents widgets de base qui change
46 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
47 Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
48 self.monType= self.node.item.object.definition.type[0]
49 parentQt.commandesLayout.insertWidget(-1,self)
54 self.connecterSignaux()
55 if self.node.item.getValeur()== None: self.initialSsValeur()
57 try : self.initialValeur()
58 except : self.initialSsValeur()
59 if sys.platform[0:5]!="linux" :
60 repIcon=self.node.editor.appliEficas.repIcon
61 fichier=os.path.join(repIcon, 'update.png')
63 self.PBrefresh.setIcon(icon)
64 self.PBrefresh.setIconSize(QSize(32, 32))
68 def connecterSignauxQT4(self) :
69 self.connect(self.TBMatrice,SIGNAL("itemChanged(QTableWidgetItem *)"),self.itemChanged)
70 self.connect(self.PBrefresh,SIGNAL("clicked()"), self.afficheEntete)
72 def connecterSignaux(self) :
73 self.TBMatrice.itemChanged.connect(self.itemChanged)
74 self.PBrefresh.clicked.connect( self.afficheEntete)
76 def afficheEntete(self):
77 self.objSimp.changeEnteteMatrice()
78 self.TBMatrice.clear()
79 if self.node.item.getValeur()== None: self.initialSsValeur()
81 try : self.initialValeur()
82 except : self.initialSsValeur()
83 self.node.item.object.state='changed'
84 self.node.item.object.parent.state='changed'
86 self.parentQt.setValide()
87 self.node.item.jdc.isValid()
90 def itemChanged(self):
91 monItem=self.TBMatrice.currentItem()
92 if monItem==None : return
103 self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red)
106 if self.monType.valSup != None :
107 if val > self.monType.valSup :
108 self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
111 if self.monType.valMin != None :
112 if val < self.monType.valMin :
113 self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
116 self.editor.afficheInfos("")
117 if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,))
121 def symetrique(self):
122 monItem=self.TBMatrice.currentItem()
124 if monItem.row() != monItem.column():
125 print(monItem.row(), monItem.column())
126 monItemSym=self.TBMatrice.item(monItem.column(), monItem.row())
127 monItemSym.setText(texte)
129 def creeColonnes(self):
130 if self.monType.methodeCalculTaille != None :
133 MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille](*(self,))
136 QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille )
139 self.nbLigs=self.monType.nbLigs
140 self.nbCols=self.monType.nbCols
143 def nbDeVariables(self):
144 jdc=self.node.item.object.jdc
145 etape=self.node.item.object.etape
146 self.listeVariables=jdc.getVariables(etape)
147 if self.listeVariables == [] :
148 QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
150 self.TBMatrice.setColumnCount(len(self.listeVariables))
151 self.TBMatrice.setRowCount(len(self.listeVariables))
152 self.nbLigs=len(self.listeVariables)
153 self.nbCols=len(self.listeVariables)
155 def nNbDeDistributions(self):
156 jdc=self.node.item.object.jdc
157 etape=self.node.item.object.etape
158 self.listeVariables=jdc.getDistributions(etape)
159 if self.listeVariables == [] :
160 QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
162 self.TBMatrice.setColumnCount(len(self.listeVariables))
163 self.TBMatrice.setRowCount(len(self.listeVariables))
164 self.nbLigs=len(self.listeVariables)
165 self.nbCols=len(self.listeVariables)
167 def initialSsValeur(self):
168 for row in range(self.nbLigs):
169 for column in range(self.nbCols):
174 self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat)))
175 #header=QStringList()
177 for var in self.listeVariables :
180 self.TBMatrice.setVerticalHeaderLabels(header)
181 self.TBMatrice.setHorizontalHeaderLabels(header)
183 def initialValeur(self):
184 liste=self.node.item.getValeur()
186 if (len(liste)) != self.nbLigs +1 :
187 QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
189 raise EficasException('dimension')
190 for i in range(self.nbLigs):
192 if (len(inter)) != self.nbCols and (dejaAffiche == 0 ) :
193 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols))
195 raise EficasException('dimension')
196 for j in range(self.nbCols):
197 self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i+1][j])))
201 self.TBMatrice.setVerticalHeaderLabels(header)
202 self.TBMatrice.setHorizontalHeaderLabels(header)
206 liste.append(self.listeVariables)
207 if self.TBMatrice.rowCount() != self.nbLigs :
208 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
209 if self.TBMatrice.columnCount() != self.nbCols :
210 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols))
211 for i in range(self.nbLigs):
213 for j in range(self.nbCols):
214 monItem=self.TBMatrice.item(i,j)
217 val=float(str(texte))
221 #val,ok=texte.toDouble()
223 QMessageBox.critical( self, tr("Mauvaise Valeur"),tr( "l element ") + str(i) + "," +str(j) +tr("n est pas correct"))
225 liste.append(listeCol)
226 # on ajoute l ordre des variables aux valeurs
227 self.node.item.setValeur(liste)