]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
*** empty log message ***
authoreficas <>
Wed, 4 Feb 2004 16:26:56 +0000 (16:26 +0000)
committereficas <>
Wed, 4 Feb 2004 16:26:56 +0000 (16:26 +0000)
Editeur/fonctionpanel.py [new file with mode: 0644]

diff --git a/Editeur/fonctionpanel.py b/Editeur/fonctionpanel.py
new file mode 100644 (file)
index 0000000..c57e894
--- /dev/null
@@ -0,0 +1,203 @@
+#            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 *
+import Pmw
+from tkFileDialog import *
+from tkMessageBox import showinfo
+from copy import copy,deepcopy
+import traceback
+
+# Modules Eficas
+import Objecttreeitem
+import prefs
+import panels
+import images
+from widgets import ListeChoix
+from widgets import FenetreDeSelection
+
+from Noyau.N_CR import justify_text
+from utils import substract_list
+from plusieursbasepanel import PLUSIEURS_BASE_Panel
+
+
+class FONCTION_Panel(PLUSIEURS_BASE_Panel):
+  def makeValeurPage(self,page):
+      """
+      Crée la page de saisie d'une liste de valeurs à priori quelconques,
+      cad qui ne sont  pas à choisir dans une liste prédéfinie
+      """
+      # On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
+      # et la liste des valeurs déjà affectées à l'objet courant
+      bulle_aide=self.get_bulle_aide()
+      objet_mc = self.node.item.get_definition()
+      aide = self.get_aide()
+      aide = justify_text(texte=aide)
+      min,max = self.node.item.GetMinMax()
+      l_valeurs = self.node.item.GetListeValeurs()
+      l2_valeurs=self.decoupeListeValeurs(l_valeurs)
+
+      # création des frames globales
+      self.frame1 = Frame(page,relief='groove',bd=2)
+      self.frame2 = Frame(page)
+      self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85)
+      self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15)
+      self.frame_right = Frame(self.frame1)
+      self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.)
+
+      # création des frames internes
+      self.frame_valeurs = Frame(self.frame1)
+      self.frame_valeurs.place(relx=0.02,rely=0.05,relwidth=0.35,relheight=0.95)
+      self.frame_boutons_fleches = Frame(self.frame_right)
+      self.frame_boutons_fleches.place(relx=0.,rely=0.2,relwidth=0.2,relheight=0.5)
+      self.frame_choix = Frame(self.frame_right)
+      self.frame_choix.place(relx=0.2,rely=0.2,relwidth=0.7,relheight=0.5)
+      self.frame_aide = Frame(self.frame_right)
+      self.frame_aide.place(relx=0.1,rely=0.7,relwidth=0.8,relheight=0.3)
+      self.frame_boutons = Frame(self.frame2)
+      self.frame_boutons.place(relx=0.35,rely=0.,relwidth=0.3,relheight=1.)
+      for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs,
+                 self.frame_boutons_fleches,self.frame_choix,self.frame_aide,self.frame_boutons):
+          fram.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
+          fram.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
+
+      # création des objets dans les frames
+      liste_commandes_valeurs = (("<Button-1>",self.selectValeur),
+                                 ("<Button-3>",self.deselectValeur),
+                                 ("<Double-Button-1>",self.sup_valeur_sans_into))
+      self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l2_valeurs,liste_commandes = liste_commandes_valeurs,
+                                      titre="Valeur(s) actuelle(s)")
+
+      # Création de l'entry ou de la liste des SD
+      self.label = Label(self.frame_choix,text="Valeur :")
+      self.make_entry(frame = self.frame_choix,command = self.
+)
+      self.label.place(relx=0.05,rely=0.5)
+
+      # Création d'un bouton "Importer ..." sur le panel.
+      bouton_valeurs_fichier = Button(self.frame_choix,
+                                      text="Importer ...",
+                                      command=self.select_in_file)
+      bouton_valeurs_fichier.place(relx=0.28,rely=0.7,relwidth=0.6)
+      self.ajout_valeurs = None
+
+      # boutons Ajouter et Supprimer
+      bouton_add = Button(self.frame_boutons_fleches,
+                          image = images.get_image('arrow_left'),
+                          #command = self.add_valeur_plusieurs_base)
+                          command = self.add_double_valeur_plusieurs_base)
+      bouton_sup = Button(self.frame_boutons_fleches,
+                          image = images.get_image('arrow_right'),
+                          command = self.sup_valeur_sans_into)
+      bouton_add.place(relx=0.3,rely=0.35)
+      bouton_sup.place(relx=0.3,rely=0.65)
+      # affichage de l'aide
+      self.frame_aide.update()
+      self.aide = Label(self.frame_aide,
+                        text = aide,
+                        justify='center',
+                        anchor='center',
+                       wraplength=int(self.frame_aide.winfo_width()*0.8))
+      self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
+      self.Liste_valeurs.affiche_liste()
+      # boutons Accepter et Annuler
+      bouton_accepter = Button(self.frame_boutons,
+                               text='Valider',
+                               command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur_recolle(m,M))
+      bouton_annuler = Button(self.frame_boutons,
+                              text = 'Annuler',
+                              command = self.annule_modifs_valeur)
+      for but in (bouton_accepter,bouton_annuler):
+          but.pack(side='left',padx=5)
+
+
+  def decoupeListeValeurs(self,liste):
+      #decoupe la liste des valeurs en 2 ( les x puis les y)
+      l_valeurs=[]
+      for i in range(len(liste)/2) :
+          t=(liste[i*2], liste[i*2+1])
+          l_valeurs.append(t)
+      return l_valeurs
+
+
+  def accepte_modifs_valeur_recolle(self,min,max):
+      l_valeurs=[]
+      l1_valeurs = self.Liste_valeurs.get_liste()
+      for val in l1_valeurs :
+         for item in val :
+            l_valeurs.append(item) 
+      self.accepte_modifs_valeur(min,max,l_valeurs)
+
+  def add_double_valeur_plusieurs_base(self):
+      print "FFFFFFFFFFFFFFFFFF"
+      # on verifie qu'il s agit bien d un tuple
+      # on enleve les parentheses eventuelles
+      doublevaleur_entree=self.get_valeur()
+      try:
+       if doublevaleur_entree[0]=='(' :
+          doublevaleur_entree=doublevaleur_entree[1:-1]
+       if doublevaleur_entree[-1]==')' :
+          doublevaleur_entree=doublevaleur_entree[0:-2]
+       val1=doublevaleur_entree.split(',')[0] 
+       val2=doublevaleur_entree.split(',')[1] 
+      except :
+        commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
+        self.parent.appli.affiche_infos(commentaire)
+        return
+
+      # et seulement d un tuple
+      try:
+       val3=doublevaleur_entree.split(',')[2]
+        commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
+        self.parent.appli.affiche_infos(commentaire)
+        return
+      except :
+        # c est la le cas normal
+       pass
+
+      # on verifie la validite des valeurs sont correctes
+      valeur,validite=self.node.item.eval_valeur((val1,val2))
+      if not validite :
+        commentaire = "impossible d'évaluer : %s " %`doublevaleur_entree`
+        self.parent.appli.affiche_infos(commentaire)
+       return
+
+      # on verifie la validite de la liste
+      liste=[]
+      l1_valeurs = self.Liste_valeurs.get_liste()
+      for val in l1_valeurs :
+         for item in val :
+            liste.append(item) 
+      print liste
+      validite_liste=self.node.item.valide_liste_partielle(valeur[0],liste)
+      if not validite_liste:
+        commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree`
+        self.parent.appli.affiche_infos(commentaire)
+       return
+      validite_liste=self.node.item.valide_liste_partielle(valeur[1],liste)
+      if not validite_liste:
+        commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree`
+        self.parent.appli.affiche_infos(commentaire)
+       return
+     
+      # si on est la on ajoute le tuple
+      l1_valeurs.append((valeur[0],valeur[1]))
+      self.Liste_valeurs.put_liste(l1_valeurs)