+# -*- 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 tkMessageBox import showinfo,askyesno,showerror
+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() # Creation du BUREAU
- self.affiche_FAQ()
- # AY : cas ou le nom du fichier a été passé en argument
- if fichier :
- try :
- self.bureau.openJDC( str(MakeNomComplet.FILENAME(fichier)) )
- except :
- pass
- # AY : fin
- 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
- toolbar
- - bureau
- 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 + '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
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
if radio == None:radio=number_item
else:
command=getattr(appli_composant,method)
- menu.add_command(label=label,command=command)
+ 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)