--- /dev/null
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>SelectMainShapeDiag</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>SelectMainShapeDiag</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>373</width>
+ <height>260</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>SALOME - Main Shape Selection</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>true</bool>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>Select the main shape you want to work on</string>
+ </property>
+ </widget>
+ <widget class="QListBox">
+ <item>
+ <property name="text">
+ <string>New Item</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>lbMainShapes</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonHelp</cstring>
+ </property>
+ <property name="text">
+ <string>&Help</string>
+ </property>
+ <property name="accel">
+ <string>F1</string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Horizontal Spacing2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonOk</cstring>
+ </property>
+ <property name="text">
+ <string>&OK</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonCancel</cstring>
+ </property>
+ <property name="text">
+ <string>&Cancel</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>buttonOk</sender>
+ <signal>clicked()</signal>
+ <receiver>SelectMainShapeDiag</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>buttonCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>SelectMainShapeDiag</receiver>
+ <slot>reject()</slot>
+ </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
import SalomePyQt
+from SelectMainShapeDiag_ui import SelectMainShapeDiag
+
# message utilisateur
msgWarning = "Attention"
+msgMainShapeSelection = "On travaille sur la géométrie principale : "
msgSubShapeBadMainShape = "La sélection géométrique SALOME ne correspond pas à une sous-géométrie de la géométrie principale : "
msgMeshGroupBadMainShape = "Le groupe de maillage sélectionné dans SALOME ne référence pas la bonne géométrie principale : "
msgIncompleteSelection = "Tous les éléments de la sélection SALOME n'ont pu étre ajoutée"
msgUnAuthorizedSelecion = "Sélection SALOME non authorisé. Autorisé : sous-géométrie, groupe de maille"
msgErrorAddJdcInSalome = "Erreur dans l'export du fichier de commande dans l'arbre d'étude Salome"
msgErrorDisplayShape = "Erreur dans l'affichage de la forme géométrique sélectionnée"
+msgErrorNeedSubShape = "Sélection d'un élément sous géométrique seulement"
# couleur pour visualisation des géometrie CS_CBO
LEN_COLORS = len( COLORS )
+
+
+class SelectMainShapeDiagImpl( SelectMainShapeDiag ):
+ def __init__( self, mainShapeEntries, parent = None,name = None,modal = 1,fl = 0 ):
+ SelectMainShapeDiag.__init__( self,parent,name,modal,fl )
+
+ self.mainShapes = {} # ( entry, value )
+ for entry in mainShapeEntries:
+ name = studyManager.palStudy.getName( entry )
+ self.mainShapes[entry] = name
+
+ self.lbMainShapes.clear()
+ for entry,name in self.mainShapes.items():
+ self.lbMainShapes.insertItem( name )
+ self.lbMainShapes.setCurrentItem( 0 )
+
+
+ def getUserSelection( self ):
+ mainShapeEntry = None
+
+ item = self.lbMainShapes.selectedItem()
+ mainShapeName = str( item.text() )
+
+ for entry, name in self.mainShapes.items():
+ if mainShapeName == name:
+ mainShapeEntry = entry
+ break
+
+ return mainShapeEntry
+
#class MyEficas( Tkinter.Toplevel, eficas.EFICAS, QXEmbed ):
class MyEficas( Tkinter.Toplevel, eficas.EFICAS ):
"""
studyManager.palStudy.setCurrentStudyID( activeStudyId )
return True
+
+ def __selectMainShape( self, groupeMaNamesIn, groupeNoNamesIn ):
+ """
+ Sélection intéractive de la main shape
+ """
+ groupeMaNamesOut, groupeNoNamesOut = [], []
+ selectedMainShape = None
+ mainShapes = {}
+ mainShapeEntries = []
+
+ # liste des main shape possibles
+ for groups in ( groupeMaNamesIn, groupeNoNamesIn ):
+ for subShapeName in groups:
+ entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, subShapeName )
+ for entry in entries:
+ mainShapeEntry = studyManager.palStudy.getMainShapeEntry( entry )
+ if mainShapeEntry != entry:
+ mainShapes[ subShapeName ] = mainShapeEntry
+ mainShapeEntries += [ mainShapeEntry ]
+
+ if mainShapes:
+ diag = SelectMainShapeDiagImpl( mainShapeEntries, self.parent )
+
+ if diag.exec_loop() == qt.QDialog.Accepted:
+ selectedMainShape = diag.getUserSelection()
+ print 'main shape user selection ->',selectedMainShape
+ # filtre sur la main shape sélectionnée
+ for name in groupeMaNamesIn:
+ try:
+ if mainShapes[ name ] == selectedMainShape:
+ groupeMaNamesOut += [ name ]
+ except:
+ pass
+
+ for name in groupeNoNamesIn:
+ try:
+ if mainShapes[ name ] == selectedMainShape:
+ groupeNoNamesOut += [ name ]
+ except:
+ pass
+ return groupeMaNamesOut, groupeNoNamesOut
+
+
def __selectShape( self, jdcID, selectedEntry ):
"""
sélection sous-géométrie dans Salome:
- -test1) si c'est un élément géométrique.
+ -test1) si c'est un élément sous-géométrique .
-test2) si appartient à la géométrie principale.
met à jours la liste self.subShapes si test ok
- """
- print 'CS_pbruno __selectShape'
+ """
name, msgError = '',''
selectedMainShapeEntry = studyManager.palStudy.getMainShapeEntry( selectedEntry )
- if selectedMainShapeEntry: #ok test1)
+ if selectedMainShapeEntry and selectedMainShapeEntry != selectedEntry: #ok test1)
if not self.mainShapeEntries.has_key( jdcID ):
self.mainShapeEntries[ jdcID ] = selectedMainShapeEntry
+ name = studyManager.palStudy.getName( selectedMainShapeEntry )
+ msgError = msgMainShapeSelection + name
if selectedMainShapeEntry == self.mainShapeEntries[ jdcID ]:
name = studyManager.palStudy.getName( selectedEntry )
- self.subShapes[ selectedEntry ] = name
- else:
- print 'CS_pbruno pas la même mainshape selectedEntry->',selectedEntry
+ self.subShapes[ selectedEntry ] = name
+ else:
if not self.mainShapeNames.has_key( jdcID ):
self.mainShapeNames[ jdcID ] = studyManager.palStudy.getName( self.mainShapeEntries[ jdcID ] )
msgError = msgSubShapeBadMainShape + self.mainShapeNames[ jdcID ]
+ else:
+ name, msgError = '', msgErrorNeedSubShape
return name, msgError
sélection groupe de maille dans Salome:
-test 1) si c'est un groupe de maille
-test 2) si le maillage fait référence à la géométrie principale
- """
- print 'CS_pbruno __selectMeshGroup'
+ """
name, msgError = '',''
selectedMeshEntry = studyManager.palStudy.getMesh( selectedEntry )
- if selectedMeshEntry: # ok test 1)
- print 'CS_pbruno __selectMeshGroup selectedMeshEntry',selectedMeshEntry
+ if selectedMeshEntry: # ok test 1)
selectedMainShapeEntry = studyManager.palStudy.getShapeFromMesh( selectedMeshEntry )
- if selectedMainShapeEntry: #test 2)
- print 'CS_pbruno __selectMeshGroup selectedMainShapeEntry',selectedMainShapeEntry
+ if selectedMainShapeEntry: #test 2)
if not self.mainShapeEntries.has_key( jdcID ):
- self.mainShapeEntries[ jdcID ] = selectedMainShapeEntry
+ self.mainShapeEntries[ jdcID ] = selectedMainShapeEntry
if selectedMainShapeEntry == self.mainShapeEntries[ jdcID ]:
name = studyManager.palStudy.getName( selectedEntry ) #ok test 2)
- else:
- print 'CS_pbruno pas la même mainshape selectedEntry ->',selectedEntry
+ else:
if not self.mainShapeNames.has_key( jdcID ):
- self.mainShapeNames[ jdcID ] = studyManager.palStudy.getName( self.mainShapeEntries[ jdcID ] )
- msgError = msgMeshGroupBadMainShape + self.mainShapeNames[ jdcID ]
-
- return name, msgError
+ self.mainShapeNames[ jdcID ] = studyManager.palStudy.getName(
+ self.mainShapeEntries[ jdcID ] )
+ msgError = msgMeshGroupBadMainShape + self.mainShapeNames[ jdcID ]
+ return name, msgError
mise à jours de la liste self.subShapes à partir de la liste des noms de groupe fourni en entré
"""
for name in groupeNames:
- entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, name )
+ entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, name )
for entry in entries:
- ok, msgError = self.__selectShape( jdcID, entry ) # filtre
- if ok:
- self.subShapes[ entry ] = name
-
+ if not self.subShapes.has_key( entry ):
+ ok, msgError = self.__selectShape( jdcID, entry ) # filtre
+ if ok:
+ self.subShapes[ entry ] = name
def __getAllGroupeMa(self, item ):
"""
try:
itemName = item.get_nom()
#print 'CS_pbruno itemName',itemName
- if itemName == 'GROUP_MA':
+ if 'GROUP_MA' in itemName:
itemValue = item.get_valeur()
- print 'CS_pbruno trouvé! GROUP_MA->', itemValue
if type( itemValue ) == str:
groupMa += ( itemValue , )
elif type( itemValue ) == tuple:
for child in children:
groupMa += self.__getAllGroupeMa( child )
except: # à cause de _GetSubList()...
- pass
- print 'CS_pbruno groupMa',groupMa
+ pass
return groupMa
"""
groupNo = ()
try:
- itemName = item.get_nom()
- print 'CS_pbruno itemName',itemName
- if itemName == 'GROUP_NO':
- itemValue = item.get_valeur()
- print 'CS_pbruno trouvé! GROUP_NO->', itemValue
+ itemName = item.get_nom()
+ if 'GROUP_NO' in itemName:
+ itemValue = item.get_valeur()
if type( itemValue ) == str:
groupNo += ( itemValue , )
elif type( itemValue ) == tuple:
except: # à cause de _GetSubList()...
pass
return groupNo
+
#----------------------- LISTE DES NOUVEAUX CAS D'UTILISATIONS -----------
def selectGroupFromSalome( self ):
jdcID = self.bureau.nb.getcurselection()
groupeMaNames = self.__getAllGroupeMa( self.bureau.JDCDisplay_courant.tree.item )
- groupeNoNames = self.__getAllGroupeNo( self.bureau.JDCDisplay_courant.tree.item )
+ groupeNoNames = self.__getAllGroupeNo( self.bureau.JDCDisplay_courant.tree.item )
+
+ # on elimine les doublons de la liste
+ groupeMaNames = dict.fromkeys(groupeMaNames).keys()
+ groupeNoNames = dict.fromkeys(groupeNoNames).keys()
print 'CS_pbruno createOrUpdateMesh groupeMaNames', groupeMaNames
print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames
# mise à jours de la liste des sous-géométrie ( self.subShapes )
- self.__updateSubShapes( jdcID, groupeMaNames )
- self.__updateSubShapes( jdcID, groupeNoNames )
-
-
- # recupération des identifiants( entries ) associés aux noms des groupes
- groupeMaEntries = []
- groupeNoEntries = []
-
- for entry, name in self.subShapes.items():
- if name in groupeMaNames:
- groupeMaEntries.append( entry )
- if name in groupeNoNames:
- groupeNoEntries.append( entry )
-
- print 'CS_pbruno groupeMaEntries ->',groupeMaEntries
- print 'CS_pbruno groupeNoEntries ->',groupeNoEntries
- if groupeMaEntries or groupeNoEntries:
- print 'if groupeMaEntries or groupeNoEntries:'
- diag = meshGui.MeshUpdateDialogImpl( self.mainShapeEntries[jdcID], groupeMaEntries, groupeNoEntries, studyManager.palStudy,
- self.parent )
- diag.show()
+ if not self.mainShapeEntries.has_key( jdcID ):
+ # l'utilisateur n'a sélectionné aucune sous-géométrie et donc pas de géométrie principale
+ groupeMaNames, groupeNoNames = self.__selectMainShape( groupeMaNames, groupeNoNames )
+
+ if groupeMaNames or groupeNoNames:
+ print 'CS_pbruno createOrUpdateMesh groupeMaNames', groupeMaNames
+ print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames
+ self.__updateSubShapes( jdcID, groupeMaNames + groupeNoNames )
+
+ # recupération des identifiants( entries ) associés aux noms des groupes
+ groupeMaEntries = []
+ groupeNoEntries = []
+
+ for entry, name in self.subShapes.items():
+ if name in groupeMaNames:
+ groupeMaEntries.append( entry )
+ if name in groupeNoNames:
+ groupeNoEntries.append( entry )
+
+ if groupeMaEntries or groupeNoEntries:
+ diag = meshGui.MeshUpdateDialogImpl(
+ self.mainShapeEntries[jdcID],
+ groupeMaEntries,
+ groupeNoEntries,
+ studyManager.palStudy,
+ self.parent )
+ diag.show()
+
+ self.subShapes.clear()
+ self.mainShapeNames.clear()
+ self.mainShapeEntries.clear()
except:
logger.debug(50*'=')
-"""
- #embedded.showMaximized()
- #embedded.embed( appli.winfo_id() )
-
- embedded.setWFlags( qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop )
- embedded.setFocus()
-
- if embedded.hasFocus () :
- print 'hasfocus'
- else:
- print 'pas focus'
-
-
- if embedded.isFocusEnabled():
- print 'isFocusEnabled()'
- else:
- print 'not isFocusEnabled()'
-
- focusP = embedded.focusPolicy()
-
- if focusP == qt.QWidget.TabFocus:
- print 'qt.QWidgetTabFocus'
- elif focusP == qt.QWidget.ClickFocus:
- print 'qt.ClickFocus'
- elif focusP == qt.QWidget.StrongFocus:
- print 'qt.StrongFocus'
- elif focusP == qt.QWidget.WheelFocus:
- print 'qt.WheelFocus'
- elif focusP == qt.QWidget.NoFocus:
- print 'qt.NoFocus'
- else:
- print 'bizarre'
-
- embedded.grabKeyboard()
- """
\ No newline at end of file