class BLOC(N_BLOC.BLOC,I_ENTITE.ENTITE):
class_instance=A_MCBLOC.MCBLOC
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_BLOC.BLOC.__init__(self,*tup,**args)
+
class FACT(N_FACT.FACT,I_ENTITE.ENTITE):
class_instance=A_MCFACT.MCFACT
list_instance=A_MCLIST.MCList
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_FACT.FACT.__init__(self,*tup,**args)
+
class MACRO(N_MACRO.MACRO,I_ENTITE.ENTITE):
class_instance=A_MACRO_ETAPE.MACRO_ETAPE
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_MACRO.MACRO.__init__(self,*tup,**args)
+
class OPER(N_OPER.OPER,I_ENTITE.ENTITE):
class_instance=A_ETAPE.ETAPE
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_OPER.OPER.__init__(self,*tup,**args)
class PROC(N_PROC.PROC,I_ENTITE.ENTITE):
class_instance=A_PROC_ETAPE.PROC_ETAPE
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_PROC.PROC.__init__(self,*tup,**args)
+
class SIMP(N_SIMP.SIMP,I_ENTITE.ENTITE):
class_instance=A_MCSIMP.MCSIMP
+ def __init__(self,*tup,**args):
+ I_ENTITE.ENTITE.__init__(self)
+ N_SIMP.SIMP.__init__(self,*tup,**args)
+
lang='fr'
labels= ('Fichier','Edition','Jeu de commandes',
- # 'Catalogue','Browsers','Options'
+# 'Catalogue','Browsers','Options',
'Aide',
)
appli_composants=['readercata','bureau',
- # 'browser','options'
+# 'browser','options'
]
menu_defs={ 'bureau': [
from Noyau.N_CR import CR
#
-__Id__="$Id: analyse_catalogue.py,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $"
+__Id__="$Id: analyse_catalogue.py,v 1.2 2002/05/15 15:31:58 eficas Exp $"
__version__="$Name: $"
#
l_noms_commandes = ['OPER','PROC','MACRO','FORM']
l=[]
d={}
if len(self.children)==0:
- self.liste = l
- self.dico = d
+ self.ordre_mc = l
+ self.entites = d
return
try :
for child in self.children:
l.append(child.nom)
d[child.nom]=child
- self.liste = l
- self.dico = d
+ self.ordre_mc = l
+ self.entites = d
except:
print 'erreur :',self.nom,self.__class__
for cmd in self.liste_commandes:
l.append(cmd.nom)
d[cmd.nom]=cmd
- self.liste = l
- self.dico = d
+ self.ordre_mc = l
+ self.entites = d
def report(self):
""" retourne l'objet rapport du catalogue de commande """
cata_ordonne = analyse_catalogue(None,fic_cata)
f = open(fic_cata_p,'w+')
p = cPickle.Pickler(f)
- p.dump(cata_ordonne.dico)
+ p.dump(cata_ordonne.entites)
f.close()
if __name__ == "__main__" :
--- /dev/null
+def traite_entite(entite):
+ """
+ Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc
+ qui est une liste contenant le nom des sous entites dans l'ordre
+ de leur apparition dans le catalogue.
+ L'ordre d'apparition dans le catalogue est donné par l'attribut _no
+ de l'entite
+ La fonction active le meme type de traitement pour les sous entites
+ de entite
+ """
+ l=[]
+ for k,v in entite.entites.items():
+ traite_entite(v)
+ l.append((v._no,k))
+ l.sort()
+ entite.ordre_mc=[ item for index, item in l ]
+
+def analyse_catalogue(cata):
+ """
+ Cette fonction analyse le catalogue cata pour construire avec l'aide
+ de traite_entite la structure de données ordre_mc qui donne l'ordre
+ d'apparition des mots clés dans le catalogue
+ """
+ cata_ordonne_dico={}
+ for oper in cata.JdC.commandes:
+ traite_entite(oper)
+ cata_ordonne_dico[oper.nom]=oper
+ return cata_ordonne_dico
+
+
#
__version__="$Name: $"
-__Id__="$Id: catabrowser.py,v 1.1.1.1 2002/03/26 09:08:46 eficas Exp $"
+__Id__="$Id: catabrowser.py,v 1.2 2002/05/15 15:31:58 eficas Exp $"
#
class Tableau:
incr = 10
def get_liste_mc_ordonnee(self):
""" Retourne la liste ordonnée (suivant le catalogue) brute des fils
de l'entite courante """
- if hasattr(self.objet_cata_ordonne,'liste'):
- return self.objet_cata_ordonne.liste
+ if hasattr(self.objet_cata_ordonne,'ordre_mc'):
+ return self.objet_cata_ordonne.ordre_mc
else :
l=self.objet_cata_ordonne.keys()
l.sort()
l_cles_fils = self.get_liste_mc_ordonnee()
for k in l_cles_fils :
if type(self.objet_cata_ordonne) == types.InstanceType :
- objet_cata = self.objet_cata_ordonne.dico[k]
+ objet_cata = self.objet_cata_ordonne.entites[k]
else :
objet_cata = self.objet_cata_ordonne.get(k,None)
item = make_objecttreeitem(self.appli,k + " : ",self.d_fils[k],
#
__version__="$Name: $"
-__Id__="$Id: cataediteur.py,v 1.1.1.1 2002/03/26 09:08:46 eficas Exp $"
+__Id__="$Id: cataediteur.py,v 1.2 2002/05/15 15:31:58 eficas Exp $"
#
Fonte_Niveau = fontes.canvas_gras_italique
texte_infos = ''
for e in cmd.entites.keys() :
if e == name :
- texte_infos=cmd.entites[e].fr
+ texte_infos=getattr(cmd.entites[e],'fr')
break
if texte_infos == '' : texte_infos="Pas d'infos disponibles"
self.parent.appli.affiche_infos(texte_infos)
for k in l_cles_fils :
typ = TYPE_COMPLET(dico_fils[k])
if type(self.objet_cata_ordonne) == types.InstanceType :
- objet_cata = self.objet_cata_ordonne.dico[k]
+ objet_cata = self.objet_cata_ordonne.entites[k]
else :
objet_cata = self.objet_cata_ordonne.get(k,None)
item = make_objecttreeitem(self.appli,typ + " : ",dico_fils[k],objet_cata_ordonne = objet_cata)
return self.object.get_valeur_attribut('nom')
def get_liste_mc_ordonnee(self):
- return self.objet_cata_ordonne.liste
+ return self.objet_cata_ordonne.ordre_mc
def GetIconName(self):
if self.object.isvalid():
for k in l_cles_fils :
typ = TYPE_COMPLET(dico_fils[k])
if type(self.objet_cata_ordonne) == types.InstanceType :
- objet_cata = self.objet_cata_ordonne.dico[k]
+ objet_cata = self.objet_cata_ordonne.entites[k]
else :
objet_cata = self.objet_cata_ordonne.get(k,None)
item = make_objecttreeitem(self.appli,typ + " : ",dico_fils[k],objet_cata_ordonne = objet_cata)
self.modified='n'
self.pane=Pmw.PanedWidget(self.parent,orient='horizontal')
- self.pane.add('treebrowser',min=0.4)
+ self.pane.add('treebrowser',min=0.4,size=0.5)
self.pane.add('selected',min=0.4)
self.pane.pack(expand=1,fill='both')
self.tree=TREEITEMINCANVAS(jdc,nom_jdc,self.pane.pane('treebrowser'),
import Pmw
from widgets import ListeChoix
+import prefs
SEPARATEUR = '-'*30
texte_infos = ''
for e in cmd.entites.keys() :
if e == name :
- texte_infos=cmd.entites[e].fr
+ texte_infos=getattr(cmd.entites[e],prefs.lang)
break
if texte_infos == '' : texte_infos="Pas d'infos disponibles"
- #EFICAS.affiche_infos(texte_infos)
self.parent.appli.affiche_infos(texte_infos)
def defMC(self,name):
def selectCmd(self,name):
""" On retrouve la commande sous le curseur pour affichage du fr """
if name != 'COMMENTAIRE' and name != SEPARATEUR:
- #EFICAS.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr)
- #self.parent.appli.affiche_infos(self.parent.appli.cataitem.d_fils[name].fr)
- self.parent.appli.affiche_infos(self.parent.jdc.get_cmd(name).fr)
+ texte_infos=getattr(self.parent.jdc.get_cmd(name),prefs.lang)
+ self.parent.appli.affiche_infos(texte_infos)
def defCmd(self,name):
"""
from utils import init_rep_cata_dev
#import catabrowser
+import autre_analyse_cata
class READERCATA:
self.code=self.appli.code
self.appli.format_fichier.set('python')
self.OpenCata()
-
self.cataitem=None
- #XXX CCAR : Pour le moment je ne construis pas le CATAItem
- #self.cataitem = catabrowser.CATAItem(self,"Catalogue "+self.code,
- #self.cata,
- #objet_cata_ordonne = self.cata_ordonne_dico)
def OpenCata(self):
"""
self.cata = self.import_cata(self.fic_cata)
print "Fin import_cata: ",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)
- #XXX A priori ceci fait double emploi. Il faut d'abord calculer l'ordre
- # puis fabriquer le CATAItem
- #CCAR :self.catalo = catabrowser.CATAItem(self,"Catalogue",self.cata)
+ #
print "Debut Retrouve_Ordre: ",time.clock()
- self.Retrouve_Ordre_Cata_Standard()
+ # 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()
print "Fin Retrouve_Ordre: ",time.clock()
+ #
# chargement et analyse des catalogues développeur (le cas échéant)
+ #
if self.appli.CONFIGURATION.isdeveloppeur == 'OUI' :
init_rep_cata_dev(self.fic_cata,self.appli.CONFIGURATION.path_cata_dev)
fic_cata_dev = os.path.join(self.appli.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
self.cata = (self.cata,)
else:
self.cata_dev =self.import_cata(fic_cata_dev)
- self.Retrouve_Ordre_Cata_Developpeur()
+ #self.Retrouve_Ordre_Cata_Developpeur()
+ self.Retrouve_Ordre_Cata_Developpeur_autre()
self.cata = (self.cata,self.cata_dev)
else:
self.cata = (self.cata,)
traceback.print_exc()
return 0
+ def Retrouve_Ordre_Cata_Standard_autre(self):
+ """
+ Construit une structure de données dans le catalogue qui permet
+ à EFICAS de retrouver l'ordre des mots-clés dans le texte du catalogue.
+ 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)
+
def Retrouve_Ordre_Cata_Standard(self):
"""
Retrouve l'ordre des mots-clés dans le catalogue, cad :
self.Get_Ordre_Cata(mode='cata')
self.appli.affiche_infos("Catalogue standard chargé")
+ def Retrouve_Ordre_Cata_Developpeur(self):
+ """
+ Retrouve l'ordre des mots-clés dans le catalogue, cad :
+ - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
+ l'ordre des mots-clés dans le catalogue
+ - s'il n'a pas été modifié, relie le fichier pickle
+ """
+ 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')
+ 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
+ self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
+ self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
+
+ def Retrouve_Ordre_Cata_Developpeur_autre(self):
+ """
+ Retrouve l'ordre des mots-clés dans le catalogue, cad :
+ - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
+ l'ordre des mots-clés dans le catalogue
+ - s'il n'a pas été modifié, relie le fichier pickle
+ """
+ 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)
+ self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
+ self.appli.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
+
def Get_Ordre_Cata(self,mode='pickle'):
"""
Retrouve l'ordre du catalogue :
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.dico
+ self.cata_ordonne_dico = cata_ordonne.entites
splash._splash.configure(text = "Sauvegarde des informations sur le catalogue")
f = open(self.fic_cata_p,'w+')
p = cPickle.Pickler(f)
#
__version__="$Name: $"
-__Id__="$Id: treewidget.py,v 1.5 2002/05/15 15:31:59 eficas Exp $"
+__Id__="$Id: treewidget.py,v 1.6 2002/09/09 10:39:06 eficas Exp $"
#
Fonte_Standard = fontes.standard
self.dehighlight()
self.text_id = self.canvas.create_window(textx, texty,anchor="w", window=self.text)
self.id.append(self.text_id)
- # Redefinit la region de scroll du canvas pour inclure tous les items créés
- self.tree.scrolledcanvas.resizescrollregion()
def highlight(self,event=None):
""" Met en surbrillance self"""
return os.path.split(pathAndFile)[1]
def init_rep_cata_dev(fic_cata,rep_goal):
- """ initialise le répertoire des catalogues développeurs (chemin d'accès donné
- dans le fichier eficas.ini cad :
+ """
+ Initialise le répertoire des catalogues développeurs (chemin d'accès donné
+ dans le fichier eficas.ini cad :
- le crée s'il n'existe pas encore
- copie dedans les 3 fichiers nécessaires :
* __init__.py (pour que ce répertoire puisse être interprété comme un package)
* entete.py (pour réaliser les import nécessaires à l'interprétation des catalogues)
* declaration_concepts.py (idem)
- - crée le fichier cata_developpeur.py qui sera par la suite importé"""
+ - crée le fichier cata_developpeur.py qui sera par la suite importé
+ """
try :
if not os.path.isdir(rep_goal) :
os.mkdir(rep_goal)
def get_fr(self):
"""
- Retourne le commentaire lui meme
+ Retourne le commentaire lui meme tronque a la 1ere ligne
"""
- return self.valeur
+ return self.valeur.split('\n',1)[0]
# Modules Eficas
from Noyau import N_ENTITE,N_MCLIST,N_CR
+from Ihm import I_ENTITE
import mcnuplet
-class NUPL(N_ENTITE.ENTITE):
+class NUPL(N_ENTITE.ENTITE,I_ENTITE.ENTITE):
"""
"""
class_instance = mcnuplet.MCNUPLET
def __init__(self,fr="",ang="",docu="",statut='f',defaut=None,min=0,max=1,
elements=None):
N_ENTITE.ENTITE.__init__(self)
+ I_ENTITE.ENTITE.__init__(self)
self.fr=fr
self.ang=ang
self.docu=docu
#
#
# ======================================================================
+_no=0
+
+def number_entite(entite):
+ """
+ Fonction qui attribue un numero unique a tous les objets du catalogue
+ Ce numero permet de conserver l'ordre des objets
+ """
+ global _no
+ _no=_no+1
+ entite._no=_no
+
class ENTITE:
+ def __init__(self):
+ number_entite(self)
+
def get_docu(self):
if hasattr(self,'docu') :
if self.docu != "" : return self.docu
"""
for arg in liste:
objet_cata = dico[arg]
- dico=objet_cata.dico
- return objet_cata.liste
+ dico=objet_cata.entites
+ return objet_cata.ordre_mc
def filtre_liste_mc(self,liste_brute):
"""
"""
for arg in liste:
objet_cata = dico[arg]
- dico=objet_cata.dico
- return objet_cata.liste
+ dico=objet_cata.entites
+ return objet_cata.ordre_mc
def reparent(self,parent):
"""