2 Ce module contient la classe EFICAS qui est l'application
3 proprement dite. Elle est dérivée de la classe APPLI
7 from Tkinter import Label
9 from tkCommonDialog import Dialog
10 from tkFileDialog import *
11 from tkMessageBox import askyesno,showerror
16 from widgets import Fenetre
18 class EFICAS(appli.APPLI):
20 extensions=['readercata','bureau','browser','options']
22 def get_texte_infos(self):
23 texte=appli.APPLI.get_texte_infos(self)
24 texte = texte + 'Catalogue utilisé : %s\n' % self.bureau.fic_cata
28 self.bureau.exitEFICAS()
30 def browse(self,result):
31 if result == 'Browse':
32 self.ulfile = askopenfilename(title="Choix fichier :")
33 self._ulfile.setentry(self.ulfile)
35 self.ulfile = self._ulfile.get()
36 # On utilise le convertisseur défini par format_fichier
37 source=self.get_source(self.ulfile)
39 # On a réussi à convertir le fichier self.ulfile
40 self.dialog.deactivate(result)
43 # Une erreur a été rencontrée
45 elif result == 'Cancel':
46 self._ulfile.setentry('')
47 self.dialog.deactivate(result)
51 def get_file(self,unite=None,fic_origine = ''):
53 Retourne le nom du fichier correspondant a l unite logique unite (entier)
56 titre = "Choix unite %d " %unite
58 titre = "Choix d'un fichier de poursuite"
59 self.dialog=Pmw.Dialog(self.top,
61 buttons = ('OK', 'Browse','Cancel'),
65 self.dialog.withdraw()
67 texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
68 texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
70 texte="Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
71 texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
72 w = Label(self.dialog.interior(),
74 w.pack(padx = 10, pady = 10)
76 labeltexte = 'Fichier pour unite %d :' % unite
78 labeltexte = 'Fichier à poursuivre :'
79 self._ulfile=Pmw.EntryField(self.dialog.interior(),
81 label_text = labeltexte,
83 self._ulfile.pack(fill='x', expand=1, padx=10, pady=5)
84 self._ulfile.component('entry').focus_set()
85 self.dialog.activate(geometry='centerscreenalways')
86 return self.ulfile,self.text
88 def get_source(self,file):
90 format=self.format_fichier.get()
91 # Il faut convertir le contenu du fichier en fonction du format
92 if convert.plugins.has_key(format):
93 # Le convertisseur existe on l'utilise
94 p=convert.plugins[format]()
96 text=p.convert('execnoparseur')
97 if not p.cr.estvide():
98 self.affiche_infos("Erreur à la conversion")
100 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
101 texte = str(p.cr)).wait()
105 # Il n'existe pas c'est une erreur
106 self.affiche_infos("Type de fichier non reconnu")
107 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")