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
31 from widgets import showerror
32 from widgets import askopenfilename
35 from widgets import Fenetre
37 class EFICAS(appli.APPLI):
40 from prefs import appli_composants
42 appli_composants=['readercata','bureau','browser','options']
44 def get_texte_infos(self):
45 texte=appli.APPLI.get_texte_infos(self)
46 texte = texte + 'Catalogue utilisé : %s\n' % self.bureau.fic_cata
50 self.bureau.exitEFICAS()
52 def browse(self,result):
53 if result == 'Browse':
54 self.ulfile = askopenfilename(title="Choix fichier :")
55 self._ulfile.setentry(self.ulfile)
57 self.ulfile = self._ulfile.get()
58 # On utilise le convertisseur défini par format_fichier
59 source=self.get_source(self.ulfile)
61 # On a réussi à convertir le fichier self.ulfile
62 self.dialog.deactivate(result)
65 # Une erreur a été rencontrée
67 elif result == 'Cancel':
68 self._ulfile.setentry('')
69 self.dialog.deactivate(result)
73 def get_file(self,unite=None,fic_origine = ''):
75 Retourne le nom du fichier correspondant a l unite logique unite (entier)
78 titre = "Choix unite %d " %unite
80 titre = "Choix d'un fichier de poursuite"
81 self.dialog=Pmw.Dialog(self.top,
83 buttons = ('OK', 'Browse','Cancel'),
87 self.dialog.withdraw()
89 texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
90 texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
92 texte="Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
93 texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
94 w = Label(self.dialog.interior(),
96 w.pack(padx = 10, pady = 10)
98 labeltexte = 'Fichier pour unite %d :' % unite
100 labeltexte = 'Fichier à poursuivre :'
101 self._ulfile=Pmw.EntryField(self.dialog.interior(),
103 label_text = labeltexte,
105 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
106 self._ulfile.component('entry').focus_set()
107 self.dialog.activate(geometry='centerscreenalways')
108 return self.ulfile,self.text
110 def get_source(self,file):
112 format=self.format_fichier.get()
113 # Il faut convertir le contenu du fichier en fonction du format
114 if convert.plugins.has_key(format):
115 # Le convertisseur existe on l'utilise
116 p=convert.plugins[format]()
118 text=p.convert('execnoparseur')
119 if not p.cr.estvide():
120 self.affiche_infos("Erreur à la conversion")
122 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
123 texte = str(p.cr)).wait()
127 # Il n'existe pas c'est une erreur
128 self.affiche_infos("Type de fichier non reconnu")
129 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
132 def affiche_texte(self,entete,texte):
133 """Cette methode ouvre une fenetre modale dans laquelle on affiche un texte
135 self.affiche_infos(entete)
136 f=Fenetre(self, titre=entete, texte = texte)