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)
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)
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)
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')
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()