From 6d60e0a045f494132fad41cf2de935be55a73ad0 Mon Sep 17 00:00:00 2001 From: pbruno <> Date: Tue, 20 Feb 2007 11:27:52 +0000 Subject: [PATCH] *** empty log message *** --- Interface/composimp.py | 447 ++++++++--------------------------- Interface/uniquebasepanel.py | 307 +++++++++++++----------- 2 files changed, 269 insertions(+), 485 deletions(-) diff --git a/Interface/composimp.py b/Interface/composimp.py index 4f4211b8..d14c8cdc 100644 --- a/Interface/composimp.py +++ b/Interface/composimp.py @@ -13,270 +13,111 @@ from Noyau.N_CR import justify_text import browser from qt import * -class UNIQUE_BASE_Panel(QTabWidget): #CS_pbruno todo tmp - """ - Classe servant à définir le panneau associé aux mots-clés simples qui attendent - une valeur d'un type de base (entier, réel ou string). - """ - def __init__(self,node, parent = None,name = None,fl = 0): - QTabWidget.__init__(self,parent,name,fl) - self.editor = parent - self.node = node - - tabSaisie = self._buildTabSaisie() - tabKey = QWidget(self) - - self.addTab( tabSaisie, QString('Saisie Valeur') ) - #self.insertTab( tabSaisie, 'Saisie Valeur' ) - #self.setCurrentPage(0) - - def __tr(self,s,c = None): - return qApp.translate("Form1",s,c) - def __trUtf8(self,s,c = None): - return qApp.translate("Form1",s,c,QApplication.UnicodeUTF8) - - def _buildTabSaisie(self): - """ +class Node(browser.JDCNode): + def getPanel(self): + """ """ - tabSaisie = QWidget(self) - layout = QVBoxLayout(tabSaisie) + print 10*'COMPOSIMP' +## from newsimppanel import newSIMPPanel +## klass = newSIMPPanel + klass = None #CS_pbruno todo - self.leValue = QLineEdit(tabSaisie) - - label1 = QLabel(tabSaisie) - label1.setText("Valeur") + # Attention l ordre des if est important + if self.item.wait_shell(): + # l'objet attend un shell +## from shellpanel import SHELLPanel +## klass = SHELLPanel + klass = None #CS_pbruno todo + elif self.item.has_into(): + # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs + if self.item.is_list() : +## from plusieursintopanel import PLUSIEURS_INTO_Panel +## klass = PLUSIEURS_INTO_Panel + klass = None #CS_pbruno todo + else: +## from uniqueintopanel import UNIQUE_INTO_Panel +## klass = UNIQUE_INTO_Panel + klass = None #CS_pbruno todo + else: + # l'objet prend une ou des valeurs à priori quelconques + if self.item.is_list() : + # on attend une liste de valeurs mais de quel type ? + if self.item.wait_assd(): + # on attend une liste de SD +## from plusieursassdpanel import PLUSIEURS_ASSD_Panel +## klass = PLUSIEURS_ASSD_Panel + klass = None #CS_pbruno todo + else: + # on attend une liste de valeurs de types debase (entiers, réels,...) + #from plusieursbasepanel import PLUSIEURS_BASE_OR_UNELISTE_Panel + #klass = PLUSIEURS_BASE_OR_UNELISTE_Panel +## from plusieursbasepanel import PLUSIEURS_BASE_Panel +## klass = PLUSIEURS_BASE_Panel + klass = None #CS_pbruno todo + else: + # on n'attend qu'une seule valeur mais de quel type ? + if self.item.wait_co(): + # on attend une SD ou un objet de la classe CO (qui n'existe pas encore) +## from uniquesdcopanel import UNIQUE_SDCO_Panel +## klass = UNIQUE_SDCO_Panel + klass = None #CS_pbruno todo + elif self.item.wait_assd(): + # on attend une SD +## from uniqueassdpanel import UNIQUE_ASSD_Panel +## from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel +## if 'R' in self.GetType(): +## klass = UNIQUE_ASSD_Panel_Reel +## else : +## klass = UNIQUE_ASSD_Panel + klass = None #CS_pbruno todo + else: + # on attend une valeur d'un type de base (entier,réel,...) + if self.item.wait_complex(): + # on attend un complexe +## from uniquecomppanel import UNIQUE_COMP_Panel +## klass = UNIQUE_COMP_Panel + klass = None #CS_pbruno todo + else: + # on attend un entier, un réel ou une string + from uniquebasepanel import UNIQUE_BASE_Panel #CS_pbruno todo + klass = UNIQUE_BASE_Panel + + # cas particulier des fonctions + genea = self.item.get_genealogie() + if "VALE" in genea or "VALE_C" in genea: + if "DEFI_FONCTION" in genea : +## from fonctionpanel import FONCTION_Panel +## klass=FONCTION_Panel + klass = None #CS_pbruno todo + #--------------------------------------------------------- + # PN ajout pour lancement de Salome + #--------------------------------------------------------- + if hasattr( self.editor, 'salome' ): +## import panelsSalome +## +## self.item.select_noeud_maille=0 +## self.item.clef_fonction="SALOME" +## for i in range(0,len( genea )) : +## self.item.clef_fonction=self.item.clef_fonction+"_"+ genea[i] +## #if genea[i] == "GROUP_NO" or genea[i] == "GROUP_MA": +## if "GROUP_NO" in genea[len(genea)-1] or "GROUP_MA" in genea[len(genea)-1]: +## self.item.select_noeud_maille=1 +## +## recherche=panelsSalome.dict_classes_salome[klass] +## if hasattr(recherche,self.item.clef_fonction): +## klass=recherche +## if self.item.select_noeud_maille==1 : +## klass=recherche + klass = None #CS_pbruno todo - layout.addWidget(label1) - layout.addWidget(self.leValue) + if not klass: + return None + + return klass( self, self.editor ) - pushButton = QPushButton(tabSaisie,"pushButton1") - - aide=self.get_aide() - aide= justify_text(texte=aide) - label2 = QLabel(tabSaisie) - label2.setText(aide) - layout.addWidget(label2) - self.display_valeur() - - QObject.connect( pushButton , SIGNAL( "clicked()" ), self.valide ) #CS_pbruno todo bind Return - return tabSaisie - - def valide(self): - self.valid_valeur() - -## def defConcept(self): -## """ -## Nomme le concept SD retourné par l'étape -## """ -## nom = str(self.leConceptValue.text()) -## nom = string.strip(nom) -## if nom == '' : return # si pas de nom, on ressort sans rien faire ... -## self.editor.init_modif() -## test,mess = self.node.item.nomme_sd(nom) -## #self.node.verif() -## #self.node.racine.update() -## self.editor.affiche_infos(mess) - - -## def makeValeurPage(self,page): -## """ -## Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type -## de base cad entier, réel, string ou complexe -## """ -## # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur, -## # et de la liste des SD du bon type (constituant la liste des choix) -## bulle_aide=self.get_bulle_aide() -## aide=self.get_aide() -## aide= justify_text(texte=aide) -## liste_noms_sd = self.node.item.get_sd_avant_du_bon_type() -## # Remplissage du panneau -## self.frame_valeur = Frame(page) -## self.frame_valeur.pack(fill='both',expand=1) -## self.frame_valeur.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) -## self.frame_valeur.bind("",self.parent.appli.efface_aide) -## self.label = Label(self.frame_valeur,text='Valeur :') -## self.label.place(relx=0.1,rely=0.2) -## self.entry = Entry(self.frame_valeur,relief='sunken') -## self.entry.place(relx=0.28,rely=0.2,relwidth=0.6) -## self.entry.bind("",lambda e,c=self.valid_valeur:c()) -## self.entry.bind("",lambda e,c=self.valid_valeur:c()) -## # aide associée au panneau -## self.frame_valeur.update() -## self.aide = Label(self.frame_valeur, -## text = aide, -## wraplength=int(self.frame_valeur.winfo_width()*0.8), -## justify='center') -## self.aide.place(relx=0.5,rely=0.9,anchor='n') -## # bouton parametre -## bouton_parametres = Button(self.frame_valeur, text="Parametres", command=self.affiche_parametre) -## bouton_parametres.place(relx=0.28,rely=0.5,relwidth=0.4) -## bouton_val = Button(self.frame_valeur, text="Valider", command=self.valide) -## bouton_val.place(relx=0.28,rely=0.6,relwidth=0.4) -## # affichage de la valeur du MCS -## self.display_valeur() -## -## def affiche_parametre(self) : -## if self.node.item.get_liste_param_possible() != [ ]: -## txtparam="" -## for param in self.node.item.get_liste_param_possible(): -## txtparam=txtparam+repr(param)+"\n" -## if txtparam=="": -## showerror("Aucun parametre ","Pas de parametre de ce type") -## else : -## try : -## self.fenetreparam.destroy() -## except : -## pass -## self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam) -## -## def destroy(self): -## try : -## self.fenetreparam.destroy() -## except : -## pass -## Widget.destroy(self) - - - def get_aide(self): - """ - Retourne la phrase d'aide indiquant de quel type doit être la valeur - du mot-clé simple fournie par l'utilisateur - """ - mc = self.node.item.get_definition() - d_aides = { 'TXM' : self.__trUtf8("Une chaîne de caractères est attendue"), - 'R' : self.__trUtf8("Un réel est attendu"), - 'I' : self.__trUtf8("Un entier est attendu") } - type = mc.type[0] - commentaire=str(d_aides.get(type, self.__trUtf8("Type de base inconnu"))) - aideval=self.node.item.aide() - commentaire=commentaire +"\n"+ aideval - return commentaire - -## def get_bulle_aide(self): -## """ -## Retourne la bulle d'aide associée au panneau et affichée par clic droit -## """ -## return """Saisissez la valeur que vous voulez affecter au mot-clé simple -## dans la zone de saisie et pressez """ - - def display_valeur(self): - """ - Affiche la valeur de l'objet pointé par self - """ - valeur = self.node.item.get_valeur() - if valeur == None or valeur == '' : # pas de valeur à afficher ... - valeur = '' - else: - valeur_texte=self.get_valeur_texte(valeur) - if valeur_texte: - valeur = valeur_texte - self.leValue.setText( str(valeur) ) - - - # ------------- UNIQUE_Panel debut - def valid_valeur(self,valeurentree=None): - """ - Teste si la valeur fournie par l'utilisateur est une valeur permise : - - si oui, l'enregistre - - si non, restaure l'ancienne valeur - """ - self.editor.init_modif() - anc_val = self.node.item.get_valeur() - if valeurentree== None : - ##valeurentree = self.get_valeur() - valeurentree = str(self.leValue.text()) - print 'XXXXX valeurentree ->',valeurentree - - valeur,validite=self.node.item.eval_valeur(valeurentree) - if not validite : - commentaire = "impossible d'évaluer : %s " %`valeurentree` - self.display_valeur() - self.editor.affiche_infos(commentaire) - return - - test = self.node.item.set_valeur(valeur) - if test : - self.set_valeur_texte(str(valeurentree)) - - if not test : - mess = "impossible d'évaluer : %s " %`valeur` - self.editor.affiche_infos("Valeur du mot-clé non autorisée : "+mess) - elif self.node.item.isvalid() : - self.editor.affiche_infos('Valeur du mot-clé enregistrée') - else : - cr = self.node.item.get_cr() - mess = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal() - self.reset_old_valeur(anc_val,mess=mess) - - self.display_valeur() - - - # ------------- UNIQUE_Panel fin - # ------------- newSIMPPanel debut - def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): - """ - Enregistre val comme valeur de self.node.item.object SANS - faire de test de validité ni ré-évaluer l'ancienne valeur - permet de rester avec des valeurs non entrees et de ne pas - ré-évaluer des entiers par exemple - """ - self.editor.init_modif() - self.node.item.set_valeur(name) - self.editor.affiche_infos(mess) - - # ---------------------------------------------------------------------------------------- - # Méthodes utilisées pour la manipulation des items en notation scientifique - # ---------------------------------------------------------------------------------------- - def set_valeur_texte(self,texte_valeur) : - """ Sert à mettre à jour la notation scientifique""" - try : - if "R" in self.node.item.object.definition.type: - if texte_valeur[0] != "'": - clef=eval(texte_valeur) - if str(clef) != str(texte_valeur) : - self.node.item.object.init_modif() - clefobj=self.node.item.object.GetNomConcept() - if not self.editor.dict_reels.has_key(clefobj): - self.editor.dict_reels[clefobj] = {} - self.editor.dict_reels[clefobj][clef]=texte_valeur - self.editor.dict_reels[clefobj] - self.node.item.object.fin_modif() - except: - pass - - def get_valeur_texte(self,valeur) : - print "get_valeur_texte valeur->", valeur - valeur_texte="" - print 'A ->' , self.node.item.object.definition.type - if "R" in self.node.item.object.definition.type: - clefobj=self.node.item.object.GetNomConcept() - print 'B clefobj->' , clefobj - print 'B self.editor.dict_reels->' , self.editor.dict_reels - if self.editor.dict_reels.has_key(clefobj): - print 'C self.editor.dict_reels[clefobj]->' , self.editor.dict_reels[clefobj] - if self.editor.dict_reels[clefobj].has_key(valeur): - print 'D self.editor.dict_reels[clefobj][valeur]->' , self.editor.dict_reels[clefobj][valeur] - valeur_texte=self.editor.dict_reels[clefobj][valeur] - return valeur_texte - - # ------------- newSIMPPanel fin - - - - - - -class Node(browser.JDCNode): - def getPanel(self): - """ - """ - return UNIQUE_BASE_Panel( self, self.editor ) - - - class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): ## from newsimppanel import newSIMPPanel ## panel = newSIMPPanel @@ -284,97 +125,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): def init(self) : self.expandable = 0 - self.affect_panel() - - - def affect_panel(self): - """ - Cette méthode attribue le panel à l'objet pointé par self en fonction de la - nature de la valeur demandée pour cet objet - """ -## from uniquepanel import UNIQUE_Panel -## from plusieurspanel import PLUSIEURS_Panel - - - #print "affect_panel : ",self.nom,self.is_list(),self.has_into(), self.get_into(None) - # Attention l ordre des if est important - - if self.wait_shell(): - # l'objet attend un shell - from shellpanel import SHELLPanel - self.panel = SHELLPanel - elif self.has_into(): - # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs - if self.is_list() : - from plusieursintopanel import PLUSIEURS_INTO_Panel - self.panel = PLUSIEURS_INTO_Panel - else: - from uniqueintopanel import UNIQUE_INTO_Panel - self.panel = UNIQUE_INTO_Panel - else: - # l'objet prend une ou des valeurs à priori quelconques - if self.is_list() : - # on attend une liste de valeurs mais de quel type ? - if self.wait_assd(): - # on attend une liste de SD - from plusieursassdpanel import PLUSIEURS_ASSD_Panel - self.panel = PLUSIEURS_ASSD_Panel - else: - # on attend une liste de valeurs de types debase (entiers, réels,...) - #from plusieursbasepanel import PLUSIEURS_BASE_OR_UNELISTE_Panel - #self.panel = PLUSIEURS_BASE_OR_UNELISTE_Panel - from plusieursbasepanel import PLUSIEURS_BASE_Panel - self.panel = PLUSIEURS_BASE_Panel - else: - # on n'attend qu'une seule valeur mais de quel type ? - if self.wait_co(): - # on attend une SD ou un objet de la classe CO (qui n'existe pas encore) - from uniquesdcopanel import UNIQUE_SDCO_Panel - self.panel = UNIQUE_SDCO_Panel - elif self.wait_assd(): - # on attend une SD - from uniqueassdpanel import UNIQUE_ASSD_Panel - from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel - if 'R' in self.GetType(): - self.panel = UNIQUE_ASSD_Panel_Reel - else : - self.panel = UNIQUE_ASSD_Panel - else: - # on attend une valeur d'un type de base (entier,réel,...) - if self.wait_complex(): - # on attend un complexe - from uniquecomppanel import UNIQUE_COMP_Panel - self.panel = UNIQUE_COMP_Panel - else: - # on attend un entier, un réel ou une string -## from uniquebasepanel import UNIQUE_BASE_Panel CS_pbruno todo tmp UNIQUE_BASE_Panel - self.panel = UNIQUE_BASE_Panel - # cas particulier des fonctions - genea = self.get_genealogie() - if "VALE" in genea or "VALE_C" in genea: - if "DEFI_FONCTION" in genea : - from fonctionpanel import FONCTION_Panel - self.panel=FONCTION_Panel - #--------------------------------------------------------- - # PN ajout pour lancement de Salome - #--------------------------------------------------------- - if hasattr( self.appli, 'salome' ): - import panelsSalome - - self.select_noeud_maille=0 - self.clef_fonction="SALOME" - for i in range(0,len( genea )) : - self.clef_fonction=self.clef_fonction+"_"+ genea[i] - #if genea[i] == "GROUP_NO" or genea[i] == "GROUP_MA": - if "GROUP_NO" in genea[len(genea)-1] or "GROUP_MA" in genea[len(genea)-1]: - self.select_noeud_maille=1 - - recherche=panelsSalome.dict_classes_salome[self.panel] - if hasattr(recherche,self.clef_fonction): - self.panel=recherche - if self.select_noeud_maille==1 : - self.panel=recherche - + #----------------------------------------------- # diff --git a/Interface/uniquebasepanel.py b/Interface/uniquebasepanel.py index 74e3d87b..79ae5520 100644 --- a/Interface/uniquebasepanel.py +++ b/Interface/uniquebasepanel.py @@ -1,148 +1,181 @@ # -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. -# -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. -# -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# -# -# ====================================================================== -# Modules Python -import string,types,os -from Tkinter import * -from Tkinter import Widget -import Pmw -from copy import copy,deepcopy -import traceback - -# Modules Eficas -import Objecttreeitem -import prefs -import panels -import images -from widgets import FenetreDeParametre -from widgets import showerror - from Noyau.N_CR import justify_text -from utils import substract_list +from qt import * + +class UNIQUE_BASE_Panel(QTabWidget): #CS_pbruno todo tmp + """ + Classe servant à définir le panneau associé aux mots-clés simples qui attendent + une valeur d'un type de base (entier, réel ou string). + """ + def __init__(self,node, parent = None,name = None,fl = 0): + QTabWidget.__init__(self,parent,name,fl) + self.editor = parent + self.node = node + + tabSaisie = self._buildTabSaisie() + tabKey = QWidget(self) + + self.addTab( tabSaisie, QString('Saisie Valeur') ) + #self.insertTab( tabSaisie, 'Saisie Valeur' ) + #self.setCurrentPage(0) + + def __tr(self,s,c = None): + return qApp.translate("Form1",s,c) -# Import des panels -from uniquepanel import UNIQUE_Panel + def __trUtf8(self,s,c = None): + return qApp.translate("Form1",s,c,QApplication.UnicodeUTF8) + + def _buildTabSaisie(self): + """ + """ + tabSaisie = QWidget(self) + layout = QVBoxLayout(tabSaisie) + + self.leValue = QLineEdit(tabSaisie) + + label1 = QLabel(tabSaisie) + label1.setText("Valeur") + + layout.addWidget(label1) + layout.addWidget(self.leValue) + + pushButton = QPushButton(tabSaisie,"pushButton1") + + aide=self.get_aide() + aide= justify_text(texte=aide) + label2 = QLabel(tabSaisie) + label2.setText(aide) + layout.addWidget(label2) + + self.display_valeur() + + QObject.connect( pushButton , SIGNAL( "clicked()" ), self.valide ) #CS_pbruno todo bind Return + return tabSaisie + + def valide(self): + self.valid_valeur() + + def get_aide(self): + """ + Retourne la phrase d'aide indiquant de quel type doit être la valeur + du mot-clé simple fournie par l'utilisateur + """ + mc = self.node.item.get_definition() + d_aides = { 'TXM' : self.__trUtf8("Une chaîne de caractères est attendue"), + 'R' : self.__trUtf8("Un réel est attendu"), + 'I' : self.__trUtf8("Un entier est attendu") } + type = mc.type[0] + commentaire=str(d_aides.get(type, self.__trUtf8("Type de base inconnu"))) + aideval=self.node.item.aide() + commentaire=commentaire +"\n"+ aideval + return commentaire -class UNIQUE_BASE_Panel(UNIQUE_Panel): - """ - Classe servant à définir le panneau associé aux mots-clés simples qui attendent - une valeur d'un type de base (entier, réel ou string). - """ - def makeValeurPage(self,page): - """ - Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type - de base cad entier, réel, string ou complexe - """ - # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur, - # et de la liste des SD du bon type (constituant la liste des choix) - bulle_aide=self.get_bulle_aide() - aide=self.get_aide() - aide= justify_text(texte=aide) - liste_noms_sd = self.node.item.get_sd_avant_du_bon_type() - # Remplissage du panneau - self.frame_valeur = Frame(page) - self.frame_valeur.pack(fill='both',expand=1) - self.frame_valeur.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) - self.frame_valeur.bind("",self.parent.appli.efface_aide) - self.label = Label(self.frame_valeur,text='Valeur :') - self.label.place(relx=0.1,rely=0.2) - self.entry = Entry(self.frame_valeur,relief='sunken') - self.entry.place(relx=0.28,rely=0.2,relwidth=0.6) - self.entry.bind("",lambda e,c=self.valid_valeur:c()) - self.entry.bind("",lambda e,c=self.valid_valeur:c()) - # aide associée au panneau - self.frame_valeur.update() - self.aide = Label(self.frame_valeur, - text = aide, - wraplength=int(self.frame_valeur.winfo_width()*0.8), - justify='center') - self.aide.place(relx=0.5,rely=0.9,anchor='n') - # bouton parametre - bouton_parametres = Button(self.frame_valeur, text="Parametres", command=self.affiche_parametre) - bouton_parametres.place(relx=0.28,rely=0.5,relwidth=0.4) - bouton_val = Button(self.frame_valeur, text="Valider", command=self.valide) - bouton_val.place(relx=0.28,rely=0.6,relwidth=0.4) - # affichage de la valeur du MCS - self.display_valeur() - - def valide(self): - self.valid_valeur() - - def affiche_parametre(self) : - if self.node.item.get_liste_param_possible() != [ ]: - txtparam="" - for param in self.node.item.get_liste_param_possible(): - txtparam=txtparam+repr(param)+"\n" - if txtparam=="": - showerror("Aucun parametre ","Pas de parametre de ce type") +## def get_bulle_aide(self): +## """ +## Retourne la bulle d'aide associée au panneau et affichée par clic droit +## """ +## return """Saisissez la valeur que vous voulez affecter au mot-clé simple +## dans la zone de saisie et pressez """ + + def display_valeur(self): + """ + Affiche la valeur de l'objet pointé par self + """ + valeur = self.node.item.get_valeur() + if valeur == None or valeur == '' : # pas de valeur à afficher ... + valeur = '' + else: + valeur_texte=self.get_valeur_texte(valeur) + if valeur_texte: + valeur = valeur_texte + self.leValue.setText( str(valeur) ) + + + # ------------- UNIQUE_Panel debut + def valid_valeur(self,valeurentree=None): + """ + Teste si la valeur fournie par l'utilisateur est une valeur permise : + - si oui, l'enregistre + - si non, restaure l'ancienne valeur + """ + self.editor.init_modif() + anc_val = self.node.item.get_valeur() + if valeurentree== None : + ##valeurentree = self.get_valeur() + valeurentree = str(self.leValue.text()) + print 'XXXXX valeurentree ->',valeurentree + + valeur,validite=self.node.item.eval_valeur(valeurentree) + if not validite : + commentaire = "impossible d'évaluer : %s " %`valeurentree` + self.display_valeur() + self.editor.affiche_infos(commentaire) + return + + test = self.node.item.set_valeur(valeur) + if test : + self.set_valeur_texte(str(valeurentree)) + + if not test : + mess = "impossible d'évaluer : %s " %`valeur` + self.editor.affiche_infos("Valeur du mot-clé non autorisée : "+mess) + elif self.node.item.isvalid() : + self.editor.affiche_infos('Valeur du mot-clé enregistrée') else : - try : - self.fenetreparam.destroy() - except : - pass - self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam) + cr = self.node.item.get_cr() + mess = "Valeur du mot-clé non autorisée "+cr.get_mess_fatal() + self.reset_old_valeur(anc_val,mess=mess) - def destroy(self): - try : - self.fenetreparam.destroy() - except : - pass - Widget.destroy(self) - - def get_aide(self): - """ - Retourne la phrase d'aide indiquant de quel type doit être la valeur - du mot-clé simple fournie par l'utilisateur - """ - mc = self.node.item.get_definition() - d_aides = { 'TXM' : "Une chaîne de caractères est attendue", - 'R' : "Un réel est attendu", - 'I' : "Un entier est attendu"} - type = mc.type[0] - commentaire=d_aides.get(type,"Type de base inconnu") - aideval=self.node.item.aide() - commentaire=commentaire +"\n"+ aideval - return commentaire - - def get_bulle_aide(self): - """ - Retourne la bulle d'aide associée au panneau et affichée par clic droit - """ - return """Saisissez la valeur que vous voulez affecter au mot-clé simple - dans la zone de saisie et pressez """ + self.display_valeur() + - def display_valeur(self): + # ------------- UNIQUE_Panel fin + # ------------- newSIMPPanel debut + def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'): """ - Affiche la valeur de l'objet pointé par self + Enregistre val comme valeur de self.node.item.object SANS + faire de test de validité ni ré-évaluer l'ancienne valeur + permet de rester avec des valeurs non entrees et de ne pas + ré-évaluer des entiers par exemple """ - valeur = self.node.item.get_valeur() - if valeur == None or valeur == '' : # pas de valeur à afficher ... - self.entry.delete(0,END) - self.entry.focus() - return - - valeur_texte=self.get_valeur_texte(valeur) - if valeur_texte != "": - valeur=valeur_texte - self.entry.delete(0,END) - self.entry.insert(0,valeur) - self.entry.focus() + self.editor.init_modif() + self.node.item.set_valeur(name) + self.editor.affiche_infos(mess) + # ---------------------------------------------------------------------------------------- + # Méthodes utilisées pour la manipulation des items en notation scientifique + # ---------------------------------------------------------------------------------------- + def set_valeur_texte(self,texte_valeur) : + """ Sert à mettre à jour la notation scientifique""" + try : + if "R" in self.node.item.object.definition.type: + if texte_valeur[0] != "'": + clef=eval(texte_valeur) + if str(clef) != str(texte_valeur) : + self.node.item.object.init_modif() + clefobj=self.node.item.object.GetNomConcept() + if not self.editor.dict_reels.has_key(clefobj): + self.editor.dict_reels[clefobj] = {} + self.editor.dict_reels[clefobj][clef]=texte_valeur + self.editor.dict_reels[clefobj] + self.node.item.object.fin_modif() + except: + pass + + def get_valeur_texte(self,valeur) : + print "get_valeur_texte valeur->", valeur + valeur_texte="" + print 'A ->' , self.node.item.object.definition.type + if "R" in self.node.item.object.definition.type: + clefobj=self.node.item.object.GetNomConcept() + print 'B clefobj->' , clefobj + print 'B self.editor.dict_reels->' , self.editor.dict_reels + if self.editor.dict_reels.has_key(clefobj): + print 'C self.editor.dict_reels[clefobj]->' , self.editor.dict_reels[clefobj] + if self.editor.dict_reels[clefobj].has_key(valeur): + print 'D self.editor.dict_reels[clefobj][valeur]->' , self.editor.dict_reels[clefobj][valeur] + valeur_texte=self.editor.dict_reels[clefobj][valeur] + return valeur_texte + + # ------------- newSIMPPanel fin -- 2.39.2