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("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
-## self.frame_valeur.bind("<ButtonRelease-3>",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("<Return>",lambda e,c=self.valid_valeur:c())
-## self.entry.bind("<KP_Enter>",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 <Return>"""
-
- 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
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
-
+
#-----------------------------------------------
#
# -*- 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("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
- self.frame_valeur.bind("<ButtonRelease-3>",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("<Return>",lambda e,c=self.valid_valeur:c())
- self.entry.bind("<KP_Enter>",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 <Return>"""
+
+ 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 <Return>"""
+ 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