self.setToolTip(0,self.item.get_fr())
self.setToolTip(1,self.item.get_fr())
repIcon=self.appliEficas.repIcon
-
- monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+ couleur=self.item.GetIconName()
+ if not self.editor.configuration.differencieSiDefaut and couleur == 'ast-green-dark-ball' : couleur="ast-green-ball"
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
self.setIcon(0,monIcone)
self.children = []
Elle appelle isvalid
"""
repIcon=self.appliEficas.repIcon
- monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+ couleur=self.item.GetIconName()
+ if not self.editor.configuration.differencieSiDefaut and couleur == 'ast-green-dark-ball' : couleur="ast-green-ball"
+ monIcone = QIcon(repIcon+"/" + couleur + ".png")
self.setIcon(0,monIcone)
def valide_liste_partielle(self,item,listecourante):
#On protege la liste en entree en la copiant
- valeur=listecourante[:]
- valeur.append(item)
+ valeur=list(listecourante)
+ if item : valeur.append(item)
return self.object.valid_valeur_partielle(valeur)
def valide_liste_complete (self,valeur):
def GetIconName(self):
if self.isvalid():
+ if self.object.valeur == self.object.definition.defaut :
+ return "ast-green-dark-ball"
return "ast-green-ball"
elif self.object.isoblig():
return "ast-red-ball"
self.simpleClic= False
self.afficheOptionnelVide=False
self.afficheListesPliees=True
+ self.differencieSiDefaut=True
#--------------------------------------
self.nombreDeBoutonParLigne = self.appliEficas.CONFIGURATION.nombreDeBoutonParLigne
self.dicoImages = self.appliEficas.CONFIGURATION.dicoImages
self.simpleClic = self.appliEficas.CONFIGURATION.simpleClic
+ self.configuration = self.appliEficas.CONFIGURATION
#self.taille = self.appliEficas.taille
#if self.code in ['MAP','CARMELCND','PSEN'] : self.afficheCommandesPliees=False
if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
self.generator.writeDefault(fn)
elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
- self.generator.writeDefault(fn)
-
+ msgBox = QMessageBox(None)
+ msgBox.setWindowTitle(tr("Fichier Cas invalide"))
+ msgBox.setText(tr("Le fichier cas est invalide"))
+ msgBox.addButton(tr("&Sauvegarder"),1)
+ msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+ msgBox.addButton(tr("&Annuler"),2)
+ res=msgBox.exec_()
+ if res == 0 :
+ self.generator.writeDefault(fn)
+ return (1, self.fichier)
+ if res == 2 : return (0, None)
+ if self.appliEficas.salome : self.appliEficas.close()
+ else : sys.exit(1)
+
if self.salome :
self.appliEficas.addJdcInSalome( self.fichier)
self.modified = 0
import traceback
from PyQt5.QtWidgets import QToolButton ,QWidget
-from PyQt5.QtGui import QFont, QFontMetrics
+from PyQt5.QtGui import QFont, QFontMetrics, QPalette
from PyQt5.QtCore import Qt
from Extensions.i18n import tr
from .gereIcones import FacultatifOuOptionnel
from .qtSaisie import SaisieValeur
-nomMax=250
+nomMax=230
# ---------------------------------------------------------------------- #
class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
# --------------------------------------------------------------------- #
#print (inspect.getmro(self.__class__))
#self.__class__.mousePressEvent(self, event)
-
+ #def setCouleurSiDefaut(self,widgetAChanger):
+ # if self.node.item.definition.defaut == self.node.item.valeur :
+ # palette = QPalette(Qt.darkMagenta)
+ # palette.setColor(QPalette.Text,Qt.darkMagenta)
+ # widgetAChanger.setPalette(palette)
+
+
def setValeurs(self):
# print "passe dans setValeurs pour ", self.objSimp.nom
# print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
commentaire=tr("Entrez ")+str(mc.min)+tr(" valeurs ")+'\n'
else :
if mc.max != "**" :
- commentaire=tr("entre ")+str(mc.min)+tr(" et ")+str(mc.max)+tr(" valeurs ")+'\n'
+ commentaire=tr("entre ")+str(mc.min)+tr("\net ")+str(mc.max)+tr(" valeurs ")+'\n'
else :
commentaire=""
else :
if self.monSimpDef.get_sug() != None and self.monSimpDef.get_sug() != "":
suggere=str('<html><head/><body><p><span style=" font-size:8pt;">suggestion : ')+str(self.monSimpDef.get_sug())+"</span></p></body></html>"
if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere)
+ return
+ if self.monSimpDef.defaut != None and hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip('default value : '+str(self.monSimpDef.defaut))
def setCommentaire(self):
c = self.debutToolTip
self.editor.affiche_commentaire(aide)
def formate(self,t):
- if t.find('_')==0 :
- newText=t[0:19]+'\n'+t[19:]
- else:
- listeNom=t.split('_')
- newTexte=""
- ligne=""
- for n in listeNom:
- if len(ligne)+len(n) < 25 :
- newTexte=newTexte+"_"+n
- ligne+="_"+n
- else :
- newTexte=newTexte+"\n_"+n
- ligne=""
- #newTexte=t[0:t.rfind('_')]+'\n'+ t[t.rfind('_'):]
- newText=newTexte[1:]
+ l=len(t)//2
+ newText=t[0:l]+"_\n"+t[l:]
return newText
def setValide(self):
#print " c est le moment de gerer le passage au suivant"
if not(hasattr (self,'RBValide')) : return
- icon = QIcon()
- if self.node.item.object.isvalid() :
- icon=QIcon(self.repIcon+"/ast-green-ball.png")
- else :
- icon=QIcon(self.repIcon+"/ast-red-ball.png")
- self.RBValide.setIcon(icon)
+ couleur=self.node.item.GetIconName()
+ if not self.editor.configuration.differencieSiDefaut and couleur == 'ast-green-dark-ball' : couleur="ast-green-ball"
+ monIcone = QIcon(self.repIcon+"/" + couleur + ".png")
+ self.RBValide.setIcon(monIcone)
# il faut chercher la bonne fenetre
def rendVisible(self):
#print "dans mousePressEvent"
if self.parent.node.item.object.isvalid() :
myToolTip=tr("objet valide")
+ if self.parent.editor.configuration.differencieSiDefaut :
+ if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut :
+ myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
+
QToolTip.showText(event.globalPos(),myToolTip )
else :
t=""
from desSelectVal import Ui_DSelVal
from Extensions.i18n import tr
-from PyQt5.QtWidgets import QDialog, QFileDialog
+from PyQt5.QtWidgets import QDialog, QFileDialog ,QMessageBox
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QPalette
def readVal(self):
if self.file == "" : return
- f = open(self.file, "r")
- self.texte = f.read()
- f.close()
+ try :
+ f = open(self.file, "r")
+ self.texte = f.read()
+ f.close()
+ except :
+ QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible"))
+ self.texte=""
+ return
def initVal(self):
self.TBtext.clear()
# A priori, on ne fait rien
pass
- def ajoutNValeur(self,liste) :
- for val in liste :
- i=1
- ajoute=False
- while i < self.indexDernierLabel+1:
- nomLineEdit="lineEditVal"+str(i)
+ def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+
+ listeFormatee=list(liste)
+
+ min,max=self.node.item.GetMinMax()
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
+ texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+ self.editor.affiche_infos(texte,Qt.red)
+ return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.affiche_infos(texte,Qt.red)
+ return
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
+ indexDernierRempli=0
+ while ( indexDernierRempli < len(liste) ) :
+ texte=liste[indexDernierRempli]
+ if indexDernierRempli < self.indexDernierLabel:
+ nomLineEdit="lineEditVal"+str(indexDernierRempli+1)
courant=getattr(self,nomLineEdit)
- valeur=courant.text()
- if valeur == None or valeur == "" :
- ajoute=True
- courant.setText(str(val))
- commentaire=self.ajout1Valeur(val)
- if (commentaire != None ):
- self.editor.affiche_infos(commentaire,Qt.red)
- courant.setText("")
- break
- else :
- i=i+1
- if ajoute : continue
- self.ajoutLineEdit(valeur=str(val))
- self.changeValeur()
-
+ courant.setText(str(texte))
+ else :
+ self.ajoutLineEdit(texte)
+ indexDernierRempli = indexDernierRempli + 1
+
def changeValeur(self,changeDePlace=True,oblige=False):
donneFocus=None
from Tuple3 import Ui_Tuple3
+#--------------------------
class TupleCustom(object) :
+#--------------------------
+
def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------------------------------------
QWidget.__init__(self,parent)
self.setupUi(self)
self.tailleTuple=tailleTuple
def valueChange(self):
+ #----------------------
+
listeVal=[]
-
for i in range(self.tailleTuple):
nomLE="lineEditVal_"+str(i+1)
courant=getattr(self,nomLE)
if str(val)=="" or val==None :
if not self.inFocusOutEvent : courant.setFocus()
return
+
try :
valeur=eval(val,{})
except :
def setValeur(self,value):
+ #----------------------
+
listeVal=[]
valeurNulle=True
for i in range(self.tailleTuple):
else : self.valeur=listeVal
def getValeur(self):
+ #----------------------
return self.valeur
def text(self):
+ #--------------
return self.valeur
def setText(self,value):
+ #-----------------------
self.setValeur(value)
def clean(self):
+ #-------------------
self.valeur=None
for i in range(self.tailleTuple):
nomLE="lineEditVal_"+str(i+1)
courant.setText("")
def finCommentaire(self):
+ #-------------------
return self.finCommentaireListe()
+#-------------------------------------------------
class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom):
+#-------------------------------------------------
+
def __init__(self,tailleTuple,parent,parentQt,index):
+ #-------------------
TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+#-------------------------------------------------
class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+
def __init__(self,tailleTuple,parent,parentQt,index):
+ #-----------------------------------------------------
TupleCustom. __init__(self,tailleTuple,parent,parentQt,index)
-# ---------------------------- #
+# -------------------------------------------- #
class MonWidgetPlusieursTuple(Feuille,GereListe):
+# -------------------------------------------- #
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+ #-----------------------------------------------------
+
self.indexDernierLabel=0
self.nomLine="TupleVal"
self.listeAffichageWidget=[]
self.finCommentaireListe()
self.politique=PolitiquePlusieurs(self.node,self.editor)
self.parentQt.commandesLayout.insertWidget(-1,self)
+
if sys.platform[0:5]!="linux":
repIcon=self.node.editor.appliEficas.repIcon
fichier=os.path.join(repIcon, 'arrow_up.png')
def ajoutLineEdit(self,valeur=None,inInit=False):
+ #------------------------------------------------
self.indexDernierLabel=self.indexDernierLabel+1
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
if hasattr(self,nomLineEdit) :
self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+
self.etablitOrdre()
# deux lignes pour que le ensureVisible fonctionne
if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
def etablitOrdre(self):
+ # ---------------------
i=0
while(i +1 < len(self.listeAffichageWidget)):
self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
def setValeurs(self):
+ # ---------------------
self.RBListePush()
valeurs=self.node.item.get_valeur()
min,max=self.node.item.GetMinMax()
for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True)
def rendVisibleLigne(self):
+ # ---------..--------------
QApplication.processEvents()
self.estVisible.setFocus(True)
self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
def changeValeur(self,changeDePlace=False,oblige=True):
+ # -----------------------------------------------------
#Pour compatibilite signature
+
aLeFocus=self.focusWidget()
listeComplete=[]
-
libre=False
for i in range(self.indexDernierLabel) :
nom=self.nomLine+str(i+1)
pass
def ajoutNValeur(self,liste):
+ #----------------------------
+ # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+ # car alors le temps de verification devient prohibitif reconstructu=ion et verification a
+ # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
if len(liste)%self.nbValeurs != 0 :
texte="Nombre incorrect de valeurs"
self.editor.affiche_infos(tr(texte),Qt.red)
+ return
+
i=0
+ longueur=len(liste)//self.nbValeurs
+ increment=self.nbValeurs
+ listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)]
+ listeFormatee=tuple(listeFormatee)
+
min,max=self.node.item.GetMinMax()
- if self.objSimp.valeur == None : l = len(liste) and self.objSimp.valeur
- else : l = len(liste)+len(self.objSimp.valeur)
- if l > max :
+ if self.objSimp.valeur == None : listeComplete=listeFormatee
+ else : listeComplete =self.objSimp.valeur + listeFormatee
+
+ if len(listeComplete) > max :
texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
self.editor.affiche_infos(texte,Qt.red)
return
+
+ validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+ if not validite :
+ self.editor.affiche_infos(texte,Qt.red)
+ return
+
+ # on calcule le dernier lineedit rempli avant de changer la valeur
+ if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+ else : indexDernierRempli=0
+
+ self.politique.recordValeur(listeComplete)
+
while ( i < len(liste) ) :
- if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
- else : indexDernierRempli=0
try :
t=tuple(liste[i:i+self.nbValeurs])
- i=i+self.nbValeurs
except:
t=tuple(liste[i:len(liste)])
+ i=i+self.nbValeurs
if indexDernierRempli < self.indexDernierLabel:
nomLineEdit=self.nomLine+str(indexDernierRempli+1)
LEARemplir=getattr(self,nomLineEdit)
LEARemplir.lineEditVal_1.setText(str(t[0]))
LEARemplir.lineEditVal_2.setText(str(t[1]))
if self.nbValeurs== 3 : LEARemplir.lineEditVal_3.setText(str(t[2]))
- LEARemplir.valueChange()
else :
self.ajoutLineEdit(t,False)
- nomLineEdit=self.nomLine+str(self.indexDernierLabel)
- LEARemplir=getattr(self,nomLineEdit)
- LEARemplir.valueChange()
+ indexDernierRempli = indexDernierRempli + 1
+
def RBListePush(self):
+ #----------------------
# PN a rendre generique avec un truc tel prerempli
+ # pour l instant specifique PSEN
+
if self.editor.code == 'VP' : return
if self.objSimp.valeur != None and self.objSimp.valeur != [] : return
if not hasattr(self.editor.readercata.cata[0],'sd_ligne') : self.editor.readercata.cata[0].sd_ligne=None
return valide,commentaire,commentaire2,listeRetour
listeRetour.append(valeurTuple)
return valide,commentaire,commentaire2,listeRetour
+
+ def ajoutNTuple(self,liste):
+ listeRetour=[]
+ commentaire="Nouvelles valeurs acceptee"
+ commentaire2=""
+ valide=self.node.item.valide_liste_partielle(None,liste)
+ if not valide :
+ commentaire2=self.node.item.info_erreur_liste()
+ return valide,commentaire,commentaire2,listeRetour
+
+
+ def recordValeur(self,liste,dejaValide=True):
+ ancienne_val = self.node.item.get_valeur()
+ validite=self.node.item.set_valeur(liste)
+ if validite : self.node.item.init_modif()
+ if self.node.item.isvalid():
+ commentaire = tr("Valeur du mot-cle enregistree")
+ else:
+ cr = self.node.item.get_cr()
+ commentaire = tr("Valeur du mot-cle non autorisee ")+cr.get_mess_fatal()
+ self.node.item.set_valeur(ancienneVal)
+ return validite, commentaire
+
+
<rect>
<x>0</x>
<y>0</y>
- <width>764</width>
- <height>86</height>
+ <width>1122</width>
+ <height>163</height>
</rect>
</property>
<property name="sizePolicy">
<x>0</x>
<y>0</y>
<width>300</width>
- <height>57</height>
+ <height>101</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<widget class="QLabel" name="monCommentaireLabel">
<property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>0</height>
+ </size>
+ </property>
<property name="text">
- <string>TextLabel</string>
+ <string><html><head/><body><p>les types des tuples</p></body></html></string>
</property>
</widget>
</item>
<property name="lineWidth">
<number>1</number>
</property>
- <property name="sizeAdjustPolicy">
- <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
- </property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<rect>
<x>0</x>
<y>0</y>
- <width>398</width>
- <height>48</height>
+ <width>705</width>
+ <height>122</height>
</rect>
</property>
<property name="sizePolicy">
<rect>
<x>0</x>
<y>0</y>
- <width>612</width>
- <height>175</height>
+ <width>662</width>
+ <height>163</height>
</rect>
</property>
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
</widget>
</item>
<item>
- <widget class="QScrollArea" name="scrollArea_2">
+ <widget class="QLabel" name="monCommentaireLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>0</height>
+ </size>
</property>
- <property name="frameShadow">
- <enum>QFrame::Plain</enum>
+ <property name="maximumSize">
+ <size>
+ <width>300</width>
+ <height>16777215</height>
+ </size>
</property>
- <property name="widgetResizable">
- <bool>true</bool>
+ <property name="text">
+ <string><html><head/><body><p>TextLabel dqDFDQ</p><p><br/></p></body></html></string>
</property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>82</width>
- <height>111</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_7">
- <item>
- <widget class="QLabel" name="monCommentaireLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>TextLabel</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
</widget>
</item>
</layout>
<rect>
<x>0</x>
<y>0</y>
- <width>197</width>
- <height>110</height>
+ <width>211</width>
+ <height>84</height>
</rect>
</property>
<property name="sizePolicy">
lval=valeur.split(";")
ligne=" "
for v in lval :
- if len(ligne) < 70 : ligne += str(v)+'; '
+ if len(ligne+ str(v)+'; ') < 70 : ligne += str(v)+'; '
else :
text+= ligne+"\n"
ligne=" "+str(v)+'; '