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 EFICAS qui est l'application
23 proprement dite. Elle est dérivée de la classe APPLI
27 from Tkinter import Label
32 from widgets import showerror
33 from widgets import askopenfilename
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()
56 def browse(self,result):
57 if result == 'Browse':
58 self.ulfile = askopenfilename(title="Choix fichier :")
59 self._ulfile.setentry(self.ulfile)
61 self.ulfile = self._ulfile.get()
62 # On utilise le convertisseur défini par format_fichier
63 source=self.get_source(self.ulfile)
65 # On a réussi à convertir le fichier self.ulfile
66 self.dialog.deactivate(result)
69 # Une erreur a été rencontrée
71 elif result == 'Cancel':
72 self._ulfile.setentry('')
73 self.dialog.deactivate(result)
77 def get_file(self,unite=None,fic_origine = ''):
79 Retourne le nom du fichier correspondant a l unite logique unite (entier)
82 titre = "Choix unite %d " %unite
84 titre = "Choix d'un fichier de poursuite"
85 self.dialog=Pmw.Dialog(self.top,
87 buttons = ('OK', 'Browse','Cancel'),
91 self.dialog.withdraw()
93 texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
94 texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
96 texte="Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
97 texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
98 w = Label(self.dialog.interior(),
100 w.pack(padx = 10, pady = 10)
102 labeltexte = 'Fichier pour unite %d :' % unite
104 labeltexte = 'Fichier à poursuivre :'
105 self._ulfile=Pmw.EntryField(self.dialog.interior(),
107 label_text = labeltexte,
109 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
110 self._ulfile.component('entry').focus_set()
111 self.dialog.activate(geometry='centerscreenalways')
112 return self.ulfile,self.text
114 def get_source(self,file):
116 format=self.format_fichier.get()
117 # Il faut convertir le contenu du fichier en fonction du format
118 if convert.plugins.has_key(format):
119 # Le convertisseur existe on l'utilise
120 p=convert.plugins[format]()
122 text=p.convert('execnoparseur')
123 if not p.cr.estvide():
124 self.affiche_infos("Erreur à la conversion")
126 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
127 texte = str(p.cr)).wait()
131 # Il n'existe pas c'est une erreur
132 self.affiche_infos("Type de fichier non reconnu")
133 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
136 def affiche_texte(self,entete,texte):
137 """Cette methode ouvre une fenetre modale dans laquelle on affiche un texte
139 self.affiche_infos(entete)
140 f=Fenetre(self, titre=entete, texte = texte)