import listeFichiers
import listePatrons
-VERSION="EFICAS v1.9"
+VERSION="EFICAS v1.10"
class APPLI:
def __init__ (self,master,code=prefs.code,fichier=None,test=0) :
def newJDC_include(self,event=None):
"""
- Initialise un nouveau JDC vierge
+ Initialise un nouveau JDC include vierge
"""
import Extensions.jdc_include
JdC_aux=Extensions.jdc_include.JdC_include
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
def newJDC(self,event=None):
"""
- Initialise un nouveau JDC include vierge
+ Initialise un nouveau JDC vierge
"""
self.appli.statusbar.reset_affichage_infos()
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY,enregistre="non"):
"""
if not self.JDC.isvalid():
self.appli.top.update()
self.visuCR(mode='JDC')
+ return J
def deplieReplieNode(self):
self.JDCDisplay_courant.tree.tree.deplieReplieNode()
self.ajout_valeurs = None
# boutons Ajouter et Supprimer
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
command = self.add_double_valeur_plusieurs_base)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
# affichage de l'aide
self.frame_aide.update()
self.aide = Label(self.frame_aide,
self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
self.Liste_valeurs.affiche_liste()
# boutons Accepter et Annuler
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur_recolle(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- for but in (bouton_accepter,bouton_annuler):
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=4)
return
if OngletPanel.panelbind == None:
return
- OngletPanel.panelbind.unbind_all("<F1>")
- OngletPanel.panelbind.unbind_all("<F2>")
- OngletPanel.panelbind.unbind_all("<F3>")
- OngletPanel.panelbind.unbind_all("<F4>")
+ try:
+ OngletPanel.panelbind.unbind_all("<F1>")
+ OngletPanel.panelbind.unbind_all("<F2>")
+ OngletPanel.panelbind.unbind_all("<F3>")
+ OngletPanel.panelbind.unbind_all("<F4>")
+ except:
+ pass
OngletPanel.panelbind = None
def commande_up(self,num):
Liste.MCbox.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
if len(liste_mc) > 0 :
Liste.surligne(liste_mc[0])
+ self.Liste=Liste
def makeCommentairePage(self,page):
label = Label(page,text = "Insérer un commentaire :")
bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes"""
Liste.MCbox.bind("<Button-3>", lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
Liste.MCbox.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
+ self.liste_command=Liste
global panneauCommande
panneauCommande=self
# les frame ...
self.frame_comment = Frame(page,bd=1,relief='raised')
self.frame_param = Frame(page,bd=1,relief='raised')
- #self.frame_eval = Frame(page,bd=1,relief='raised')
self.frame_boutons = Frame(page,bd=1,relief='raised')
self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.40)
self.frame_param.place(relx=0,rely=0.40,relwidth=1,relheight=0.40)
- #self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28)
self.frame_boutons.place(relx=0,rely=0.84,relwidth=1,relheight=0.16)
# remplissage de la frame commentaire
Label(self.frame_comment,text = "Insérer un commentaire :").place(relx=0.1,rely=0.5,anchor='w')
command = self.ajout_parametre)
but_param_avant.place(relx=0.45,rely=0.3,anchor='w',relwidth=0.45)
but_param_apres.place(relx=0.45,rely=0.7,anchor='w',relwidth=0.45)
- # remplissage de la frame eval
- #Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w')
- #Label(self.frame_eval,text='Non encore disponible').place(relx=0.6,rely=0.5,anchor='w')
- #but_eval_avant = Button(self.frame_eval,
- # text = "AVANT "+self.node.item.get_nom(),
- # command = lambda s=self :s.ajout_parametre_eval(ind = 'before'))
- #but_eval_apres = Button(self.frame_eval,
- # text = "APRES "+self.node.item.get_nom(),
- # command = self.ajout_parametre_eval)
- #but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3)
- #but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3)
# remplissage de la frame boutons
Button(self.frame_boutons,
text="Commentariser toute la commande",
("<Double-Button-1>",self.sup_valeur_sans_into))
liste_commandes_choix = (("<Button-1>",self.selectChoix),
("<Button-3>",self.deselectChoix),
- # ("<Double-Button-1>",self.add_valeur_sans_into))
("<Double-Button-1>",self.add_eval_valeur_sans_into))
self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,liste_commandes = liste_commandes_valeurs,
titre="Valeur(s) actuelle(s)")
self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,liste_commandes = liste_commandes_choix,
titre= "Valeurs possibles")
- bouton_add = Button(self.frame_boutons_fleches,
- #text="<--",
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
- # command = self.add_valeur_sans_into)
command = self.add_eval_valeur_sans_into)
- bouton_sup = Button(self.frame_boutons_fleches,
- #text="-->",
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
- for but in (bouton_accepter,bouton_annuler):
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=4)
self.Liste_valeurs.affiche_liste()
if len(l_valeurs) > 0 :
self.ajout_valeurs = None
# boutons Ajouter et Supprimer
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
command = self.add_valeur_plusieurs_base)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
# affichage de l'aide
self.frame_aide.update()
self.aide = Label(self.frame_aide,
self.Liste_valeurs.surligne(liste_marque)
self.selectValeur(liste_marque)
# boutons Accepter et Annuler
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_accepter.place(relx=0.2, rely=0.2,relwidth=0.25)
- bouton_annuler.place(relx=0.5, rely=0.2,relwidth=0.25)
- #for but in (bouton_accepter,bouton_annuler):
- # but.pack(side='left',padx=4)
+ self.bouton_accepter.place(relx=0.2, rely=0.2,relwidth=0.25)
+ self.bouton_annuler.place(relx=0.5, rely=0.2,relwidth=0.25)
def affiche_parametre(self) :
if self.node.item.get_liste_param_possible() != [ ]:
self.entry.bind("<KP_Enter>",lambda e,c=command:c())
self.entry.focus()
- #def make_entry(self,frame,command,x=0.28,y=0.2):
- """
- Crée l'entry de saisie de la valeur souhaitée : distingue le
- cas d'un complexe attendu, d'une autre valeur quelconque
- """
- #print "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
- #print " "
- #print "A priori on ne doit plus passer dans cette methode "
- #print " "
- #print "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
- #if self.node.item.wait_complex():
- # self.typ_cplx=StringVar()
- # self.typ_cplx.set('RI')
- # rb1 = Radiobutton(frame, text='RI',variable=self.typ_cplx,value='RI')
- # rb2 = Radiobutton(frame, text='MP',variable=self.typ_cplx,value='MP')
- # self.entry1 = Pmw.EntryField(frame,validate='real')
- # self.entry2 = Pmw.EntryField(frame,validate='real')
- # rb1.place(relx=0.05,rely = 0.4)
- # rb2.place(relx=0.05,rely = 0.6)
- # self.entry1.component('entry').bind("<Return>",lambda e,s=self:s.entry2.component('entry').focus)
- # self.entry2.component('entry').bind("<Return>",lambda e,c=command:c())
- # self.entry1.component('entry').bind("<KP_Enter>",lambda e,s=self:s.entry2.component('entry').focus)
- # self.entry2.component('entry').bind("<KP_Enter>",lambda e,c=command:c())
- # self.entry1.place(relx=0.27,rely = 0.5,relwidth=0.35)
- # self.entry2.place(relx=0.65,rely = 0.5,relwidth=0.35)
- # self.entry1.focus()
- #else:
- # self.entry = Entry(frame,relief='sunken')
- # self.entry.place(relx=0.28,rely=0.2,relwidth=0.6)
- # self.entry.place(relx=0.28,rely=y,relwidth=0.6)
- # self.entry.bind("<Return>",lambda e,c=command:c())
- # self.entry.bind("<KP_Enter>",lambda e,c=command:c())
- # self.entry.focus()
-
def get_valeur(self):
"""
Retourne la valeur saisie par l'utilisateur dans self.entry
valeurentree = self.entry.get()
if (valeurentree == None or valeurentree ==""):
return None,0,""
- if (valeurentree[0] != "(") and (valeurentree.find(',') < len(valeurentree)):
- valeurs=[]
- for v in valeurentree.split(','):
- vsimple,validite=self.node.item.eval_valeur(v)
+
+ #On tente une evaluation globale
+ valeur,validite=self.node.item.eval_valeur(valeurentree)
+ if valeur == valeurentree:
+ #L'evaluation n'a rien donné : on a toujours la string
+ #on découpe la string sur le séparateur , si c'est possible
+ if valeurentree.find(',') != -1:
+ valeur=[]
+ for v in valeurentree.split(','):
+ vsimple,validite=self.node.item.eval_valeur(v)
+ valeur.append(vsimple)
+
+ return valeur,validite,commentaire
+
+
+ # if (valeurentree[0] != "(") and (valeurentree.find(',') < len(valeurentree)):
+ # valeurs=[]
+ # for v in valeurentree.split(','):
+ # vsimple,validite=self.node.item.eval_valeur(v)
# Pn If ajoute pour le panneau "double"
#if isinstance(vsimple,LASSD) :
# commentaire = "impossible de mélanger reels et liste prédéfinie"
# validite = 0
# break
- if validite :
- valeurs.append(vsimple)
- else:
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
- break
- valeur=valeurs
- else:
- valeur,validite=self.node.item.eval_valeur(valeurentree)
- if not validite and commentaire == "":
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
- return valeur,validite,commentaire
+ # if validite :
+ # valeurs.append(vsimple)
+ # else:
+ # commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ # break
+ # valeur=valeurs
+ # else:
+ # valeur,validite=self.node.item.eval_valeur(valeurentree)
+ # if not validite and commentaire == "":
+ # commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ # return valeur,validite,commentaire
#else:
# # Traitement d'une entree de type complexe
# try:
self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,
liste_commandes = liste_commandes_choix,
titre= "Valeurs possibles")
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
#text="<--",
image = images.get_image('arrow_left'),
command = self.add_choix)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
#text="-->",
image = images.get_image('arrow_right'),
command = self.sup_valeur)
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
- for but in (bouton_accepter,bouton_annuler):
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=3)
self.Liste_valeurs.affiche_liste()
if len(l_valeurs) > 0 :
def add_valeur_sans_into(self,name=None,encorevalide=1):
"""
- Lit ce que l'utilisateur a saisi dans self.entry et cherche à
- l'évaluer :
+ Tente d'ajouter la valeur fournie (name) à la liste courante :
- si la valeur est acceptable, elle est ajoutée dans la liste des valeurs
- sinon elle est refusée
+
encorevalide vaut 1 si le validateur trouve l item et la liste correctes
0 si le validateur trouve la valeur de l item incorrecte
-1 si le validateur trouve la liste incorrecte
"""
+ valeur = name
commentaire="Valeur incorrecte : ajout à la liste refusé"
testvalide=1
- # Lecture de la zone de saisie et evaluation si nécessaire
- if name != None :
- valeur = name
- else:
- valeurentree = self.get_valeur()
- if valeurentree == '': valeur=None
- valeurentree,testvalide=self.node.item.eval_valeur(valeur)
- if (not testvalide) :
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
-
# Pas de traitement des valeurs nulles ( a priori clic involontaire
if (valeur == None or valeur =="") :
commentaire = "Pas de saisie des valeurs nulles"
else :
commentaire ="Type de la valeur incorrecte"
- #self.erase_valeur()
self.parent.appli.affiche_infos(commentaire)
def sup_valeur_sans_into(self,name=None):
from Ihm import CONNECTOR
#
-__version__="$Name: $"
-__Id__="$Id: treewidget.py,v 1.30.6.1 2006/03/07 11:21:44 eficas Exp $"
+__version__="$Name: BR_dev_mars_06 $"
+__Id__="$Id: treewidget.py,v 1.30.6.2 2006/03/10 14:38:30 eficas Exp $"
#
Fonte_Standard = fontes.standard
def supprime(self):
""" supprime tous les éléments de l'arbre """
#print "supprime",self
- self.canvas.unbind("<Key-Prior>",self.id_up)
- self.canvas.unbind("<Key-Next>",self.id_down)
+ self.canvas.unbind("<F11>",self.id_up)
+ self.canvas.unbind("<F12>",self.id_down)
self.canvas.unbind("<Key-Left>",self.id_um)
self.canvas.unbind("<Key-Right>",self.id_dm)
self.canvas.unbind("<1>",self.id_s)
if len(self.listbox.getcurselection()) == 0 : return
choix = self.listbox.getcurselection()[0]
self.valeur_choisie.set(choix)
+ self.listbox.component("listbox").focus_set()
def choose_valeur_from_list(self,command):
"""
("<Double-Button-1>",self.record_valeur))
self.Liste_choix = ListeChoix(self,self.frame,l_choix,
liste_commandes = liste_commandes,
- titre="Valeurs possibles")
+ titre="Valeurs possibles",optionReturn="oui")
self.Liste_choix.affiche_liste()
def get_bulle_aide(self):
listbox_height = 6,
selectioncommand=self.select_valeur_from_list,
dblclickcommand=lambda s=self,c=self.valid_valeur : s.choose_valeur_from_list(c))
+ self.listbox.component("listbox").bind("<Return>",lambda e,s=self,c=self.valid_valeur : s.choose_valeur_from_list(c))
if liste_noms_sd != [] :
self.listbox.place(relx=0.5,rely=0.3,relheight=0.4,anchor='center')
- self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('NON','OUI'),menubutton_width=10)
+ self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('NON','OUI'),
+ menubutton_width=10)
else :
- self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('OUI','OUI'),menubutton_width=10)
+ self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('OUI',),
+ menubutton_width=10)
# affichage du bouton 'Nouveau concept'
- self.b_co.configure(command = lambda e,s=self : s.ask_new_concept())
+ self.b_co.configure(command = self.ask_new_concept)
if liste_noms_sd != [] :
self.b_co.place(relx=0.05,rely=0.6,anchor='w')
else :
mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
self.reset_old_valeur(anc_val,mess=mess)
return
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #self.node.update()
def valid_nom_concept_co(self,event=None):
"""
mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
self.reset_old_valeur(anc_val,mess=mess)
return
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #if self.node.item.isvalid():
- #self.node.parent.select()
- #self.node.update()
- def ask_new_concept(self):
+ def ask_new_concept(self,tag):
"""
Crée une entry dans le panneau d'un MCS qui attend un concept OU un CO() afin de
permettre à l'utilisateur de donner le nom du nouveau concept
self.parent.appli.affiche_infos(mess)
# On met a jour le display dans le panneau
self.display_valeur()
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
if self.node.item.isvalid():
self.node.parent.select()
- #self.node.update()
showerror(raison.split('\n')[0],raison)
def afficheMot(self,mot):
- """ Pour contourner le bug sur l index """
- """ on commence par la methode dite normale """
- """ puis par la methode de contournement """
- """ puis rien du tout """
- #try :
- if ( 1 == 1 ):
- try:
- labelsuivant=self.dico_labels[motsuivant]
+ """ Pour contourner le bug sur l index
+ on commence par la methode dite normale
+ puis par la methode de contournement
+ puis rien du tout
+ """
+ try:
+ labelsuivant=self.dico_labels[mot]
index = self.MCbox.index(labelsuivant)
self.MCbox.see(index)
- except :
+ except :
posmot=self.dico_place[mot]
totale=self.nBlabel + 0.0
self.MCbox.yview_moveto(posmot/totale)
- else :
- pass
def selectNextItem(self,mot,label):
index=self.liste.index(mot)
indexsuivant=0
motsuivant=self.liste[indexsuivant]
labelsuivant=self.dico_labels[motsuivant]
- #index = self.MCbox.index(labelsuivant)
- #self.MCbox.see(index)
self.afficheMot(motsuivant)
self.selectthis(motsuivant,labelsuivant,self.selection[2],)
self.dontselect=1
indexprec=index-1
motprec=self.liste[indexprec]
labelprec=self.dico_labels[motprec]
- #index = self.MCbox.index(labelprec)
- #self.MCbox.see(index)
self.afficheMot(motprec)
self.selectthis(motprec,labelprec,self.selection[2],)
self.dontselect=1
for arg in self.liste :
if fnmatch.fnmatch(arg,filtre) or fnmatch.fnmatch(arg,FILTRE) :
label=self.dico_labels[arg]
- #index = self.MCbox.index(label)
- #self.MCbox.see(index)
self.afficheMot(arg)
self.selectitem(arg,label,self.selection[2])
break