+# -*- coding: utf-8 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
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 styles
+from styles import style
import fontes
import tooltip
+import properties
+from widgets import Fenetre
+from Misc import MakeNomComplet
+import session
-VERSION="EFICAS v1.3"
+VERSION="EFICAS v1.8"
class APPLI:
- def __init__ (self,master,code='ASTER',fichier=None) :
- self.top=master
+ def __init__ (self,master,code=prefs.code,fichier=None,test=0) :
self.code=code
+ self.top=master
self.top.protocol("WM_DELETE_WINDOW",self.exitEFICAS)
self.top.minsize(900,500)
self.top.geometry("900x500")
self.top.withdraw()
self.initializeTk(master)
Pmw.initialise(master)
+
+ self.dict_reels={}
+ self.liste_simp_reel=[]
+ # L'attribut test permet d'activer les panneaux de splash et d'erreur (test=0)
+ # Si test est different de 0, les panneaux ne sont pas activés
+ self.test=test
+
+ # Lecture des parametres de configuration (fichier global editeur.ini
+ # et utilisateur eficas.ini)
self.lecture_parametres()
+
self.format_fichier = Tkinter.StringVar()
self.message=''
+ # Avant la creation du bureau qui lit le catalogue
+ self.version_code=session.d_env.cata
+
+ # Creation de la menubar, toolbar, messagebar
self.cree_composants_graphiques()
- self.load_appli_composants()
- self.affiche_FAQ()
- splash.fini_splash()
+ # Creation des autres composants graphiques dont le bureau (parametrable par prefs.py)
+ self.load_appli_composants()
+
+ # PN : ajout d un attribut pour indiquer si
+ # l appli a ete lance depuis Salome
+ self.salome=0
+ self.dir=None
+
+ # Fermer le splash et deiconifier la fenetre principale si on n'est pas en test
+ if (self.test == 0):
+ splash.fini_splash()
+ #self.affiche_FAQ()
+
+ # Ouverture des fichiers de commandes donnes sur la ligne de commande
+ cwd=os.getcwd()
+ self.dir=cwd
+ for study in session.d_env.studies:
+ os.chdir(cwd)
+ d=session.get_unit(study,self)
+ self.bureau.openJDC(file=study["comm"],units=d)
+
def send_message(self,message):
self.message=message
"""
Active la lecture des paramètres standards et utilisateur
"""
- splash._splash.configure(text = "Chargement des paramètres utilisateur")
+ if (self.test == 0):
+ splash._splash.configure(text = "Chargement des paramètres utilisateur")
import configuration
self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
def cree_composants_graphiques(self):
"""
- Cree les constituants de l'application :
+ Cree les constituants graphiques fixes de l'application :
- menubar
- - tollbar
- - bureau
+ - toolbar
- statusbar
"""
- splash._splash.configure(text = "Chargement de l'IHM")
- splash._splash.configure(text = "Chargement de la menubar")
+ if (self.test == 0):
+ splash._splash.configure(text = "Chargement de l'IHM")
+ splash._splash.configure(text = "Chargement de la menubar")
import menubar
self.menubar=menubar.MENUBAR(self,self.top)
- splash._splash.configure(text = "Chargement de la toolbar")
+ if (self.test == 0):
+ splash._splash.configure(text = "Chargement de la toolbar")
import toolbar
self.toolbar=toolbar.TOOLBAR(self,self.top)
- splash._splash.configure(text = "Chargement de la statusbar")
+ if (self.test == 0):
+ splash._splash.configure(text = "Chargement de la statusbar")
import statusbar
self.statusbar=statusbar.STATUSBAR(self.top)
def load_appli_composants(self):
- splash._splash.configure(text = "Chargement des appli_composants")
+ """
+ Cree les autres constituants graphiques de l'application :
+ - bureau
+ - readercata
+ - ...
+ Cette creation est parametrable par fichier prefs.py
+ """
+ if (self.test == 0):
+ splash._splash.configure(text = "Chargement des appli_composants")
for mname in self.appli_composants:
self.load_appli_composant(mname)
root.option_add('*Listbox*Font',fontes.standard)
def initializeTk_colors_common(self, root):
- root.option_add('*background', 'grey')
- root.option_add('*foreground', 'black')
- root.option_add('*EntryField.Entry.background', 'white')
- root.option_add('*Entry*background', 'white')
- root.option_add('*Listbox*background', 'white')
- root.option_add('*Listbox*selectBackground', '#00008b')
- root.option_add('*Listbox*selectForeground', 'white')
+ root.option_add('*background', style.background)
+ root.option_add('*foreground', style.foreground)
+ root.option_add('*EntryField.Entry.background', style.entry_background)
+ root.option_add('*Entry*background', style.entry_background)
+ root.option_add('*Listbox*background', style.list_background)
+ root.option_add('*Listbox*selectBackground', style.list_select_background)
+ root.option_add('*Listbox*selectForeground', style.list_select_foreground)
def initializeTk_mac(self, root):
self.initializeTk_colors_common(root)
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):
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
+ raccourci_label=""
+ if not item :
+ menu.add_separator()
+ else:
+ if len(item)==3:
+ raccourci=item[2]
+ raccourci_label=" "+raccourci
+ newitem=(item[0],item[1])
+ else :
+ if len(item)==4:
+ raccourci=item[2]
+ raccourci_label=" "+item[3]
+ 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,accelerator=raccourci_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(appli_composant,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()
+
+