X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Freadercata.py;h=5b72e6b305374d5cd078c9853eecc92d74313f74;hb=8510bbc053fd803ff9ee64efff042b369705f60d;hp=68e4aaa917f5e032b54abfcf2af04afed88c25f1;hpb=fca34723f901f24c7050606374fe286480231f8e;p=tools%2Feficas.git diff --git a/Editeur/readercata.py b/Editeur/readercata.py index 68e4aaa9..5b72e6b3 100644 --- a/Editeur/readercata.py +++ b/Editeur/readercata.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -28,7 +29,6 @@ import os,sys,py_compile import traceback import cPickle import Pmw -from tkMessageBox import showinfo,showerror # Modules Eficas import prefs @@ -36,6 +36,7 @@ import splash import fontes import analyse_catalogue from Noyau.N_CR import CR +from widgets import showinfo,showerror from widgets import Fenetre from utils import init_rep_cata_dev @@ -59,6 +60,8 @@ class READERCATA: self.parent=parent self.code=self.appli.code self.appli.format_fichier.set('python') + self.version_code=self.appli.version_code + self.fic_cata=None self.OpenCata() self.cataitem=None @@ -68,66 +71,86 @@ class READERCATA: dans le répertoire Cata """ message1 = "Compilation des fichiers Eficas \n\n Veuillez patienter ..." - splash._splash.configure(text = message1) + if self.appli.test == 0 : + splash._splash.configure(text = message1) self.configure_barre(4) - if len(self.appli.CONFIGURATION.catalogues) == 1: - self.fic_cata = self.appli.CONFIGURATION.catalogues[0][2] + + liste_cata_possibles=[] + for catalogue in self.appli.CONFIGURATION.catalogues: + if catalogue[0] == self.code : + liste_cata_possibles.append(catalogue) + + if len(liste_cata_possibles)==0: + showerror("Import du catalogue","Pas de catalogue defini pour le code %s" % self.code) + self.appli.quit() + sys.exit(1) + + if self.version_code is not None: + # La version a ete fixee + for cata in liste_cata_possibles: + if self.version_code == cata[1]: + self.fic_cata = cata[2] + self.appli.format_fichier.set(cata[3]) + elif len(liste_cata_possibles)==1: + self.fic_cata = liste_cata_possibles[0][2] self.code = self.appli.CONFIGURATION.catalogues[0][0] - self.version_code = self.appli.CONFIGURATION.catalogues[0][1] - self.appli.format_fichier.set(self.appli.CONFIGURATION.catalogues[0][3]) - elif len(self.appli.CONFIGURATION.catalogues) == 0: - # aucun catalogue défini dans le fichier Accas/editeur.ini - if self.code == 'ASTER' : - self.fic_cata = os.path.join(prefs.CODE_PATH,'Cata','cata.py') - elif self.code == 'SATURNE' : - self.fic_cata = os.path.join(prefs.CODE_PATH,'Cata','cata_saturne.py') - elif self.code == 'DESCARTES': - self.fic_cata = os.path.join(prefs.CODE_PATH,'Cata','cata_descartes.py') - else : - print 'Code inconnu' - sys.exit(0) + self.version_code = liste_cata_possibles[0][1] + self.appli.format_fichier.set(liste_cata_possibles[0][3]) else: # plusieurs catalogues sont disponibles : il faut demander à l'utilisateur # lequel il veut utiliser ... self.ask_choix_catalogue() + if self.fic_cata == None : - self.parent.destroy() + print "Pas de catalogue pour code %s, version %s" %(self.code,self.version_code) sys.exit(0) + # détermination de fic_cata_c et fic_cata_p self.fic_cata_c = self.fic_cata + 'c' self.fic_cata_p = os.path.splitext(self.fic_cata)[0]+'_pickled.py' - splash._splash.configure(text = "Debut compil cata: %d s" % time.clock()) + #if self.appli.test == 0 : + # splash._splash.configure(text = "Debut compil cata: %d s" % time.clock()) # compilation éventuelle du catalogue - test = self.compile_cata(self.fic_cata,self.fic_cata_c) - self.update_barre() - splash._splash.configure(text = "Fin compil cata: %d s" % time.clock()) - if not test : showerror("Compilation catalogue","Impossible de compiler le catalogue %s" %self.fic_cata) + #test = self.compile_cata(self.fic_cata,self.fic_cata_c) + #self.update_barre() + #if self.appli.test == 0 : + # splash._splash.configure(text = "Fin compil cata: %d s" % time.clock()) + #if not test : showerror("Compilation catalogue","Impossible de compiler le catalogue %s" %self.fic_cata) # import du catalogue - splash._splash.configure(text = "Debut import_cata: %d s" % time.clock()) + if self.appli.test == 0 : + splash._splash.configure(text = "Debut import_cata: %d s" % time.clock()) self.cata = self.import_cata(self.fic_cata) self.update_barre() - splash._splash.configure(text = "Fin import_cata: %d s" % time.clock()) + if self.appli.test == 0 : + splash._splash.configure(text = "Fin import_cata: %d s" % time.clock()) if not self.cata : showerror("Import du catalogue","Impossible d'importer le catalogue %s" %self.fic_cata) # # analyse du catalogue (ordre des mots-clés) # - splash._splash.configure(text = "Debut Retrouve_Ordre: %d s" % time.clock()) + if self.appli.test == 0 : + splash._splash.configure(text = "Debut Retrouve_Ordre: %d s" % time.clock()) # Retrouve_Ordre_Cata_Standard fait une analyse textuelle du catalogue # remplacé par Retrouve_Ordre_Cata_Standard_autre qui utilise une numerotation # des mots clés à la création #self.Retrouve_Ordre_Cata_Standard() self.Retrouve_Ordre_Cata_Standard_autre() self.update_barre() - splash._splash.configure(text = "Fin Retrouve_Ordre: %d s" % time.clock()) + if self.appli.test == 0 : + splash._splash.configure(text = "Fin Retrouve_Ordre: %d s" % time.clock()) # # analyse des données liées à l'IHM : UIinfo # uiinfo.traite_UIinfo(self.cata) self.update_barre() + # + # traitement des clefs documentaires + # + self.traite_clefs_documentaires() + # chargement et analyse des catalogues développeur (le cas échéant) # if self.appli.CONFIGURATION.isdeveloppeur == 'OUI' : @@ -154,14 +177,13 @@ class READERCATA: """ Réalise l'import du catalogue dont le chemin d'accès est donné par cata """ - import imp - splash._splash.configure(text = "Chargement du catalogue") + if self.appli.test == 0 : + splash._splash.configure(text = "Chargement du catalogue") nom_cata = os.path.splitext(os.path.basename(cata))[0] rep_cata = os.path.dirname(cata) sys.path[:0] = [rep_cata] try : - f,p,d = imp.find_module(nom_cata) - o = imp.load_module(nom_cata,f,p,d) + o=__import__(nom_cata) return o except Exception,e: traceback.print_exc() @@ -174,7 +196,7 @@ class READERCATA: Pour chaque entité du catlogue on crée une liste de nom ordre_mc qui contient le nom des mots clés dans le bon ordre """ - self.cata_ordonne_dico=autre_analyse_cata.analyse_catalogue(self.cata) + self.cata_ordonne_dico,self.appli.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata) def Retrouve_Ordre_Cata_Standard(self): """ @@ -207,7 +229,8 @@ class READERCATA: if self.code != 'ASTER' : return fic_cata = os.path.join(self.appli.CONFIGURATION.path_cata_dev,'cata_developpeur.py') message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev - splash._splash.configure(text = message,barre='oui') + if self.appli.test == 0 : + splash._splash.configure(text = message,barre='oui') cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata) self.cata_dev_ordonne_cr = cata_dev_ordonne.cr cata_dev_ordonne_dico = cata_dev_ordonne.entites @@ -223,8 +246,9 @@ class READERCATA: """ if self.code != 'ASTER' : return message="Chargement catalogue développeur présent dans :\n %s..." % self.appli.CONFIGURATION.path_cata_dev - splash._splash.configure(text = message,barre='oui') - cata_dev_ordonne_dico = autre_analyse_cata.analyse_catalogue(self.cata_dev) + if self.appli.test == 0 : + splash._splash.configure(text = message,barre='oui') + cata_dev_ordonne_dico,self.appli.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata) self.cata_ordonne_dico.update(cata_dev_ordonne_dico) self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" ) @@ -238,7 +262,8 @@ class READERCATA: try: f = open(self.fic_cata_p) u = cPickle.Unpickler(f) - splash._splash.configure(text = "Analyse du catalogue") + if self.appli.test == 0 : + splash._splash.configure(text = "Analyse du catalogue") self.cata_ordonne_dico = u.load() f.close() except : @@ -246,7 +271,8 @@ class READERCATA: # ou (le plus probable) s'il a été créé sous un autre OS self.Get_Ordre_Cata(mode='cata') elif mode == 'cata': - splash._splash.configure(text = "Analyse du catalogue",barre='oui') + if self.appli.test == 0 : + splash._splash.configure(text = "Analyse du catalogue",barre='oui') cata_ordonne = analyse_catalogue.analyse_catalogue(self,self.fic_cata) self.cata_ordonne_cr = cata_ordonne.cr self.cata_ordonne_dico = cata_ordonne.entites @@ -277,7 +303,8 @@ class READERCATA: # test si plusieurs catalogues ou non if len(liste_choix) == 0: showerror("Aucun catalogue déclaré pour %s" %self.code) - self.quit() + self.appli.quit() + sys.exit(1) elif len(liste_choix) == 1: self.fic_cata = self.dico_catalogues[liste_choix[0]][2] self.version_code = liste_choix[0] @@ -334,7 +361,8 @@ class READERCATA: if time1 > time2: try: # le catalogue doit être recompilé avant d'être importé - splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...") + if self.appli.test == 0 : + splash._splash.configure(text="Compilation du catalogue\nCela peut prendre plusieurs secondes ...") py_compile.compile(cata) except: return 0 @@ -349,14 +377,16 @@ class READERCATA: """ Configure la barre de progression en lui passant comme paramètre le nombre de commandes du catalogue qui lui sert à déterminer la longueur de son incrément """ try: - splash._splash.configure(barre='oui',ratio = nbcommandes) + if self.appli.test == 0 : + splash._splash.configure(barre='oui',ratio = nbcommandes) except: pass def update_barre(self): """ Update la position de la barre de progression : la fait progresser de son incrément """ try: - splash._splash.update_barre() + if self.appli.test == 0 : + splash._splash.update_barre() except: pass @@ -377,3 +407,21 @@ class READERCATA: texte_cr = str(cr) self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr) + + def traite_clefs_documentaires(self): + try: + self.fic_cata_clef=os.path.splitext(self.fic_cata_c)[0]+'_clefs_docu' + f=open(self.fic_cata_clef) + except: + #print "Pas de fichier associé contenant des clefs documentaires" + return + + dict_clef_docu={} + for l in f.readlines(): + clef=l.split(':')[0] + docu=l.split(':')[1] + docu=docu[0:-1] + dict_clef_docu[clef]=docu + for oper in self.cata.JdC.commandes: + if dict_clef_docu.has_key(oper.nom): + oper.docu=dict_clef_docu[oper.nom]