]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
*** empty log message ***
authorpbruno <>
Tue, 20 Feb 2007 11:27:52 +0000 (11:27 +0000)
committerpbruno <>
Tue, 20 Feb 2007 11:27:52 +0000 (11:27 +0000)
Interface/composimp.py
Interface/uniquebasepanel.py

index 4f4211b8255c188671cf2fa47be3efc3befeedbf..d14c8cdc0f7822b4ed3e7a50352340d9d683cad0 100644 (file)
@@ -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("<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
@@ -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
-
+  
 
   #-----------------------------------------------
   #
index 74e3d87b774bc13755438981fba27c4f230b1c30..79ae552046f7cd12923b977d26fc9bc47e3c8084 100644 (file)
 # -*- 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