]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/panelsSalome.py
Salome HOME
pour tenir compte de LASSD
[tools/eficas.git] / Editeur / panelsSalome.py
1 # -*- coding: utf-8 -*-
2 print "Import de panelsSalome"
3
4 from Tkinter import *
5 from widgets import ListeChoix
6 from widgets import showerror
7
8 from fonctionpanel      import FONCTION_Panel
9 from shellpanel         import SHELLPanel
10 from plusieursintopanel import PLUSIEURS_INTO_Panel
11 from plusieursassdpanel import PLUSIEURS_ASSD_Panel
12 from plusieursbasepanel import PLUSIEURS_BASE_Panel
13 from uniquesdcopanel    import UNIQUE_SDCO_Panel
14 from uniqueassdpanel    import UNIQUE_ASSD_Panel
15 from uniqueintopanel    import UNIQUE_INTO_Panel
16 from uniquecomppanel    import UNIQUE_COMP_Panel
17 from uniquebasepanel    import UNIQUE_BASE_Panel
18 from uniqueassdpanel    import UNIQUE_ASSD_Panel_Reel
19
20 from Noyau.N_CR import justify_text
21
22 import traceback
23 import SalomePyQt
24 import salome
25 import images
26 import SMESH_utils
27 sgQt=SalomePyQt.SalomePyQt()
28
29
30
31 # 2 types de commandes vont etre particularisees dans Salome
32 #
33 # - un cas general : 
34 # Toutes les commandes possedant GROUP_NO ou GROUP_MA
35 # seront surchargees d office
36 # pour cela on va utiliser le dictionnaire dict_classes_salome
37 # qui va permettre de changer la classe de la commande
38 # ainsi si un panel en dehors de salome a pour classe PLUSIEURS_BASE_Panel
39 # la classe de ce panel devient alors SALOME_PLUSIEURS_BASE_Panel
40 # (pour cela voir composimp)
41
42 # des commandes "autres" ne pouvant pas etre identifiées par leur nom 
43 # il suffit de creer dans la classe SALOME de la commande
44 # une fonction portant son nom 
45 # Exemple de particularisation d un panel :
46 # Supposons que l on veuille particulariser la commande
47 #       - LIRE_MAILLAGE_UNITE 
48 # le panel initial a pour classe UNIQUE_BASE_Panel
49 # il suffit d'ajouter dans la classe derivée SALOME_UNIQUE_BASE_Panel
50 # une fonction  SALOME_LIRE_MAILLAGE_UNITE
51 # la classe de ce panel devient alors SALOME_UNIQUE_BASE_Panel
52 # on peut surcharger les methodes nécessaires (affichage par exemple)  
53
54
55 class SALOME_SHELLPanel (SHELLPanel):
56         ""
57
58 class SALOME_FONCTION_Panel (FONCTION_Panel):
59         ""
60
61 class SALOME_PLUSIEURS_INTO_Panel (PLUSIEURS_INTO_Panel):
62         ""
63
64 class SALOME_PLUSIEURS_ASSD_Panel (PLUSIEURS_ASSD_Panel):
65         ""
66
67 class SALOME_UNIQUE_INTO_Panel (UNIQUE_INTO_Panel):
68         ""
69
70 class SALOME_UNIQUE_SDCO_Panel (UNIQUE_SDCO_Panel):
71         ""
72
73 class SALOME_UNIQUE_ASSD_Panel (UNIQUE_ASSD_Panel):
74         ""
75
76 class SALOME_UNIQUE_COMP_Panel (UNIQUE_COMP_Panel):
77         ""
78
79 class SALOME_UNIQUE_ASSD_Panel_Reel (UNIQUE_ASSD_Panel_Reel):
80         ""
81
82 # ------------------------------------------------------------------------------#
83 # classe SALOME_PLUSIEURS_BASE_Panel
84 #
85 # Commandes modifiées  :  
86 #       - AFFE_CHAR_MECA_DDL_IMPO_GROUP_NO
87 # Methodes surchargées :  
88 #       - makeValeurPage(self,page)
89 #
90 # ------------------------------------------------------------------------------#
91
92 class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel):
93
94
95   def convertit_group_no_from_salome(self,liste_in):
96       newr=[]
97       #try:
98       if ( 1 == 1 ) :
99           for entree in liste_in :
100                travail=[]
101                travail.append(entree)
102                entryname_list=SMESH_utils.entryToName(salome.myStudy,travail)
103                entreeName=entryname_list[0]
104                if dict_geom_numgroupe.has_key(entreeName):
105                    r=dict_geom_numgroupe[entreeName]
106                else:
107                    r=SMESH_utils.getAsterGroupNo(salome.myStudy,travail)
108                    dict_geom_numgroupe[entreeName]=r
109                for i in r :
110                    newr.append(i)
111       #except:
112       else :
113            print "pas de groupe de noeuds associé"
114            showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de noeuds")
115       return newr
116
117   def convertit_group_maille_from_salome(self,liste_in):
118       newr=[]
119       #try:
120       if [ 1 == 1 ]:
121           print liste_in
122           for entree in liste_in :
123                travail=[]
124                travail.append(entree)
125                entryname_list=SMESH_utils.entryToName(salome.myStudy,travail)
126                entreeName=entryname_list[0]
127                if dict_geom_numgroupe.has_key(entreeName):
128                    r=dict_geom_numgroupe[entreeName]
129                else:
130                    r=SMESH_utils.getAsterGroupMa(salome.myStudy,travail)
131                    dict_geom_numgroupe[entreeName]=r
132                if r != None :
133                    for i in r :
134                       newr.append(i)
135       #except:
136       else :
137            print "pas de groupe de maille associé"
138            showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de maille")
139       return newr
140
141   def convertit_entrees_en_valeurs(self,entrychaine):
142       if SALOME_PLUSIEURS_BASE_Panel.__dict__.has_key(self.clef_fonction):
143            valeur=apply(SALOME_PLUSIEURS_BASE_Panel.__dict__[self.clef_fonction],(self,entrychaine))
144       else :
145            if (self.clef_fonction.find("GROUP_NO") != -1) and (self.clef_fonction.find("GROUP_MA") != -1) :
146               if (self.clef_fonction.find("GROUP_NO") < self.clef_fonction.find("GROUP_MA")) :
147                 valeur=self.convertit_group_maille_from_salome(entrychaine)
148               else :
149                 valeur=self.convertit_group_no_from_salome(entrychaine)  
150            elif self.clef_fonction.find("GROUP_NO") != -1 :
151                valeur=self.convertit_group_no_from_salome(entrychaine)
152            else :
153                if self.clef_fonction.find("GROUP_MA") != -1 :
154                    valeur=self.convertit_group_maille_from_salome(entrychaine)
155                else :
156                     print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
157                     print "Pb pas de fonction de conversion de la valeur Salome en valeur Aster"
158                     print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
159                     valeur=[]
160       print "VALEUR", valeur
161       return valeur
162
163   def sup_valeur_from_salome(self,name=None):
164       """
165       Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée
166       """
167       liste_valeurs = self.Liste_valeurs.get_liste()
168       liste_valeurs_salome=self.Liste_valeurs_salome.get_liste()
169       entrychaine=salome.sg.getAllSelected()
170
171       try:
172           valeur = self.convertit_entrees_en_valeurs(entrychaine)
173           for i in valeur :
174             if i in liste_valeurs :
175                 liste_valeurs.remove(i)
176                 print "enleve" , i
177       except:
178           # la valeur sélectionnée n'est pas dans la liste
179           pass
180
181       entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine)
182       self.entrygroupe.delete(0,END)
183       self.sortie.delete(0,END)
184       for entryname in entryname_list:
185           try:
186              liste_valeurs_salome.remove(entryname)
187           except:
188              print "la valeur ", entryname, "n est pas dans la liste"
189           entryname=entryname + " "
190           self.sortie.insert(0,entryname)
191       self.selected_valeur = None
192       self.Liste_valeurs.put_liste(liste_valeurs)
193       self.Liste_valeurs_salome.put_liste(liste_valeurs_salome)
194       self.recalcule()
195
196   def visu_in_salome(self):
197       liste_valeurs = self.Liste_valeurs.get_liste()
198       entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs)
199
200   def visu3D_in_salome(self):
201       liste_valeurs = self.Liste_valeurs.get_liste()
202       entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs)
203
204   def recalcule(self):
205       liste_valeurs_salome=self.Liste_valeurs_salome.get_liste()
206       groups={}
207       liste_valeurs = self.Liste_valeurs.get_liste()
208       for valeur in liste_valeurs_salome:
209           r=dict_geom_numgroupe[valeur]
210           for i in r :
211               if i not in liste_valeurs :
212                   liste_valeurs.append(i)
213       self.Liste_valeurs.put_liste(liste_valeurs)
214
215   def add_valeur_from_salome(self,name=None):
216        entrychaine=salome.sg.getAllSelected()
217        self.sortie.delete(0,END)
218        self.entrygroupe.delete(0,END)
219        if entrychaine != '':
220           entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine)
221           touteslesvaleurs = self.convertit_entrees_en_valeurs(entrychaine)
222          
223           valeur=[]
224           liste_valeurs  = self.Liste_valeurs.get_liste()
225           for i in touteslesvaleurs:
226               if i not in liste_valeurs:
227                  valeur.append(i)
228               
229           if valeur==[]:
230              entryname_list=[]
231
232           liste_valeurs_salome = self.Liste_valeurs_salome.get_liste()
233           for entryname in entryname_list:
234               if entryname not in liste_valeurs_salome: 
235                  liste_valeurs_salome.append(entryname)
236               entryname=entryname + " "
237               self.entrygroupe.insert(0,entryname)
238           self.Liste_valeurs_salome.put_liste(liste_valeurs_salome)
239
240           if self.node.item.wait_reel():
241              print "wait_reel()"
242              valeur = self.traite_reel(valeur)
243           if self.node.item.wait_geom():
244              print "wait_geom()"
245              val,test1 = valeur,1
246           else:
247              print "else wait"
248              val,test1 = self.node.item.object.eval_valeur(valeur)
249
250           if test1 :
251              test2 = self.node.item.object.verif_type(val)
252              if test2 :
253                  liste_valeurs = self.Liste_valeurs.get_liste()
254                  if len(liste_valeurs) >= max :
255                      self.parent.appli.affiche_infos("La liste a déjà atteint le nombre maximum d'éléments, ajout refusé")
256                      self.erase_valeur()
257                      return
258                  if type(val) == type([]):
259                    for groupe in val:
260                      liste_valeurs.append(groupe)
261                  else:
262                    liste_valeurs.append(val)
263                  self.Liste_valeurs.put_liste(liste_valeurs)
264                  self.parent.appli.affiche_infos("Nouvelle valeur acceptée")
265              else:
266                  self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
267           else:
268              print "impossible d'évaluer %s" %val
269              self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
270
271    
272   def makeValeurPage(self,page):
273       """
274       Crée la page de saisie d'une liste de valeurs à priori quelconques,
275       cad qui ne sont  pas à choisir dans une liste prédéfinie
276       """
277       # On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
278       # et la liste des valeurs déjà affectées à l'objet courant
279       bulle_aide=self.get_bulle_aide()
280       objet_mc = self.node.item.get_definition()
281       aide = self.get_aide()
282       aide = justify_text(texte=aide)
283       min,max = self.node.item.GetMinMax()
284       self.clef_fonction=  self.node.item.clef_fonction
285       l_valeurs = self.node.item.GetListeValeurs()
286
287       self.frame1 = Frame(page,relief='groove',bd=2)
288       self.frame2 = Frame(page)
289       self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85)
290       self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15)
291       self.frame_right = Frame(self.frame1)
292       self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.)
293
294       # création des frames internes
295       self.frame_valeurs = Frame(self.frame1)
296       self.frame_valeurs.place(relx=0.0,rely=0.0,relwidth=0.35,relheight=0.95)
297
298       self.frame_choix = Frame(self.frame_right)
299       self.frame_choix.place(relx=0.0,rely=0.0,relwidth=1,relheight=0.9)
300       self.frame_valeurs_salome = Frame(self.frame_right)
301       self.frame_valeurs_salome.place(relx=0.02,rely=0.7,relwidth=0.9,relheight=0.3)
302
303       self.frame_boutons = Frame(self.frame2)
304       self.frame_boutons.place(relx=0.1,rely=0.,relwidth=0.5,relheight=1.)
305       self.frame_aide = Frame(self.frame2)
306       self.frame_aide.place(relx=0.6,rely=0.,relwidth=0.5,relheight=1)
307
308       for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs,
309                  self.frame_choix,self.frame_aide,self.frame_boutons):
310             fram.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
311             fram.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
312
313       # création des objets dans les frames
314       liste_commandes_valeurs = (("<Button-1>",self.selectValeur),
315                                  ("<Button-3>",self.deselectValeur),
316                                  ("<Double-Button-1>",self.sup_valeur_sans_into))
317       self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,
318                                       liste_commandes = liste_commandes_valeurs,
319                                       titre="Valeur(s) actuelle(s)")
320
321     # PN : pour ajouter les validators
322       self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base,y=0.55)
323
324       bouton_valeurs_fichier = Button(self.frame_choix,
325                                       text="Importer ...",
326                                       command=self.select_in_file)
327       bouton_valeurs_fichier.place(relx=0.28,rely=0.65,relwidth=0.6)
328
329       self.ajout_valeurs = None
330       self.b = Button(self.frame_choix,text='ajout select.',command=self.add_valeur_from_salome)
331
332       self.b.place(relx=0.03,rely=0.05,relwidth=0.35)
333       self.entrygroupe = Entry(self.frame_choix,relief='sunken')
334       self.entrygroupe.place(relx=0.4,rely=0.05,relwidth=0.6)
335
336       self.a = Button(self.frame_choix,text='enlev. select.',command=self.sup_valeur_from_salome)
337       self.a.place(relx=0.03,rely=0.2,relwidth=0.35)
338       self.sortie = Entry(self.frame_choix,relief='sunken')
339       self.sortie.place(relx=0.4,rely=0.2,relwidth=0.6)
340       self.c = Button(self.frame_choix,text='Visualiser',command=self.visu_in_salome)
341       self.c.place(relx=0.03,rely=0.35,relwidth=0.35)
342
343       self.genea =self.node.item.get_genealogie()
344       print self.genea
345       if "AFFE_CARA_ELEM" in self.genea :
346          self.d=Button(self.frame_choix,text='Visu 3D',command=self.visu3D_in_salome)
347          self.d.place(relx=0.47,rely=0.35,relwidth=0.35)
348
349       l_salome_valeurs=self.node.item.get_salome_valeurs()
350       self.Liste_valeurs_salome=ListeChoix(self,self.frame_valeurs_salome,l_salome_valeurs,
351                                         liste_commandes = liste_commandes_valeurs,
352                                         titre="Valeur(s) Salome actuelle(s) ")
353       self.Liste_valeurs_salome.affiche_liste()
354
355
356       # boutons Ajouter et Supprimer
357       bouton_add = Button(self.frame_choix,
358                           image = images.get_image('arrow_left'),
359                           command = self.add_valeur_plusieurs_base)
360       bouton_sup = Button(self.frame_choix,
361                           image = images.get_image('arrow_right'),
362                           command = self.sup_valeur_sans_into)
363       bouton_add.place(relx=0.08,rely=0.55)
364       bouton_sup.place(relx=0.08,rely=0.65)
365
366       # affichage de l'aide
367       self.frame_aide.update()
368       self.aide = Label(self.frame_aide, text = aide,
369                         justify='center', anchor='center',
370                         wraplength=int(self.frame_aide.winfo_width()*0.8))
371       self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
372       self.Liste_valeurs.affiche_liste()
373
374       # boutons Accepter et Annuler
375       bouton_accepter = Button(self.frame_boutons,
376                                text='Valider',
377                                command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
378       bouton_annuler = Button(self.frame_boutons,
379                               text = 'Annuler',
380                               command = self.annule_modifs_valeur)
381       for but in (bouton_accepter,bouton_annuler):
382           but.pack(side='left',padx=5)
383
384
385
386 # ------------------------------------------------------------------------------#
387 # classe SALOME_UNIQUE_BASE_Panel
388 #
389 # Commandes modifiées  :  
390 #       - LIRE_MAILLAGE_UNITE 
391 # Methodes surchargées :  
392 #       - makeValeurPage(self,page)
393 #
394 # ------------------------------------------------------------------------------#
395
396 class SALOME_UNIQUE_BASE_Panel(UNIQUE_BASE_Panel):
397
398 # ce dictionnaire va servir lors de la sortie d efficas
399 # a creer le fichier qui sera integre au config.txt
400 # pour relier une unite logique et un nom de fichier
401
402   dict_fichier_unite={}
403
404
405   def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N(self):
406       entrychaine=salome.sg.getAllSelected()
407       if entrychaine != '':
408           self.entry2.delete(0,END)
409           try:
410               SO = salome.myStudy.FindObjectID(entrychaine[0])
411           except:
412               boo = 0
413               SO = None
414
415           FileName=''
416           if SO != None:
417               myBuilder = salome.myStudy.NewBuilder()
418               boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
419               if boo:
420                  val=FileAttr.Value()
421                  if (val !="FICHIERMED" and val != "FICHIER_RESU_MED"):
422                      boo=0
423                      showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
424                  else:
425                      boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
426               if boo :
427                 FileName=FileAttr.Value()
428               else:
429                  showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
430           if FileName != '' :
431               self.entry2.insert(0,FileName)
432               self.entry.delete(0,END)
433               self.entry.insert(0,FileName)
434               self.valid_valeur()
435
436
437   def SALOME_DONNEES_HOMARD_TRAITEMENT_NOM_MED_MAILLAGE_N(self):
438       EntryName=''
439       entrychaine=salome.sg.getAllSelected()
440       if entrychaine != '':
441           self.entry2.delete(0,END)
442           try:
443               SO = salome.myStudy.FindObjectID(entrychaine[0])
444           except:
445               boo = 0
446               SO = None
447
448           if SO is not None:
449              myBuilder = salome.myStudy.NewBuilder()
450              ok, AtName = myBuilder.FindAttribute(SO,"AttributeName")
451              if ok:
452                 EntryName=AtName.Value()
453
454       if EntryName != '':
455           self.entry2.insert(0,EntryName)
456           self.entry.delete(0,END)
457           self.entry.insert(0,EntryName)
458           self.valid_valeur()
459
460   def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_NP1(self):
461       self.SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N()
462
463
464 #  def SALOME_LIRE_MAILLAGE_UNITE(self):
465
466 #      unite=self.node.item.get_valeur()
467 #      entrychaine=salome.sg.getAllSelected()
468 #      if entrychaine != '':
469 #         self.entry2.delete(0,END)
470
471 #          try:
472 #              SO = salome.myStudy.FindObjectID(entrychaine[0])
473 #          except:
474 #              boo = 0
475 #              SO = None
476
477 #          if SO != None:
478 #             myBuilder = salome.myStudy.NewBuilder()
479 #              boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeComment")
480 #
481 #          FileName=''
482 #          if SO != None:
483 #              myBuilder = salome.myStudy.NewBuilder()
484 #              boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
485 #              if boo:
486 #                 boo=0
487 #                 val=FileAttr.Value()
488 #                 if (val !="FICHIERMED"):
489 #                     showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
490 #                 else:
491 #                     boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
492 #          if boo :
493 #              FileName=FileAttr.Value()
494 #          else:
495 #              showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
496
497 #          print "FileName = " , FileName
498 #          if FileName != '' :
499 #              self.entry2.insert(0,FileName)
500 #              typefic='D'
501 #              SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite]=typefic+FileName
502 #          else :
503 #              print "il faut afficher une Fenetre d impossibilit\xe9"
504 #              showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
505
506   def redistribue_selon_simp(self):
507       genea = self.node.item.get_genealogie()
508       commande="SALOME"
509       for i in range(0,len( genea )) :
510         commande=commande+"_"+ genea[i]
511       (SALOME_UNIQUE_BASE_Panel.__dict__[commande])(self)
512
513
514   def makeValeurPage(self,page):
515       """
516       Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
517       de base cad entier, réel, string ou complexe
518       """
519       # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur,
520       # et de la liste des SD du bon type (constituant la liste des choix)
521       bulle_aide=self.get_bulle_aide()
522       aide=self.get_aide()
523       aide= justify_text(texte=aide)
524       liste_noms_sd = self.node.item.get_sd_avant_du_bon_type()
525       # Remplissage du panneau
526       self.frame_valeur = Frame(page)
527       self.frame_valeur.pack(fill='both',expand=1)
528       self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
529       self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
530       self.label = Label(self.frame_valeur,text='Valeur :')
531       self.label.place(relx=0.1,rely=0.5)
532       self.entry = Entry(self.frame_valeur,relief='sunken')
533       self.entry.place(relx=0.28,rely=0.5,relwidth=0.6)
534       self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
535       self.entry.bind("<KP_Enter>",lambda e,c=self.valid_valeur:c())
536
537       # PN : Ajout d'un bouton pour selectionner  à partir de Salome  
538       self.b = Button(self.frame_valeur,text='Relier selection',command=self.redistribue_selon_simp)
539       self.b.place(relx=0.05,rely=0.1)
540       unite=self.node.item.get_valeur()
541       self.entry2 = Entry(self.frame_valeur,relief='sunken')
542       self.entry2.place(relx=0.3,rely=0.1)
543       self.entry2.configure(width = 250)
544
545       if SALOME_UNIQUE_BASE_Panel.dict_fichier_unite.has_key(unite):
546          associe=SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite][1:]
547          self.entry2.delete(0,END)
548          if associe != "" :
549              self.entry2.insert(0,associe)
550       else:
551          self.entry2.delete(0,END)
552
553       # aide associée au panneau
554       self.frame_valeur.update()
555       self.aide = Label(self.frame_valeur,
556                         text = aide,
557                         wraplength=int(self.frame_valeur.winfo_width()*0.8),
558                         justify='center')
559       self.aide.place(relx=0.5,rely=0.7,anchor='n')
560       # affichage de la valeur du MCS
561       self.display_valeur()
562
563 #---------------------------------------------------------------------------------------
564 # Correspondances entre les classes eficas et les classes salome_eficas 
565 #______________________________________________________________________________________
566 dict_classes_salome = { SHELLPanel : SALOME_SHELLPanel, 
567                           FONCTION_Panel       : SALOME_FONCTION_Panel,
568                           PLUSIEURS_INTO_Panel : SALOME_PLUSIEURS_INTO_Panel,
569                           PLUSIEURS_ASSD_Panel : SALOME_PLUSIEURS_ASSD_Panel,
570                           PLUSIEURS_BASE_Panel : SALOME_PLUSIEURS_BASE_Panel,
571                           UNIQUE_INTO_Panel :  SALOME_UNIQUE_INTO_Panel,
572                           UNIQUE_SDCO_Panel : SALOME_UNIQUE_SDCO_Panel,
573                           UNIQUE_ASSD_Panel : SALOME_UNIQUE_ASSD_Panel,
574                           UNIQUE_ASSD_Panel_Reel : SALOME_UNIQUE_ASSD_Panel_Reel,
575                           UNIQUE_COMP_Panel : SALOME_UNIQUE_COMP_Panel,
576                           UNIQUE_BASE_Panel : SALOME_UNIQUE_BASE_Panel}
577
578 dict_geom_numgroupe = { }
579 dict_geom_numface = { }