X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Fappli.py;h=0a03c2550294f71d8e8bd8edd6950593666013ae;hb=fd27c38037ee9c07a594b6727c99965322d9f9bc;hp=58cea476ba9f7b56e229acc8e3da534401fcfc01;hpb=6061fd8c6350907b461a3b3f32e9ba36c70006e8;p=tools%2Feficas.git diff --git a/Editeur/appli.py b/Editeur/appli.py index 58cea476..0a03c255 100644 --- a/Editeur/appli.py +++ b/Editeur/appli.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG @@ -24,16 +25,23 @@ L'aspect applicatif doit etre pris en charge par la classe dérivée """ # Modules Python +import os import sys +import types import Pmw import Tkinter +from widgets import showerror # Modules Eficas import splash import prefs import fontes +import tooltip +import properties +from widgets import Fenetre +from Misc import MakeNomComplet -VERSION="EFICAS v1.3" +VERSION="EFICAS v1.6" class APPLI: def __init__ (self,master,code='ASTER',fichier=None) : @@ -50,9 +58,22 @@ class APPLI: self.format_fichier = Tkinter.StringVar() self.message='' self.cree_composants_graphiques() - self.load_extensions() - self.affiche_FAQ() + self.load_appli_composants() # Creation du BUREAU splash.fini_splash() + self.affiche_FAQ() + # AY : cas ou le nom du fichier a été passé en argument + if fichier : + fich=str(MakeNomComplet.FILENAME(fichier)) + if not os.path.isfile(fich): + showerror("Fichier inexistant", "Fichier %s en argument n'existe pas" % fich) + else: + self.bureau.openJDC( fich) + # AY : fin + # PN : ajout d un attribut pour indiquer si + # l appli a ete lance depuis Salome + self.salome=0 + + def send_message(self,message): self.message=message @@ -75,7 +96,7 @@ class APPLI: """ Cree les constituants de l'application : - menubar - - tollbar + - toolbar - bureau - statusbar """ @@ -90,18 +111,18 @@ class APPLI: import statusbar self.statusbar=statusbar.STATUSBAR(self.top) - def load_extensions(self): - splash._splash.configure(text = "Chargement des extensions") - for mname in self.extensions: - self.load_extension(mname) + def load_appli_composants(self): + splash._splash.configure(text = "Chargement des appli_composants") + for mname in self.appli_composants: + self.load_appli_composant(mname) - def load_extension(self,mname): + def load_appli_composant(self,mname): module=__import__(mname,globals(),locals()) factory=getattr(module,mname.upper()) - extension=factory(self,self.top) - setattr(self,mname,extension) - self.fill_menus(extension,extension.menu_defs) - self.toolbar.creer_boutons_extension(extension.button_defs,extension) + appli_composant=factory(self,self.top) + setattr(self,mname,appli_composant) + self.fill_menus(appli_composant,appli_composant.menu_defs) + self.toolbar.creer_boutons_appli_composant(appli_composant.button_defs,appli_composant) def affiche_FAQ(self): import faq @@ -150,9 +171,9 @@ class APPLI: Retourne un texte d'informations sur la session courante d'EFICAS """ texte = VERSION + '\n\n' - texte = texte + 'EFICAS est un produit développé par \nEDF-Division Stratégie et Développement\n' - texte = texte + 'Equipe : MTI/MMN\n\n' - texte = texte + 'Code utilisé : %s\n' %self.code + texte = texte + 'EFICAS est un produit développé par \nEDF-R&D\n' + texte = texte + 'Equipe : SINETICS\n\n' + texte = texte + 'Code utilisé : %s version %s\n' % (self.code,properties.version) return texte def efface_aide(self,event): @@ -172,24 +193,63 @@ class APPLI: x=event.x y=event.y widget=event.widget - self.aide = Tkinter.Label(widget ,text = aide, - bg="yellow",relief="ridge",anchor='w') - self.aide.place(in_=widget, - relx=0.5,rely=0.5,anchor='center') - print aide - return - - def fill_menus(self,extension,defs): + self.aide=tooltip.TOOLTIP(widget) + self.aide.xoffset = 10 + self.aide.yoffset = - widget.winfo_height()/2 + self.aide.setText(aide) + self.aide._showTip() + return + + def cree_menu(self,menu,itemlist,appli_composant): + """ + Ajoute les items du tuple itemlist + dans le menu menu + """ + number_item=0 + radio=None + for item in itemlist: + number_item=number_item + 1 + if not item : + menu.add_separator() + else: + if len(item)==3: + raccourci=item[2] + newitem=(item[0],item[1]) + else : + raccourci="" + newitem=item + item=newitem + label,method=item + if type(method) == types.TupleType: + # On a un tuple => on cree une cascade + menu_cascade=Tkinter.Menu(menu) + menu.add_cascade(label=label,menu=menu_cascade) + self.cree_menu(menu_cascade,method,appli_composant) + elif method[0] == '&': + # On a une chaine avec & en tete => on cree un radiobouton + command=getattr(appli_composant,method[1:]) + menu.add_radiobutton(label=label,command=command) + if radio == None:radio=number_item + else: + command=getattr(appli_composant,method) + menu.add_command(label=label,command=command) + if raccourci != "" : + self.top.bind(raccourci,command) + # Si au moins un radiobouton existe on invoke le premier + if radio:menu.invoke(radio) + + def fill_menus(self,appli_composant,defs): menudict=self.menubar.menudict for mname,itemlist in defs: menu=menudict.get(mname) if not menu:continue - for item in itemlist: - if not item : - menu.add_separator() - else: - label,method=item - command=getattr(extension,method) - menu.add_command(label=label,command=command) - - + self.cree_menu(menu,itemlist,appli_composant) + + def update_jdc_courant(self): + self.bureau.update_jdc_courant() + + def affiche_alerte(self,titre,message): + f=Fenetre(self, titre="Compte-rendu d'erreur", texte = titre + "\n\n" + message) + f.wait() + +