1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013 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 import string,types,os
24 from PyQt4.QtGui import *
25 from PyQt4.QtCore import *
26 from Extensions.i18n import tr
27 from feuille import Feuille
30 from desWidgetMatrice import Ui_desWidgetMatrice
33 class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
34 # c est juste la taille des differents widgets de base qui change
36 def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
37 Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
38 self.monType= self.node.item.object.definition.type[0]
39 parentQt.commandesLayout.insertWidget(-1,self)
44 self.connecterSignaux()
45 if self.node.item.get_valeur()== None: self.initialSsValeur()
47 try : self.initialValeur()
48 except : self.initialSsValeur()
51 def connecterSignaux(self) :
52 self.connect(self.TBMatrice,SIGNAL("itemChanged(QTableWidgetItem *)"),self.itemChanged)
54 def itemChanged(self):
55 monItem=self.TBMatrice.currentItem()
56 if monItem==None : return
59 val,ok=texte.toDouble()
61 self.editor.affiche_infos(tr("Entrer un float SVP"),Qt.red)
64 if self.monType.valSup != None :
65 if val > self.monType.valSup :
66 self.editor.affiche_infos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
69 if self.monType.valMin != None :
70 if val < self.monType.valMin :
71 self.editor.affiche_infos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
74 self.editor.affiche_infos("")
75 if self.monType.structure != None: apply (MonWidgetMatrice.__dict__[self.monType.structure],(self,))
80 monItem=self.TBMatrice.currentItem()
82 if monItem.row() != monItem.column():
83 print monItem.row(), monItem.column()
84 monItemSym=self.TBMatrice.item(monItem.column(), monItem.row())
85 monItemSym.setText(texte)
87 def creeColonnes(self):
88 if self.monType.methodeCalculTaille != None :
91 apply (MonWidgetMatrice.__dict__[self.monType.methodeCalculTaille],(self,))
94 QMessageBox.critical( self, tr("Mauvaise execution "),tr( "impossible d executer la methode ") + monType.methodeCalculTaille )
97 self.nbLigs=self.monType.nbLigs
98 self.nbCols=self.monType.nbCols
101 def NbDeVariables(self):
102 jdc=self.node.item.object.jdc
103 etape=self.node.item.object.etape
104 self.listeVariables=jdc.get_variables(etape)
105 if self.listeVariables == [] :
106 QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
108 self.TBMatrice.setColumnCount(len(self.listeVariables))
109 self.TBMatrice.setRowCount(len(self.listeVariables))
110 self.nbLigs=len(self.listeVariables)
111 self.nbCols=len(self.listeVariables)
113 def NbDeDistributions(self):
114 jdc=self.node.item.object.jdc
115 etape=self.node.item.object.etape
116 self.listeVariables=jdc.get_distributions(etape)
117 if self.listeVariables == [] :
118 QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
120 self.TBMatrice.setColumnCount(len(self.listeVariables))
121 self.TBMatrice.setRowCount(len(self.listeVariables))
122 self.nbLigs=len(self.listeVariables)
123 self.nbCols=len(self.listeVariables)
125 def initialSsValeur(self):
126 for row in range(self.nbLigs):
127 for column in range(self.nbCols):
132 self.TBMatrice.setItem(row,column,QTableWidgetItem(str(initialFloat)))
134 for var in self.listeVariables :
136 self.TBMatrice.setVerticalHeaderLabels(header)
137 self.TBMatrice.setHorizontalHeaderLabels(header)
139 def initialValeur(self):
140 liste=self.node.item.get_valeur()
142 if (len(liste)) != self.nbLigs +1 :
143 QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
145 for i in range(self.nbLigs):
147 if (len(inter)) != self.nbCols and (dejaAffiche == 0 ) :
148 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols))
150 for j in range(self.nbCols):
151 self.TBMatrice.setItem(i,j,QTableWidgetItem(str(liste[i+1][j])))
155 self.TBMatrice.setVerticalHeaderLabels(header)
156 self.TBMatrice.setHorizontalHeaderLabels(header)
160 liste.append(self.listeVariables)
161 if self.TBMatrice.rowCount() != self.nbLigs :
162 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
163 if self.TBMatrice.columnCount() != self.nbCols :
164 QMessageBox.critical( self, tr("Mauvaise dimension de matrice"), tr("le nombre de colonne n est pas egal a ") + str(self.nbCols))
165 for i in range(self.nbLigs):
167 for j in range(self.nbCols):
168 monItem=self.TBMatrice.item(i,j)
170 val,ok=texte.toDouble()
172 QMessageBox.critical( self, tr("Mauvaise Valeur"),tr( "l element ") + str(i) + "," +str(j) +tr("n est pas correct"))
174 liste.append(listeCol)
175 # on ajoute l ordre des variables aux valeurs
176 self.node.item.set_valeur(liste)