1 # -*- coding: utf-8 -*-
4 from widgets import ListeChoix
5 from widgets import showerror
7 from fonctionpanel import FONCTION_Panel
8 from shellpanel import SHELLPanel
9 from plusieursintopanel import PLUSIEURS_INTO_Panel
10 from plusieursassdpanel import PLUSIEURS_ASSD_Panel
11 from plusieursbasepanel import PLUSIEURS_BASE_Panel
12 from plusieursbasepanel import PLUSIEURS_BASE_OR_UNELISTE_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
20 from Noyau.N_CR import justify_text
27 # 2 types de commandes vont etre particularisees dans Salome
30 # Toutes les commandes possedant GROUP_NO ou GROUP_MA
31 # seront surchargees d office
32 # pour cela on va utiliser le dictionnaire dict_classes_salome
33 # qui va permettre de changer la classe de la commande
34 # ainsi si un panel en dehors de salome a pour classe PLUSIEURS_BASE_Panel
35 # la classe de ce panel devient alors SALOME_PLUSIEURS_BASE_Panel
36 # (pour cela voir composimp)
38 # des commandes "autres" ne pouvant pas etre identifiées par leur nom
39 # il suffit de creer dans la classe SALOME de la commande
40 # une fonction portant son nom
41 # Exemple de particularisation d un panel :
42 # Supposons que l on veuille particulariser la commande
43 # - LIRE_MAILLAGE_UNITE
44 # le panel initial a pour classe UNIQUE_BASE_Panel
45 # il suffit d'ajouter dans la classe derivée SALOME_UNIQUE_BASE_Panel
46 # une fonction SALOME_LIRE_MAILLAGE_UNITE
47 # la classe de ce panel devient alors SALOME_UNIQUE_BASE_Panel
48 # on peut surcharger les methodes nécessaires (affichage par exemple)
51 class SALOME_SHELLPanel (SHELLPanel):
54 class SALOME_FONCTION_Panel (FONCTION_Panel):
57 class SALOME_PLUSIEURS_INTO_Panel (PLUSIEURS_INTO_Panel):
60 class SALOME_PLUSIEURS_ASSD_Panel (PLUSIEURS_ASSD_Panel):
63 class SALOME_UNIQUE_INTO_Panel (UNIQUE_INTO_Panel):
66 class SALOME_UNIQUE_SDCO_Panel (UNIQUE_SDCO_Panel):
69 class SALOME_UNIQUE_ASSD_Panel (UNIQUE_ASSD_Panel):
72 class SALOME_UNIQUE_COMP_Panel (UNIQUE_COMP_Panel):
75 class SALOME_UNIQUE_ASSD_Panel_Reel (UNIQUE_ASSD_Panel_Reel):
78 # ------------------------------------------------------------------------------#
79 # classe SALOME_PLUSIEURS_BASE_Panel
81 # Commandes modifiées :
82 # - AFFE_CHAR_MECA_DDL_IMPO_GROUP_NO
83 # Methodes surchargées :
84 # - makeValeurPage(self,page)
86 # ------------------------------------------------------------------------------#
88 class SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel(PLUSIEURS_BASE_OR_UNELISTE_Panel):
91 class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel):
93 def __init__(self,parent,panneau,node):
94 PLUSIEURS_BASE_Panel.__init__( self, parent, panneau, node )
95 #self.selected_valeur = None
97 def add_valeur_plusieurs_base(self,name=None):
99 valeur,validite,commentaire=self.get_valeur()
100 if not valeur: # sélection dans salome
103 genea=self.node.item.get_genealogie()
111 selection, msg = self.parent.appli.selectGroupFromSalome(kwType)
113 for oneSelection in selection:
114 strSelection +=str( oneSelection )
117 strSelection = strSelection.rstrip(',')
118 self.display_valeur( strSelection )
120 PLUSIEURS_BASE_Panel.add_valeur_plusieurs_base( self, name )
122 self.parent.appli.affiche_infos(msg)
125 print ' erreur add_valeur_plusieurs_base' #CS_pbruno : afficher boite de dialogue ici ?
127 def makeValeurPage(self,page):
129 Crée la page de saisie d'une liste de valeurs à priori quelconques,
130 cad qui ne sont pas à choisir dans une liste prédéfinie
132 PLUSIEURS_BASE_Panel.makeValeurPage(self,page)
133 self.c = Button( self.frame_choix, text='Visualiser',command=self.displayInSalomeGeom )
134 self.c.place( relx=0.3, rely=0.0,relwidth=0.55)
137 def displayInSalomeGeom( self ):
138 if self.selected_valeur:
139 ok, msgError = self.parent.appli.displayShape( self.selected_valeur )
141 self.parent.appli.affiche_infos(msgError)
146 # ------------------------------------------------------------------------------#
147 # classe SALOME_UNIQUE_BASE_Panel
149 # Commandes modifiées :
150 # - LIRE_MAILLAGE_UNITE
151 # Methodes surchargées :
152 # - makeValeurPage(self,page)
154 # ------------------------------------------------------------------------------#
156 class SALOME_UNIQUE_BASE_Panel(UNIQUE_BASE_Panel):
158 # ce dictionnaire va servir lors de la sortie d efficas
159 # a creer le fichier qui sera integre au config.txt
160 # pour relier une unite logique et un nom de fichier
162 dict_fichier_unite={}
165 def SALOME_DONNEES_HOMARD_FICHIER_MED_MAILLAGE_N(self):
167 entrychaine=salome.sg.getAllSelected()
168 if entrychaine != '':
169 self.entry2.delete(0,END)
171 SO = salome.myStudy.FindObjectID(entrychaine[0])
178 myBuilder = salome.myStudy.NewBuilder()
179 boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeFileType")
182 if (val !="FICHIERMED" and val != "FICHIER_RESU_MED"):
184 showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
186 boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeExternalFileDef")
188 FileName=FileAttr.Value()
190 showerror("Pas de Fichier MED","Cet Objet n a pas de fichier MED Associ\xe9")
192 self.entry.delete(0,END)
193 self.entry2.delete(0,END)
194 self.entry.insert(0,FileName)
195 self.entry2.insert(0,FileName)
199 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 = { }