1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 Ce module contient la classe BUREAU qui gere les JDC ouverts
28 from widgets import askopenfilename,asksaveasfilename
29 from widgets import showinfo,askyesno,showerror
37 from jdcdisplay import JDCDISPLAY
38 from utils import extension_fichier,stripPath,save_in_file
39 from widgets import Fenetre,Ask_Format_Fichier
40 from fenetre_mc_inconnus import fenetre_mc_inconnus
41 from Ihm import CONNECTOR
48 ('Nouveau','newJDC','<Control-n>'),
49 ('Ouvrir','openJDC','<Control-o>'),
50 ('Enregistrer','saveJDC','<Control-e>'),
51 ('Enregistrer sous','saveasJDC','<Control-s>'),
53 ('Fermer','closeJDC','<Control-f>'),
54 ('Quitter','exitEFICAS','<Control-q>'),
58 ('Copier','copy','<Control-c>'),
59 ('Couper','cut','<Control-x>'),
60 ('Coller','paste','<Control-v>'),
64 ('Rapport de validation','visuCRJDC','<Control-r>'),
65 ('Fichier à plat','visu_a_plat','<Control-p>'),
66 ('Fichier .py','visuJDC_py'),
67 ('Fichier source','visu_txt_brut_JDC','<Control-b>'),
68 ('Paramètres Eficas','affichage_fichier_ini'),
69 ('Mots-clés inconnus','mc_inconnus'),
73 ('Aide EFICAS','aideEFICAS'),
78 button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
79 ('Open24',"openJDC","Ouverture d'un fichier existant",'always'),
80 ('Save24',"saveJDC","Sauvegarde du fichier courant",'always'),
81 ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
82 ('Zoom24',"visuJDC","Visualisation du fichier de commandes",'always'),
84 ('Copy24',"copy","Copie l'objet courant",'jdc'),
85 ('Cut24',"cut","Coupe l'objet courant",'jdc'),
86 ('Paste24',"paste","Colle l'objet copié après l'objet courant",'jdc'),
88 ('Delete24',"delete","Supprime l'objet courant",'jdc'),
89 ('Help24',"view_doc","Documentation de l'objet courant",'jdc')
92 menu_defs=prefs.menu_defs['bureau']
96 button_defs=prefs.button_defs['bureau']
100 def __init__(self,appli,parent):
103 if self.appli.test == 0 :
104 splash._splash.configure(text = "Création du bureau")
105 self.nb = Pmw.NoteBook(self.parent,raisecommand=self.selectJDC)
106 self.nb.pack(fill='both',expand=1)
107 self.JDCDisplay_courant=None
109 self.liste_JDCDisplay=[]
110 comploader.charger_composants()
114 def cree_cataitem(self):
116 On récupère dans l'appli_composant readercata les variables
117 qui servent par la suite pour la création des JDC
119 self.cataitem=self.appli.readercata.cataitem
120 self.cata=self.appli.readercata.cata
121 self.cata_ordonne_dico=self.appli.readercata.cata_ordonne_dico
122 self.code=self.appli.readercata.code
123 self.version_code=self.appli.readercata.version_code
124 self.fic_cata=self.appli.readercata.fic_cata
126 def selectJDC(self,event=None):
128 Cette méthode est appelée chaque fois que l'on sélectionne
129 l'onglet d'un JDC dans le NoteBook des JDC.
130 Elle permet de stocker dans les variable self.JDC et
131 self.JDCDisplay_courant les valeurs concernant le JDC courant
133 if len(self.liste_JDCDisplay) == 0 : return
134 #if self.JDCDisplay_courant : self.JDCDisplay_courant.jdc.unset_context()
135 numero_jdc = self.nb.index(self.nb.getcurselection())
136 self.JDCDisplay_courant.unselect()
137 self.JDCDisplay_courant = self.liste_JDCDisplay[numero_jdc]
138 self.JDC = self.JDCDisplay_courant.jdc
139 self.JDCName = self.JDC.nom
140 self.JDCDisplay_courant.select()
141 #print "selectJDC",numero_jdc,self.JDCDisplay_courant,self.JDCName
143 def newJDC_include(self,event=None):
145 Initialise un nouveau JDC vierge
147 import Extensions.jdc_include
148 JdC_aux=Extensions.jdc_include.JdC_include
150 self.appli.statusbar.reset_affichage_infos()
152 CONTEXT.unset_current_step()
153 jaux=self.cata[0].JdC(procedure="",appli=self.appli,
154 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
155 rep_mat=self.appli.CONFIGURATION.rep_mat,
159 J=JdC_aux(procedure="",appli=self.appli,
160 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
162 rep_mat=self.appli.CONFIGURATION.rep_mat,
167 self.ShowJDC(J,self.JDCName)
168 self.appli.toolbar.active_boutons()
170 def newJDC(self,event=None):
172 Initialise un nouveau JDC include vierge
174 self.appli.statusbar.reset_affichage_infos()
176 CONTEXT.unset_current_step()
177 J=self.cata[0].JdC(procedure="",appli=self.appli,
178 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
179 rep_mat=self.appli.CONFIGURATION.rep_mat,
184 self.ShowJDC(J,self.JDCName)
185 self.appli.toolbar.active_boutons()
187 def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
189 Lance l'affichage du JDC cad création du JDCDisplay
190 Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
191 bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
194 self.JDCName = self.JDC.nom = nom
195 if label_onglet == None :
196 # On veut un nouvel onglet
197 label_onglet = self.GetLabelJDC()
198 self.nb.add(label_onglet,tab_text = nom,tab_width=20)
202 self.JDCDisplay_courant=JDCDISPLAY(self.JDC,nom,appli=self.appli,parent=self.nb.page(label_onglet))
204 self.liste_JDCDisplay.append(self.JDCDisplay_courant)
205 self.JDCDisplay_courant.modified='n'
206 self.JDCDisplay_courant.fichier=self.fileName
207 self.nb.selectpage(label_onglet)
208 self.nb.setnaturalsize()
209 texte = "Jeu de commandes :" + self.JDCName+" ouvert"
210 CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
211 self.appli.affiche_infos(texte)
213 def onClose(self,jdcdisplay):
214 #print "onClose",jdcdisplay
215 self.closeJDCDISPLAY(jdcdisplay)
217 def closeJDCDISPLAY(self,jdc):
219 Ferme le jdcdisplay spécifié par l'argument jdc
221 if jdc is self.JDCDisplay_courant:
222 # on ferme le jdcdisplay courant
223 self.closeSelectedJDC()
225 # on ferme un autre jdcdisplay que le courant
226 old_JDCDisplay=self.JDCDisplay_courant
227 old_page=self.nb.getcurselection()
229 self.JDCDisplay_courant=jdc
231 numero_jdc=self.liste_JDCDisplay.index(jdc)
232 self.nb.selectpage(numero_jdc)
235 self.closeSelectedJDC()
236 self.JDCDisplay_courant=old_JDCDisplay
237 self.JDC=old_JDCDisplay.jdc
238 self.nb.selectpage(old_page)
240 def closeJDC (self,event=None) :
242 Ferme le JDC associé au JDCDISPLAY selectionné
244 if self.JDCDisplay_courant :
245 self.JDCDisplay_courant.jdc.close()
247 def closeSelectedJDC (self) :
249 Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
251 if self.JDCDisplay_courant.modified == 'o' :
252 message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
253 reponse = askyesno(title="Sauvegarde du jdc courant",
256 test = self.saveJDC()
258 self.appli.affiche_infos("Sauvegarde impossible")
261 CONNECTOR.Disconnect(self.JDCDisplay_courant.jdc,"close",self.onClose,(self.JDCDisplay_courant,))
262 self.JDCDisplay_courant.supprime()
263 self.JDCDisplay_courant.jdc.supprime()
264 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
265 # Active le mecanisme de selection du notebook (selectJDC)
266 self.nb.delete(self.nb.getcurselection())
269 index = self.nb.index(self.nb.getcurselection())
270 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
271 self.JDC = self.JDCDisplay_courant.jdc
274 self.JDCDisplay_courant = None
275 self.appli.toolbar.inactive_boutons()
277 def visuCRJDC(self,event=None):
278 return self.visuCR(mode='JDC')
280 def visuCR(self,mode):
282 Méthode permettant l'affichage du rapport de validation
285 if not hasattr(self,'JDC') : return
286 titre="rapport de validation du jeu de commandes courant"
287 cr = self.JDC.report()
288 #self.update_jdc_courant()
290 from Noyau.N_CR import CR
292 cr.debut = "Début rapport de validation du catalogue"
293 cr.fin = "Fin rapport de validation du catalogue"
294 titre="rapport de validation du catalogue"
295 if hasattr(self,'cata_ordonne_cr') :
296 cr.add(self.cata_ordonne_cr)
297 if hasattr(self,'cata_dev_ordonne_cr') :
298 cr.add(self.cata_dev_ordonne_cr)
299 for cata in self.cata:
300 if hasattr(cata,'JdC'):
301 cr.add(cata.JdC.report())
303 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
305 def openJDC(self,event=None,file=None,units=None):
307 Demande à l'utilisateur quel JDC existant il veut ouvrir
309 if self.code == 'ASTER':
310 filetypes = ( ("format "+self.appli.format_fichier.get(), ".com*"),("Tous",'*'))
311 elif self.code == 'HOMARD' :
312 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
314 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
315 if not hasattr(self,'initialdir'):
316 self.initialdir = self.appli.CONFIGURATION.initialdir
319 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
320 defaultextension=".comm",
321 filetypes = filetypes,
322 initialdir = self.initialdir)
325 e=extension_fichier(file)
326 self.JDCName=stripPath(file)
327 self.initialdir = os.path.dirname(os.path.abspath(file))
331 format=self.appli.format_fichier.get()
332 # Il faut convertir le contenu du fichier en fonction du format
333 if convert.plugins.has_key(format):
334 # Le convertisseur existe on l'utilise
335 p=convert.plugins[format]()
337 text=p.convert('exec',self.appli)
338 if not p.cr.estvide():
339 self.appli.affiche_infos("Erreur à la conversion")
341 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
342 texte = str(p.cr)).wait()
344 self.appli.listeFichiers.aOuvert(file)
346 # Il n'existe pas c'est une erreur
347 self.appli.affiche_infos("Type de fichier non reconnu")
348 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
351 # On se met dans le repertoire ou se trouve le fichier de commandes
352 # pour trouver les eventuels fichiers include ou autres
353 # localises a cote du fichier de commandes
354 os.chdir(self.initialdir)
355 CONTEXT.unset_current_step()
356 J=self.cata[0].JdC(procedure=text,appli=self.appli,
357 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
359 rep_mat=self.appli.CONFIGURATION.rep_mat,
361 if units is not None:
362 J.recorded_units=units
363 J.old_recorded_units=units
366 txt_exception = J.cr.get_mess_exception()
368 # des exceptions ont été levées à la création du JDC
369 # --> on affiche les erreurs mais pas le JDC
371 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
372 if self.appli.test == 0 :
373 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
375 self.ShowJDC(J,self.JDCName)
376 self.appli.toolbar.active_boutons()
377 # si le JDC ne contient rien (vide), on retourne ici
378 if len(self.JDC.etapes) == 0 : return
379 # dans le cas où le JDC est invalide, on affiche son CR
380 if not self.JDC.isvalid():
381 self.appli.top.update()
382 self.visuCR(mode='JDC')
384 def GetLabelJDC(self,nb_jdc = 'absent'):
386 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
388 if nb_jdc == 'absent':
389 nb_jdc = len(self.nb.pagenames())
391 label_onglet = 'JDC'+`nb_jdc`
392 if label_onglet not in self.nb.pagenames() :
395 return self.GetLabelJDC(nb_jdc)
397 def saveasJDC(self,event=None):
399 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
400 donner le nom du fichier de sauvegarde
402 self.saveJDC(echo='oui')
404 def saveJDC(self,echo='non'):
406 Sauvegarde le JDC courant.
407 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
408 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
410 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
412 if not hasattr(self,'JDC') : return 0
413 format=self.appli.format_fichier.get()
414 if generator.plugins.has_key(format):
415 # Le generateur existe on l'utilise
416 g=generator.plugins[format]()
417 jdc_formate=g.gener(self.JDC,format='beautifie')
418 if format == 'homard':
419 self.jdc_homard=g.get_homard()
420 if not g.cr.estvide():
421 self.appli.affiche_infos("Erreur à la generation")
422 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
425 # Il n'existe pas c'est une erreur
426 self.appli.affiche_infos("Format %s non reconnu" % format)
427 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
429 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
431 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
432 return self.asknomsauvegardeJDC()
433 elif self.JDCDisplay_courant.fichier != None :
435 # Pour sauvegarde dans l etude si lancement depuis salome
436 if self.appli.salome != 0:
438 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
439 from panelsSalome import SALOME_UNIQUE_BASE_Panel
440 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
441 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
445 MyCLinit=eficasCL.CLinit()
451 #PN Fin Ajout --> Salome
452 # le JDC a déjà un nom : on sauvegarde directement sans demander
453 # un autre nom au développeur
454 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
455 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
458 if self.appli.format_fichier.get() == 'homard':
459 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
460 self.JDCDisplay_courant.stop_modif()
461 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
464 def asknomsauvegardeJDC(self):
465 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
466 titre = "Sauvegarde d'un fichier de commandes "+self.code
467 if self.code == 'ASTER':
469 filtyp = ( ("ASTER", ".comm"),)
472 filtyp = ( (self.code, ".py"),)
473 sauvegarde = asksaveasfilename(title=titre,
474 defaultextension=defext,
476 initialdir = self.appli.CONFIGURATION.initialdir)
477 #initialdir = self.appli.CONFIGURATION.rep_user)
479 # PN ajout --> Salome
480 # Pour sauvegarde dans l etude si lancement depuis salome
481 if self.appli.salome != 0:
483 self.appli.salome.rangeInStudy(sauvegarde)
484 from panelsSalome import SALOME_UNIQUE_BASE_Panel
485 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
486 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
490 MyCLinit=eficasCL.CLinit()
496 # PN fin ajout --> Salome
497 if not save_in_file(sauvegarde,self.jdc_fini,None) :
498 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
501 if self.appli.format_fichier.get() == 'homard':
502 self.save_homard(sauvegarde,self.jdc_homard)
503 self.JDCDisplay_courant.stop_modif()
504 self.appli.affiche_infos("Sauvegarde effectuée")
505 if sauvegarde != self.JDCDisplay_courant.fichier :
506 # l'utilisateur a sauvegardé le JDC sous un autre nom
507 self.JDCDisplay_courant.fichier = sauvegarde
508 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
509 self.JDC.changefichier(sauvegarde)
515 def changeNomPage(self):
516 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
517 et recrée un autre onglet à la même place avec le bon nom
520 self.JDCDisplay_courant.jdc.nom = nom
521 nom_page = self.nb.getcurselection()
522 num_page = self.nb.index(nom_page)
523 tab = self.nb.tab(num_page)
524 tab.configure(text = nom)
526 def exitEFICAS(self,event=None):
528 Permet de sortir d'EFICAS en demandant à l'utilisateur
529 s'il veut sauvegarder les modifications en cours
531 liste = self.GetListeJDCaSauvegarder()
533 # Certains fichiers n'ont pas été sauvegardés ...
534 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
535 test = self.saveall(liste)
538 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
539 for JDCDisplay in self.liste_JDCDisplay:
540 JDCDisplay.jdc.supprime()
544 def GetListeJDCaSauvegarder(self) :
545 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
546 if not self.JDCDisplay_courant : return []
547 if len(self.liste_JDCDisplay) == 0 : return l
549 for JDCDisplay in self.liste_JDCDisplay:
550 if JDCDisplay.modified == 'o' :
554 def copy(self,event=None):
556 Lance la copie sur le JDC courant
558 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
560 def paste(self,event=None):
562 Lance le collage sur le JDC courant
564 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
566 def cut(self,event=None):
568 Lance le cut sur le JDC courant
570 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
574 Lance la suppression du noeud courant
576 if not self.JDCDisplay_courant : return
577 self.JDCDisplay_courant.init_modif()
578 self.JDCDisplay_courant.node_selected.delete()
580 def visuJDC_py(self,event=None):
582 Méthode permettant d'afficher dans une fenêtre à part l'écho au
583 format python du jdc courant
585 if not hasattr(self,'JDC') : return
586 jdc_fini = self.get_text_JDC('python')
587 if jdc_fini == None : return
589 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
594 Méthode permettant d'afficher dans une fenêtre à part l'écho au
595 format .comm ou .py du jdc courant
597 if not hasattr(self,'JDC') : return
598 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
599 format=self.appli.format_fichier.get()
600 self.jdc_fini = self.get_text_JDC(format)
601 if self.jdc_fini == None : return
602 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
604 def get_text_JDC(self,format):
605 if generator.plugins.has_key(format):
606 # Le generateur existe on l'utilise
607 g=generator.plugins[format]()
608 jdc_formate=g.gener(self.JDC,format='beautifie')
609 if not g.cr.estvide():
610 self.appli.affiche_infos("Erreur à la generation")
611 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
616 # Il n'existe pas c'est une erreur
617 self.appli.affiche_infos("Format %s non reconnu" % format)
618 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
623 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
624 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
625 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
627 if not self.JDCDisplay_courant : return
629 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
630 if cle_doc == None : return
631 cle_doc = string.replace(cle_doc,'.','')
632 cle_doc = string.replace(cle_doc,'-','')
633 commande = self.appli.CONFIGURATION.exec_acrobat
634 nom_fichier = cle_doc+".pdf"
635 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,nom_fichier))
637 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
638 elif os.name == 'posix':
639 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
640 pid = os.system(script)
641 except AttributeError:
642 traceback.print_exc()
645 def visu_a_plat(self,event=None):
647 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
649 if not hasattr(self,'JDC') : return
650 titre = 'fichier '+ self.JDCName + ' à plat '
651 self.jdc_fini = self.get_text_JDC('aplat')
652 if self.jdc_fini == None : return
653 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
655 def visu_txt_brut_JDC(self,event=None):
657 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
659 if not hasattr(self,'JDC') : return
660 titre = "fichier de commandes utilisateur"
661 #texte = self.JDC.procedure
663 if self.JDCDisplay_courant.fichier == None:
664 self.appli.affiche_infos("Pas de fichier initial")
665 showerror("Impossible de visualiser le fichier initial",
666 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
668 f=open(self.JDCDisplay_courant.fichier,'r')
671 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
673 def affichage_fichier_ini(self):
675 Affichage des valeurs des paramètres relus par Eficas
677 self.appli.CONFIGURATION.affichage_fichier_ini()
679 def saveall(self,liste):
681 Sauvegarde tous les JDC contenus dans liste
684 for JDCDisplay in liste :
685 self.JDCDisplay_courant=JDCDisplay
686 self.JDC = JDCDisplay.jdc
687 test = test * self.saveJDC(echo = 'non')
690 def save_homard(self,nom,texte):
691 file_homard=nom+'.conf_homard'
693 f=open(file_homard,'w')
699 print "Pb a la sauvegarde sous le format homard"
700 if self.appli.salome != 0:
702 self.appli.salome.rangeInStudy(file_homard,"_CONF")
704 # ---------------------------------------------------------------------------
705 # Méthodes liées aux mots-clés inconnus
706 # ---------------------------------------------------------------------------
708 def mc_inconnus(self):
709 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
710 o = fenetre_mc_inconnus(l_mc)
711 l = o.wait_new_list()
712 #print "mc_inconnus_new_list: ",l
713 #CCAR: Il n' y a pas de retour vers le JDC
715 def aideEFICAS(self,event=None):
716 AIDE.go(master=self.parent)
718 def update_jdc_courant(self):
719 self.JDCDisplay_courant.update()