]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
PN : modification pour présentation automatique des paramètres
authoreficas <>
Thu, 16 Sep 2004 08:39:51 +0000 (08:39 +0000)
committereficas <>
Thu, 16 Sep 2004 08:39:51 +0000 (08:39 +0000)
Editeur/composimp.py
Editeur/plusieursbasepanel.py
Editeur/uniquebasepanel.py
Editeur/widgets.py

index b7d82f6116de69b84b32cd9b8171028ea75f2772..353082a2e5f0009afa453950d882e51408b7e909 100644 (file)
@@ -262,6 +262,21 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
          listevalideliste=listevalideitem
       return listevalideliste
 
+  def get_liste_param_possible(self):
+  # 
+      liste_param=[]
+      for param in self.object.jdc.params:
+         encorevalide=self.valide_item(param.valeur)
+          if encorevalide:
+            type_param=param.valeur.__class__.__name__
+            for typ in self.definition.type:
+                if typ=='R' and type_param=='float':
+                    liste_param.append(param)
+                if typ=='I' and type_param=='int':
+                    liste_param.append(param)
+                if typ=='TXM' and type_param=='str':
+                    liste_param.append(repr(param))
+      return liste_param
 
   #--------------------------------------------------
   #
index b9ead4d1f5bbc0fadfc68e9854bf898bc5e91041..b7e829010dab890fe2cce6564df5d5e9d4aac08e 100644 (file)
@@ -34,6 +34,7 @@ from widgets import showinfo
 from widgets import askopenfilename
 from widgets import ListeChoix
 from widgets import FenetreDeSelection
+from widgets import FenetreDeParametre
 
 from Noyau.N_CR import justify_text
 from utils import substract_list
@@ -133,6 +134,16 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
                               command = self.annule_modifs_valeur)
       for but in (bouton_accepter,bouton_annuler):
           but.pack(side='left',padx=5)
+            # traitement de la fenetre des parametres
+      if self.node.item.get_liste_param_possible() != [ ]:
+         txtparam=""
+         for param in self.node.item.get_liste_param_possible():
+            txtparam=txtparam+repr(param)+"\n"
+         self.fenetreparam=FenetreDeParametre( self,
+                                       self.node.item,
+                                       self.parent.appli,
+                                       txtparam)
+
 
   def add_valeur_plusieurs_base(self,name=None):
       if name != None :
index 49c4ae8bbceb57a6f9f2a0bb64d00b7a6daed308..e49de52ac63ed67930a548ab6268316b877ab2f0 100644 (file)
@@ -21,6 +21,7 @@
 # Modules Python
 import string,types,os
 from Tkinter import *
+from Tkinter import Widget
 import Pmw
 from copy import copy,deepcopy
 import traceback
@@ -30,8 +31,7 @@ import Objecttreeitem
 import prefs
 import panels
 import images
-from widgets import ListeChoix
-from widgets import FenetreDeSelection
+from widgets import FenetreDeParametre
 
 from Noyau.N_CR import justify_text
 from utils import substract_list
@@ -66,7 +66,6 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel):
       self.entry = Entry(self.frame_valeur,relief='sunken')
       self.entry.place(relx=0.28,rely=0.5,relwidth=0.6)
       self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
-      self.entry.focus()
       # aide associée au panneau
       self.frame_valeur.update()
       self.aide = Label(self.frame_valeur, 
@@ -76,6 +75,22 @@ class UNIQUE_BASE_Panel(UNIQUE_Panel):
       self.aide.place(relx=0.5,rely=0.7,anchor='n')
       # affichage de la valeur du MCS
       self.display_valeur()
+      # traitement de la fenetre des parametres
+      if self.node.item.get_liste_param_possible() != [ ]:
+         txtparam=""
+         for param in self.node.item.get_liste_param_possible():
+            txtparam=txtparam+repr(param)+"\n"
+         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):
       """
index 003d759cd00243307f04b9d36e735e52bc8d803c..228a54804b6e7655b9ccf4461bcfbf69020f9bf3 100644 (file)
@@ -137,6 +137,12 @@ class Fenetre :
             else:
                 showinfo("Sauvegarde effectuée","Sauvegarde effectuée dans le fichier %s" %file)
 
+    def destroy(self):
+        try :
+          self.fenetre.destroy()
+       except :
+          pass
+
 class FenetreYesNo(Fenetre):
     def __init__(self,appli,titre="",texte="",yes="Yes",no="No"):
         self.appli=appli
@@ -212,6 +218,7 @@ class FenetreDeSelection(Fenetre):
         self.but_save.place_forget()
         self.but_save.place(relx=0.6,rely=0.5,anchor='center')
         self.but_quit.place(relx=0.8,rely=0.5,anchor='center')
+     
 
     def get_separateurs_autorises(self):
         """
@@ -382,6 +389,52 @@ class FenetreDeSelection(Fenetre):
         liste.extend(liste_valeurs)
         self.panel.Liste_valeurs.put_liste(liste)
 
+class FenetreDeParametre(Fenetre) :
+    def __init__(self,parent,item,appli,texte):
+        self.parent=parent
+        self.appli=appli
+        self.fenetre = Toplevel()
+        self.fenetre.configure(width = 250,height=100)
+        self.fenetre.protocol("WM_DELETE_WINDOW", self.quit)
+        self.fenetre.title("Parametres")
+        self.titre = "Parametres"
+        self.texte = string.replace(texte,'\r\n','\n')
+        fonte=fontes.standardcourier10
+
+        # définition des frames
+        self.frame_texte = Frame(self.fenetre)
+        self.frame_texte.place(relx=0,rely=0,relwidth=1,relheight=0.9)
+        # définition de la zone texte et du scrollbar
+        self.zone_texte = Text(self.frame_texte,font=fonte)
+        self.zone_texte.bind("<Key-Prior>", self.page_up)
+        self.zone_texte.bind("<Key-Next>", self.page_down)
+        self.zone_texte.bind("<Key-Up>", self.unit_up)
+        self.zone_texte.bind("<Key-Down>", self.unit_down)
+        self.zone_texte.bind("<Double-Button-3>", self.OnButton3doubleclick)
+        self.scroll_v = Scrollbar (self.frame_texte,command = self.zone_texte.yview)
+        self.scroll_v.pack(side='right',fill ='y')
+        self.zone_texte.pack(side='top',fill='both',expand=1,padx=5,pady=10)
+        self.zone_texte.configure(yscrollcommand=self.scroll_v.set)
+        # affichage du texte
+        self.affiche_texte(self.texte)
+        self.zone_texte.config(state="disabled")
+
+    def OnButton3doubleclick(self,event):
+        try:
+            selection=self.zone_texte.selection_get()
+        except:
+            showerror("Pas de donnée sélectionnée",
+                       "Selectionner un parametre")
+        l_param = ""
+        for param in selection.splitlines():
+           nomparam=param[0:param.find("=")-1]
+            if nomparam != '' : 
+               l_param=l_param+nomparam+','
+       self.parent.entry.delete(0,Tkinter.END)
+       self.parent.entry.insert(0,l_param[0:-1])
+       self.parent.valid_valeur()
+       self.quit()
+
 class Formulaire:
     """
     Cette classe permet de créer une boîte Dialog dans laquelle