+++ /dev/null
-# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-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.
-#
-# 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
-#
-"""
- Ce package contient les classes qui seront effectivement utilisees dans les applications.
- C'est dans ce package que sont realisees les combinaisons de classes de base
- avec les classes MIXIN qui implementent les fonctionnalites qui ont ete separees
- du noyau pour des raisons de modularite afin de faciliter la maintenance et
- l'extensibilite.
-
- De plus toutes les classes utilisables par les applications sont remontees au
- niveau du package afin de rendre le plus independant possible l'utilisation des
- classes et leur implementation.
-"""
-
-# permet de se proteger de l'oubli de carte coding
-# ce warning deviendra fatal en python 2.4
-import warnings
-warnings.filterwarnings('error','Non-ASCII character.*pep-0263',DeprecationWarning)
-
-from A_JDC_CATA import JDC_CATA
-from A_OPER import OPER
-from A_PROC import PROC
-from A_MACRO import MACRO
-from A_FORM import FORM
-from A_BLOC import BLOC
-from A_FACT import FACT
-from A_SIMP import SIMP
-from A_EVAL import EVAL
-from A_NUPLET import NUPL
-
-from A_JDC import JDC
-from A_ETAPE import ETAPE
-from A_PROC_ETAPE import PROC_ETAPE
-from A_MACRO_ETAPE import MACRO_ETAPE
-from A_FORM_ETAPE import FORM_ETAPE
-from A_MCFACT import MCFACT
-from A_MCLIST import MCList
-from A_MCBLOC import MCBLOC
-from A_MCSIMP import MCSIMP
-
-# Les règles
-from A_AU_MOINS_UN import AU_MOINS_UN
-from A_MEME_NOMBRE import MEME_NOMBRE
-from A_AU_PLUS_UN import AU_PLUS_UN
-from A_UN_PARMI import UN_PARMI
-from A_PRESENT_PRESENT import PRESENT_PRESENT
-from A_PRESENT_ABSENT import PRESENT_ABSENT
-from A_EXCLUS import EXCLUS
-from A_ENSEMBLE import ENSEMBLE
-from A_A_CLASSER import A_CLASSER
-from A_AVANT import AVANT
-
-from A_ASSD import ASSD,assd
-from A_ASSD import GEOM,geom
-# Pour le moment on laisse fonction (ceinture et bretelles)
-from A_ASSD import FONCTION, fonction
-from A_ASSD import formule
-from A_ASSD import formule_c
-from A_ASSD import CO
-
-from Noyau.N__F import _F
-
-from Noyau.N_Exception import AsException
-from Noyau.N_utils import AsType
-
-from A_VALIDATOR import OrVal,AndVal,OnlyStr
-from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory
-from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal
-from A_VALIDATOR import CardVal, InstanceVal
-from A_VALIDATOR import VerifTypeTuple
-
-# On remplace la factory des validateurs initialement dans Noyau par celle
-# de A_VALIDATOR
-import A_VALIDATOR
-import Noyau.N_ENTITE
-Noyau.N_ENTITE.ENTITE.factories['validator']=A_VALIDATOR.validatorFactory
-
-from A_SENSIBILITE import CONCEPT_SENSIBLE, REUSE_SENSIBLE, DERIVABLE
-
-from Extensions.niveau import NIVEAU
-from Extensions.etape_niveau import ETAPE_NIVEAU
-from Extensions.commentaire import COMMENTAIRE
-from Extensions.parametre import PARAMETRE
-from Extensions.parametre_eval import PARAMETRE_EVAL
-from Extensions.commande_comm import COMMANDE_COMM
-from Extensions.mcnuplet import MCNUPLET
-
if hasattr(type_permis, "__class__") and type_permis.__class__.__name__ == 'Matrice':
self.monType=type_permis
return self.valideMatrice(cr=cr)
+ if self.definition.siValide != None :
+ self.definition.siValide(self)
return Validation.V_MCSIMP.MCSIMP.isvalid(self,cr=cr)
def GetNomConcept(self):
# posera des pb si un code decide d appeler FIN un mot clef
# on resoudera a ce moment la
# pour l instant pas de poussiere sous le tapis
+ #print( 'debut affichePanneau pour', self.item.nom)
if not(self.item.isactif()) :
from .monWidgetInactif import MonWidgetInactif
self.fenetre = MonWidgetInactif(self,self.editor)
self.tree.inhibeExpand=True
self.tree.expandItem(self)
self.tree.inhibeExpand=False
- #print "fin de affichePanneau", self.item.nom
- #print "______________________________"
+ #print( 'fin affichePanneau pour', self.item.nom)
def createPopUpMenu(self):
#print "____________________________", monNom, self.item.wait_co()
#print "____________________________", monNom, self.item.wait_assd()
# Gestion d'une seule valeur (eventuellement un tuple ou un complexe)
+ if maDefinition.into != [] and maDefinition.into != None:
+ if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into()
+ else : monInto = maDefinition.into
+
+ # a faire ailleurs
+ #if maDefinition.intoExe != None :
+ # print (self.item)
+ # monInto = maDefinition.intoExe(self.item)
+ # maDefinition.into = monInto
+ # from Noyau.N_VALIDATOR import IntoProtocol
+ # monObjet.intoProto = IntoProtocol("into", into=maDefinition.into, val_min=maDefinition.val_min, val_max=maDefinition.val_max)
+
+
if maDefinition.max == 1 :
# A verifier
if maDefinition.into != [] and maDefinition.into != None:
- if len(maDefinition.into) < 4 :
+ if len(monInto) < 4 :
from .monWidgetRadioButton import MonWidgetRadioButton
widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
- elif len(maDefinition.into) < 7 :
+ elif len(monInto) < 7 :
from .monWidget4a6RadioButton import MonWidget4a6RadioButton
widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
else :
self.translatorFichier=None
self.dicoImages= {}
self.simpleClic= False
+ self.afficheOptionnelVide=False
#--------------------------------------
self.closeFrameRechercheCommande=self.appliEficas.CONFIGURATION.closeFrameRechercheCommande
self.closeArbre=self.appliEficas.CONFIGURATION.closeArbre
self.affiche=self.appliEficas.CONFIGURATION.affiche
+ self.afficheOptionnelVide=self.appliEficas.CONFIGURATION.afficheOptionnelVide
self.nombreDeBoutonParLigne = self.appliEficas.CONFIGURATION.nombreDeBoutonParLigne
self.dicoImages = self.appliEficas.CONFIGURATION.dicoImages
self.simpleClic = self.appliEficas.CONFIGURATION.simpleClic
if ouChercher ==None : print ('SOUCI'); return
monMC=ouChercher.get_child(MCFils,restreint="oui")
if monMC== None : monMC= ouChercher.addentite(MCFils)
+
monMC.definition.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
monMC.state='changed'
monMC.isvalid()
+ #----------------------------------------------------#
+ def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
+ #----------------------------------------------------#
+ for e in self.jdc.etapes:
+ if e.nom == nomEtape : ouChercher=e; break
+
+ for mot in listeAvant :
+ try :
+ ouChercher=ouChercher.get_child(mot,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+ try :
+ monMC=ouChercher.get_child(MCFils,restreint="oui")
+ # Le mot clef n est pas la
+ except : return 0
+
+ #print ('________',monMC)
+ if hasattr(monMC.definition,'into') :
+ if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
+ else : maListeDeValeur=monMC.definition.into
+ else :
+ return 0
+
+ monMC.state='changed'
+ return 1
+
+
#-------------------------------------#
def changeIntoDefMC(self,etape,listeMC,valeurs):
#-------------------------------------#
definitionEtape=getattr(self.jdc.cata[0],etape)
ouChercher=definitionEtape
if len(listeMC) > 1 :
+
for mc in listeMC[0:-1]:
mcfact=ouChercher.entites[mc]
ouChercher=mcfact
mcAccas=ouChercher.entites[listeMC[-1]]
+
+ if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
+ else : oldValeurs=None
+ if oldValeurs==valeurs : return 0
+
mcAccas.into=valeurs
+ from Noyau.N_VALIDATOR import IntoProtocol
+ mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
+ return 1
#-------------------------------------------------------------#
def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
def moinsPushed(self):
# on supprime le dernier
+ if self.NumLineEditEnCours == 0 : return
if self.NumLineEditEnCours==self.indexDernierLabel :
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
courant=getattr(self,nomLineEdit)
"""
"""
def __init__(self,liste,parentQt,parentMC):
- #print "dans init de monWidgetOptionnel ", parentQt, parentQt.node.item.nom
+ #print "dans init de monWidgetOptionnel ", parentQt, liste,parentMC
QWidget.__init__(self,None)
self.setupUi(self)
self.listeChecked=[]
self.cb=None
self.parentQt=parentQt
self.parentMC=parentMC
- self.afficheTitre()
- if liste != [] : self.affiche(liste)
- else : self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel')))
+ if liste != [] :
+ self.affiche(liste)
+ self.afficheTitre()
+ elif self.parentQt.parentQt.afficheOptionnelVide != False :
+ self.afficheTitre()
+ self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel')))
+ else :
+ self.frameLabelMC.close()
+ #print "dans fin de monWidgetOptionnel ", parentQt
def afficheTitre(self):
labeltext,fonte,couleur = self.parentMC.node.item.GetLabelText()
- print (labeltext)
+ #print (labeltext)
l=tr(labeltext)
li=[]
while len(l) > 25:
self.MCOptionnelLayout.insertWidget(0,cb)
self.dicoCb[cb]=mot
self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0)
- #print "Fin Optionnel ____ affiche", liste
+ print "Fin Optionnel ____ affiche", liste
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
#print "dans le init de MonWidget4a6RadioButton",self
- self.maListeDeValeur=monSimpDef.into
+ if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into()
+ else : self.maListeDeValeur=monSimpDef.into
MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def setMaxI(self):
self.monGroupe=self.monOptionnel.afficheOptionnel(liste,self)
- #def focusInEvent(self,event):
+ def focusInEvent(self,event):
#print "je mets a jour dans focusInEvent de monWidget Commande "
- # if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
- # self.afficheOptionnel()
+ if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
+ self.afficheOptionnel()
def reaffiche(self,nodeAVoir=None):
# Import des panels
class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
def __init__(self,parentQt):
- #print "dans init de monWidgetOptionnel ", parentQt, parentQt.node.item.nom
+ #print ("dans init de monWidgetOptionnel ", parentQt )
QWidget.__init__(self,None)
self.setupUi(self)
self.dicoMCWidgetOptionnel={}
self.parentQt=parentQt
def afficheOptionnel(self,liste,MC):
- #print "dans Optionnel ____ affiche", liste
+ print ('afficheOptionnel MonWidgetOptionnel', self,liste,MC)
+ #import traceback
+ #traceback.print_stack()
self.vireLesAutres(MC)
if MC.node.item.nom in self.dicoMCWidgetOptionnel :
- self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None)
self.dicoMCWidgetOptionnel[MC.node.item.nom].close()
+ self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None)
+ self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater()
groupe = MonGroupeOptionnel(liste,self,MC)
self.groupesOptionnelsLayout.insertWidget(0,groupe)
self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe
return groupe
def vireLesAutres(self,MC):
- #print "je passe dans vireLesAutres"
+ #print( "je passe dans vireLesAutres")
genea =MC.obj.get_genealogie()
- #print genea
+ #print (genea)
for k in list(self.dicoMCWidgetOptionnel.keys()):
+ #if k not in genea : print ( k)
if k not in genea :
self.dicoMCWidgetOptionnel[k].close()
del self.dicoMCWidgetOptionnel[k]
- #if k not in genea : print k
- #print "________"
+ #print( "fin vireLesAutres")
def afficheOptionnelVide(self):
self.GeneaLabel.setText("")
self.BSelectFichier.setIconSize(QSize(32, 32))
self.listeValeursCourantes=self.node.item.GetListeValeurs()
- #if self.monSimpDef.max != "**" and self.monSimpDef.max < 7:
- # hauteur=dicoLongueur[self.monSimpDef.max]
- # hauteur=dicoLongueur[2]
- # print ('hauteur', hauteur)
- # self.resize(self.width(),hauteur)
- # self.setMinimumHeight(hauteur)
+ self.monSimpDef.max = 3
+ if self.monSimpDef.max != "**" and self.monSimpDef.max < 7:
+ hauteurMax=dicoLongueur[self.monSimpDef.max]
+ else :
+ hauteurMax=220
# if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur)
- #else :
- # self.resize(self.width(),hauteurMax)
- # self.setMinimumHeight(hauteurMax)
+ self.resize(self.width(),hauteurMax)
+ self.setMinimumHeight(hauteurMax)
self.finCommentaireListe()
self.parentQt.commandesLayout.insertWidget(-1,self)
self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
self.vScrollBar = self.scrollArea.verticalScrollBar()
self.politique=PolitiquePlusieurs(self.node,self.editor)
# construction du min de valeur a entrer
+ self.monSimpDef.max = 3
if self.monSimpDef.max == "**" : aConstruire=7
elif self.monSimpDef.max == float('inf'): aConstruire=7
else : aConstruire=self.monSimpDef.max
+ print ('1,aConstruire', aConstruire)
+
for i in range(1,aConstruire):
self.ajoutLineEdit()
QApplication.processEvents()
else :
self.editor.affiche_infos("")
elif donneFocus==None : donneFocus=courant
+
nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel)
dernier=getattr(self,nomDernierLineEdit)
derniereValeur=dernier.text()
class MonWidgetRadioButton (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun):
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
#print "MonWidgetRadioButton ", self
- self.maListeDeValeur=monSimpDef.into
+ if type(monSimpDef.into) ==types.FunctionType : self.maListeDeValeur=monSimpDef.into()
+ else : self.maListeDeValeur=monSimpDef.into
+
MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
def setMaxI(self):
'Fichier' : tr(u'Un fichier est attendu. '),
'FichierNoAbs' : tr(u'Un fichier est attendu. '),
'Repertoire' : tr(u'Un repertoire est attendu. '),
+ 'FichierOuRepertoire' : tr(u'Un repertoire ou un fichier est attendu. '),
'Heure' : tr(u'Heure sous la forme HH:MM'),
'Date' : tr(u'Date sous la forme JJ/MM/AA')}
if mc.type[0] != type:
def check_into(self):
"""Vérifie l'attribut into."""
if self.into != None:
- if type(self.into) not in (list, tuple):
+ if (type(self.into) not in (list, tuple)) and (type(self.into) != types.FunctionType) :
self.cr.fatal(
_(u"L'attribut 'into' doit être un tuple : %r"), self.into)
for child in self.data:
child.supprime()
- def get_child(self, name):
+ def get_child(self, name,restreint='non'):
"""
Retourne le fils de nom name s'il est contenu dans self
Par défaut retourne le fils du premier de la liste
class_instance = N_MCSIMP.MCSIMP
label = 'SIMP'
- def __init__(self, typ,ang="", fr="", statut='f', into=None, defaut=None,
+ def __init__(self, typ,ang="", fr="", statut='f', into=None, siValide = None, defaut=None,
min=1, max=1, homo=1, position='local',
val_min=float('-inf'), val_max=float('inf'), docu="", validators=None,
sug=None):
self.fr = fr
self.statut = statut
self.into = into
+ self.siValide = siValide
self.defaut = defaut
self.min = min
self.max = max