Salome HOME
mise a jour du COPYRIGHT
[tools/eficas.git] / Editeur / eficas.py
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.
8 #
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.
13 #
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.
17 #
18 #
19 # ======================================================================
20 """
21     Ce module contient la classe EFICAS qui est l'application
22     proprement dite. Elle est dérivée de la classe APPLI
23 """
24 # Modules Python
25 import string
26 from Tkinter import Label
27 import Pmw
28 from tkCommonDialog import Dialog
29 from tkFileDialog import *
30 from tkMessageBox import askyesno,showerror
31 import traceback
32
33 # Modules Eficas
34 import appli
35 from widgets import Fenetre
36
37 class EFICAS(appli.APPLI):
38
39   try:
40      from prefs import extensions
41   except:
42      extensions=['readercata','bureau','browser','options']
43
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
47      return texte
48
49   def exitEFICAS(self):
50      self.bureau.exitEFICAS()
51
52   def browse(self,result):
53       if result == 'Browse':
54         self.ulfile = askopenfilename(title="Choix fichier :")
55         self._ulfile.setentry(self.ulfile)
56       elif result == 'OK':
57         self.ulfile = self._ulfile.get()
58         # On utilise le convertisseur défini par format_fichier
59         source=self.get_source(self.ulfile)
60         if source:
61            # On a réussi à convertir le fichier self.ulfile
62            self.dialog.deactivate(result)
63            self.text=source
64         else:
65            # Une erreur a été rencontrée
66            self.text=''
67       elif result == 'Cancel':
68         self._ulfile.setentry('')
69         self.dialog.deactivate(result)
70         self.ulfile = None
71         self.text=''
72
73   def get_file(self,unite=None,fic_origine = ''):
74       """ 
75           Retourne le nom du fichier correspondant a l unite logique unite (entier)
76       """
77       if unite :
78           titre = "Choix unite %d " %unite
79       else:
80           titre = "Choix d'un fichier de poursuite"
81       self.dialog=Pmw.Dialog(self.top,
82                              title = titre,
83                              buttons = ('OK', 'Browse','Cancel'),
84                              defaultbutton='OK',
85                              command=self.browse,
86                              )
87       self.dialog.withdraw()
88       if unite :
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
91       else:
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(),
95                 text = texte)
96       w.pack(padx = 10, pady = 10)
97       if unite != None :
98           labeltexte = 'Fichier pour unite %d :' % unite
99       else:
100           labeltexte = 'Fichier à poursuivre :'
101       self._ulfile=Pmw.EntryField(self.dialog.interior(),
102                                   labelpos = 'w',
103                                   label_text = labeltexte,
104                                   )
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
109
110   def get_source(self,file):
111       import convert
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]()
117          p.readfile(file)
118          text=p.convert('execnoparseur')
119          if not p.cr.estvide():
120             self.affiche_infos("Erreur à la conversion")
121             Fenetre(self,
122                     titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
123                     texte = str(p.cr)).wait()
124             return text
125          return text
126       else:
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")
130          return None
131