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):
42 name='prefs_'+prefs.code
43 prefsCode=__import__(name)
44 from prefsCode import appli_composants
46 appli_composants=['readercata','bureau','browser','options']
48 def get_texte_infos(self):
49 texte=appli.APPLI.get_texte_infos(self)
50 texte = texte + 'Catalogue utilisé : %s\n' % self.bureau.fic_cata
54 self.bureau.exitEFICAS()
59 def browse(self,result):
60 if result == 'Browse':
61 self.ulfile = askopenfilename(parent=self.dialog.component('hull'),title="Choix fichier :")
62 self._ulfile.setentry(self.ulfile)
64 self.ulfile = self._ulfile.get()
65 # On utilise le convertisseur défini par format_fichier
66 source=self.get_source(self.ulfile)
68 # On a réussi à convertir le fichier self.ulfile
69 self.dialog.deactivate(result)
72 # Une erreur a été rencontrée
74 elif result == 'Cancel':
75 self._ulfile.setentry('')
76 self.dialog.deactivate(result)
80 def get_file(self,unite=None,fic_origine = ''):
82 Retourne le nom du fichier correspondant a l unite logique unite (entier)
85 titre = "Choix unite %d " %unite
87 titre = "Choix d'un fichier de poursuite"
88 self.dialog=Pmw.Dialog(self.top,
90 buttons = ('OK', 'Browse','Cancel'),
94 self.dialog.withdraw()
96 texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
97 texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
99 texte="Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
100 texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
101 if self.test == 1: raise Exception("Erreur: "+texte)
102 w = Label(self.dialog.interior(),
104 w.pack(padx = 10, pady = 10)
106 labeltexte = 'Fichier pour unite %d :' % unite
108 labeltexte = 'Fichier à poursuivre :'
109 self._ulfile=Pmw.EntryField(self.dialog.interior(),
111 label_text = labeltexte,
113 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
114 self._ulfile.component('entry').focus_set()
115 self.dialog.activate(geometry='centerscreenalways')
116 return self.ulfile,self.text
118 def get_source(self,file):
120 format=self.format_fichier.get()
121 # Il faut convertir le contenu du fichier en fonction du format
122 if convert.plugins.has_key(format):
123 # Le convertisseur existe on l'utilise
124 p=convert.plugins[format]()
126 text=p.convert('execnoparseur')
127 if not p.cr.estvide():
128 self.affiche_infos("Erreur à la conversion")
130 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
131 texte = str(p.cr)).wait()
135 # Il n'existe pas c'est une erreur
136 self.affiche_infos("Type de fichier non reconnu")
137 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
140 def affiche_texte(self,entete,texte):
141 """Cette methode ouvre une fenetre modale dans laquelle on affiche un texte
143 self.affiche_infos(entete)
144 f=Fenetre(self, titre=entete, texte = texte)