1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 Ce module contient la classe EFICAS qui est l'application
22 proprement dite. Elle est dérivée de la classe APPLI
26 from Tkinter import Label
28 from tkCommonDialog import Dialog
29 from tkFileDialog import *
30 from tkMessageBox import askyesno,showerror
36 from widgets import Fenetre
38 class EFICAS(appli.APPLI):
41 from prefs import appli_composants
43 appli_composants=['readercata','bureau','browser','options']
45 def get_texte_infos(self):
46 texte=appli.APPLI.get_texte_infos(self)
47 texte = texte + 'Catalogue utilisé : %s\n' % self.bureau.fic_cata
51 self.bureau.exitEFICAS()
53 def browse(self,result):
54 if result == 'Browse':
55 self.ulfile = askopenfilename(title="Choix fichier :")
56 self._ulfile.setentry(self.ulfile)
58 self.ulfile = self._ulfile.get()
59 # On utilise le convertisseur défini par format_fichier
60 source=self.get_source(self.ulfile)
62 # On a réussi à convertir le fichier self.ulfile
63 self.dialog.deactivate(result)
66 # Une erreur a été rencontrée
68 elif result == 'Cancel':
69 self._ulfile.setentry('')
70 self.dialog.deactivate(result)
74 def get_file(self,unite=None,fic_origine = ''):
76 Retourne le nom du fichier correspondant a l unite logique unite (entier)
79 titre = "Choix unite %d " %unite
81 titre = "Choix d'un fichier de poursuite"
82 self.dialog=Pmw.Dialog(self.top,
84 buttons = ('OK', 'Browse','Cancel'),
88 self.dialog.withdraw()
90 texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
91 texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
93 texte="Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
94 texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
95 w = Label(self.dialog.interior(),
97 w.pack(padx = 10, pady = 10)
99 labeltexte = 'Fichier pour unite %d :' % unite
101 labeltexte = 'Fichier à poursuivre :'
102 self._ulfile=Pmw.EntryField(self.dialog.interior(),
104 label_text = labeltexte,
106 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
107 self._ulfile.component('entry').focus_set()
108 self.dialog.activate(geometry='centerscreenalways')
109 return self.ulfile,self.text
111 def get_source(self,file):
113 format=self.format_fichier.get()
114 # Il faut convertir le contenu du fichier en fonction du format
115 if convert.plugins.has_key(format):
116 # Le convertisseur existe on l'utilise
117 p=convert.plugins[format]()
119 text=p.convert('execnoparseur')
120 if not p.cr.estvide():
121 self.affiche_infos("Erreur à la conversion")
123 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
124 texte = str(p.cr)).wait()
128 # Il n'existe pas c'est une erreur
129 self.affiche_infos("Type de fichier non reconnu")
130 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
133 def affiche_texte(self,entete,texte):
134 """Cette methode ouvre une fenetre modale dans laquelle on affiche un texte
136 self.affiche_infos(entete)
137 f=Fenetre(self, titre=entete, texte = texte)