From: Pascale Noyret Date: Fri, 14 Aug 2009 16:04:58 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: V1_0OpenTurns~69 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1afe41cfac0c7ddec3617e86bd68ec0cbb82d152;p=modules%2Feficas.git *** empty log message *** --- diff --git a/Aster/eficas_aster.py b/Aster/eficas_aster.py index a13a68ce..bc668a5b 100755 --- a/Aster/eficas_aster.py +++ b/Aster/eficas_aster.py @@ -27,6 +27,9 @@ # Modules Eficas import prefs +name='prefs_'+prefs.code +__import__(name) + from InterfaceTK import eficas_go eficas_go.lance_eficas(code=prefs.code) diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 2b39f2a4..7ccf7bca 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -73,6 +73,16 @@ class JDC(I_OBJECT.OBJECT): l.sort() return l + def get_variables_avant(self,etape): + # voir le sort avec IDM + d=self.get_contexte_avant(etape) + l=[] + for k,v in d.items(): + if str(type(v)).find('variable') > -1 : + l.append(k) + l.sort() + return l + def get_sd_avant_du_bon_type_pour_type_de_base(self,etape,type): """ Retourne la liste des concepts avant etape d'1 type de base acceptable diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index bacc1a13..dd0f1315 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -80,9 +80,9 @@ class MCSIMP(I_OBJECT.OBJECT): # Traitement d'un flottant isolé txt = str(self.valeur) clefobj=self.GetNomConcept() - if self.jdc.appli.dict_reels.has_key(clefobj): - if self.jdc.appli.dict_reels[clefobj].has_key(self.valeur): - txt=self.jdc.appli.dict_reels[clefobj][self.valeur] + if self.jdc.appli.appliEficas.dict_reels.has_key(clefobj): + if self.jdc.appli.appliEficas.dict_reels[clefobj].has_key(self.valeur): + txt=self.jdc.appli.appliEficas.dict_reels[clefobj][self.valeur] elif type(self.valeur) in (types.ListType,types.TupleType) : # Traitement des listes txt='(' @@ -90,9 +90,9 @@ class MCSIMP(I_OBJECT.OBJECT): for val in self.valeur: if type(val) == types.FloatType : clefobj=self.GetNomConcept() - if self.jdc.appli.dict_reels.has_key(clefobj): - if self.jdc.appli.dict_reels[clefobj].has_key(val): - txt=txt + sep +self.jdc.appli.dict_reels[clefobj][val] + if self.jdc.appli.appliEficas.dict_reels.has_key(clefobj): + if self.jdc.appli.appliEficas.dict_reels[clefobj].has_key(val): + txt=txt + sep +self.jdc.appli.appliEficas.dict_reels[clefobj][val] else : txt=txt + sep + str(val) else : @@ -123,9 +123,9 @@ class MCSIMP(I_OBJECT.OBJECT): val=self.valeur if type(val) == types.FloatType : clefobj=self.GetNomConcept() - if self.jdc.appli.dict_reels.has_key(clefobj): - if self.jdc.appli.dict_reels[clefobj].has_key(val): - return self.jdc.appli.dict_reels[clefobj][val] + if self.jdc.appli.appliEficas.dict_reels.has_key(clefobj): + if self.jdc.appli.appliEficas.appliEficas.dict_reels[clefobj].has_key(val): + return self.jdc.appli.appliEficas.dict_reels[clefobj][val] if type(val) != types.TupleType : try: return val.get_name() diff --git a/InterfaceQT4/compomacro.py b/InterfaceQT4/compomacro.py index c4e694cb..b999cbff 100644 --- a/InterfaceQT4/compomacro.py +++ b/InterfaceQT4/compomacro.py @@ -123,9 +123,10 @@ class MATERIAUNode(MACRONode): texte = f.read() f.close() from desVisu import DVisu - monVisu=DVisu(parent=self.editor,fl=Qt.WType_Dialog) - monVisu.TB.setText(texte) - monVisu.show() + monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0) + monVisuDialg.TB.setText(texte) + monVisuDialg.show() + class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase): itemNode=MATERIAUNode diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index fb0efe8b..ff7932fc 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -19,8 +19,11 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): # Attention l ordre des if est important + if self.item.wait_matrice (): + from monMatricePanel import MonMatricePanel + klass=MonMatricePanel # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs - if self.item.has_into(): + elif self.item.has_into(): if self.item.is_list() : from monPlusieursIntoPanel import MonPlusieursIntoPanel klass = MonPlusieursIntoPanel @@ -139,20 +142,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): is_a_list= self.definition.validators.is_list() * is_a_list return is_a_list - #def get_into(self,liste_courante=None): - # """ - # Cette méthode retourne la liste de choix proposée par le mot cle. Si le mot cle ne propose - # pas de liste de choix, la méthode retourne None. - # L'argument d'entrée liste_courante, s'il est différent de None, donne la liste des choix déja - # effectués par l'utilisateur. Dans ce cas, la méthode get_into doit calculer la liste des choix - # en en tenant compte. - # Cette méthode part du principe que la relation entre into du mot clé et les validateurs est - # une relation de type ET (AndVal). - # """ - # if not self.object.definition.validators : - # return self.object.definition.into - # else: - # return self.object.definition.validators.get_into(liste_courante,self.definition.into) def has_into(self): """ @@ -426,12 +415,20 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): def wait_tuple(self): """ Méthode booléenne qui retourne 1 si l'objet pointé par self - attend un shell, 0 sinon """ + attend un Tuple, 0 sinon """ for ss_type in self.object.definition.type: if repr(ss_type).find('Tuple') != -1 : return 1 return 0 + def wait_matrice(self): + """ Méthode booléenne qui retourne 1 si l'objet pointé par self + attend un Tuple, 0 sinon """ + for ss_type in self.object.definition.type: + if repr(ss_type).find('Matrice') != -1 : + return 1 + return 0 + def wait_assd(self): """Méthode booléenne qui retourne 1 si l'objet pointé par self attend un objet de type ASSD ou dérivé, 0 sinon """ diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index d1257147..09f99952 100644 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -35,7 +35,6 @@ import readercata import qtCommun -VERSION_EFICAS = "EFICAS v1.16" class JDCEditor(QSplitter): @@ -67,7 +66,7 @@ class JDCEditor(QSplitter): self.code = self.appliEficas.CONFIGURATION.code self.version_code = VERSION_CODE - self.titre=VERSION_EFICAS + ' pour '+ self.code + self.titre=self.appliEficas.VERSION_EFICAS + ' pour '+ self.code self.dict_reels={} self.liste_simp_reel=[] @@ -207,10 +206,10 @@ class JDCEditor(QSplitter): # Il faut convertir le contenu du fichier en fonction du format if convert.plugins.has_key( self.appliEficas.format_fichier ): # Le convertisseur existe on l'utilise - appli = self + #appli = self p=convert.plugins[self.appliEficas.format_fichier]() p.readfile(fn) - text=p.convert('exec',appli) + text=p.convert('exec',self.appliEficas) if not p.cr.estvide(): self.affiche_infos("Erreur à la conversion") else : diff --git a/InterfaceQT4/gereTraduction.py b/InterfaceQT4/gereTraduction.py index 025d63cb..307ffa89 100644 --- a/InterfaceQT4/gereTraduction.py +++ b/InterfaceQT4/gereTraduction.py @@ -1,5 +1,6 @@ from PyQt4 import * from PyQt4.QtGui import * +from PyQt4.QtCore import * import os @@ -10,7 +11,11 @@ def traduction(directPath,editor,version): if version == "V8V9" : from Traducteur import traduitV8V9 suffixe="v9.comm" - fn = QFileDialog.getOpenFileName( QString(directPath) , "") + fn = QFileDialog.getOpenFileName( + editor.appliEficas, + editor.appliEficas.trUtf8('Traduire Fichier'), + QString(directPath) , + editor.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)')) FichieraTraduire=str(fn) if (FichieraTraduire == "" or FichieraTraduire == () ) : return @@ -43,10 +48,10 @@ def traduction(directPath,editor,version): except : pass - from desVisu import DVisu + from monVisu import DVisu titre = "conversion de "+ FichieraTraduire - monVisu=DVisu(parent=editor,fl=Qt.WType_Dialog) - monVisu.setCaption(titre) - monVisu.TB.setText(texte) - monVisu.show() + monVisuDialg=DVisu(parent=editor.appliEficas,fl=0) + monVisuDialg.setWindowTitle(titre) + monVisuDialg.TB.setText(texte) + monVisuDialg.show() diff --git a/InterfaceQT4/monFonctionPanel.py b/InterfaceQT4/monFonctionPanel.py index 0909093f..8310c1eb 100644 --- a/InterfaceQT4/monFonctionPanel.py +++ b/InterfaceQT4/monFonctionPanel.py @@ -77,24 +77,32 @@ class MonFonctionPanel(MonPlusieursBasePanel): listeValeurs=self.node.item.GetListeValeurs() if self.node.item.wait_tuple()== 1 : listeATraiter=listeValeurs + for valeur in listeATraiter: + str_valeur=str(valeur) + self.LBValeurs.addItem(str_valeur) else : - listeATraiter=self.DecoupeListeValeurs(listeValeurs) - for valeur in listeATraiter: - str_valeur=str(valeur) - self.LBValeurs.addItem(str_valeur) + for valeur in self.DecoupeListeValeurs(listeValeurs): + if type(valeur) == types.TupleType: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", " + TupleEnTexte = TupleEnTexte[0:-2] +")" + print TupleEnTexte + self.LBValeurs.addItem(TupleEnTexte) + else : + self.LBValeurs.addItem(QString(str(valeur))) + def Ajout1Valeur(self,liste=[]): # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur) + validite=1 if liste == [] : if self.node.item.wait_tuple()== 1 : liste=SaisieValeur.TraiteLEValeurTuple(self) if liste == [''] : return - validite=1 else : liste,validite=SaisieValeur.TraiteLEValeur(self) - else : - validite=1 - if validite == 0 : return + if validite == 0 : return if liste ==[] : return if len(liste) != self.nbValeurs : @@ -109,14 +117,15 @@ class MonFonctionPanel(MonPlusieursBasePanel): if self.node.item.wait_tuple()== 1 : liste2=tuple(liste) liste=liste2 + index=self.LBValeurs.currentRow() if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )): index=0 else : index=self.LBValeurs.currentRow() + 1 indexListe=index*self.nbValeurs - if index == 0 : - indexListe=len(self.listeValeursCourantes) + if index == 0 : indexListe=len(self.listeValeursCourantes) + listeVal=[] for valeur in self.listeValeursCourantes : listeVal.append(valeur) @@ -137,7 +146,13 @@ class MonFonctionPanel(MonPlusieursBasePanel): else : listeATraiter=self.DecoupeListeValeurs(listeRetour) for valeur in listeATraiter : - str_valeur=str(valeur) + if type(valeur) == types.TupleType: + TupleEnTexte="(" + for val in valeur : + TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", " + str_valeur = TupleEnTexte[0:-2] +")" + else : + str_valeur=str(valeur) self.LBValeurs.insertItem(index,str_valeur) item=self.LBValeurs.item(index) item.setSelected(1) diff --git a/InterfaceQT4/monMCListAjoutPanel.py b/InterfaceQT4/monMCListAjoutPanel.py index 475a51f1..3824d3d5 100644 --- a/InterfaceQT4/monMCListAjoutPanel.py +++ b/InterfaceQT4/monMCListAjoutPanel.py @@ -62,10 +62,8 @@ class MonMCListAjoutPanel(DMCListAjout,QTPanel): self.connecterSignaux() def connecterSignaux(self): - self.connect(self.BOk,SIGNAL("clicked()"),self.BAjoutClicked) self.connect(self.bAjout,SIGNAL("clicked()"),self.BAjoutClicked) - def BAjoutClicked(self): self.node.treeParent.append_child(self.node.item.get_nom()) diff --git a/InterfaceQT4/monRacinePanel.py b/InterfaceQT4/monRacinePanel.py index a614405e..1f5b707b 100644 --- a/InterfaceQT4/monRacinePanel.py +++ b/InterfaceQT4/monRacinePanel.py @@ -61,7 +61,8 @@ class MonRacinePanel(DRac,QTPanelTBW2): self.connecterSignaux() QTPanel.__init__(self,node,parent) QTPanelTBW2.__init__(self,node,parent,racine=1) - self.a=0 + self.LEFiltre.setFocus() + def connecterSignaux(self): self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked) diff --git a/InterfaceQT4/monSelectVal.py b/InterfaceQT4/monSelectVal.py index 421682a3..e856b655 100644 --- a/InterfaceQT4/monSelectVal.py +++ b/InterfaceQT4/monSelectVal.py @@ -96,8 +96,8 @@ class MonSelectVal(DSelVal): if val != '' and val != ' ' and val != self.separateur : val=str(val) try : - val=eval(val,{}) + val2=eval(val,{}) + liste.append(val) except : pass - liste.append(val) self.FonctPanel.AjoutNValeur(liste) diff --git a/InterfaceQT4/monUniqueBasePanel.py b/InterfaceQT4/monUniqueBasePanel.py index d7cb28a5..392dbe6f 100644 --- a/InterfaceQT4/monUniqueBasePanel.py +++ b/InterfaceQT4/monUniqueBasePanel.py @@ -67,6 +67,7 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur): self.InitCommentaire() self.detruitBouton() self.connecterSignaux() + self.lineEditVal.setFocus() def connecterSignaux(self) : self.connect(self.bOk,SIGNAL("clicked()"),self.BOk2Pressed) diff --git a/InterfaceQT4/monVisu.py b/InterfaceQT4/monVisu.py new file mode 100644 index 00000000..c5fa4fdb --- /dev/null +++ b/InterfaceQT4/monVisu.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM 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 +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== +# Modules Python +# Modules Eficas + +from desVisu import Ui_DVisu +from PyQt4 import * +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +# Import des panels + +class DVisu(Ui_DVisu ,QtGui.QDialog): + """ + Classe définissant le panel associé aux mots-clés qui demandent + à l'utilisateur de choisir une seule valeur parmi une liste de valeurs + discrètes + """ + def __init__(self,parent = None , name = None,fl = 0): + QtGui.QDialog.__init__(self,parent) + self.setModal(True) + self.setupUi(self) + + def on_buttonCancel_clicked(self): + QDialog.reject(self) + + def on_buttonOk_clicked(self): + QDialog.accept(self) + diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index 062f9a87..7309c339 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -62,10 +62,14 @@ class Validation : if str(clef) != str(texteValeur) : self.node.item.object.init_modif() clefobj=self.node.item.object.GetNomConcept() - if not self.parent.dict_reels.has_key(clefobj): - self.parent.dict_reels[clefobj] = {} - self.parent.dict_reels[clefobj][clef]=texteValeur - self.parent.dict_reels[clefobj] + if not self.parent.appliEficas.dict_reels.has_key(clefobj): + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + self.parent.appliEficas.dict_reels[clefobj] + if clefobj=="" : + if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur self.node.item.object.fin_modif() except: pass @@ -74,11 +78,42 @@ class Validation : valeurTexte=valeur if "R" in self.node.item.object.definition.type: clefobj=self.node.item.object.GetNomConcept() - if self.parent.dict_reels.has_key(clefobj): - if self.parent.dict_reels[clefobj].has_key(valeur): - valeurTexte=self.parent.dict_reels[clefobj][valeur] + if self.parent.appliEficas.dict_reels.has_key(clefobj): + if self.parent.appliEficas.dict_reels[clefobj].has_key(valeur): + valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur] return valeurTexte + def AjoutDsDictReel(self,texteValeur): + try : + if "R" in self.node.item.object.definition.type: + if str(texteValeur)[0] != "'": + clef=eval(texteValeur) + if str(clef) != str(texteValeur) : + clefobj=self.node.item.object.GetNomConcept() + if not self.parent.appliEficas.dict_reels.has_key(clefobj): + self.parent.appliEficas.dict_reels[clefobj] = {} + self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur + if clefobj=="" : + if not self.parent.appliEficas.dict_reels.has_key(self.node.item.object.etape) : + self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {} + self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur + + except: + #else : + #print "pb ds try de AjoutDsDictReel" + pass + + def AjoutDsDictReelEtape(self): + print self.parent.appliEficas.dict_reels + print self.node.item.object + try: + if self.parent.appliEficas.dict_reels.has_key(self.node.item.object) : + self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object] + del self.parent.appliEficas.dict_reels[self.node.item.object] + except : + pass + + #------------------------------------ class PolitiqueUnique(Validation) : #------------------------------------ @@ -104,9 +139,9 @@ class PolitiqueUnique(Validation) : return validite, commentaire -#------------------------ -class PolitiquePlusieurs: -#------------------------ +#-------------------------------------- +class PolitiquePlusieurs(Validation): +#-------------------------------------- """ classe servant pour les entrees ne demandant qu un mot clef """ @@ -120,14 +155,15 @@ class PolitiquePlusieurs: commentaire="Nouvelle valeur acceptée" commentaire2="" valide=1 + if listevaleur==None: return + if listevaleur=="": return if not( type(listevaleur) in (types.ListType,types.TupleType)) : listevaleur=tuple(listevaleur) for valeur in listevaleur : # On teste le type de la valeur + valeurScientifique=valeur valide=self.node.item.valide_item(valeur) if not valide : - #print self.__class__ - #if not testtype : try : valeur,valide=self.node.item.eval_valeur(valeur) valide,commentaire = self.node.item.object.verif_type(valeur) @@ -149,8 +185,10 @@ class PolitiquePlusieurs: commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" return valide,commentaire,commentaire2,listeRetour if len(listecourante) + 1 > min : + commentaire="" return valide,commentaire,commentaire2,listeRetour # On ajoute la valeur testee a la liste courante et a la liste acceptee + self.AjoutDsDictReel(valeurScientifique) listecourante.insert(index,valeur) index=index+1 listeRetour.append(valeur) diff --git a/InterfaceQT4/qtCommun.py b/InterfaceQT4/qtCommun.py index 5e50d0e4..6c5a557c 100644 --- a/InterfaceQT4/qtCommun.py +++ b/InterfaceQT4/qtCommun.py @@ -136,6 +136,7 @@ class QTPanelTBW2(QTPanel): self.editor = parent self.node = node self.BuildLBNouvCommande() + self.LEFiltre.setFocus() self.NbRecherches = 0 if racine == 1 : self.AppelleBuildLBRegles() @@ -145,9 +146,9 @@ class QTPanelTBW2(QTPanel): def handleCurrentChanged(self): try : - self.LEFiltre.setFocus() + self.LEFiltre.setFocus() except : - pass + pass def BuildLBNouvCommande(self): @@ -262,6 +263,10 @@ class QTPanelTBW3(QTPanel): if nom == '' : return # si pas de nom, on ressort sans rien faire self.editor.init_modif() test,mess = self.node.item.nomme_sd(nom) + #Notation scientifique + from politiquesValidation import Validation + validation=Validation(self.node,self.editor) + validation.AjoutDsDictReelEtape() self.editor.affiche_infos(mess) # ------------------------------- # diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 4cbc0cc6..f734b003 100644 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -19,6 +19,8 @@ class Appli(Ui_Eficas,QMainWindow): """ Constructor """ + print self + self.VERSION_EFICAS="Eficas QT4 V1.17" self.ihm="QT" self.code=code self.salome=salome @@ -26,6 +28,7 @@ class Appli(Ui_Eficas,QMainWindow): self.top = self #(pour CONFIGURATION) self.QWParent=None #(Pour lancement sans IHM) self.indice=0 + self.dict_reels={} import prefs if salome : @@ -38,6 +41,7 @@ class Appli(Ui_Eficas,QMainWindow): self.REPINI=prefsCode.REPINI self.RepIcon=prefsCode.INSTALLDIR+"/Editeur/icons" + self.INSTALLDIR=prefsCode.INSTALLDIR self.CONFIGURATION = configuration.make_config(self,prefsCode.REPINI) self.CONFIGStyle = configuration.make_config_style(self,prefsCode.REPINI) if hasattr(prefsCode,'encoding'): @@ -54,7 +58,6 @@ class Appli(Ui_Eficas,QMainWindow): self.connecterSignaux() - #self.monAssistant=QAssistantClient(QString(""), self.viewmanager) #if self.salome : # from Editeur import session # self.ouvreFichiers() @@ -66,6 +69,7 @@ class Appli(Ui_Eficas,QMainWindow): self.initRecents() self.ouvreFichiers() + self.setWindowTitle(self.VERSION_EFICAS) def OPENTURNS(self) : self.MenuBar.removeItem(5) @@ -100,6 +104,9 @@ class Appli(Ui_Eficas,QMainWindow): self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll) self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit) + self.connect(self.actionEficas,SIGNAL("activated()"),self.aidePPal) + self.connect(self.actionVersion,SIGNAL("activated()"),self.version) + self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut) self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy) self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste) @@ -116,8 +123,6 @@ class Appli(Ui_Eficas,QMainWindow): #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex) #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents) - #self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout) - #self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout) def ouvreFichiers(self) : @@ -211,18 +216,22 @@ class Appli(Ui_Eficas,QMainWindow): traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V8V9") def version(self) : - from desVisu import DVisu + from monVisu import DVisu titre = "version " - monVisu=DVisu(parent=self.viewmanager) - monVisu.setCaption(titre) - monVisu.TB.setText("Eficas V1.13") - monVisu.adjustSize() - monVisu.show() + monVisuDialg=DVisu(parent=self,fl=0) + monVisuDialg.setWindowTitle(titre) + monVisuDialg.TB.setText(self.VERSION_EFICAS +QString(" pour ") + self.code) + monVisuDialg.adjustSize() + monVisuDialg.show() def aidePPal(self) : - maD=INSTALLDIR+"/AIDE/fichiers" - docsPath = QDir(maD).absPath() - self.monAssistant.showPage( QString("%1/index.html").arg(docsPath) ) + maD=self.INSTALLDIR+"/Aide" + docsPath = QDir(maD).absolutePath() + monAssistant=QAssistantClient(QString(""), self) + arguments=QStringList() + arguments << "-profile" < 0 : self.myQtab.setCurrentIndex(0) - self.handleClose(0) + res=self.handleClose(0) + if res==2 : return res # l utilsateur a annule + return res def handleEditCopy(self): #print "passage dans handleEditCopy" @@ -99,7 +99,6 @@ class MyTabview: editor.handleEditPaste() def newEditor(self,include=0): - #print "passage dans newEditor" maPage=self.getEditor() def newIncludeEditor(self): @@ -233,8 +232,7 @@ class MyTabview: @param editor editor window to check @return flag indicating successful reset of the dirty flag (boolean) """ - - print "checkDirty" + res=1 if (editor.modified) and (editor in self.doubles.keys()) : res = QMessageBox.warning( None, @@ -250,11 +248,10 @@ class MyTabview: fn = self.appliEficas.trUtf8('Noname') res = QMessageBox.warning(self.appliEficas, self.appliEficas.trUtf8("Fichier Modifie"), - self.appliEficas.trUtf8("Le fichier %1 n a pas ete sauvegarde.") - .arg(fn), + self.appliEficas.trUtf8("Le fichier %1 n a pas ete sauvegarde.") .arg(fn), self.appliEficas.trUtf8("&Sauvegarder"), self.appliEficas.trUtf8("&Quitter "), - self.appliEficas.trUtf8("&Annuler"), 0, 2) + self.appliEficas.trUtf8("&Annuler") ) if res == 0: (ok, newName) = editor.saveFile() if ok: @@ -262,7 +259,4 @@ class MyTabview: index=self.myQtab.currentIndex() self.myQtab.setTabText(index,fileName) return ok - elif res == 2: - return 0 - return 1 - + return res diff --git a/InterfaceTK/appli.py b/InterfaceTK/appli.py index 668f0048..d4714b23 100644 --- a/InterfaceTK/appli.py +++ b/InterfaceTK/appli.py @@ -36,6 +36,8 @@ from widgets import showerror # Modules Eficas import splash import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import styles from styles import style import fontes @@ -64,6 +66,7 @@ class APPLI: self.salome=salome self.top=master self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS) + self.appliEficas=self #dimensionnement de la fenetre principale #aspect ratio de l'ecran @@ -138,8 +141,8 @@ class APPLI: if (self.test == 0): splash._splash.configure(text = "Chargement des paramètres utilisateur") import configuration - self.CONFIGURATION = configuration.make_config(self,prefs.REPINI) - self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI) + self.CONFIGURATION = configuration.make_config(self,prefsCode.REPINI) + self.CONFIGStyle = configuration.make_config_style(self,prefsCode.REPINI) def cree_composants_graphiques(self): """ diff --git a/InterfaceTK/bureau.py b/InterfaceTK/bureau.py index 2c2d6680..23e0b109 100644 --- a/InterfaceTK/bureau.py +++ b/InterfaceTK/bureau.py @@ -31,6 +31,8 @@ from widgets import showinfo,askyesno,showerror # Modules Eficas import splash import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import convert import generator import AIDE @@ -102,11 +104,11 @@ class BUREAU: ('Help24',"view_doc","Documentation de l'objet courant",'jdc') ) try: - menu_defs=prefs.menu_defs['bureau'] + menu_defs=prefsCode.menu_defs['bureau'] except: pass try: - button_defs=prefs.button_defs['bureau'] + button_defs=prefsCode.button_defs['bureau'] except: pass diff --git a/InterfaceTK/change_comm.py b/InterfaceTK/change_comm.py index ab125f95..d44f006b 100755 --- a/InterfaceTK/change_comm.py +++ b/InterfaceTK/change_comm.py @@ -30,6 +30,8 @@ import os from Editeur import import_code from Editeur import session import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import convert import generator import string @@ -47,7 +49,7 @@ class DUP : self.top=None self.test=2 import configuration - self.CONFIGURATION=configuration.make_config(self,prefs.REPINI) + self.CONFIGURATION=configuration.make_config(self,prefsCode.REPINI) self.load_readercata() self.cata=self.readercata.cata diff --git a/InterfaceTK/composimp.py b/InterfaceTK/composimp.py index d278c166..e9df810b 100644 --- a/InterfaceTK/composimp.py +++ b/InterfaceTK/composimp.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/eficas.py b/InterfaceTK/eficas.py index caf47fb8..7a2b8417 100644 --- a/InterfaceTK/eficas.py +++ b/InterfaceTK/eficas.py @@ -38,7 +38,10 @@ from widgets import Fenetre class EFICAS(appli.APPLI): try: - from prefs import appli_composants + import prefs + name='prefs_'+prefs.code + prefsCode=__import__(name) + from prefsCode import appli_composants except: appli_composants=['readercata','bureau','browser','options'] diff --git a/InterfaceTK/eficas_go.py b/InterfaceTK/eficas_go.py index e6b00c5c..0a3ef794 100644 --- a/InterfaceTK/eficas_go.py +++ b/InterfaceTK/eficas_go.py @@ -28,11 +28,13 @@ import Tkinter # Modules Eficas import prefs -if hasattr(prefs,'encoding'): +name='prefs_'+prefs.code +prefsCode=__import__(name) +if hasattr(prefsCode,'encoding'): # Hack pour changer le codage par defaut des strings import sys reload(sys) - sys.setdefaultencoding(prefs.encoding) + sys.setdefaultencoding(prefsCode.encoding) del sys.setdefaultencoding # Fin hack diff --git a/InterfaceTK/faq.py b/InterfaceTK/faq.py index 30764b53..5893f2f1 100644 --- a/InterfaceTK/faq.py +++ b/InterfaceTK/faq.py @@ -29,6 +29,8 @@ from Tkinter import END # Modules Eficas import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import fontes class FAQ: @@ -38,7 +40,7 @@ class FAQ: buttons=('Lu',), title="FAQs et limitations d'EFICAS", command = self.lu_FAQ) - txt = open(os.path.join(prefs.INSTALLDIR,'Editeur','faqs.txt'),'r').read() + txt = open(os.path.join(prefsCode.INSTALLDIR,'Editeur','faqs.txt'),'r').read() Texte = Pmw.ScrolledText(self.Dialog.interior(), text_font=fontes.standard) Texte.insert(END,txt) diff --git a/InterfaceTK/fonctionpanel.py b/InterfaceTK/fonctionpanel.py index b17704d5..07fc9ea7 100644 --- a/InterfaceTK/fonctionpanel.py +++ b/InterfaceTK/fonctionpanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/images.py b/InterfaceTK/images.py index a6f0a74e..a63e422b 100644 --- a/InterfaceTK/images.py +++ b/InterfaceTK/images.py @@ -42,7 +42,9 @@ if __name__ == '__main__': try: import prefs - ICONDIR=prefs.ICONDIR + name='prefs_'+prefs.code + prefsCode=__import__(name) + ICONDIR=prefsCode.ICONDIR except: # Par defaut on utilise le repertoire local icons ICONDIR=os.path.join(os.path.abspath(os.path.dirname(__file__)),'/Editeur/icons') diff --git a/InterfaceTK/menubar.py b/InterfaceTK/menubar.py index 119bbdfa..2a64cad9 100644 --- a/InterfaceTK/menubar.py +++ b/InterfaceTK/menubar.py @@ -33,7 +33,9 @@ class MENUBAR: self.init() try: - from prefs import labels + import prefs + name='prefs_'+prefs.code + from prefsCode import labels except: labels= ('Fichier','Edition','Jeu de commandes','Catalogue','Options','Aide','Traduction') diff --git a/InterfaceTK/panels.py b/InterfaceTK/panels.py index d1f72491..8932efd3 100644 --- a/InterfaceTK/panels.py +++ b/InterfaceTK/panels.py @@ -29,6 +29,8 @@ import widgets from widgets import ListeChoix, showerror from widgets import ListeChoixParGroupes import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import options SEPARATEUR = '-'*30 @@ -217,7 +219,7 @@ class Panel(Frame) : texte_infos = '' for e in cmd.entites.keys() : if e == name : - texte_infos=getattr(cmd.entites[e],prefs.lang) + texte_infos=getattr(cmd.entites[e],prefsCode.lang) break if texte_infos == '' : texte_infos="Pas d'infos disponibles" self.parent.appli.affiche_infos(texte_infos) @@ -234,7 +236,7 @@ class Panel(Frame) : def selectCmd(self,name): """ On retrouve la commande sous le curseur pour affichage du fr """ if name != 'COMMENTAIRE' and name != SEPARATEUR: - texte_infos=getattr(self.parent.jdc.get_cmd(name),prefs.lang) + texte_infos=getattr(self.parent.jdc.get_cmd(name),prefsCode.lang) self.parent.appli.affiche_infos(texte_infos) def defCmd(self,name): diff --git a/InterfaceTK/plusieursassdpanel.py b/InterfaceTK/plusieursassdpanel.py index 3e5eb99b..6375af36 100644 --- a/InterfaceTK/plusieursassdpanel.py +++ b/InterfaceTK/plusieursassdpanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/plusieursbasepanel.py b/InterfaceTK/plusieursbasepanel.py index 34af53e9..bf395493 100644 --- a/InterfaceTK/plusieursbasepanel.py +++ b/InterfaceTK/plusieursbasepanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import showinfo diff --git a/InterfaceTK/plusieursintopanel.py b/InterfaceTK/plusieursintopanel.py index d5ef1e15..5486b458 100644 --- a/InterfaceTK/plusieursintopanel.py +++ b/InterfaceTK/plusieursintopanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/plusieurspanel.py b/InterfaceTK/plusieurspanel.py index 0a21907e..2db451ae 100644 --- a/InterfaceTK/plusieurspanel.py +++ b/InterfaceTK/plusieurspanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/shellpanel.py b/InterfaceTK/shellpanel.py index b7682198..6bd5a104 100644 --- a/InterfaceTK/shellpanel.py +++ b/InterfaceTK/shellpanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -#import prefs #import panels #import images #from widgets import ListeChoix diff --git a/InterfaceTK/styles.py b/InterfaceTK/styles.py index 8febcbb9..5b4a27fc 100644 --- a/InterfaceTK/styles.py +++ b/InterfaceTK/styles.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- import os import prefs +name='prefs_'+prefs.code +prefsCode=__import__(name) import basestyle from basestyle import STYLE,style -inistylefile=os.path.join(prefs.REPINI,"style.py") +inistylefile=os.path.join(prefsCode.REPINI,"style.py") if os.path.isfile(inistylefile): execfile(inistylefile) diff --git a/InterfaceTK/uniqueassdpanel.py b/InterfaceTK/uniqueassdpanel.py index 27edcd97..581a7b98 100644 --- a/InterfaceTK/uniqueassdpanel.py +++ b/InterfaceTK/uniqueassdpanel.py @@ -26,7 +26,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/uniquebasepanel.py b/InterfaceTK/uniquebasepanel.py index b7a71beb..847ae02a 100644 --- a/InterfaceTK/uniquebasepanel.py +++ b/InterfaceTK/uniquebasepanel.py @@ -28,7 +28,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import FenetreDeParametre diff --git a/InterfaceTK/uniquecomppanel.py b/InterfaceTK/uniquecomppanel.py index 80d9aa77..f8a70f82 100644 --- a/InterfaceTK/uniquecomppanel.py +++ b/InterfaceTK/uniquecomppanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/uniqueintopanel.py b/InterfaceTK/uniqueintopanel.py index 76133cd5..ae8e3a76 100644 --- a/InterfaceTK/uniqueintopanel.py +++ b/InterfaceTK/uniqueintopanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/uniquepanel.py b/InterfaceTK/uniquepanel.py index 90b3b9d9..a04c37fd 100644 --- a/InterfaceTK/uniquepanel.py +++ b/InterfaceTK/uniquepanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/InterfaceTK/uniquesdcopanel.py b/InterfaceTK/uniquesdcopanel.py index a9e326c5..5dd20069 100644 --- a/InterfaceTK/uniquesdcopanel.py +++ b/InterfaceTK/uniquesdcopanel.py @@ -27,7 +27,6 @@ import traceback # Modules Eficas from Editeur import Objecttreeitem -import prefs import panels import images from widgets import ListeChoix diff --git a/Noyau/N_VALIDATOR.py b/Noyau/N_VALIDATOR.py index 21fa1f26..57b0de9d 100644 --- a/Noyau/N_VALIDATOR.py +++ b/Noyau/N_VALIDATOR.py @@ -126,6 +126,10 @@ class TypeProtocol(PProtocol): if type(obj)==types.StringType:return obj elif type(type_permis) == types.ClassType or isinstance(type_permis,type): if self.is_object_from(obj,type_permis):return obj + elif type_permis == 'Fichier' : + import os + if os.path.isfile(obj):return obj + else : raise ValError("%s n'est pas un fichier valide" % repr(obj)) elif type(type_permis) == types.InstanceType or isinstance(type_permis,object): try: if type_permis.__convert__(obj) : return obj diff --git a/UiQT4/desMatrice.ui b/UiQT4/desMatrice.ui new file mode 100644 index 00000000..e7b433e7 --- /dev/null +++ b/UiQT4/desMatrice.ui @@ -0,0 +1,66 @@ + + desMatrice + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + desMatrice + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + desMatrice + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/UiQT4/makefile b/UiQT4/makefile index 9293659e..81bbacf0 100644 --- a/UiQT4/makefile +++ b/UiQT4/makefile @@ -8,7 +8,7 @@ PY_FILES = desChoixCata.py desCommande.py desCommentaire.py desError.py desFormu desPlusieursBase.py desPlusieursInto.py desPoursuite.py desRacine.py desSelectVal.py \ desUniqueASSD.py desUniqueBase.py desUniqueComp.py desUniqueInto.py desUniqueSDCOInto.py \ desUniqueSDCO.py desVisu.py aideQT.py OptionsEditeur.py OptionsPdf.py myMain.py \ - desViewTexte.py desPixmap.py + desViewTexte.py desPixmap.py desMatrice.py %.py:%.ui ${PYUIC} -x -o $@ $< diff --git a/UiQT4/myMain.ui b/UiQT4/myMain.ui index d658dd50..0150f2e4 100644 --- a/UiQT4/myMain.ui +++ b/UiQT4/myMain.ui @@ -57,6 +57,8 @@ &Aide + + @@ -245,6 +247,16 @@ TraduitV8V9 + + + Eficas + + + + + Version + + diff --git a/convert/parseur_python.py b/convert/parseur_python.py index 68dc8905..adc6fcc4 100644 --- a/convert/parseur_python.py +++ b/convert/parseur_python.py @@ -613,6 +613,7 @@ class PARSEUR_PYTHON: dict_reel_concept=construit_genea(epure2,self.appli.liste_simp_reel) else: dict_reel_concept={} + if nomConpet='sansnom' : nomConcept='' if nomConcept !=None : if len(dict_reel_concept) != 0: self.appli.dict_reels[nomConcept]=dict_reel_concept @@ -623,10 +624,12 @@ class PARSEUR_PYTHON: """ self.appli=appli try: + #if 1: if not self.l_objets : self.analyse() txt='' for obj in self.l_objets: txt = txt+str(obj) + #else : except ParserException: #Impossible de convertir le texte, on le retourne tel que txt=self.texte diff --git a/generator/generator_python.py b/generator/generator_python.py index 745ff656..a5407ee4 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -476,9 +476,9 @@ class PythonGenerator: # ou la notation scientifique s = str(valeur) clefobj=etape.get_sdname() - if self.appli and self.appli.dict_reels.has_key(clefobj): - if self.appli.dict_reels[clefobj].has_key(valeur): - s=self.appli.dict_reels[clefobj][valeur] + if self.appli.appliEficas and self.appli.appliEficas.dict_reels.has_key(clefobj): + if self.appli.appliEficas.dict_reels[clefobj].has_key(valeur): + s=self.appli.appliEficas.dict_reels[clefobj][valeur] elif type(valeur) == types.StringType : if valeur.find('\n') == -1: # pas de retour chariot, on utilise repr