import convert
import generator
import AIDE
+import os
from jdcdisplay import JDCDISPLAY
from utils import extension_fichier,stripPath,save_in_file
-from widgets import Fenetre,Ask_Format_Fichier
+from widgets import Fenetre,Ask_Format_Fichier,FenetreSurLigneWarning
from fenetre_mc_inconnus import fenetre_mc_inconnus
from Ihm import CONNECTOR
+from Traducteur import traduitV7V8
import comploader
('Mots-clés inconnus','mc_inconnus'),
]
),
+ ('Traduction',[
+ ('Traduction v7 en v8','TraduitFichier','<Control-t>','Ctrl+T')
+ ]
+ ),
('Aide',[
('Aide EFICAS','aideEFICAS'),
]
button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
('Open24',"openJDC","Ouverture d'un fichier existant",'always'),
('Save24',"saveJDC","Sauvegarde du fichier courant",'always'),
- ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
+ ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
('Zoom24',"visuJDC","Visualisation du fichier de commandes",'always'),
None,
('Copy24',"copy","Copie l'objet courant",'jdc'),
comploader.charger_composants()
self.cree_cataitem()
self.text_reel=""
+ self.initialdir = self.appli.CONFIGURATION.initialdir
def cree_cataitem(self):
"""
self.JDCDisplay_courant.select()
#print "selectJDC",numero_jdc,self.JDCDisplay_courant,self.JDCName
+
def newJDC_include(self,event=None):
"""
- Initialise un nouveau JDC vierge
+ Initialise un nouveau JDC include vierge
"""
import Extensions.jdc_include
JdC_aux=Extensions.jdc_include.JdC_include
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
def newJDC(self,event=None):
"""
- Initialise un nouveau JDC include vierge
+ Initialise un nouveau JDC vierge
"""
self.appli.statusbar.reset_affichage_infos()
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
- def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
+ def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY,enregistre="non"):
"""
Lance l'affichage du JDC cad création du JDCDisplay
Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
if new == 'oui':
self.liste_JDCDisplay.append(self.JDCDisplay_courant)
self.JDCDisplay_courant.modified='n'
- self.JDCDisplay_courant.fichier=self.fileName
+ if enregistre != "non" :
+ self.JDCDisplay_courant.fichier=self.fileName
+ else :
+ self.initialdir = self.appli.CONFIGURATION.rep_user
self.nb.selectpage(label_onglet)
self.nb.setnaturalsize()
+ self.nb.bind_all("<Key-Next>",lambda e,s=self:s.selectArbreDown())
+ self.nb.bind_all("<Key-Prior>",lambda e,s=self:s.selectArbreUp())
+ self.nb.bind_all("<Insert>",lambda e,s=self:s.deplieReplieNode())
texte = "Jeu de commandes :" + self.JDCName+" ouvert"
CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
self.appli.affiche_infos(texte)
"""
if mode == 'JDC':
if not hasattr(self,'JDC') : return
+ if self.JDC == None : return
titre="rapport de validation du jeu de commandes courant"
cr = self.JDC.report()
#self.update_jdc_courant()
texte_cr = str(cr)
self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
- def openJDC(self,event=None,file=None,units=None):
+ def openJDC(self,event=None,file=None,units=None,enregistre="oui"):
"""
Demande à l'utilisateur quel JDC existant il veut ouvrir
"""
titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
texte = str(p.cr)).wait()
return
- self.appli.listeFichiers.aOuvert(file)
+ if enregistre == "oui" :
+ self.appli.listeFichiers.aOuvert(file)
else:
# Il n'existe pas c'est une erreur
self.appli.affiche_infos("Type de fichier non reconnu")
if self.appli.test == 0 :
showerror("Erreur fatale au chargement d'un fichier",txt_exception)
else:
- self.ShowJDC(J,self.JDCName)
+ self.ShowJDC(J,self.JDCName,enregistre=enregistre)
self.appli.toolbar.active_boutons()
- # si le JDC ne contient rien (vide), on retourne ici
- if len(self.JDC.etapes) == 0 : return
- # dans le cas où le JDC est invalide, on affiche son CR
+ # si le JDC ne contient rien (vide), on retourne ici
+ if len(self.JDC.etapes) == 0 : return
+ # dans le cas où le JDC est invalide, on affiche son CR
if not self.JDC.isvalid():
- self.appli.top.update()
- self.visuCR(mode='JDC')
+ self.appli.top.update()
+ self.visuCR(mode='JDC')
+ return J
+
+ def deplieReplieNode(self):
+ self.JDCDisplay_courant.tree.tree.deplieReplieNode()
+
+ def selectArbreDown(self):
+ self.JDCDisplay_courant.tree.tree.canvas.focus_set()
+ self.JDCDisplay_courant.tree.tree.mot_down_force()
+
+ def selectArbreUp(self):
+ self.JDCDisplay_courant.tree.tree.canvas.focus_set()
+ self.JDCDisplay_courant.tree.tree.mot_up_force()
def GetLabelJDC(self,nb_jdc = 'absent'):
"""
"""
Sauvegarde le JDC courant.
Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
- Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
+
+ - Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
veut sauver le JDC
- Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
+ - Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
"""
+ ok = 0
if not hasattr(self,'JDC') : return 0
format=self.appli.format_fichier.get()
if generator.plugins.has_key(format):
self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
if echo =='oui' or self.JDCDisplay_courant.fichier == None:
- return self.asknomsauvegardeJDC()
+ ok = self.asknomsauvegardeJDC()
elif self.JDCDisplay_courant.fichier != None :
- #PN Ajout --> Salome
- # Pour sauvegarde dans l etude si lancement depuis salome
- if self.appli.salome != 0:
- import eficasEtude
- self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
- from panelsSalome import SALOME_UNIQUE_BASE_Panel
- if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
- self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
- #try :
- if ( 1 == 1 ) :
- import eficasCL
- MyCLinit=eficasCL.CLinit()
- MyCLinit.traiteCL()
- MyCLinit.clean()
- #except :
- else :
- pass
- #PN Fin Ajout --> Salome
- # le JDC a déjà un nom : on sauvegarde directement sans demander
- # un autre nom au développeur
- if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
+ # le JDC a déjà un nom : on sauvegarde directement sans demander
+ # un autre nom au développeur
+ if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
- return 0
- else :
+ #return 0
+ ok = 0
+ else :
if self.appli.format_fichier.get() == 'homard':
self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
self.JDCDisplay_courant.stop_modif()
self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
- return 1
+ ok = 1
+
+ if ok and hasattr( self.appli, 'salome'):
+ # eficas a été lancé à partir deSalome
+ #1)ajout dans l'arbre d'étude du nom du jdc
+ ok, msg = self.appli.addJdcInSalome( self.JDCDisplay_courant.fichier )
+
+ #2)CS_pbruno ??
+ from panelsSalome import SALOME_UNIQUE_BASE_Panel
+ if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
+ print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????'
+ self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
+
+ #3)création/mise à jours d'un maillage dans Salome
+ self.appli.createOrUpdateMesh()
+ return ok
def asknomsauvegardeJDC(self):
""" Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
sauvegarde = asksaveasfilename(title=titre,
defaultextension=defext,
filetypes = filtyp,
- initialdir = self.appli.CONFIGURATION.initialdir)
- #initialdir = self.appli.CONFIGURATION.rep_user)
+ initialdir = self.initialdir)
+ #initialdir = self.appli.CONFIGURATION.initialdir)
+ #initialdir = self.appli.CONFIGURATION.rep_user)
if sauvegarde :
- # PN ajout --> Salome
- # Pour sauvegarde dans l etude si lancement depuis salome
- if self.appli.salome != 0:
- import eficasEtude
- self.appli.salome.rangeInStudy(sauvegarde)
- from panelsSalome import SALOME_UNIQUE_BASE_Panel
- if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
- self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
- #try :
- if ( 1 == 1 ):
- import eficasCL
- MyCLinit=eficasCL.CLinit()
- MyCLinit.traiteCL()
- MyCLinit.clean()
- #except :
- else :
- pass
- # PN fin ajout --> Salome
if not save_in_file(sauvegarde,self.jdc_fini,None) :
showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
return 0
def visuJDC_py(self,event=None):
"""
Méthode permettant d'afficher dans une fenêtre à part l'écho au
- format python du jdc courant
+ format python du jdc courant
"""
if not hasattr(self,'JDC') : return
jdc_fini = self.get_text_JDC('python')
def visuJDC(self):
"""
Méthode permettant d'afficher dans une fenêtre à part l'écho au
- format .comm ou .py du jdc courant
+ format .comm ou .py du jdc courant
"""
if not hasattr(self,'JDC') : return
titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
showerror("Impossible de visualiser le fichier initial",
"EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
return
+ os.chdir(self.appli.dir)
f=open(self.JDCDisplay_courant.fichier,'r')
texte=f.read()
f.close()
f.close()
except:
print "Pb a la sauvegarde sous le format homard"
- if self.appli.salome != 0:
+ if hasattr( self.appli, 'salome'):
import eficasEtude
self.appli.salome.rangeInStudy(file_homard,"_CONF")
# ---------------------------------------------------------------------------
-# Méthodes liées aux mots-clés inconnus
+# Méthodes liées aux mots-clés inconnus
# ---------------------------------------------------------------------------
def mc_inconnus(self):
def update_jdc_courant(self):
self.JDCDisplay_courant.update()
+ def TraduitFichier(self):
+ directory = self.appli.CONFIGURATION.rep_user
+ FichieraTraduire = askopenfilename(title="Nom du Fichier à Traduire",
+ defaultextension=".comm",
+ initialdir = directory
+ )
+ if (FichieraTraduire == "" or FichieraTraduire == () ) : return
+ i=FichieraTraduire.rfind(".")
+ Feuille=FichieraTraduire[0:i]
+ FichierTraduit=Feuille+"v8.comm"
+ log=self.initialdir+"/convert.log"
+ os.system("rm -rf "+log)
+ os.system("rm -rf "+FichierTraduit)
+ Pmw.showbusycursor()
+ traduitV7V8.traduc(FichieraTraduire,FichierTraduit,log)
+ Pmw.hidebusycursor()
+ Entete="Fichier Traduit : "+FichierTraduit +"\n\n"
+ titre = "conversion de "+ FichieraTraduire
+
+ if os.stat(log)[6] != 0L :
+ f=open(log)
+ texte_cr= f.read()
+ f.close()
+ else :
+ texte_cr = Entete
+ commande="diff "+FichieraTraduire+" "+FichierTraduit+" >/dev/null"
+ try :
+ if os.system(commande) == 0 :
+ texte_cr = texte_cr + "Pas de difference entre le fichier V7 et le fichier traduit"
+ except :
+ pass
+
+ cptrendu = FenetreSurLigneWarning(self.appli,titre=titre,texte=texte_cr)
+