1 # -*- coding: utf-8 -*-
2 print "Import de panelsSalome"
5 from widgets import ListeChoix
6 from widgets import showerror
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 plusieursbasepanel import PLUSIEURS_BASE_OR_UNELISTE_Panel
14 from uniquesdcopanel import UNIQUE_SDCO_Panel
15 from uniqueassdpanel import UNIQUE_ASSD_Panel
16 from uniqueintopanel import UNIQUE_INTO_Panel
17 from uniquecomppanel import UNIQUE_COMP_Panel
18 from uniquebasepanel import UNIQUE_BASE_Panel
19 from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel
21 from Noyau.N_CR import justify_text
24 import salome # CS_pbruno à poubelliser
29 # 2 types de commandes vont etre particularisees dans Salome
32 # Toutes les commandes possedant GROUP_NO ou GROUP_MA
33 # seront surchargees d office
34 # pour cela on va utiliser le dictionnaire dict_classes_salome
35 # qui va permettre de changer la classe de la commande
36 # ainsi si un panel en dehors de salome a pour classe PLUSIEURS_BASE_Panel
37 # la classe de ce panel devient alors SALOME_PLUSIEURS_BASE_Panel
38 # (pour cela voir composimp)
40 # des commandes "autres" ne pouvant pas etre identifiées par leur nom
41 # il suffit de creer dans la classe SALOME de la commande
42 # une fonction portant son nom
43 # Exemple de particularisation d un panel :
44 # Supposons que l on veuille particulariser la commande
45 # - LIRE_MAILLAGE_UNITE
46 # le panel initial a pour classe UNIQUE_BASE_Panel
47 # il suffit d'ajouter dans la classe derivée SALOME_UNIQUE_BASE_Panel
48 # une fonction SALOME_LIRE_MAILLAGE_UNITE
49 # la classe de ce panel devient alors SALOME_UNIQUE_BASE_Panel
50 # on peut surcharger les methodes nécessaires (affichage par exemple)
53 class SALOME_SHELLPanel (SHELLPanel):
56 class SALOME_FONCTION_Panel (FONCTION_Panel):
59 class SALOME_PLUSIEURS_INTO_Panel (PLUSIEURS_INTO_Panel):
62 class SALOME_PLUSIEURS_ASSD_Panel (PLUSIEURS_ASSD_Panel):
65 class SALOME_UNIQUE_INTO_Panel (UNIQUE_INTO_Panel):
68 class SALOME_UNIQUE_SDCO_Panel (UNIQUE_SDCO_Panel):
71 class SALOME_UNIQUE_ASSD_Panel (UNIQUE_ASSD_Panel):
74 class SALOME_UNIQUE_COMP_Panel (UNIQUE_COMP_Panel):
77 class SALOME_UNIQUE_ASSD_Panel_Reel (UNIQUE_ASSD_Panel_Reel):
80 # ------------------------------------------------------------------------------#
81 # classe SALOME_PLUSIEURS_BASE_Panel
83 # Commandes modifiées :
84 # - AFFE_CHAR_MECA_DDL_IMPO_GROUP_NO
85 # Methodes surchargées :
86 # - makeValeurPage(self,page)
88 # ------------------------------------------------------------------------------#
90 class SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel(PLUSIEURS_BASE_OR_UNELISTE_Panel):
93 class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel):
95 def __init__(self,parent,panneau,node):
96 PLUSIEURS_BASE_Panel.__init__( self, parent, panneau, node )
97 #self.selected_valeur = None
99 def add_valeur_plusieurs_base(self,name=None):
101 valeur,validite,commentaire=self.get_valeur()
102 if not valeur: # sélection dans salome
105 genea=self.node.item.get_genealogie()
113 selection, msg = self.parent.appli.selectGroupFromSalome(kwType)
115 for oneSelection in selection:
116 strSelection +=str( oneSelection )
119 strSelection = strSelection.rstrip(',')
120 self.display_valeur( strSelection )
122 PLUSIEURS_BASE_Panel.add_valeur_plusieurs_base( self, name )
124 self.parent.appli.affiche_infos(msg)
127 print ' erreur add_valeur_plusieurs_base' #CS_pbruno : afficher boite de dialogue ici ?
129 def makeValeurPage(self,page):
131 Crée la page de saisie d'une liste de valeurs à priori quelconques,
132 cad qui ne sont pas à choisir dans une liste prédéfinie
134 PLUSIEURS_BASE_Panel.makeValeurPage(self,page)
135 self.c = Button( self.frame_choix, text='Visualiser',command=self.displayInSalomeGeom )
136 self.c.place( relx=0.3, rely=0.0,relwidth=0.55)
139 def displayInSalomeGeom( self ):
140 if self.selected_valeur:
141 ok, msgError = self.parent.appli.displayShape( self.selected_valeur )
143 self.parent.appli.affiche_infos(msgError)
148 # ------------------------------------------------------------------------------#
149 # classe SALOME_UNIQUE_BASE_Panel
151 # Commandes modifiées :
152 # - LIRE_MAILLAGE_UNITE
153 # Methodes surchargées :
154 # - makeValeurPage(self,page)
156 # ------------------------------------------------------------------------------#
158 class SALOME_UNIQUE_BASE_Panel(UNIQUE_BASE_Panel):
160 # ce dictionnaire va servir lors de la sortie d efficas
161 # a creer le fichier qui sera integre au config.txt
162 # pour relier une unite logique et un nom de fichier
164 dict_fichier_unite={}
167 def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N(self):
168 entrychaine=salome.sg.getAllSelected()
169 if entrychaine != '':
170 self.entry2.delete(0,END)
172 SO = salome.myStudy.FindObjectID(entrychaine[0])
179 myBuilder = salome.myStudy.NewBuilder()
180 boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
183 if (val !="FICHIERMED" and val != "FICHIER_RESU_MED"):
185 showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
187 boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
189 FileName=FileAttr.Value()
191 showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
193 self.entry.delete(0,END)
194 self.entry2.delete(0,END)
195 self.entry.insert(0,FileName)
196 self.entry2.insert(0,FileName)
200 def SALOME_DONNEES_HOMARD_TRAITEMENT_NOM_MED_MAILLAGE_N(self):
202 entrychaine=salome.sg.getAllSelected()
203 if entrychaine != '':
204 self.entry2.delete(0,END)
206 SO = salome.myStudy.FindObjectID(entrychaine[0])
212 myBuilder = salome.myStudy.NewBuilder()
213 ok, AtName = myBuilder.FindAttribute(SO,"AttributeName")
215 EntryName=AtName.Value()
218 self.entry.delete(0,END)
219 self.entry2.delete(0,END)
220 self.entry.insert(0,EntryName)
221 self.entry2.insert(0,EntryName)
224 def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_NP1(self):
225 self.SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N()
227 def SALOME_DEFI_GROUP_CREA_GROUP_MA_GROUP_MA(self):
230 selection, msg = self.parent.appli.selectGroupFromSalome()
232 strSelection =str( selection )
233 UNIQUE_BASE_Panel.valid_valeur(self,strSelection)
235 self.parent.appli.affiche_infos(msg)
242 def redistribue_selon_simp(self):
243 genea = self.node.item.get_genealogie()
245 for i in range(0,len( genea )) :
246 commande=commande+"_"+ genea[i]
247 # --------------------------------------------------------------
248 # on verifie que la methode n est pas particularise
249 # sinon on appelle SALOME_DEFI_GROUP_CREA_GROUP_MA_GROUP_MA qui
250 # sert comme methode par defaut
251 # --------------------------------------------------------------
253 SALOME_UNIQUE_BASE_Panel.__dict__[commande](self)
255 SALOME_UNIQUE_BASE_Panel.SALOME_DEFI_GROUP_CREA_GROUP_MA_GROUP_MA(self)
259 def makeValeurPage(self,page):
261 Crée la page de saisie d'une valeur à priori quelconque,
262 cad qui ne sont pas à choisir dans une liste prédéfinie
263 Ajout d'un bouton pour selectionner à partir de Salome
265 UNIQUE_BASE_Panel.makeValeurPage(self,page)
266 self.b = Button(self.frame_valeur,text='Relier selection',command=self.redistribue_selon_simp)
267 self.b.place(relx=0.28,rely=0.4,relwidth=0.4)
269 #---------------------------------------------------------------------------------------
270 # Correspondances entre les classes eficas et les classes salome_eficas
271 #______________________________________________________________________________________
272 dict_classes_salome = { SHELLPanel : SALOME_SHELLPanel,
273 FONCTION_Panel : SALOME_FONCTION_Panel,
274 PLUSIEURS_INTO_Panel : SALOME_PLUSIEURS_INTO_Panel,
275 PLUSIEURS_ASSD_Panel : SALOME_PLUSIEURS_ASSD_Panel,
276 PLUSIEURS_BASE_Panel : SALOME_PLUSIEURS_BASE_Panel,
277 PLUSIEURS_BASE_OR_UNELISTE_Panel : SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel,
278 UNIQUE_INTO_Panel : SALOME_UNIQUE_INTO_Panel,
279 UNIQUE_SDCO_Panel : SALOME_UNIQUE_SDCO_Panel,
280 UNIQUE_ASSD_Panel : SALOME_UNIQUE_ASSD_Panel,
281 UNIQUE_ASSD_Panel_Reel : SALOME_UNIQUE_ASSD_Panel_Reel,
282 UNIQUE_COMP_Panel : SALOME_UNIQUE_COMP_Panel,
283 UNIQUE_BASE_Panel : SALOME_UNIQUE_BASE_Panel}
285 dict_geom_numgroupe = { }
286 dict_geom_numface = { }