Exemplo n.º 1
0
def init(objectTree=None, propertiesPanel=None):

    if _t._treeWidget:
        return

    objectTree = objectTree or QtGui.QTreeWidget()
    propertiesPanel = propertiesPanel or PythonQt.dd.ddPropertiesPanel()

    _t.init(objectTree, propertiesPanel)
Exemplo n.º 2
0
def main():

    objectTree = QtGui.QTreeWidget()
    propertiesPanel = PythonQt.dd.ddPropertiesPanel()

    om.init(objectTree, propertiesPanel)
    p = om.ObjectModelItem('test parent item')
    p.addProperty('foo', 1)
    p.addProperty('Visible', True)
    om.addToObjectModel(p)
    c = om.ObjectModelItem('test child item')
    om.addToObjectModel(c, p)

    assert om.findObjectByName('test parent item') == p
    assert om.findObjectByName('test child item') == c
    assert p.children()[0] == c
    assert c.children() == []

    objectTree.show()
    propertiesPanel.show()

    objectTree2 = QtGui.QTreeWidget()
    propertiesPanel2 = PythonQt.dd.ddPropertiesPanel()

    tree = om.ObjectModelTree()
    tree.init(objectTree2, propertiesPanel2)

    p2 = om.ObjectModelItem('test parent item 2')
    p2.addProperty('foo2', 1)
    p2.addProperty('Visible', True)
    tree.addToObjectModel(p2)
    c2 = om.ObjectModelItem('test child item 2')
    tree.addToObjectModel(c2, p2)

    assert tree.findObjectByName('test parent item 2') == p2
    assert tree.findObjectByName('test child item 2') == c2
    assert p2.children()[0] == c2
    assert c2.children() == []

    objectTree2.show()
    propertiesPanel2.show()

    startApplication(enableQuitTimer=True)
Exemplo n.º 3
0
def main():

    om.init(QtGui.QTreeWidget(), PythonQt.dd.ddPropertiesPanel())

    # create a frame
    t1 = vtk.vtkTransform()
    f1 = vis.FrameItem('frame 1', t1, view=None)
    om.addToObjectModel(f1)

    # test object model lookup
    assert om.findObjectByName('frame 1')
    assert om.findObjectByName('frame 2') is None

    # test reference cleanup
    f1Ref = weakref.ref(f1)
    assert f1Ref() is f1

    om.removeFromObjectModel(f1)
    del f1
    assert f1Ref() is None

    # add frame again
    f1 = vis.FrameItem('frame 1', t1, view=None)
    om.addToObjectModel(f1)

    # create second frame
    t2 = vtk.vtkTransform()
    f2 = vis.FrameItem('frame 2', t2, view=None)
    om.addToObjectModel(f2)

    # test transform reference is input transform
    assert f2.transform is t2

    # test frame sync
    frameSync = vis.FrameSync()

    frameSync.addFrame(f1)
    frameSync.addFrame(f2)

    t1.Translate(10, 0, 0)
    t1.Modified()

    assert t2.GetPosition() == (10.0, 0.0, 0.0)

    # test frame sync cleanup
    f1Ref = weakref.ref(f1)
    assert f1Ref() is f1

    assert len(frameSync.frames) == 2

    om.removeFromObjectModel(f1)
    del f1
    assert f1Ref() is None

    assert len(frameSync.frames) == 2

    t2.Translate(10, 0, 0)
    t2.Modified()

    assert t2.GetPosition() == (20.0, 0.0, 0.0)

    assert len(frameSync.frames) == 1

    # add frame again
    f1 = vis.FrameItem('frame 1', t1, view=None)
    om.addToObjectModel(f1)
    frameSync.addFrame(f1)

    t1.Translate(0, 5, 0)
    t1.Modified()

    assert t1.GetPosition() == (10.0, 5.0, 0.0)
    assert t2.GetPosition() == (20.0, 5.0, 0.0)

    frameSync.removeFrame(f1)

    t1.Translate(0, 5, 0)
    t1.Modified()

    assert t1.GetPosition() == (10.0, 10.0, 0.0)
    assert t2.GetPosition() == (20.0, 5.0, 0.0)

    # this has to be wrapped in a function, otherwise the exception
    # handling holds a reference to the FrameSync object which breaks
    # the delete test at the end
    def testException(fs):
        try:
            fs.removeFrame('test')
        except KeyError:
            pass
        else:
            assert False

    testException(frameSync)

    # test cleanup
    f1Ref = weakref.ref(f1)
    om.removeFromObjectModel(f1)
    del f1
    assert f1Ref() is None

    t1Ref = weakref.ref(t1)
    del t1
    assert t1Ref() is None

    # add frame again
    t1 = vtk.vtkTransform()
    f1 = vis.FrameItem('frame 1', t1, view=None)
    om.addToObjectModel(f1)

    frameSync.addFrame(f1)

    t1.Translate(0, 0, 10)
    t1.Modified()
    assert t2.GetPosition() == (20.0, 5.0, 10.0)

    # verify FrameSync object can be deleted
    frameSyncRef = weakref.ref(frameSync)
    del frameSync
    assert frameSyncRef() is None

    # verify frames are no longer synced after FrameSync is deleted
    t1.Translate(0, 0, 10)
    t1.Modified()
    assert t2.GetPosition() == (20.0, 5.0, 10.0)

    sys.exit(0)
Exemplo n.º 4
0
    def setupUi(self):

        self.objectTree = QtGui.QTreeWidget()
        self.propertiesPanel = PythonQt.dd.ddPropertiesPanel()

        sidePanel = QtGui.QSplitter(QtCore.Qt.Vertical)
        sidePanel.addWidget(self.objectTree)
        sidePanel.addWidget(self.propertiesPanel)
        sidePanel.setSizes([6, 4])

        om.init(self.objectTree, self.propertiesPanel)

        self.view = PythonQt.dd.ddQVTKWidgetView()
        lcmgl.init(self.view)

        self.view.backgroundRenderer().SetBackground(1, 1, 1)
        self.view.backgroundRenderer().SetBackground2(1, 1, 1)

        def setTextProperty(caption):
            prop = caption.GetCaptionTextProperty()
            prop.ShadowOff()
            prop.BoldOn()
            prop.ItalicOff()
            prop.SetColor(0, 0, 0)

        axesActor = self.view.orientationMarkerWidget().GetOrientationMarker()
        setTextProperty(axesActor.GetXAxisCaptionActor2D())
        setTextProperty(axesActor.GetYAxisCaptionActor2D())
        setTextProperty(axesActor.GetZAxisCaptionActor2D())

        w = QtGui.QWidget()
        l = QtGui.QHBoxLayout(w)
        self.slider = QtGui.QSlider(QtCore.Qt.Horizontal)
        self.clearButton = QtGui.QPushButton('clear')
        self.zeroButton = QtGui.QPushButton('zero')

        l.addWidget(self.clearButton)
        l.addWidget(self.zeroButton)
        l.addWidget(self.slider)

        self.slider.connect(self.slider, 'valueChanged(int)', self.onSlider)
        self.slider.connect(self.zeroButton, 'clicked()',
                            self.onZeroButtonClicked)
        self.slider.connect(self.clearButton, 'clicked()',
                            self.onClearButtonClicked)

        ww = QtGui.QWidget()
        ll = QtGui.QVBoxLayout(ww)
        ll.addWidget(self.view)
        #ll.addWidget(w)
        ll.setMargin(0)

        splitter = QtGui.QSplitter()
        splitter.addWidget(sidePanel)
        splitter.addWidget(ww)
        splitter.setSizes([0, 1])

        splitter.show()
        splitter.resize(800, 600)
        self.widget = splitter
        self.widget.setWindowTitle('Drake Viewer')
Exemplo n.º 5
0
    def __init__(self):
        super(ExportQtGui, self).__init__()
        #--# Create Groups
        self.mainGroup = QtGui.QGroupBox('Export List')
        self.optionGroup = QtGui.QGroupBox('Options')
        #--# Create Layouts
        layoutV1_main = QtGui.QVBoxLayout()
        layoutV2_grp = QtGui.QVBoxLayout()
        layoutV3_grp = QtGui.QVBoxLayout()
        layoutH1_wdg = QtGui.QHBoxLayout()
        layoutH2_wdg = QtGui.QHBoxLayout()
        layoutH3_wdg = QtGui.QHBoxLayout()
        layoutH4_wdg = QtGui.QHBoxLayout()
        layoutH5_wdg = QtGui.QHBoxLayout()
        ## Build Layouts
        self.setLayout(layoutV1_main)
        self.mainGroup.setLayout(layoutV2_grp)
        self.optionGroup.setLayout(layoutV3_grp)
        layoutV2_grp.addLayout(layoutH1_wdg)
        layoutV2_grp.addLayout(layoutH2_wdg)
        layoutV3_grp.addLayout(layoutH3_wdg)
        layoutV3_grp.addLayout(layoutH4_wdg)
        layoutV3_grp.addLayout(layoutH5_wdg)
        #--# Export List TreeWidget
        self.exportList = QtGui.QTreeWidget()
        self.exportList.setSelectionMode(
            QtGui.QAbstractItemView.ExtendedSelection)
        self.exportList.setSortingEnabled(True)
        self.exportList.setAlternatingRowColors(True)
        #--# Create Widgets
        self.addBtn = QtGui.QToolButton(self)
        self.removeBtn = QtGui.QToolButton(self)
        self.clearBtn = QtGui.QToolButton(self)
        self.addAllBtn = QtGui.QToolButton(self)
        self.browseBtn = QtGui.QPushButton('Browse')
        self.exportBtn = QtGui.QPushButton('Export')
        self.formatCombo = QtGui.QComboBox()
        self.exportLabel = QtGui.QLabel('Path: ')
        self.formatLabel = QtGui.QLabel('Format: ')
        self.templateLabel = QtGui.QLabel('Template: ')
        self.templateLn = QtGui.QLineEdit(defaultTemplate)
        self.exportLn = QtGui.QLineEdit()
        ## Set Icons
        self.addBtn.setIcon(QtGui.QIcon('%s/Plus.png' % icon_path))
        self.removeBtn.setIcon(QtGui.QIcon('%s/Minus.png' % icon_path))
        self.clearBtn.setIcon(QtGui.QIcon('%s/Quit.png' % icon_path))
        self.addAllBtn.setIcon(QtGui.QIcon('%s/AddObject.png' % icon_path))
        #--# Populate Layouts
        layoutH1_wdg.addWidget(self.exportList)
        layoutH2_wdg.addWidget(self.addBtn)
        layoutH2_wdg.addWidget(self.removeBtn)
        layoutH2_wdg.addWidget(self.clearBtn)
        layoutH2_wdg.addWidget(self.addAllBtn)
        layoutH2_wdg.addStretch()
        layoutH3_wdg.addWidget(self.exportLabel)
        layoutH3_wdg.addWidget(self.exportLn)
        layoutH3_wdg.addWidget(self.browseBtn)
        layoutH4_wdg.addWidget(self.templateLabel)
        layoutH4_wdg.addWidget(self.templateLn)
        layoutH4_wdg.addWidget(self.formatLabel)
        layoutH4_wdg.addWidget(self.formatCombo)
        layoutH5_wdg.addWidget(self.exportBtn)
        ## Final
        layoutV1_main.addWidget(self.mainGroup)
        layoutV1_main.addWidget(self.optionGroup)
        #--# StyleSheets
        self.setStyleSheet("\
		QTreeWidget { alternate-background-color: rgb(100, 100, 100); } \
		")
        #--# Keyboard shortcuts
        self.deleteKey = QtGui.QShortcut(QtGui.QKeySequence('Delete'), self)
        #--# Connections
        self.addBtn.connect("clicked()", self.addUDIM)
        self.removeBtn.connect("clicked()",
                               lambda: self.manageTree(remove=True))
        self.clearBtn.connect("clicked()", self.clear)
        self.addAllBtn.connect("clicked()", self.addAllObjects)
        self.browseBtn.connect("clicked()", self.getExportPath)
        self.exportBtn.connect("clicked()", self.export)
        self.deleteKey.connect("activated()",
                               lambda: self.manageTree(remove=True))
        self.exportList.connect("itemDoubleClicked (QTreeWidgetItem *,int)",
                                lambda: self.manageTree(pick=True))
        #--# Init
        self.init()
        self.setHeader()