Ejemplo n.º 1
0
    def setupUi(self, MaterialsAndTextureDlg):
        MaterialsAndTextureDlg.setObjectName(
            _fromUtf8("MaterialsAndTextureDlg"))
        MaterialsAndTextureDlg.resize(400, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/cmiss_icon.ico")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MaterialsAndTextureDlg.setWindowIcon(icon)
        self.gridLayout = QtGui.QGridLayout(MaterialsAndTextureDlg)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.pushButton = QtGui.QPushButton(MaterialsAndTextureDlg)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
        self.sceneviewerwidget = SceneviewerWidget(MaterialsAndTextureDlg)
        self.sceneviewerwidget.setObjectName(_fromUtf8("_zincWidget"))
        self.gridLayout.addWidget(self.sceneviewerwidget, 0, 0, 1, 2)

        self.retranslateUi(MaterialsAndTextureDlg)
        QtCore.QObject.connect(self.pushButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               MaterialsAndTextureDlg.close)
        QtCore.QMetaObject.connectSlotsByName(MaterialsAndTextureDlg)
class Ui_MaterialsAndTextureDlg(object):
    def setupUi(self, MaterialsAndTextureDlg):
        MaterialsAndTextureDlg.setObjectName(_fromUtf8("MaterialsAndTextureDlg"))
        MaterialsAndTextureDlg.resize(400, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/cmiss_icon.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MaterialsAndTextureDlg.setWindowIcon(icon)
        self.gridLayout = QtGui.QGridLayout(MaterialsAndTextureDlg)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.pushButton = QtGui.QPushButton(MaterialsAndTextureDlg)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
        self.sceneviewerwidget = SceneviewerWidget(MaterialsAndTextureDlg)
        self.sceneviewerwidget.setObjectName(_fromUtf8("_zincWidget"))
        self.gridLayout.addWidget(self.sceneviewerwidget, 0, 0, 1, 2)

        self.retranslateUi(MaterialsAndTextureDlg)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), MaterialsAndTextureDlg.close)
        QtCore.QMetaObject.connectSlotsByName(MaterialsAndTextureDlg)

    def retranslateUi(self, MaterialsAndTextureDlg):
        MaterialsAndTextureDlg.setWindowTitle(_translate("MaterialsAndTextureDlg", "Materials", None))
        self.pushButton.setText(_translate("MaterialsAndTextureDlg", "&Quit", None))
    def initializeGL(self):
        '''
        Initialise the Zinc scene for drawing the axis glyph at a point.  
        '''
        # Following throws exception if you haven't called setContext() yet
        SceneviewerWidget.initializeGL(self)
        if self._sceneviewer and self._sceneviewer.isValid():
            scene = self._sceneviewer.getScene()
            graphics_filter = self._sceneviewer.getScenefilter()
            self._scenepicker = scene.createScenepicker()
            region = scene.getRegion()

            fieldmodule = region.getFieldmodule()

            self._selectionGroup = fieldmodule.createFieldGroup()
            scene.setSelectionField(self._selectionGroup)

            self._scenepicker = scene.createScenepicker()
            self._scenepicker.setScenefilter(graphics_filter)
            sceneFilterModule = self.getContext().getScenefiltermodule()
            self._sceneSurfacesFilter = sceneFilterModule.createScenefilterOperatorAnd()
            surfacesFilter = sceneFilterModule.createScenefilterGraphicsType(Graphics.TYPE_SURFACES)
            self._sceneSurfacesFilter.appendOperand(graphics_filter)
            self._sceneSurfacesFilter.appendOperand(surfacesFilter)
            self.createSelectionBox(scene)            
Ejemplo n.º 4
0
class Ui_GlyphExportDlg(object):
    def setupUi(self, GlyphExportDlg):
        GlyphExportDlg.setObjectName(_fromUtf8("GlyphExportDlg"))
        GlyphExportDlg.resize(400, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/cmiss_icon.ico")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        GlyphExportDlg.setWindowIcon(icon)
        self.gridLayout = QtGui.QGridLayout(GlyphExportDlg)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.pushButton = QtGui.QPushButton(GlyphExportDlg)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
        self.sceneviewerwidget = SceneviewerWidget(GlyphExportDlg)
        self.sceneviewerwidget.setObjectName(_fromUtf8("_zincWidget"))
        self.gridLayout.addWidget(self.sceneviewerwidget, 0, 0, 1, 2)

        self.retranslateUi(GlyphExportDlg)
        QtCore.QObject.connect(self.pushButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               GlyphExportDlg.close)
        QtCore.QMetaObject.connectSlotsByName(GlyphExportDlg)

    def retranslateUi(self, GlyphExportDlg):
        GlyphExportDlg.setWindowTitle(
            _translate("GlyphExportDlg", "BasicMesh", None))
        self.pushButton.setText(_translate("GlyphExportDlg", "&Quit", None))
    def initializeGL(self):
        '''
        Initialise the Zinc scene for drawing the axis glyph at a point.  
        '''
        # Following throws exception if you haven't called setContext() yet
        SceneviewerWidget.initializeGL(self)
        if self._sceneviewer and self._sceneviewer.isValid():
            scene = self._sceneviewer.getScene()
            graphics_filter = self._sceneviewer.getScenefilter()
            self._scenepicker = scene.createScenepicker()
            region = scene.getRegion()

            fieldmodule = region.getFieldmodule()

            self._selectionGroup = fieldmodule.createFieldGroup()
            scene.setSelectionField(self._selectionGroup)

            self._scenepicker = scene.createScenepicker()
            self._scenepicker.setScenefilter(graphics_filter)
            sceneFilterModule = self.getContext().getScenefiltermodule()
            self._sceneSurfacesFilter = sceneFilterModule.createScenefilterOperatorAnd(
            )
            surfacesFilter = sceneFilterModule.createScenefilterGraphicsType(
                Graphics.TYPE_SURFACES)
            self._sceneSurfacesFilter.appendOperand(graphics_filter)
            self._sceneSurfacesFilter.appendOperand(surfacesFilter)
            self.createSelectionBox(scene)
class Ui_SimpleShadersDlg(object):
    def setupUi(self, SimpleShadersDlg):
        SimpleShadersDlg.setObjectName("SimpleShadersDlg")
        SimpleShadersDlg.resize(400, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/cmiss_icon.ico"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        SimpleShadersDlg.setWindowIcon(icon)
        self.gridLayout = QtGui.QGridLayout(SimpleShadersDlg)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton = QtGui.QPushButton(SimpleShadersDlg)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
        self._sceneviewerwidget = SceneviewerWidget(SimpleShadersDlg)
        self._sceneviewerwidget.setObjectName("_sceneviewerwidget")
        self.gridLayout.addWidget(self._sceneviewerwidget, 0, 0, 1, 2)

        self.retranslateUi(SimpleShadersDlg)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"),
                               SimpleShadersDlg.close)
        QtCore.QMetaObject.connectSlotsByName(SimpleShadersDlg)

    def retranslateUi(self, SimpleShadersDlg):
        SimpleShadersDlg.setWindowTitle(
            QtGui.QApplication.translate("SimpleShadersDlg", "Simple Shaders",
                                         None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setText(
            QtGui.QApplication.translate("SimpleShadersDlg", "&Quit", None,
                                         QtGui.QApplication.UnicodeUTF8))
 def mouseMoveEvent(self, event):
     '''
     Inform the scene viewer of a mouse move event and update the OpenGL scene to reflect this
     change to the viewport.
     '''
     event.accept()
     if not self._ignore_mouse_events and self._selection_mode != SelectionMode.NONE:
         x = event.x()
         y = event.y()
         xdiff = float(x - self._selection_position_start[0])
         ydiff = float(y - self._selection_position_start[1])
         if abs(xdiff) < 0.0001:
             xdiff = 1
         if abs(ydiff) < 0.0001:
             ydiff = 1
         xoff = float(self._selection_position_start[0]) / xdiff + 0.5
         yoff = float(self._selection_position_start[1]) / ydiff + 0.5
         scene = self._selection_box.getScene()
         scene.beginChange()
         attributes = self._selection_box.getGraphicspointattributes()
         attributes.setBaseSize([xdiff, ydiff, 0.999])
         attributes.setGlyphOffset([xoff, -yoff, 0])
         self._selection_box.setVisibilityFlag(True)
         scene.endChange()
     elif not self._ignore_mouse_events and self._handle_mouse_events:
         SceneviewerWidget.mouseMoveEvent(self, event)
 def mouseMoveEvent(self, event):
     '''
     Inform the scene viewer of a mouse move event and update the OpenGL scene to reflect this
     change to the viewport.
     '''
     event.accept()
     if not self._ignore_mouse_events and self._selection_mode != SelectionMode.NONE:
         x = event.x()
         y = event.y()
         xdiff = float(x - self._selection_position_start[0])
         ydiff = float(y - self._selection_position_start[1])
         if abs(xdiff) < 0.0001:
             xdiff = 1
         if abs(ydiff) < 0.0001:
             ydiff = 1
         xoff = float(self._selection_position_start[0]) / xdiff + 0.5
         yoff = float(self._selection_position_start[1]) / ydiff + 0.5
         scene = self._selection_box.getScene()
         scene.beginChange()
         attributes = self._selection_box.getGraphicspointattributes()
         attributes.setBaseSize([xdiff, ydiff, 0.999])
         attributes.setGlyphOffset([xoff, -yoff, 0])
         self._selection_box.setVisibilityFlag(True)
         scene.endChange()
     elif not self._ignore_mouse_events and self._handle_mouse_events:
         SceneviewerWidget.mouseMoveEvent(self, event)
Ejemplo n.º 9
0
class Ui_AnimationDeformingHeartDlg(object):
    def setupUi(self, AnimationDeformingHeartDlg):
        AnimationDeformingHeartDlg.setObjectName(
            _fromUtf8("AnimationDeformingHeartDlg"))
        AnimationDeformingHeartDlg.resize(396, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/cmiss_icon.ico")),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        AnimationDeformingHeartDlg.setWindowIcon(icon)
        self.verticalLayout = QtGui.QVBoxLayout(AnimationDeformingHeartDlg)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.sceneviewerwidget = SceneviewerWidget(AnimationDeformingHeartDlg)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.sceneviewerwidget.sizePolicy().hasHeightForWidth())
        self.sceneviewerwidget.setSizePolicy(sizePolicy)
        self.sceneviewerwidget.setObjectName(_fromUtf8("sceneviewerwidget"))
        self.verticalLayout.addWidget(self.sceneviewerwidget)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.playButton = QtGui.QPushButton(AnimationDeformingHeartDlg)
        self.playButton.setObjectName(_fromUtf8("playButton"))
        self.horizontalLayout_2.addWidget(self.playButton)
        self.timeSlider = QtGui.QSlider(AnimationDeformingHeartDlg)
        self.timeSlider.setMaximum(100)
        self.timeSlider.setOrientation(QtCore.Qt.Horizontal)
        self.timeSlider.setObjectName(_fromUtf8("timeSlider"))
        self.horizontalLayout_2.addWidget(self.timeSlider)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.pushButton = QtGui.QPushButton(AnimationDeformingHeartDlg)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.horizontalLayout.addWidget(self.pushButton)
        self.verticalLayout.addLayout(self.horizontalLayout)

        self.retranslateUi(AnimationDeformingHeartDlg)
        QtCore.QObject.connect(self.pushButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               AnimationDeformingHeartDlg.close)
        QtCore.QMetaObject.connectSlotsByName(AnimationDeformingHeartDlg)

    def retranslateUi(self, AnimationDeformingHeartDlg):
        AnimationDeformingHeartDlg.setWindowTitle(
            _translate("AnimationDeformingHeartDlg", "Deforming Heart", None))
        self.playButton.setText(
            _translate("AnimationDeformingHeartDlg", "&Play", None))
        self.pushButton.setText(
            _translate("AnimationDeformingHeartDlg", "&Quit", None))
 def mousePressEvent(self, event):
     '''
     Inform the scene viewer of a mouse press event.
     '''
     event.accept()
     self._handle_mouse_events = False  # Track when the zinc should be handling mouse events
     if not self._ignore_mouse_events and (event.modifiers() & self._selectionModifier) and (self._nodeSelectMode or self._elemSelectMode) and button_map[event.button()] == Sceneviewerinput.BUTTON_TYPE_LEFT:
         self._selection_position_start = (event.x(), event.y())
         self._selection_mode = SelectionMode.EXCLUSIVE
         if event.modifiers() & self._additiveSelectionModifier:
             self._selection_mode = SelectionMode.ADDITIVE
     elif not self._ignore_mouse_events and not event.modifiers() or (event.modifiers() & self._selectionModifier and button_map[event.button()] == Sceneviewerinput.BUTTON_TYPE_RIGHT):
         SceneviewerWidget.mousePressEvent(self, event)
    def __init__(self, parent=None, shared=None):

        # Selection attributes
        SceneviewerWidget.__init__(self, parent, shared)
        self._nodeSelectMode = False
        self._dataSelectMode = False
        self._1delemSelectMode = False
        self._2delemSelectMode = False
        self._elemSelectMode = False
        self._selection_mode = SelectionMode.NONE
        self._selectionGroup = None
        self._selection_box = None
        self._selectionModifier = QtCore.Qt.SHIFT
        self._additiveSelectionModifier = QtCore.Qt.ALT
        self._sceneSurfacesFilter = None
        self._handle_mouse_events = False
 def __init__(self, parent=None, shared=None):
     
     # Selection attributes
     SceneviewerWidget.__init__(self, parent, shared)
     self._nodeSelectMode = False
     self._dataSelectMode = False
     self._1delemSelectMode = False
     self._2delemSelectMode = False
     self._elemSelectMode = False
     self._selection_mode = SelectionMode.NONE
     self._selectionGroup = None
     self._selection_box = None
     self._selectionModifier = QtCore.Qt.SHIFT
     self._additiveSelectionModifier = QtCore.Qt.ALT
     self._sceneSurfacesFilter = None
     self._handle_mouse_events = False
 def mousePressEvent(self, event):
     '''
     Inform the scene viewer of a mouse press event.
     '''
     event.accept()
     self._handle_mouse_events = False  # Track when the zinc should be handling mouse events
     if not self._ignore_mouse_events and (
             event.modifiers() & self._selectionModifier
     ) and (self._nodeSelectMode or self._elemSelectMode) and button_map[
             event.button()] == Sceneviewerinput.BUTTON_TYPE_LEFT:
         self._selection_position_start = (event.x(), event.y())
         self._selection_mode = SelectionMode.EXCLUSIVE
         if event.modifiers() & self._additiveSelectionModifier:
             self._selection_mode = SelectionMode.ADDITIVE
     elif not self._ignore_mouse_events and not event.modifiers() or (
             event.modifiers() & self._selectionModifier
             and button_map[event.button()]
             == Sceneviewerinput.BUTTON_TYPE_RIGHT):
         SceneviewerWidget.mousePressEvent(self, event)
    def setupUi(self, BasicMeshDlg):
        BasicMeshDlg.setObjectName(_fromUtf8("BasicMeshDlg"))
        BasicMeshDlg.resize(400, 300)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/cmiss_icon.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        BasicMeshDlg.setWindowIcon(icon)
        self.gridLayout = QtGui.QGridLayout(BasicMeshDlg)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.pushButton = QtGui.QPushButton(BasicMeshDlg)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 0, 1, 1)
        self.sceneviewerwidget = SceneviewerWidget(BasicMeshDlg)
        self.sceneviewerwidget.setObjectName(_fromUtf8("_zincWidget"))
        self.gridLayout.addWidget(self.sceneviewerwidget, 0, 0, 1, 2)

        self.retranslateUi(BasicMeshDlg)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), BasicMeshDlg.close)
        QtCore.QMetaObject.connectSlotsByName(BasicMeshDlg)
    def mouseReleaseEvent(self, event):
        '''
        Inform the scene viewer of a mouse release event.
        '''
        event.accept()
        if not self._ignore_mouse_events and self._selection_mode != SelectionMode.NONE:
            x = event.x()
            y = event.y()
            # Construct a small frustum to look for nodes in.
            top_region = self._sceneviewer.getScene().getRegion()
            top_region.beginHierarchicalChange()
            self._selection_box.setVisibilityFlag(False)
            if (x != self._selection_position_start[0]
                    and y != self._selection_position_start[1]):
                left = min(x, self._selection_position_start[0])
                right = max(x, self._selection_position_start[0])
                bottom = min(y, self._selection_position_start[1])
                top = max(y, self._selection_position_start[1])
                self._scenepicker.setSceneviewerRectangle(
                    self._sceneviewer, SCENECOORDINATESYSTEM_LOCAL, left,
                    bottom, right, top)
                if self._selection_mode == SelectionMode.EXCLUSIVE:
                    self._selectionGroup.clear()
                if self._nodeSelectMode or self._dataSelectMode:
                    self._scenepicker.addPickedNodesToFieldGroup(
                        self._selectionGroup)
                if self._elemSelectMode:
                    self._scenepicker.addPickedElementsToFieldGroup(
                        self._selectionGroup)
            else:
                self._scenepicker.setSceneviewerRectangle(
                    self._sceneviewer, SCENECOORDINATESYSTEM_LOCAL, x - 3.5,
                    y - 3.5, x + 3.5, y + 3.5)
                if self._nodeSelectMode and self._elemSelectMode and self._selection_mode == SelectionMode.EXCLUSIVE and not self._scenepicker.getNearestGraphics(
                ).isValid():
                    self._selectionGroup.clear()

                if self._nodeSelectMode and (
                        self._scenepicker.getNearestGraphics(
                        ).getFieldDomainType() == Field.DOMAIN_TYPE_NODES):
                    node = self._scenepicker.getNearestNode()
                    nodeset = node.getNodeset()
                    nodegroup = self._selectionGroup.getFieldNodeGroup(nodeset)
                    if not nodegroup.isValid():
                        nodegroup = self._selectionGroup.createFieldNodeGroup(
                            nodeset)
                    group = nodegroup.getNodesetGroup()
                    if self._selection_mode == SelectionMode.EXCLUSIVE:
                        remove_current = group.getSize(
                        ) == 1 and group.containsNode(node)
                        self._selectionGroup.clear()
                        if not remove_current:
                            group.addNode(node)
                    elif self._selection_mode == SelectionMode.ADDITIVE:
                        if group.containsNode(node):
                            group.removeNode(node)
                        else:
                            group.addNode(node)
                if self._elemSelectMode and (
                        self._scenepicker.getNearestGraphics(
                        ).getFieldDomainType() in [
                            Field.DOMAIN_TYPE_MESH1D, Field.DOMAIN_TYPE_MESH2D,
                            Field.DOMAIN_TYPE_MESH3D,
                            Field.DOMAIN_TYPE_MESH_HIGHEST_DIMENSION
                        ]):
                    elem = self._scenepicker.getNearestElement()
                    mesh = elem.getMesh()
                    elementgroup = self._selectionGroup.getFieldElementGroup(
                        mesh)
                    if not elementgroup.isValid():
                        elementgroup = self._selectionGroup.createFieldElementGroup(
                            mesh)
                    group = elementgroup.getMeshGroup()
                    if self._selection_mode == SelectionMode.EXCLUSIVE:
                        remove_current = group.getSize(
                        ) == 1 and group.containsElement(elem)
                        self._selectionGroup.clear()
                        if not remove_current:
                            group.addElement(elem)
                    elif self._selection_mode == SelectionMode.ADDITIVE:
                        if group.containsElement(elem):
                            group.removeElement(elem)
                        else:
                            group.addElement(elem)
            top_region.endHierarchicalChange()
            self._selection_mode = SelectionMode.NONE
        elif not self._ignore_mouse_events and self._handle_mouse_events:
            SceneviewerWidget.mouseReleaseEvent(self, event)
        self._selection_mode = SelectionMode.NONE
 def setScenefilter(self, scenefilter):
     self._scenepicker.setScenefilter(scenefilter)
     SceneviewerWidget.setScenefilter(self, scenefilter)
    def mouseReleaseEvent(self, event):
        '''
        Inform the scene viewer of a mouse release event.
        '''
        event.accept()
        if not self._ignore_mouse_events and self._selection_mode != SelectionMode.NONE:
            x = event.x()
            y = event.y()
            # Construct a small frustum to look for nodes in.
            top_region = self._sceneviewer.getScene().getRegion()
            top_region.beginHierarchicalChange()
            self._selection_box.setVisibilityFlag(False)
            if (x != self._selection_position_start[0] and y != self._selection_position_start[1]):
                left = min(x, self._selection_position_start[0])
                right = max(x, self._selection_position_start[0])
                bottom = min(y, self._selection_position_start[1])
                top = max(y, self._selection_position_start[1])
                self._scenepicker.setSceneviewerRectangle(self._sceneviewer, SCENECOORDINATESYSTEM_LOCAL, left, bottom, right, top);
                if self._selection_mode == SelectionMode.EXCLUSIVE:
                    self._selectionGroup.clear()
                if self._nodeSelectMode or self._dataSelectMode:
                    self._scenepicker.addPickedNodesToFieldGroup(self._selectionGroup)
                if self._elemSelectMode:
                    self._scenepicker.addPickedElementsToFieldGroup(self._selectionGroup)
            else:
                self._scenepicker.setSceneviewerRectangle(self._sceneviewer, SCENECOORDINATESYSTEM_LOCAL, x - 3.5, y - 3.5, x + 3.5, y + 3.5)
                if self._nodeSelectMode and self._elemSelectMode and self._selection_mode == SelectionMode.EXCLUSIVE and not self._scenepicker.getNearestGraphics().isValid():
                    self._selectionGroup.clear()

                if self._nodeSelectMode and (self._scenepicker.getNearestGraphics().getFieldDomainType() == Field.DOMAIN_TYPE_NODES):
                    node = self._scenepicker.getNearestNode()
                    nodeset = node.getNodeset()
                    nodegroup = self._selectionGroup.getFieldNodeGroup(nodeset)
                    if not nodegroup.isValid():
                        nodegroup = self._selectionGroup.createFieldNodeGroup(nodeset)
                    group = nodegroup.getNodesetGroup()
                    if self._selection_mode == SelectionMode.EXCLUSIVE:
                        remove_current = group.getSize() == 1 and group.containsNode(node)
                        self._selectionGroup.clear()
                        if not remove_current:
                            group.addNode(node)
                    elif self._selection_mode == SelectionMode.ADDITIVE:
                        if group.containsNode(node):
                            group.removeNode(node)
                        else:
                            group.addNode(node)
                if self._elemSelectMode and (self._scenepicker.getNearestGraphics().getFieldDomainType() in [Field.DOMAIN_TYPE_MESH1D, Field.DOMAIN_TYPE_MESH2D, Field.DOMAIN_TYPE_MESH3D, Field.DOMAIN_TYPE_MESH_HIGHEST_DIMENSION]):
                    elem = self._scenepicker.getNearestElement()
                    mesh = elem.getMesh()
                    elementgroup = self._selectionGroup.getFieldElementGroup(mesh)
                    if not elementgroup.isValid():
                        elementgroup = self._selectionGroup.createFieldElementGroup(mesh)
                    group = elementgroup.getMeshGroup()
                    if self._selection_mode == SelectionMode.EXCLUSIVE:
                        remove_current = group.getSize() == 1 and group.containsElement(elem)
                        self._selectionGroup.clear()
                        if not remove_current:
                            group.addElement(elem)
                    elif self._selection_mode == SelectionMode.ADDITIVE:
                        if group.containsElement(elem):
                            group.removeElement(elem)
                        else:
                            group.addElement(elem)
            top_region.endHierarchicalChange()
            self._selection_mode = SelectionMode.NONE
        elif not self._ignore_mouse_events and self._handle_mouse_events:
            SceneviewerWidget.mouseReleaseEvent(self, event)
        self._selection_mode = SelectionMode.NONE
 def setScenefilter(self, scenefilter):
     self._scenepicker.setScenefilter(scenefilter)
     SceneviewerWidget.setScenefilter(self, scenefilter)