Methode externe
"""
self.editor.init_modif()
+
+ verifiePosition=self.verifiePosition(name,pos)
+ if not verifiePosition : return 0
+
index = self.treeParent.children.index(self)
if pos == 'before': index = index
elif pos == 'after': index = index +1
return 0
return self.treeParent.append_child(name,pos=index,plier=plier)
+ def verifiePosition(self,name,pos):
+ from InterfaceQT4 import compojdc
+ if not (isinstance(self.treeParent, compojdc.Node)) : return True
+ if name not in self.editor.Classement_Commandes_Ds_Arbre : return True
+ indexName=self.editor.Classement_Commandes_Ds_Arbre.index(name)
+
+ etapes=self.item.jdc.etapes
+ if etapes == [] : return True
+
+ indexOu=etapes.index(self.item.object)
+ if pos=="after" : indexOu = indexOu+1
+ print self.editor.Classement_Commandes_Ds_Arbre
+ print indexOu
+ print indexName
+ print name
+ print etapes
+ for e in etapes[:indexOu] :
+ nom=e.nom
+ if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape > indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ for e in etapes[indexOu:] :
+ nom=e.nom
+ if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape < indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ return True
+
def append_child(self,name,pos=None,plier=False):
"""
Methode pour ajouter un objet fils a l'objet associe au noeud self.
def createPopUpMenu(self):
typeNode.PopUpMenuNodePartiel.createPopUpMenu(self)
self.Decommente = QAction(tr("Decommenter"),self.tree)
- self.tree.connect(self.Decommente,SIGNAL("activated()"),self.Decommenter)
+ self.tree.connect(self.Decommente,SIGNAL("triggered()"),self.Decommenter)
self.Decommente.setStatusTip(tr("Decommente la commande "))
if hasattr(self.item,'uncomment'):
typeNode.PopUpMenuNode.createPopUpMenu(self)
if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
self.ViewElt = QAction(tr('View3D'),self.tree)
- self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D)
+ self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D)
self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
self.menu.addAction(self.ViewElt)
if self.item.isvalid() :
troisD.envoievisu()
- #def doPaste(self,node_selected):
- # print 'je suis la'
- # objetACopier = self.item.get_copie_objet()
- # child=self.append_brother(objetACopier)
- # return child
class MACROTreeItem(compooper.EtapeTreeItem):
typeNode.PopUpMenuNode.createPopUpMenu(self)
if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
self.ViewElt = QAction(tr('View3D'),self.tree)
- self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D)
+ self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D)
self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
self.menu.addAction(self.ViewElt)
if self.item.isvalid() :
self.ViewElt.setEnabled(0)
if self.item.get_nom() == "DISTRIBUTION" :
self.Graphe = QAction(tr('Graphique'),self.tree)
- self.tree.connect(self.Graphe,SIGNAL("activated()"),self.viewPng)
+ self.tree.connect(self.Graphe,SIGNAL("triggered()"),self.viewPng)
self.Graphe.setStatusTip(tr("affiche la distribution "))
self.menu.addAction(self.Graphe)
if self.item.isvalid() :
if self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon():
from monWidgetPlusieursInto import MonWidgetPlusieursInto
widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ elif self.item.wait_tuple() :
+ if self.item.object.definition.type[0].ntuple == 2:
+ from monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2
+ widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ # elif self.item.object.definition.type[0].ntuple == 3 :
+ # from monWidgetSimpTuple3 import MonWidgetSimpTuple3
+ # widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+ else :
+ print "Pas de Tuple de longueur > 3"
+ print "Prevenir la maintenance "
elif self.item.has_into():
if self.item.is_list_SansOrdreNiDoublon():
from monWidgetPlusieursInto import MonWidgetPlusieursInto
else : self.name="editeur.ini"\r
self.rep_mat = None\r
self.repIni = repIni\r
- self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)\r
+ if sys.platform[0:5]=="linux" :\r
+ self.rep_user = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)\r
+ else :\r
+ self.rep_user = os.path.join('C:/','.config/Eficas',appli.code)\r
+\r
\r
\r
self.setValeursParDefaut()\r
"""
Constructor
"""
- QMainWindow.__init__(self,parent)
+ QLineEdit.__init__(self,parent)
self.parentQt=parentQt
self.num=i
+ self.dansUnTuple=False
def focusInEvent(self,event):
- print "dans focusInEvent de LECustom"
+ #print "dans focusInEvent de LECustom"
self.parentQt.LineEditEnCours=self
self.parentQt.NumLineEditEnCours=self.num
- self.setFrame(True)
+ self.setStyleSheet("border: 2px solid gray")
QLineEdit.focusInEvent(self,event)
def focusOutEvent(self,event):
- self.setFrame(False)
+ #print "dans focusOutEvent de LECustom"
+ self.setStyleSheet("border: 0px")
+ if self.dansUnTuple : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
+ elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
+ else : self.setStyleSheet("background:rgb(235,235,235)")
QLineEdit.focusOutEvent(self,event)
+ def clean(self):
+ self.setText("")
+
+ def getValeur(self):
+ return self.text()
+
+ def setValeur(self,valeur):
+ self.setText(valeur)
+
+# --------------------------- #
+class LECustomTuple(LECustom):
+# --------------------------- #
+ def __init__(self,parent):
+ # index sera mis a jour par TupleCustom
+ parentQt=parent.parent().parent().parent()
+ LECustom. __init__(self,parent,parentQt,0)
+
# ---------------------------- #
class MonLabelListeClic(QLabel):
# ---------------------------- #
def moinsPushed(self):
# on supprime le dernier
if self.NumLineEditEnCours==self.indexDernierLabel :
- nomLineEdit=self.nomLine+str(aRemonter)
+ nomLineEdit=self.nomLine+str(self.indexDernierLabel)
courant=getattr(self,nomLineEdit)
- courant.setText("")
+ courant.clean()
else :
for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
aRemonter=i+1
nomLineEdit=self.nomLine+str(aRemonter)
courant=getattr(self,nomLineEdit)
- valeurARemonter=courant.text()
+ valeurARemonter=courant.getValeur()
nomLineEdit=self.nomLine+str(i)
courant=getattr(self,nomLineEdit)
- courant.setText(valeurARemonter)
+ courant.setValeur(valeurARemonter)
nomLineEdit=self.nomLine+str(self.indexDernierLabel)
courant=getattr(self,nomLineEdit)
- courant.setText("")
+ courant.clean()
self.changeValeur(changeDePlace=False,oblige=True)
self.setValide()
self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint')
return
self.ajoutLineEdit()
+ self.descendLesLignes()
+
+ def descendLesLignes(self):
if self.NumLineEditEnCours==self.indexDernierLabel : return
nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
courant=getattr(self,nomLineEdit)
- valeurADescendre=courant.text()
- courant.setText("")
+ valeurADescendre=courant.getValeur()
+ courant.clean()
for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel):
aDescendre=i+1
nomLineEdit=self.nomLine+str(aDescendre)
courant=getattr(self,nomLineEdit)
- valeurAGarder=courant.text()
- courant.setText(valeurADescendre)
+ valeurAGarder=courant.getValeur()
+ courant.setValeur(valeurADescendre)
valeurADescendre=valeurAGarder
self.changeValeur(changeDePlace=False)
self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
plier=self.editor.afficheCommandesPliees
if nodeCourrant==self.node : nouveau=self.node.append_child(self.name,'first',plier)
else : nouveau=nodeCourrant.append_brother(self.name,plier=plier)
+ if nouveau == 0 : return # on n a pas insere le noeud
nouveau.setDeplie()
#if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche()
if self.editor.afficheApresInsert == True :
nouveau.fenetre.donnePremier()
#nouveau.deplieToutEtReaffiche()
else :
- print "je passe la"
self.node.setSelected(False)
nouveau.setSelected(True)
self.node.tree.setCurrentItem(nouveau)
self.nomLine="lineEditVal"
self.inInit=True
self.indexDernierLabel=0
+ self.NumLineEditEnCours=0
self.listeAffichageWidget=[]
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
GereListe.__init__(self)
def setValeurs(self):
- print "je passe dans SetValeur"
self.vScrollBar = self.scrollArea.verticalScrollBar()
self.politique=PolitiquePlusieurs(self.node,self.editor)
# construction du min de valeur a entrer
from desWidgetPlusieursInto import Ui_WidgetPlusieursInto
from politiquesValidation import PolitiquePlusieurs
from qtSaisie import SaisieValeur
-from gereListe import GereListe
+#from gereListe import GereListe
class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
self.listeValeursCourantes=self.node.item.GetListeValeurs()
self.parentQt.commandesLayout.insertWidget(-1,self)
+ self.connect(self.CBCheck, SIGNAL('stateChanged(int)'),self.change)
# try except si la liste des possibles est vide
# prevoir qqchose
try :
pass
+ def change(self,int):
+ if self.CBCheck.isChecked() :
+ for i in range(len(self.listeAAfficher)):
+ nomCB="lineEditVal"+str(i+1)
+ courant=getattr(self,nomCB)
+ courant.setChecked(True)
+ else :
+ min,max = self.node.item.GetMinMax()
+ for i in range(len(self.listeAAfficher)):
+ nomCB="lineEditVal"+str(i+1)
+ courant=getattr(self,nomCB)
+ courant.setChecked(False)
+
def setValeurs(self):
self.listeValeursCourantes=self.node.item.GetListeValeurs()
- #print self.monSimpDef.into
- #if len(self.monSimpDef.into)*20 > 400 : self.setMinimumHeight(400)
- #else : self.setMinimumHeight(len(self.monSimpDef.into)*30)
- #self.adjustSize()
if hasattr(self.node.item.definition.validators,'set_MCSimp'):
obj=self.node.item.getObject()
self.node.item.definition.validators.set_MCSimp(obj)
self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
else :
self.editor.affiche_infos(tr(""))
+ if self.listeValeursCourantes== [] : self.listeValeursCourantes=None
self.node.item.set_valeur(self.listeValeursCourantes)
self.setValide()
self.reaffiche()
def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
- print "MonWidgetSimpBase", nom
+ #print "MonWidgetSimpBase", nom
self.parentQt.commandesLayout.insertWidget(-1,self)
self.setFocusPolicy(Qt.StrongFocus)
self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed)
return valide,commentaire,commentaire2,listeRetour
- def AjoutTuple(self,valeurTuple,index,listecourante):
+ def AjoutTuple(self,valeurTuple,listecourante):
listeRetour=[]
commentaire="Nouvelle valeur acceptee"
commentaire2=""
if not encorevalide :
commentaire2=self.node.item.info_erreur_liste()
return valide,commentaire,commentaire2,listeRetour
- #min,max = self.node.item.GetMinMax()
- #if len(listecourante) >= max :
- # commentaire="La liste a deja atteint le nombre maximum d'elements,ajout refuse"
- # valide=0
- # return valide,commentaire,commentaire2,listeRetour
listeRetour.append(valeurTuple)
return valide,commentaire,commentaire2,listeRetour
if hasattr(self,intituleAction):
action=getattr(self,intituleAction)
self.toolBar.removeAction(action)
- if self.code in Appli.__dict__.keys():
- listeTexte=apply(Appli.__dict__[self.code],(self,))
+ if self.code.upper() in Appli.__dict__.keys():
+ listeTexte=apply(Appli.__dict__[self.code.upper()],(self,))
def initAides(self):
#print "je passe la"
if not(self.actionExecution in self.toolBar.actions()):
self.toolBar.addAction(self.actionExecution)
self.actionExecution.setText(QApplication.translate("Eficas", "Execution ", None, QApplication.UnicodeUTF8))
- self.connect(self.actionExecution,SIGNAL("activated()"),self.run)
+ self.connect(self.actionExecution,SIGNAL("triggered()"),self.run)
def ajoutSauveExecution(self):
self.actionSaveRun = QAction(self)
if not(self.actionSaveRun in self.toolBar.actions()):
self.toolBar.addAction(self.actionSaveRun)
self.actionSaveRun.setText(QApplication.translate("Eficas", "Save Run", None, QApplication.UnicodeUTF8))
- self.connect(self.actionSaveRun,SIGNAL("activated()"),self.saveRun)
+ self.connect(self.actionSaveRun,SIGNAL("triggered()"),self.saveRun)
def griserActionsStructures(self):
self.actionCouper.setEnabled(False)
self.menuOptions.addAction(self.actionParametres_Eficas)
self.menuOptions.setTitle(tr("Options"))
+ def PSEN(self):
+ self.ajoutExecution()
+ self.ajoutSauveExecution()
def ChercheGrpMesh(self):
Msg,listeGroup=self.ChercheGrpMeshInSalome()
print "il faut gerer les erreurs"
def ChercheGrpMaille(self):
- Msg,listeGroup=self.ChercheGrpMailleInSalome()
+ # Normalement la variable self.salome permet de savoir si on est ou non dans Salome
+ try:
+ Msg,listeGroup=self.ChercheGrpMailleInSalome() # recherche dans Salomé
+ #Msg = None; listeGroup = None # recherche manuelle, i.e., sans Salomé si ligne précédente commentée
+ except:
+ raise ValueError('Salome non ouvert')
if Msg == None :
self.viewmanager.handleAjoutGroup(listeGroup)
else :
print "il faut gerer les erreurs"
+
def ChercheGrp(self):
#Msg,listeGroup=self.ChercheGrpMailleInSalome()
#if Msg == None :
def connecterSignaux(self) :
self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
- self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew)
- self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude)
- self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen)
- self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave)
- self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs)
- self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose)
- self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll)
- self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit)
+ self.connect(self.action_Nouveau,SIGNAL("triggered()"),self.fileNew)
+ self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.NewInclude)
+ self.connect(self.action_Ouvrir,SIGNAL("triggered()"),self.fileOpen)
+ self.connect(self.actionEnregistrer,SIGNAL("triggered()"),self.fileSave)
+ self.connect(self.actionEnregistrer_sous,SIGNAL("triggered()"),self.fileSaveAs)
+ self.connect(self.actionFermer,SIGNAL("triggered()"),self.fileClose)
+ self.connect(self.actionFermer_tout,SIGNAL("triggered()"),self.fileCloseAll)
+ self.connect(self.actionQuitter,SIGNAL("triggered()"),self.fileExit)
- self.connect(self.actionEficas,SIGNAL("activated()"),self.aidePPal)
- self.connect(self.actionVersion,SIGNAL("activated()"),self.version)
- self.connect(self.actionParametres,SIGNAL("activated()"),self.gestionParam)
+ self.connect(self.actionEficas,SIGNAL("triggered()"),self.aidePPal)
+ self.connect(self.actionVersion,SIGNAL("triggered()"),self.version)
+ self.connect(self.actionParametres,SIGNAL("triggered()"),self.gestionParam)
- self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut)
- self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy)
- self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste)
- self.connect(self.actionSupprimer,SIGNAL("activated()"),self.supprimer)
- self.connect(self.actionRechercher,SIGNAL("activated()"),self.rechercher)
- self.connect(self.actionDeplier_replier,SIGNAL("activated()"),self.Deplier)
+ self.connect(self.actionCouper,SIGNAL("triggered()"),self.editCut)
+ self.connect(self.actionCopier,SIGNAL("triggered()"),self.editCopy)
+ self.connect(self.actionColler,SIGNAL("triggered()"),self.editPaste)
+ self.connect(self.actionSupprimer,SIGNAL("triggered()"),self.supprimer)
+ self.connect(self.actionRechercher,SIGNAL("triggered()"),self.rechercher)
+ self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.Deplier)
- self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport)
- self.connect(self.actionFichier_Source,SIGNAL("activated()"),self.jdcFichierSource)
- self.connect(self.actionFichier_Resultat,SIGNAL("activated()"),self.visuJdcPy)
+ self.connect(self.actionRapport_de_Validation,SIGNAL("triggered()"),self.jdcRapport)
+ self.connect(self.actionFichier_Source,SIGNAL("triggered()"),self.jdcFichierSource)
+ self.connect(self.actionFichier_Resultat,SIGNAL("triggered()"),self.visuJdcPy)
- #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
- #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
+ #self.connect(self.helpIndexAction,SIGNAL("triggered()"),self.helpIndex)
+ #self.connect(self.helpContentsAction,SIGNAL("triggered()"),self.helpContents)
# Pour Aster
self.actionTraduitV9V10 = QAction(self)
self.actionSauveLigne = QAction(self)
self.actionSauveLigne.setText(tr("Sauve Format Ligne"))
- self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur)
- self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf)
- self.connect(self.actionTraduitV9V10,SIGNAL("activated()"),self.traductionV9V10)
- self.connect(self.actionTraduitV10V11,SIGNAL("activated()"),self.traductionV10V11)
- self.connect(self.actionTraduitV11V12,SIGNAL("activated()"),self.traductionV11V12)
- self.connect(self.actionSauveLigne,SIGNAL("activated()"),self.sauveLigne)
+ self.connect(self.actionParametres_Eficas,SIGNAL("triggered()"),self.optionEditeur)
+ self.connect(self.actionLecteur_Pdf,SIGNAL("triggered()"),self.optionPdf)
+ self.connect(self.actionTraduitV9V10,SIGNAL("triggered()"),self.traductionV9V10)
+ self.connect(self.actionTraduitV10V11,SIGNAL("triggered()"),self.traductionV10V11)
+ self.connect(self.actionTraduitV11V12,SIGNAL("triggered()"),self.traductionV11V12)
+ self.connect(self.actionSauveLigne,SIGNAL("triggered()"),self.sauveLigne)
# Pour Carmel
self.actionChercheGrpMaille = QAction(self)
self.actionChercheGrpMaille.setText(tr("Acquiert Groupe Maille"))
- self.connect(self.actionChercheGrpMaille,SIGNAL("activated()"),self.ChercheGrpMaille)
+ self.connect(self.actionChercheGrpMaille,SIGNAL("triggered()"),self.ChercheGrpMaille)
# Pour CarmelCND
self.actionChercheGrp = QAction(self)
self.actionChercheGrp.setText(tr("Accquisition Groupe Maille"))
- self.connect(self.actionChercheGrp,SIGNAL("activated()"),self.ChercheGrp)
+ self.connect(self.actionChercheGrp,SIGNAL("triggered()"),self.ChercheGrp)
# Pour Aide
self.actionCode = QAction(self)
self.actionCode.setText(tr("Specificites Maille"))
- self.connect(self.actionCode,SIGNAL("activated()"),self.aideCode)
+ self.connect(self.actionCode,SIGNAL("triggered()"),self.aideCode)
def Deplier(self):
self.viewmanager.handleDeplier()
self.recent = QStringList()
try :
#if 1 :
- rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
+ if sys.platform[0:5]=="linux" :
+ rep=os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
+ else :
+ rep=os.path.join('C:/','.config/Eficas',self.code)
monFichier=rep+"/listefichiers_"+self.code
index=0
f=open(monFichier)
if self.mode_nouv_commande== "initial" : self.Retrouve_Ordre_Cata_Standard()
if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes
else : self.Ordre_Des_Commandes=None
+
+ if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') :
+ self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre
+ else : self.Classement_Commandes_Ds_Arbre=()
#print self.cata.Ordre_Des_Commandes
#
def createPopUpMenu(self):
print "createPopUpMenu"
self.ParamApres = QAction(tr('Parametre'),self.tree)
- self.tree.connect(self.ParamApres,SIGNAL("activated()"),self.addParametersApres)
+ self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres)
self.ParamApres.setStatusTip(tr("Insere un parametre"))
self.menu = QMenu(self.tree)
self.menu.addAction(self.ParamApres)
+ self.menu.setStyleSheet("background:rgb(220,220,220); ")
def addParametersApres(self):
#self.appliEficas.salome=True
self.createActions()
self.menu = QMenu(self.tree)
+ #self.menu.setStyleSheet("background:rgb(235,235,235); QMenu::item:selected { background-color: red; }")
+ #ne fonctionne pas --> la ligne de commentaire devient rouge
+ self.menu.setStyleSheet("background:rgb(220,220,220); ")
#items du menu
self.menu.addAction(self.Supprime)
if hasattr(self.appliEficas, 'mesScripts'):
self.action=QAction(label,self.tree)
self.action.setStatusTip(tip)
if numero==4:
- self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction4)
+ self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction4)
if numero==3:
- self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction3)
+ self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction3)
numero=4
if numero==2:
- self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction2)
+ self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction2)
numero=3
if numero==1:
- self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction1)
+ self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction1)
numero=2
if numero==0:
- self.tree.connect(self.action,SIGNAL("activated()"),self.AppelleFonction0)
+ self.tree.connect(self.action,SIGNAL("triggered()"),self.AppelleFonction0)
numero=1
self.menu.addAction(self.action)
def createActions(self):
self.CommApres = QAction(tr('apres'),self.tree)
- self.tree.connect(self.CommApres,SIGNAL("activated()"),self.addCommApres)
+ self.tree.connect(self.CommApres,SIGNAL("triggered()"),self.addCommApres)
self.CommApres.setStatusTip(tr("Insere un commentaire apres la commande "))
self.CommAvant = QAction(tr('avant'),self.tree)
- self.tree.connect(self.CommAvant,SIGNAL("activated()"),self.addCommAvant)
+ self.tree.connect(self.CommAvant,SIGNAL("triggered()"),self.addCommAvant)
self.CommAvant.setStatusTip(tr("Insere un commentaire avant la commande "))
self.ParamApres = QAction(tr('apres'),self.tree)
- self.tree.connect(self.ParamApres,SIGNAL("activated()"),self.addParametersApres)
+ self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres)
self.ParamApres.setStatusTip(tr("Insere un parametre apres la commande "))
self.ParamAvant = QAction(tr('avant'),self.tree)
- self.tree.connect(self.ParamAvant,SIGNAL("activated()"),self.addParametersAvant)
+ self.tree.connect(self.ParamAvant,SIGNAL("triggered()"),self.addParametersAvant)
self.ParamAvant.setStatusTip(tr("Insere un parametre avant la commande "))
self.Supprime = QAction(tr('Supprimer'),self.tree)
- self.tree.connect(self.Supprime,SIGNAL("activated()"),self.supprimeNoeud)
+ self.tree.connect(self.Supprime,SIGNAL("triggered()"),self.supprimeNoeud)
self.Supprime.setStatusTip(tr("supprime le mot clef "))
self.Documentation = QAction(tr('Documentation'),self.tree)
- self.tree.connect(self.Documentation,SIGNAL("activated()"),self.viewDoc)
+ self.tree.connect(self.Documentation,SIGNAL("triggered()"),self.viewDoc)
self.Documentation.setStatusTip(tr("documentation sur la commande "))
def supprimeNoeud(self):
def createPopUpMenu(self):
PopUpMenuNodePartiel.createPopUpMenu(self)
self.Commente = QAction(tr('ce noeud'),self.tree)
- self.tree.connect(self.Commente,SIGNAL("activated()"),self.Commenter)
+ self.tree.connect(self.Commente,SIGNAL("triggered()"),self.Commenter)
self.Commente.setStatusTip(tr("commente le noeud "))
self.commentMenu.addAction(self.Commente)
self.menu.removeAction(self.Supprime)
-NetworkFile = r"C:\Users\J15773\Documents\GTDosier\PSENdocs\Victoria\JAMAIQUE\2030Conv_HFP2.sav"\r
-\r
+NetworkFile = r"C:\Users\J15773\Documents\GTDosier\PSENdocs\Victoria ALL - EFICAS PSEN\Data\2030Conv_HFP2.sav"\r
PSSE_PATH = "C:/Program Files/PTI/PSSE33/PSSBIN" #emplacement de PSSE\r
\r
def ExtractGeneratorandLoadList(NetworkFile,PSSE_PATH):\r
import os\r
import sys\r
\r
+ print NetworkFile\r
+ print PSSE_PATH\r
sys.path.append(PSSE_PATH)\r
os.environ['PATH'] += ';' + PSSE_PATH + ';'\r
\r
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-import re
-#from ExtractGeneratorandLoadList import ExtractGeneratorandLoadList
-from ExtractGeneratorandLoadList import ExtractGeneratorandLoadList2
+#from ExtractGeneratorLoadLineandTransfoDico import ExtractGeneratorLoadLineandTransfoDico
+from ExtractGeneratorLoadLineandTransfoDico import ExtractGeneratorLoadLineandTransfoDico2
-def INCLUDE(self,chemin_psse,fichier_sav,**args):
+def INCLUDE(self,PSSE_path,sav_file,**args):
"""
Fonction sd_prod pour la macro INCLUDE
"""
- print "INCLUDE", self
reevalue=0
if hasattr(self,'fichier_ini'):
reevalue=1
- if self.fichier_ini == fichier_sav : return
+ if self.fichier_ini == sav_file : return
if hasattr(self,'old_context_fichier_init' ):
for concept in self.old_context_fichier_init.values():
self.jdc.delete_concept(concept)
self.reevalue_sd_jdc()
self.jdc.reset_context()
- self.fichier_ini=fichier_sav
+ self.fichier_ini=sav_file
self.contexte_fichier_init = {}
self.fichier_unite = 999
self.fichier_err = None
unite = 999
- pattern_debut_ligne = re.compile(r'^[0-9].*')
- try:
- MachineListOrigin,LoadListOrigin= ExtractGeneratorandLoadList2(fichier_sav,chemin_psse)
+ try :
+ #if 1:
+ MachineDico,LoadDico,LineDico,TransfoDico = ExtractGeneratorLoadLineandTransfoDico2(sav_file,PSSE_path)
+ #else :
except :
if self.jdc.appli is not None:
self.jdc.appli.affiche_alerte("Error", 'An error happened in ExtractGeneratorandLoadList execution ')
self.fichier_err = str(exc)
self.contexte_fichier_init = {}
- MachineList=[]
- LoadList=[]
- BusBarList=[]
- for m in MachineListOrigin:
- if m in LoadListOrigin : BusBarList.append(m)
- else : MachineList.append(m)
+ for nom in MachineDico.keys():
+ self.fichier_text += "%s=MONGENER(ID='%s',);\n" % (nom, 'a')
- for m in LoadListOrigin:
- if m not in MachineListOrigin : LoadList.append(m)
+ for nom in LoadDico.keys():
+ self.fichier_text += "%s=MACHARGE(ID='%s',);\n" % (nom, 'a')
+
+ for nom in LineDico.keys():
+ self.fichier_text += "%s=MALIGNE(ID='%s',);\n" % (nom,'a')
- for m in MachineList:
- nouv=m[0].replace(' ','_')
- nouveau=nouv.replace('.','_')
- nom = nouveau+"__"+str(m[1])
- if pattern_debut_ligne.match(nom): nom='_'+nom
- id = str(m[3])
- self.fichier_text += "%s=MONGENER(ID='%s',);\n" % (nom, id)
-
- for m in BusBarList:
- nouv=m[0].replace(' ','_')
- nouveau=nouv.replace('.','_')
- nom = nouveau+"__"+str(m[1])
- if pattern_debut_ligne.match(nom): nom='_'+nom
- id = str(m[3])
- self.fichier_text += "%s=MONBUSBAR(ID='%s',);\n" % (nom, id)
-
- for m in LoadList:
- nouv=m[0].replace(' ','_')
- nouveau=nouv.replace('.','_')
- nom = nouveau+"__"+str(m[1])
- if pattern_debut_ligne.match(nom): nom='_'+nom
- if pattern_debut_ligne.match(nom): print 'match'
- id = str(m[3])
- self.fichier_text += "%s=MACHARGE(ID='%s',);\n" % (nom, id)
+ for nom in TransfoDico.keys():
+ self.fichier_text += "%s=MONTRANSFO(ID='%s',);\n" % (nom,'a')
import Extensions.jdc_include
self.JdC_aux = Extensions.jdc_include.JDC_CATA_INCLUDE(code='PSEN', execmodul=None)
self.old_context_fichier_init = self.contexte_fichier_init
self.parent.record_unit(unite, self)
+ self.jdc.MachineDico=MachineDico
+ self.jdc.LoadDico=LoadDico
+ self.jdc.LineDico=LineDico
+ self.jdc.TransfoDico=TransfoDico
def INCLUDE_context(self,d):
"""
</property>
<widget class="QWidget" name="widgetTree" native="true">
<property name="styleSheet">
- <string notr="true">background:rgb(247,247,247)</string>
+ <string notr="true">background:rgb(247,247,247);
+
+</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<x>0</x>
<y>0</y>
<width>739</width>
- <height>60</height>
+ <height>62</height>
</rect>
</property>
<property name="sizePolicy">
<number>0</number>
</property>
<property name="topMargin">
- <number>1</number>
+ <number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
</string>
</property>
<property name="maxVisibleItems">
- <number>7</number>
+ <number>100</number>
</property>
<property name="frame">
<bool>false</bool>
<number>0</number>
</property>
<property name="bottomMargin">
- <number>0</number>
+ <number>5</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="sizePolicy">
<x>0</x>
<y>0</y>
<width>546</width>
- <height>175</height>
+ <height>194</height>
</rect>
</property>
<property name="sizePolicy">
</property>
<layout class="QVBoxLayout" name="verticalLayoutLE">
<property name="spacing">
- <number>1</number>
+ <number>2</number>
</property>
<property name="leftMargin">
<number>2</number>
<enum>QFrame::Box</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
+ <property name="margin">
+ <number>0</number>
+ </property>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<string>...</string>
</property>
<property name="icon">
- <iconset theme="go-up"/>
+ <iconset theme="go-up">
+ <normaloff/>
+ </iconset>
</property>
<property name="iconSize">
<size>
<string>...</string>
</property>
<property name="icon">
- <iconset theme="go-down"/>
+ <iconset theme="go-down">
+ <normaloff/>
+ </iconset>
</property>
<property name="iconSize">
<size>
<string>...</string>
</property>
<property name="icon">
- <iconset theme="text-x-generic"/>
+ <iconset theme="text-x-generic">
+ <normaloff/>
+ </iconset>
</property>
<property name="iconSize">
<size>
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="CBCheck">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
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\
- desWidgetMatrice.py
+ desWidgetMatrice.py desWidgetPlusieursTuple.py Tuple2.py Tuple3.py
QM_FILES=eficas_en.qm
re.compile(u"(\"\"\".*?\"\"\"|'''.*?'''|\"[^\"]*\"|\'[^\']*\'|#.*?\n)", re.DOTALL)
allchars = string.maketrans(u"", "")
allcharsExceptNewline = allchars[: allchars.index('\n')]+allchars[allchars.index('\n')+1:]
-allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+if sys.platform[0:5]=="linux" :
+ allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+elif sys.platform[0:3]=="win" :
+ allcharsExceptNewlineTranstable = dict((ord(char), u'*') for char in allcharsExceptNewline)#string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+else :
+ allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+ print 'Plateforme non geree'
def maskStringsAndComments(src):
"""Masque tous les caracteres de src contenus dans des commentaires ou des strings multilignes (triples
for i in xrange(1, len(allstrings), 2):
if allstrings[i].startswith(u"'''")or allstrings[i].startswith('"""'):
allstrings[i] = allstrings[i][:3]+ \
- allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \
- allstrings[i][-3:]
+ allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-3:]
else:
+ test= allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)
+ #test +\
allstrings[i] = allstrings[i][0]+ \
- allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \
- allstrings[i][-1]
+ allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-1]
return "".join(allstrings)
class ENTITE_JDC :
- """Classe de base pour tous les objets créés lors de la conversion
- Tout objet dérivé est enregistré auprès de son pere a sa création
+ """Classe de base pour tous les objets créés lors de la conversion
+ Tout objet dérivé est enregistré auprès de son pere a sa création
"""
def __init__(self,pere):
self.texte = ''
def __str__(self):
"""
- Retourne une chaine de caractères représentants self
- sous une forme interprétable par EFICAS
+ Retourne une chaine de caractères représentants self
+ sous une forme interprétable par EFICAS
"""
t=repr(self.texte)
return "COMMENTAIRE(u"+t+")\n"
if texte[0] == '#':
self.texte = self.texte+texte[1:]
else:
- # le dièse n'est pas sur le premier caractere
- amont,aval = string.split(texte,'#',1) # on découpe suivant la première occurrence de #
+ # le dièse n'est pas sur le premier caractere
+ amont,aval = string.split(texte,'#',1) # on découpe suivant la première occurrence de #
self.texte = self.texte +amont + aval
class COMMANDE(ENTITE_JDC):
def get_nb_par(self):
"""
- Retourne la différence entre le nombre de parenthèses ouvrantes
- et le nombre de parenthèses fermantes présentes dans self.texte
- Peut donc retourner un entier négatif
+ Retourne la différence entre le nombre de parenthèses ouvrantes
+ et le nombre de parenthèses fermantes présentes dans self.texte
+ Peut donc retourner un entier négatif
"""
# faire attention aux commentaires contenus dans self.texte
- # qui peuvent eux-memes contenir des parenthèses !!!!
+ # qui peuvent eux-memes contenir des parenthèses !!!!
l_lignes = string.split(self.texte,'\n')
nb = 0
for ligne in l_lignes:
def __str__(self):
"""
- Retourne une expression de l'affectation compréhensible par ACCAS
+ Retourne une expression de l'affectation compréhensible par ACCAS
et exploitable par EFICAS
"""
nom,valeur = string.split(self.texte,'=',1)
def __str__(self):
"""
- Retourne une expression de la commande commentarisée compréhensible par ACCAS
+ Retourne une expression de la commande commentarisée compréhensible par ACCAS
et exploitable par EFICAS
"""
return "COMMANDE_COMM(texte="+repr(self.texte)+")\n"
def __str__(self):
"""
- Retourne une expression du paramètre EVAL compréhensible par ACCAS
+ Retourne une expression du paramètre EVAL compréhensible par ACCAS
et exploitable par EFICAS
"""
nom,valeur = string.split(self.texte,'=',1)
class PARSEUR_PYTHON:
"""
- Cette classe sert a générer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte
- représentant un JDC Python en distinguant :
+ Cette classe sert a générer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte
+ représentant un JDC Python en distinguant :
- les commentaires inter commandes
- les affectations
- les commandes
def is_affectation(self,texte):
"""
- Méthode booléenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes
+ Méthode booléenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes
Aster, 0 sinon
"""
if '=' not in texte : return 0
if self.pattern_commande.match(texte):
- # cas d'une procédure ...
+ # cas d'une procédure ...
return 0
amont,aval = string.split(texte,'=',1)
aval = string.strip(aval)
def is_eval(self,texte):
"""
- Méthode booléenne qui retourne 1 si le texte est celui d'une affectation de type EVAL
+ Méthode booléenne qui retourne 1 si le texte est celui d'une affectation de type EVAL
dans un jeu de commandes Aster, 0 sinon
"""
if '=' not in texte : return 0
if self.pattern_commande.match(texte):
- # cas d'une procédure ...
+ # cas d'une procédure ...
return 0
amont,aval = string.split(texte,'=',1)
aval = string.strip(aval)
def is_commande(self,texte):
"""
- Méthode booléenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes
+ Méthode booléenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes
Aster, 0 sinon
"""
if self.pattern_commande.match(texte):
- # cas d'une procédure ...
+ # cas d'une procédure ...
return 1
# A ce stade il faut avoir un OPER ou une MACRO, bref un '=' !
if '=' not in texte : return 0
def analyse(self):
"""
Eclate la chaine self.texte en self.l_objets une liste lignes d'instructions
- et de commentaires (parmi lesquels des instructions "commentarisées").
+ et de commentaires (parmi lesquels des instructions "commentarisées").
"""
l_lignes = string.split(self.texte,'\n')
commentaire_courant = None
continue
if pattern_2comments.match(ligne):
- #on a trouvé une commande commentarisée : double commentaire sans rien devant a part des blancs
+ #on a trouvé une commande commentarisée : double commentaire sans rien devant a part des blancs
if commentaire_courant:
#Si un commentaire ordinaire est en cours on le termine
commentaire_courant = None
if commande_courante :
- # on a un objet commentarisé a l'intérieur d'une commande
- # --> non traité pour l'instant : on l'ajoute simplement a la commande courante comme
+ # on a un objet commentarisé a l'intérieur d'une commande
+ # --> non traité pour l'instant : on l'ajoute simplement a la commande courante comme
# un commentaire ordinaire
commande_courante.append_text(ligne)
elif commande_commentarisee_courante :
# commande_commentarisee en cours : on ajoute la ligne
commande_commentarisee_courante.append_text(ligne)
- # on a 2 commandes commentarisées de suite
+ # on a 2 commandes commentarisées de suite
if pattern_finComments.match(ligne) :
commande_commentarisee_courante = None
else:
- # debut de commande commentarisée : on crée un objet commande_commentarisee_courante
+ # debut de commande commentarisée : on crée un objet commande_commentarisee_courante
commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
commande_commentarisee_courante.append_text(ligne)
commande_commentarisee_courante = None
if commande_courante :
- # il s'agit d'un commentaire a l'intérieur d'une commande --> on ne fait rien de special
+ # il s'agit d'un commentaire a l'intérieur d'une commande --> on ne fait rien de special
#on l'ajoute au texte de la commande
commande_courante.append_text(ligne)
elif commentaire_courant :
- # il s'agit de la nième ligne d'un commentaire entre deux commandes
+ # il s'agit de la nième ligne d'un commentaire entre deux commandes
# --> on ajoute cette ligne au commentaire courant
commentaire_courant.append_text(ligne)
else :
# il s'agit d'un nouveau commentaire entre deux commandes
- # --> on le crée et il devient le commentaire courant
+ # --> on le crée et il devient le commentaire courant
commentaire_courant = COMMENTAIRE(self)
commentaire_courant.append_text(ligne)
#on passe a la ligne suivante
continue
- # la ligne contient des données autre qu'un éventuel commentaire
+ # la ligne contient des données autre qu'un éventuel commentaire
if commentaire_courant :
- # on clot un éventuel commentaire courant
+ # on clot un éventuel commentaire courant
commentaire_courant = None
if commande_commentarisee_courante :
- # on clot une éventuelle commande commentarisee courante
+ # on clot une éventuelle commande commentarisee courante
commande_commentarisee_courante = None
if commande_courante :
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
- #la commande est terminée
+ #la commande est terminée
#print "fin de commande"
self.analyse_reel(commande_courante.texte)
commande_courante = None
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
- #L'affectation est terminée
+ #L'affectation est terminée
affectation_courante=None
#on passe a la ligne suivante
continue
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
- #L'affectation est terminée
+ #L'affectation est terminée
affectation_courante=None
#on passe a la ligne suivante
continue
affectation_courante = None
commande_courante = COMMANDE(self)
commande_courante.append_text(ligne)
- #si la commande est complète, on la termine
+ #si la commande est complète, on la termine
if not linecontinueRE.search(line) \
and (hangingBraces == emptyHangingBraces) \
and not hangingComments:
- #la commande est terminée
+ #la commande est terminée
#print "fin de commande"
self.analyse_reel(commande_courante.texte)
commande_courante = None
def enleve (self,texte) :
"""Supprime de texte tous les caracteres blancs, fins de ligne, tabulations
- Le nouveau texte est retourné
+ Le nouveau texte est retourné
"""
i=0
chaine=""
except :
pass
mot=""
- # ou de ( imbriqueés
+ # ou de ( imbriqueés
else :
#cas du mocle facteur simple ou
mot=""