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 if self.test == 1: raise Exception("Erreur: "+texte)
99 w = Label(self.dialog.interior(),
101 w.pack(padx = 10, pady = 10)
103 labeltexte = 'Fichier pour unite %d :' % unite
105 labeltexte = 'Fichier à poursuivre :'
106 self._ulfile=Pmw.EntryField(self.dialog.interior(),
108 label_text = labeltexte,
110 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
111 self._ulfile.component('entry').focus_set()
112 self.dialog.activate(geometry='centerscreenalways')
113 return self.ulfile,self.text
115 def get_source(self,file):
117 format=self.format_fichier.get()
118 # Il faut convertir le contenu du fichier en fonction du format
119 if convert.plugins.has_key(format):
120 # Le convertisseur existe on l'utilise
121 p=convert.plugins[format]()
123 text=p.convert('execnoparseur')
124 if not p.cr.estvide():
125 self.affiche_infos("Erreur à la conversion")
127 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
128 texte = str(p.cr)).wait()
132 # Il n'existe pas c'est une erreur
133 self.affiche_infos("Type de fichier non reconnu")
134 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
137 def affiche_texte(self,entete,texte):
138 """Cette methode ouvre une fenetre modale dans laquelle on affiche un texte
140 self.affiche_infos(entete)
141 f=Fenetre(self, titre=entete, texte = texte)