Salome HOME
correction pour acception de concept liste
[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 recalcule(self):
201       liste_valeurs_salome=self.Liste_valeurs_salome.get_liste()
202       groups={}
203       liste_valeurs = self.Liste_valeurs.get_liste()
204       for valeur in liste_valeurs_salome:
205           r=dict_geom_numgroupe[valeur]
206           for i in r :
207               if i not in liste_valeurs :
208                   liste_valeurs.append(i)
209       self.Liste_valeurs.put_liste(liste_valeurs)
210
211   def add_valeur_from_salome(self,name=None):
212        entrychaine=salome.sg.getAllSelected()
213        self.sortie.delete(0,END)
214        self.entrygroupe.delete(0,END)
215        if entrychaine != '':
216           entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine)
217           touteslesvaleurs = self.convertit_entrees_en_valeurs(entrychaine)
218          
219           valeur=[]
220           liste_valeurs  = self.Liste_valeurs.get_liste()
221           for i in touteslesvaleurs:
222               if i not in liste_valeurs:
223                  valeur.append(i)
224               
225           if valeur==[]:
226              entryname_list=[]
227
228           liste_valeurs_salome = self.Liste_valeurs_salome.get_liste()
229           for entryname in entryname_list:
230               if entryname not in liste_valeurs_salome: 
231                  liste_valeurs_salome.append(entryname)
232               entryname=entryname + " "
233               self.entrygroupe.insert(0,entryname)
234           self.Liste_valeurs_salome.put_liste(liste_valeurs_salome)
235
236           if self.node.item.wait_reel():
237              print "wait_reel()"
238              valeur = self.traite_reel(valeur)
239           if self.node.item.wait_geom():
240              print "wait_geom()"
241              val,test1 = valeur,1
242           else:
243              print "else wait"
244              val,test1 = self.node.item.object.eval_valeur(valeur)
245
246           if test1 :
247              test2 = self.node.item.object.verif_type(val)
248              if test2 :
249                  liste_valeurs = self.Liste_valeurs.get_liste()
250                  if len(liste_valeurs) >= max :
251                      self.parent.appli.affiche_infos("La liste a déjà atteint le nombre maximum d'éléments, ajout refusé")
252                      self.erase_valeur()
253                      return
254                  if type(val) == type([]):
255                    for groupe in val:
256                      liste_valeurs.append(groupe)
257                  else:
258                    liste_valeurs.append(val)
259                  self.Liste_valeurs.put_liste(liste_valeurs)
260                  self.parent.appli.affiche_infos("Nouvelle valeur acceptée")
261              else:
262                  self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
263           else:
264              print "impossible d'évaluer %s" %val
265              self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
266
267    
268   def makeValeurPage(self,page):
269       """
270       Crée la page de saisie d'une liste de valeurs à priori quelconques,
271       cad qui ne sont  pas à choisir dans une liste prédéfinie
272       """
273       # On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
274       # et la liste des valeurs déjà affectées à l'objet courant
275       bulle_aide=self.get_bulle_aide()
276       objet_mc = self.node.item.get_definition()
277       aide = self.get_aide()
278       aide = justify_text(texte=aide)
279       min,max = self.node.item.GetMinMax()
280       self.clef_fonction=  self.node.item.clef_fonction
281       l_valeurs = self.node.item.GetListeValeurs()
282
283       self.frame1 = Frame(page,relief='groove',bd=2)
284       self.frame2 = Frame(page)
285       self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85)
286       self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15)
287       self.frame_right = Frame(self.frame1)
288       self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.)
289
290       # création des frames internes
291       self.frame_valeurs = Frame(self.frame1)
292       self.frame_valeurs.place(relx=0.0,rely=0.0,relwidth=0.35,relheight=0.95)
293
294       self.frame_choix = Frame(self.frame_right)
295       self.frame_choix.place(relx=0.0,rely=0.0,relwidth=1,relheight=0.9)
296       self.frame_valeurs_salome = Frame(self.frame_right)
297       self.frame_valeurs_salome.place(relx=0.02,rely=0.7,relwidth=0.9,relheight=0.3)
298
299       self.frame_boutons = Frame(self.frame2)
300       self.frame_boutons.place(relx=0.1,rely=0.,relwidth=0.5,relheight=1.)
301       self.frame_aide = Frame(self.frame2)
302       self.frame_aide.place(relx=0.6,rely=0.,relwidth=0.5,relheight=1)
303
304       for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs,
305                  self.frame_choix,self.frame_aide,self.frame_boutons):
306             fram.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
307             fram.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
308
309       # création des objets dans les frames
310       liste_commandes_valeurs = (("<Button-1>",self.selectValeur),
311                                  ("<Button-3>",self.deselectValeur),
312                                  ("<Double-Button-1>",self.sup_valeur_sans_into))
313       self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,
314                                       liste_commandes = liste_commandes_valeurs,
315                                       titre="Valeur(s) actuelle(s)")
316
317     # PN : pour ajouter les validators
318       self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base,y=0.55)
319
320       bouton_valeurs_fichier = Button(self.frame_choix,
321                                       text="Importer ...",
322                                       command=self.select_in_file)
323       bouton_valeurs_fichier.place(relx=0.28,rely=0.65,relwidth=0.6)
324
325       self.ajout_valeurs = None
326       self.b = Button(self.frame_choix,text='ajout select.',command=self.add_valeur_from_salome)
327
328       self.b.place(relx=0.03,rely=0.05,relwidth=0.35)
329       self.entrygroupe = Entry(self.frame_choix,relief='sunken')
330       self.entrygroupe.place(relx=0.4,rely=0.05,relwidth=0.6)
331
332       self.a = Button(self.frame_choix,text='enlev. select.',command=self.sup_valeur_from_salome)
333       self.a.place(relx=0.03,rely=0.2,relwidth=0.35)
334       self.sortie = Entry(self.frame_choix,relief='sunken')
335       self.sortie.place(relx=0.4,rely=0.2,relwidth=0.6)
336       self.c = Button(self.frame_choix,text='Visualiser',command=self.visu_in_salome)
337       self.c.place(relx=0.03,rely=0.35,relwidth=0.35)
338
339       l_salome_valeurs=self.node.item.get_salome_valeurs()
340       self.Liste_valeurs_salome=ListeChoix(self,self.frame_valeurs_salome,l_salome_valeurs,
341                                         liste_commandes = liste_commandes_valeurs,
342                                         titre="Valeur(s) Salome actuelle(s) ")
343       self.Liste_valeurs_salome.affiche_liste()
344
345
346       # boutons Ajouter et Supprimer
347       bouton_add = Button(self.frame_choix,
348                           image = images.get_image('arrow_left'),
349                           command = self.add_valeur_plusieurs_base)
350       bouton_sup = Button(self.frame_choix,
351                           image = images.get_image('arrow_right'),
352                           command = self.sup_valeur_sans_into)
353       bouton_add.place(relx=0.08,rely=0.55)
354       bouton_sup.place(relx=0.08,rely=0.65)
355
356       # affichage de l'aide
357       self.frame_aide.update()
358       self.aide = Label(self.frame_aide, text = aide,
359                         justify='center', anchor='center',
360                         wraplength=int(self.frame_aide.winfo_width()*0.8))
361       self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
362       self.Liste_valeurs.affiche_liste()
363
364       # boutons Accepter et Annuler
365       bouton_accepter = Button(self.frame_boutons,
366                                text='Valider',
367                                command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
368       bouton_annuler = Button(self.frame_boutons,
369                               text = 'Annuler',
370                               command = self.annule_modifs_valeur)
371       for but in (bouton_accepter,bouton_annuler):
372           but.pack(side='left',padx=5)
373
374
375
376 # ------------------------------------------------------------------------------#
377 # classe SALOME_UNIQUE_BASE_Panel
378 #
379 # Commandes modifiées  :  
380 #       - LIRE_MAILLAGE_UNITE 
381 # Methodes surchargées :  
382 #       - makeValeurPage(self,page)
383 #
384 # ------------------------------------------------------------------------------#
385
386 class SALOME_UNIQUE_BASE_Panel(UNIQUE_BASE_Panel):
387
388 # ce dictionnaire va servir lors de la sortie d efficas
389 # a creer le fichier qui sera integre au config.txt
390 # pour relier une unite logique et un nom de fichier
391
392   dict_fichier_unite={}
393
394
395   def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N(self):
396       entrychaine=salome.sg.getAllSelected()
397       if entrychaine != '':
398           self.entry2.delete(0,END)
399           try:
400               SO = salome.myStudy.FindObjectID(entrychaine[0])
401           except:
402               boo = 0
403               SO = None
404
405           FileName=''
406           if SO != None:
407               myBuilder = salome.myStudy.NewBuilder()
408               boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
409               if boo:
410                  val=FileAttr.Value()
411                  if (val !="FICHIERMED" and val != "FICHIER_RESU_MED"):
412                      boo=0
413                      showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
414                  else:
415                      boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
416               if boo :
417                 FileName=FileAttr.Value()
418               else:
419                  showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
420           if FileName != '' :
421               self.entry2.insert(0,FileName)
422               self.entry.delete(0,END)
423               self.entry.insert(0,FileName)
424               self.valid_valeur()
425
426
427   def SALOME_DONNEES_HOMARD_TRAITEMENT_NOM_MED_MAILLAGE_N(self):
428       EntryName=''
429       entrychaine=salome.sg.getAllSelected()
430       if entrychaine != '':
431           self.entry2.delete(0,END)
432           try:
433               SO = salome.myStudy.FindObjectID(entrychaine[0])
434           except:
435               boo = 0
436               SO = None
437
438           if SO is not None:
439              myBuilder = salome.myStudy.NewBuilder()
440              ok, AtName = myBuilder.FindAttribute(SO,"AttributeName")
441              if ok:
442                 EntryName=AtName.Value()
443
444       if EntryName != '':
445           self.entry2.insert(0,EntryName)
446           self.entry.delete(0,END)
447           self.entry.insert(0,EntryName)
448           self.valid_valeur()
449
450   def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_NP1(self):
451       self.SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N()
452
453
454 #  def SALOME_LIRE_MAILLAGE_UNITE(self):
455
456 #      unite=self.node.item.get_valeur()
457 #      entrychaine=salome.sg.getAllSelected()
458 #      if entrychaine != '':
459 #         self.entry2.delete(0,END)
460
461 #          try:
462 #              SO = salome.myStudy.FindObjectID(entrychaine[0])
463 #          except:
464 #              boo = 0
465 #              SO = None
466
467 #          if SO != None:
468 #             myBuilder = salome.myStudy.NewBuilder()
469 #              boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeComment")
470 #
471 #          FileName=''
472 #          if SO != None:
473 #              myBuilder = salome.myStudy.NewBuilder()
474 #              boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
475 #              if boo:
476 #                 boo=0
477 #                 val=FileAttr.Value()
478 #                 if (val !="FICHIERMED"):
479 #                     showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
480 #                 else:
481 #                     boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
482 #          if boo :
483 #              FileName=FileAttr.Value()
484 #          else:
485 #              showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
486
487 #          print "FileName = " , FileName
488 #          if FileName != '' :
489 #              self.entry2.insert(0,FileName)
490 #              typefic='D'
491 #              SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite]=typefic+FileName
492 #          else :
493 #              print "il faut afficher une Fenetre d impossibilit\xe9"
494 #              showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
495
496   def redistribue_selon_simp(self):
497       genea = self.node.item.get_genealogie()
498       commande="SALOME"
499       for i in range(0,len( genea )) :
500         commande=commande+"_"+ genea[i]
501       (SALOME_UNIQUE_BASE_Panel.__dict__[commande])(self)
502
503
504   def makeValeurPage(self,page):
505       """
506       Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
507       de base cad entier, réel, string ou complexe
508       """
509       # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur,
510       # et de la liste des SD du bon type (constituant la liste des choix)
511       bulle_aide=self.get_bulle_aide()
512       aide=self.get_aide()
513       aide= justify_text(texte=aide)
514       liste_noms_sd = self.node.item.get_sd_avant_du_bon_type()
515       # Remplissage du panneau
516       self.frame_valeur = Frame(page)
517       self.frame_valeur.pack(fill='both',expand=1)
518       self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
519       self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
520       self.label = Label(self.frame_valeur,text='Valeur :')
521       self.label.place(relx=0.1,rely=0.5)
522       self.entry = Entry(self.frame_valeur,relief='sunken')
523       self.entry.place(relx=0.28,rely=0.5,relwidth=0.6)
524       self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
525       self.entry.bind("<KP_Enter>",lambda e,c=self.valid_valeur:c())
526
527       # PN : Ajout d'un bouton pour selectionner  à partir de Salome  
528       self.b = Button(self.frame_valeur,text='Relier selection',command=self.redistribue_selon_simp)
529       self.b.place(relx=0.05,rely=0.1)
530       unite=self.node.item.get_valeur()
531       self.entry2 = Entry(self.frame_valeur,relief='sunken')
532       self.entry2.place(relx=0.3,rely=0.1)
533       self.entry2.configure(width = 250)
534
535       if SALOME_UNIQUE_BASE_Panel.dict_fichier_unite.has_key(unite):
536          associe=SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite][1:]
537          self.entry2.delete(0,END)
538          if associe != "" :
539              self.entry2.insert(0,associe)
540       else:
541          self.entry2.delete(0,END)
542
543       # aide associée au panneau
544       self.frame_valeur.update()
545       self.aide = Label(self.frame_valeur,
546                         text = aide,
547                         wraplength=int(self.frame_valeur.winfo_width()*0.8),
548                         justify='center')
549       self.aide.place(relx=0.5,rely=0.7,anchor='n')
550       # affichage de la valeur du MCS
551       self.display_valeur()
552
553 #---------------------------------------------------------------------------------------
554 # Correspondances entre les classes eficas et les classes salome_eficas 
555 #______________________________________________________________________________________
556 dict_classes_salome = { SHELLPanel : SALOME_SHELLPanel, 
557                           FONCTION_Panel       : SALOME_FONCTION_Panel,
558                           PLUSIEURS_INTO_Panel : SALOME_PLUSIEURS_INTO_Panel,
559                           PLUSIEURS_ASSD_Panel : SALOME_PLUSIEURS_ASSD_Panel,
560                           PLUSIEURS_BASE_Panel : SALOME_PLUSIEURS_BASE_Panel,
561                           UNIQUE_INTO_Panel :  SALOME_UNIQUE_INTO_Panel,
562                           UNIQUE_SDCO_Panel : SALOME_UNIQUE_SDCO_Panel,
563                           UNIQUE_ASSD_Panel : SALOME_UNIQUE_ASSD_Panel,
564                           UNIQUE_ASSD_Panel_Reel : SALOME_UNIQUE_ASSD_Panel_Reel,
565                           UNIQUE_COMP_Panel : SALOME_UNIQUE_COMP_Panel,
566                           UNIQUE_BASE_Panel : SALOME_UNIQUE_BASE_Panel}
567
568 dict_geom_numgroupe = { }
569 dict_geom_numface = { }