def __init__(self, parent=None): super(ObjectController, self).__init__(parent) self.d_ptr = ObjectControllerPrivate() self.d_ptr.q_ptr = self self.d_ptr.m_object = 0 ## # scroll = QScrollArea(self) # scroll.setWidgetResizable(True) # # self.d_ptr.m_browser = QtGroupBoxPropertyBrowser(self) # layout = QVBoxLayout(self) # layout.setMargin(0) # layout.addWidget(scroll) # scroll.setWidget(self.d_ptr.m_browser) ## browser = QtTreePropertyBrowser(self) browser.setRootIsDecorated(False) self.d_ptr.m_browser = browser layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.d_ptr.m_browser) self.d_ptr.m_readOnlyManager = QtVariantPropertyManager(self) self.d_ptr.m_manager = QtVariantPropertyManager(self) factory = QtVariantEditorFactory(self) self.d_ptr.m_browser.setFactoryForManager(self.d_ptr.m_manager, factory) self.d_ptr.m_manager.valueChangedSignal.connect(self.d_ptr.slotValueChanged)
def __init__(self, parent=None): super(ObjectController, self).__init__(parent) self.d_ptr = ObjectControllerPrivate() self.d_ptr.q_ptr = self self.d_ptr.m_object = 0 ## # scroll = QScrollArea(self) # scroll.setWidgetResizable(True) # # self.d_ptr.m_browser = QtGroupBoxPropertyBrowser(self) # layout = QVBoxLayout(self) # layout.setMargin(0) # layout.addWidget(scroll) # scroll.setWidget(self.d_ptr.m_browser) ## browser = QtTreePropertyBrowser(self) browser.setRootIsDecorated(False) self.d_ptr.m_browser = browser layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.d_ptr.m_browser) self.d_ptr.m_readOnlyManager = QtVariantPropertyManager(self) self.d_ptr.m_manager = QtVariantPropertyManager(self) factory = QtVariantEditorFactory(self) self.d_ptr.m_browser.setFactoryForManager(self.d_ptr.m_manager, factory) self.d_ptr.m_manager.valueChangedSignal.connect( self.d_ptr.slotValueChanged)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.propertyToId = QMap() self.idToProperty = QMap() self.idToExpanded = QMap() editMenu = self.menuBar().addMenu(self.tr("Edit")) newObjectMenu = editMenu.addMenu(self.tr("New Object")) newRectangleAction = QAction(self.tr("Rectangle"), self) newRectangleAction.triggered.connect(self.newRectangle) newObjectMenu.addAction(newRectangleAction) newLineAction = QAction(self.tr("Line"), self) newLineAction.triggered.connect(self.newLine) newObjectMenu.addAction(newLineAction) newEllipseAction = QAction(self.tr("Ellipse"), self) newEllipseAction.triggered.connect(self.newEllipse) newObjectMenu.addAction(newEllipseAction) newTextAction = QAction(self.tr("Text"), self) newTextAction.triggered.connect(self.newText) newObjectMenu.addAction(newTextAction) self.deleteAction = QAction(self.tr("Delete Object"), self) self.deleteAction.triggered.connect(self.deleteObject) editMenu.addAction(self.deleteAction) clearAction = QAction(self.tr("Clear All"), self) clearAction.triggered.connect(self.clearAll) editMenu.addAction(clearAction) fillAction = QAction(self.tr("Fill View"), self) fillAction.triggered.connect(self.fillView) editMenu.addAction(fillAction) self.variantManager = QtVariantPropertyManager(self) self.variantManager.valueChangedSignal.connect(self.valueChanged) variantFactory = QtVariantEditorFactory(self) self.canvas = QtCanvas(800, 600) self.canvasView = CanvasView(self.canvas, self) self.setCentralWidget(self.canvasView) dock = QDockWidget(self) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.variantManager, variantFactory) dock.setWidget(self.propertyEditor) self.currentItem = QtCanvasItem(None) self.canvasView.itemClickedSignal.connect(self.itemClicked) self.canvasView.itemMovedSignal.connect(self.itemMoved) self.fillView() self.itemClicked(QtCanvasItem(None))
def setupUi(self, PropertyWidget): PropertyWidget.setObjectName("PropertyWidget") PropertyWidget.resize(400, 300) self.widget_property = QWidget() self.setFeatures(QDockWidget.AllDockWidgetFeatures | \ QDockWidget.DockWidgetVerticalTitleBar) self.widget_property.setObjectName("widget_property") self.verticalLayout = QVBoxLayout(self.widget_property) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.line_path = QLineEdit(self.widget_property) self.line_path.setObjectName("line_path") self.verticalLayout.addWidget(self.line_path) self.prop_browser = QtTreePropertyBrowser() self.verticalLayout.addWidget(self.prop_browser) PropertyWidget.setWidget(self.widget_property) self.retranslateUi(PropertyWidget) QMetaObject.connectSlotsByName(PropertyWidget)
topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Font, str(i) + " Font Property") i += 1 topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Cursor, str(i) + " Cursor Property") i += 1 topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Color, str(i) + " Color Property") i += 1 topItem.addSubProperty(item) variantFactory = QtVariantEditorFactory() variantEditor = QtTreePropertyBrowser() variantEditor.setFactoryForManager(variantManager, variantFactory) variantEditor.addProperty(topItem) variantEditor.setPropertiesWithoutValueMarked(True) variantEditor.setRootIsDecorated(False) variantEditor.showMaximized() variantEditor.show() ret = app.exec_() del variantManager del variantFactory del variantEditor
class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.propertyToId = QMap() self.idToProperty = QMap() self.idToExpanded = QMap() editMenu = self.menuBar().addMenu(self.tr("Edit")) newObjectMenu = editMenu.addMenu(self.tr("New Object")) newRectangleAction = QAction(self.tr("Rectangle"), self) newRectangleAction.triggered.connect(self.newRectangle) newObjectMenu.addAction(newRectangleAction) newLineAction = QAction(self.tr("Line"), self) newLineAction.triggered.connect(self.newLine) newObjectMenu.addAction(newLineAction) newEllipseAction = QAction(self.tr("Ellipse"), self) newEllipseAction.triggered.connect(self.newEllipse) newObjectMenu.addAction(newEllipseAction) newTextAction = QAction(self.tr("Text"), self) newTextAction.triggered.connect(self.newText) newObjectMenu.addAction(newTextAction) self.deleteAction = QAction(self.tr("Delete Object"), self) self.deleteAction.triggered.connect(self.deleteObject) editMenu.addAction(self.deleteAction) clearAction = QAction(self.tr("Clear All"), self) clearAction.triggered.connect(self.clearAll) editMenu.addAction(clearAction) fillAction = QAction(self.tr("Fill View"), self) fillAction.triggered.connect(self.fillView) editMenu.addAction(fillAction) self.variantManager = QtVariantPropertyManager(self) self.variantManager.valueChangedSignal.connect(self.valueChanged) variantFactory = QtVariantEditorFactory(self) self.canvas = QtCanvas(800, 600) self.canvasView = CanvasView(self.canvas, self) self.setCentralWidget(self.canvasView) dock = QDockWidget(self) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.variantManager, variantFactory) dock.setWidget(self.propertyEditor) self.currentItem = QtCanvasItem(None) self.canvasView.itemClickedSignal.connect(self.itemClicked) self.canvasView.itemMovedSignal.connect(self.itemMoved) self.fillView() self.itemClicked(QtCanvasItem(None)) def newRectangle(self): item = self.addRectangle() self.canvas.update() self.itemClicked(item) def newEllipse(self): item = self.addEllipse() self.canvas.update() self.itemClicked(item) def newLine(self): item = self.addLine() self.canvas.update() self.itemClicked(item) def newText(self): item = self.addText() self.canvas.update() self.itemClicked(item) def deleteObject(self): if (not self.currentItem or self.currentItem.isNone()): return self.canvas.removeItem(self.currentItem) self.currentItem = QtCanvasItem(None) self.itemClicked(self.currentItem) self.canvas.update() def clearAll(self): for item in self.canvas.allItems(): self.canvas.removeItem(item) self.itemClicked(QtCanvasItem(None)) self.canvas.update() def fillView(self): for i in range(10): self.addRectangle() self.addEllipse() self.addLine() self.addText() self.canvas.update() def addRectangle(self): item = QtCanvasRectangle(rand() % self.canvas.width(), rand() % self.canvas.height(), 50, 50, self.canvas) item.setBrush( QBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8))) item.setPen( QPen(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8), 4)) item.setZ(rand() % 256) item.show() return item def addEllipse(self): item = QtCanvasEllipse(50, 50, self.canvas) item.setBrush( QBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8))) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setZ(rand() % 256) item.show() return item def addLine(self): item = QtCanvasLine(self.canvas) item.setPoints( 0, 0, rand() % self.canvas.width() - self.canvas.width() / 2, rand() % self.canvas.height() - self.canvas.height() / 2) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setPen( QPen(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8), 6)) item.setZ(rand() % 256) item.show() return item def addText(self): item = QtCanvasText(self.canvas) item.setText(self.tr("Text")) item.setColor(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8)) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setZ(rand() % 256) item.show() return item def itemMoved(self, item): if (item != self.currentItem or self.currentItem.isNone()): return self.variantManager.setValue(self.idToProperty["xpos"], item.x()) self.variantManager.setValue(self.idToProperty["ypos"], item.y()) self.variantManager.setValue(self.idToProperty["zpos"], item.z()) def updateExpandState(self): l = self.propertyEditor.topLevelItems() for item in l: prop = item.property() self.idToExpanded[ self.propertyToId[prop]] = self.propertyEditor.isExpanded(item) def itemClicked(self, item): self.updateExpandState() for p in self.propertyToId.keys(): p.destroy() self.propertyToId.clear() self.idToProperty.clear() self.currentItem = item if (not self.currentItem or self.currentItem.isNone()): self.deleteAction.setEnabled(False) return self.deleteAction.setEnabled(True) property = self.variantManager.addProperty(QVariant.Double, self.tr("Position X")) property.setAttribute("minimum", 0) property.setAttribute("maximum", self.canvas.width()) property.setValue(item.x()) self.addProperty(property, "xpos") property = self.variantManager.addProperty(QVariant.Double, self.tr("Position Y")) property.setAttribute("minimum", 0) property.setAttribute("maximum", self.canvas.height()) property.setValue(item.y()) self.addProperty(property, "ypos") property = self.variantManager.addProperty(QVariant.Double, self.tr("Position Z")) property.setAttribute("minimum", 0) property.setAttribute("maximum", 256) property.setValue(item.z()) self.addProperty(property, "zpos") if (item.rtti() == RttiValues.Rtti_Rectangle): i = item property = self.variantManager.addProperty(QVariant.Color, self.tr("Brush Color")) property.setValue(i.brush().color()) self.addProperty(property, "brush") property = self.variantManager.addProperty(QVariant.Color, self.tr("Pen Color")) property.setValue(i.pen().color()) self.addProperty(property, "pen") property = self.variantManager.addProperty(QVariant.Size, self.tr("Size")) property.setValue(i.size()) self.addProperty(property, "size") elif (item.rtti() == RttiValues.Rtti_Line): i = item property = self.variantManager.addProperty(QVariant.Color, self.tr("Pen Color")) property.setValue(i.pen().color()) self.addProperty(property, "pen") property = self.variantManager.addProperty(QVariant.Point, self.tr("Vector")) property.setValue(i.endPoint()) self.addProperty(property, "endpoint") elif (item.rtti() == RttiValues.Rtti_Ellipse): i = item property = self.variantManager.addProperty(QVariant.Color, self.tr("Brush Color")) property.setValue(i.brush().color()) self.addProperty(property, "brush") property = self.variantManager.addProperty(QVariant.Size, self.tr("Size")) property.setValue(QSize(i.width(), i.height())) self.addProperty(property, "size") elif (item.rtti() == RttiValues.Rtti_Text): i = item property = self.variantManager.addProperty(QVariant.Color, self.tr("Color")) property.setValue(i.color()) self.addProperty(property, "color") property = self.variantManager.addProperty(QVariant.String, self.tr("Text")) property.setValue(i.text()) self.addProperty(property, "text") property = self.variantManager.addProperty(QVariant.Font, self.tr("Font")) property.setValue(i.font()) self.addProperty(property, "font") def addProperty(self, property, id): self.propertyToId[property] = id self.idToProperty[id] = property item = self.propertyEditor.addProperty(property) if (self.idToExpanded.contains(id)): self.propertyEditor.setExpanded(item, self.idToExpanded[id]) def valueChanged(self, property, value): if (not self.propertyToId.contains(property)): return if (not self.currentItem or self.currentItem.isNone()): return id = self.propertyToId[property] if (id == "xpos"): self.currentItem.setX(value) elif (id == "ypos"): self.currentItem.setY(value) elif (id == "zpos"): self.currentItem.setZ(value) elif (id == "text"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setText(value) elif (id == "color"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setColor(value) elif (id == "brush"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle or self.currentItem.rtti() == RttiValues.Rtti_Ellipse): i = self.currentItem b = QBrush(i.brush()) b.setColor(value) i.setBrush(b) elif (id == "pen"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle or self.currentItem.rtti() == RttiValues.Rtti_Line): i = self.currentItem p = QPen(i.pen()) p.setColor(value) i.setPen(p) elif (id == "font"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setFont(value) elif (id == "endpoint"): if (self.currentItem.rtti() == RttiValues.Rtti_Line): i = self.currentItem p = value i.setPoints(i.startPoint().x(), i.startPoint().y(), p.x(), p.y()) elif (id == "size"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle): i = self.currentItem s = value i.setSize(s.width(), s.height()) elif (self.currentItem.rtti() == RttiValues.Rtti_Ellipse): i = self.currentItem s = value i.setSize(s.width(), s.height()) self.canvas.update()
self.xToProperty.remove(d.x) if (d.y): self.yToProperty.remove(d.y) self.propertyToData.remove(property) super(VariantManager, self).uninitializeProperty(property) if __name__ == '__main__': app = QApplication(sys.argv) variantManager = VariantManager() item = variantManager.addProperty(QVariant.PointF, "PointF Property") item.setValue(QPointF(2.5, 13.13)) variantFactory = QtVariantEditorFactory() ed1 = QtTreePropertyBrowser() ed1.setResizeMode(QtTreePropertyBrowser.Interactive) varMan = variantManager ed1.setFactoryForManager(varMan, variantFactory) ed1.addProperty(item) ed1.show() ret = app.exec() del variantFactory del variantManager
item = variantManager.addProperty(QVariant.SizePolicy, str(i) + " SizePolicy Property") i += 1 topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Font, str(i) + " Font Property") i += 1 topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Cursor, str(i) + " Cursor Property") i += 1 topItem.addSubProperty(item) item = variantManager.addProperty(QVariant.Color, str(i) + " Color Property") i += 1 topItem.addSubProperty(item) variantFactory = QtVariantEditorFactory() variantEditor = QtTreePropertyBrowser() variantEditor.setFactoryForManager(variantManager, variantFactory) variantEditor.addProperty(topItem) variantEditor.setPropertiesWithoutValueMarked(True) variantEditor.setRootIsDecorated(False) variantEditor.showMaximized() variantEditor.show() ret = app.exec_() del variantManager del variantFactory del variantEditor
class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.propertyToId = QMap() self.idToProperty = QMap() self.idToExpanded = QMap() editMenu = self.menuBar().addMenu(self.tr("Edit")) newObjectMenu = editMenu.addMenu(self.tr("New Object")) newRectangleAction = QAction(self.tr("Rectangle"), self) newRectangleAction.triggered.connect(self.newRectangle) newObjectMenu.addAction(newRectangleAction) newLineAction = QAction(self.tr("Line"), self) newLineAction.triggered.connect(self.newLine) newObjectMenu.addAction(newLineAction) newEllipseAction = QAction(self.tr("Ellipse"), self) newEllipseAction.triggered.connect(self.newEllipse) newObjectMenu.addAction(newEllipseAction) newTextAction = QAction(self.tr("Text"), self) newTextAction.triggered.connect(self.newText) newObjectMenu.addAction(newTextAction) self.deleteAction = QAction(self.tr("Delete Object"), self) self.deleteAction.triggered.connect(self.deleteObject) editMenu.addAction(self.deleteAction) clearAction = QAction(self.tr("Clear All"), self) clearAction.triggered.connect(self.clearAll) editMenu.addAction(clearAction) fillAction = QAction(self.tr("Fill View"), self) fillAction.triggered.connect(self.fillView) editMenu.addAction(fillAction) self.doubleManager = QtDoublePropertyManager(self) self.stringManager = QtStringPropertyManager(self) self.colorManager = QtColorPropertyManager(self) self.fontManager = QtFontPropertyManager(self) self.pointManager = QtPointPropertyManager(self) self.sizeManager = QtSizePropertyManager(self) self.doubleManager.valueChangedSignal.connect(self.valueChanged) self.stringManager.valueChangedSignal.connect(self.valueChanged) self.colorManager.valueChangedSignal.connect(self.valueChanged) self.fontManager.valueChangedSignal.connect(self.valueChanged) self.pointManager.valueChangedSignal.connect(self.valueChanged) self.sizeManager.valueChangedSignal.connect(self.valueChanged) doubleSpinBoxFactory = QtDoubleSpinBoxFactory(self) checkBoxFactory = QtCheckBoxFactory(self) spinBoxFactory = QtSpinBoxFactory(self) lineEditFactory = QtLineEditFactory(self) comboBoxFactory = QtEnumEditorFactory(self) self.canvas = QtCanvas(800, 600) self.canvasView = CanvasView(self.canvas, self) self.setCentralWidget(self.canvasView) dock = QDockWidget(self) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.doubleManager, doubleSpinBoxFactory) self.propertyEditor.setFactoryForManager(self.stringManager, lineEditFactory) self.propertyEditor.setFactoryForManager(self.colorManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subBoolPropertyManager(), checkBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subEnumPropertyManager(), comboBoxFactory) self.propertyEditor.setFactoryForManager(self.pointManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.sizeManager.subIntPropertyManager(), spinBoxFactory) dock.setWidget(self.propertyEditor) self.currentItem = QtCanvasItem(None) self.canvasView.itemClickedSignal.connect(self.itemClicked) self.canvasView.itemMovedSignal.connect(self.itemMoved) self.fillView() self.itemClicked(QtCanvasItem(None)) def newRectangle(self): item = self.addRectangle() self.canvas.update() self.itemClicked(item) def newEllipse(self): item = self.addEllipse() self.canvas.update() self.itemClicked(item) def newLine(self): item = self.addLine() self.canvas.update() self.itemClicked(item) def newText(self): item = self.addText() self.canvas.update() self.itemClicked(item) def deleteObject(self): if (not self.currentItem or self.currentItem.isNone()): return self.canvas.removeItem(self.currentItem) self.currentItem = QtCanvasItem(None) self.itemClicked(self.currentItem) self.canvas.update() def clearAll(self): for item in self.canvas.allItems(): self.canvas.removeItem(item) self.itemClicked(QtCanvasItem(None)) self.canvas.update() def fillView(self): for i in range(10): self.addRectangle() self.addEllipse() self.addLine() self.addText() self.canvas.update() def addRectangle(self): item = QtCanvasRectangle(rand() % self.canvas.width(), rand() % self.canvas.height(), 50, 50, self.canvas) item.setBrush(QBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8))) item.setPen(QPen(QColor(rand() % 32*8, rand() % 32*8, rand() % 32*8), 4)) item.setZ(rand() % 256) item.show() return item def addEllipse(self): item = QtCanvasEllipse(50, 50, self.canvas) item.setBrush(QBrush(QColor(rand() % 32 * 8, rand() % 32 * 8, rand() % 32 * 8))) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setZ(rand() % 256) item.show() return item def addLine(self): item = QtCanvasLine(self.canvas) item.setPoints(0, 0, rand() % self.canvas.width() - self.canvas.width() / 2, rand() % self.canvas.height() - self.canvas.height() / 2) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setPen(QPen(QColor(rand() % 32*8, rand() % 32*8, rand() % 32*8), 6)) item.setZ(rand() % 256) item.show() return item def addText(self): item = QtCanvasText(self.canvas) item.setText(self.tr("Text")) item.setColor(QColor(rand() % 32*8, rand() % 32*8, rand() % 32*8)) item.move(rand() % self.canvas.width(), rand() % self.canvas.height()) item.setZ(rand() % 256) item.show() return item def itemMoved(self, item): if (item != self.currentItem or self.currentItem.isNone()): return self.doubleManager.setValue(self.idToProperty["xpos"], item.x()) self.doubleManager.setValue(self.idToProperty["ypos"], item.y()) self.doubleManager.setValue(self.idToProperty["zpos"], item.z()) def updateExpandState(self): l = self.propertyEditor.topLevelItems() for item in l: prop = item.property() self.idToExpanded[self.propertyToId[prop]] = self.propertyEditor.isExpanded(item) def itemClicked(self, item): self.updateExpandState() for p in self.propertyToId.keys(): p.destroy() self.propertyToId.clear() self.idToProperty.clear() self.currentItem = item if (not self.currentItem or self.currentItem.isNone()): self.deleteAction.setEnabled(False) return self.deleteAction.setEnabled(True) property = self.doubleManager.addProperty(self.tr("Position X")) self.doubleManager.setRange(property, 0, self.canvas.width()) self.doubleManager.setValue(property, item.x()) self.addProperty(property, "xpos") property = self.doubleManager.addProperty(self.tr("Position Y")) self.doubleManager.setRange(property, 0, self.canvas.height()) self.doubleManager.setValue(property, item.y()) self.addProperty(property, "ypos") property = self.doubleManager.addProperty(self.tr("Position Z")) self.doubleManager.setRange(property, 0, 256) self.doubleManager.setValue(property, item.z()) self.addProperty(property, "zpos") if (item.rtti() == RttiValues.Rtti_Rectangle): i = item property = self.colorManager.addProperty(self.tr("Brush Color")) self.colorManager.setValue(property, i.brush().color()) self.addProperty(property, "brush") property = self.colorManager.addProperty(self.tr("Pen Color")) self.colorManager.setValue(property, i.pen().color()) self.addProperty(property, "pen") property = self.sizeManager.addProperty(self.tr("Size")) self.sizeManager.setValue(property, i.size()) self.addProperty(property, "size") elif (item.rtti() == RttiValues.Rtti_Line): i = item property = self.colorManager.addProperty(self.tr("Pen Color")) self.colorManager.setValue(property, i.pen().color()) self.addProperty(property, "pen") property = self.pointManager.addProperty(self.tr("Vector")) self.pointManager.setValue(property, i.endPoint()) self.addProperty(property, "endpoint") elif (item.rtti() == RttiValues.Rtti_Ellipse): i = item property = self.colorManager.addProperty(self.tr("Brush Color")) self.colorManager.setValue(property, i.brush().color()) self.addProperty(property, "brush") property = self.sizeManager.addProperty(self.tr("Size")) self.sizeManager.setValue(property, QSize(i.width(), i.height())) self.sizeManager.setRange(property, QSize(0, 0), QSize(1000, 1000)) self.addProperty(property, "size") elif (item.rtti() == RttiValues.Rtti_Text): i = item property = self.colorManager.addProperty(self.tr("Color")) self.colorManager.setValue(property, i.color()) self.addProperty(property, "color") property = self.stringManager.addProperty(self.tr("Text")) self.stringManager.setValue(property, i.text()) self.addProperty(property, "text") property = self.fontManager.addProperty(self.tr("Font")) self.fontManager.setValue(property, i.font()) self.addProperty(property, "font") def addProperty(self, property, id): self.propertyToId[property] = id self.idToProperty[id] = property item = self.propertyEditor.addProperty(property) if (self.idToExpanded.contains(id)): self.propertyEditor.setExpanded(item, self.idToExpanded[id]) def valueChanged(self, property, value): if (not self.propertyToId.contains(property)): return if (not self.currentItem or self.currentItem.isNone()): return tp = type(value) id = self.propertyToId[property] if tp == float: if (id == "xpos"): self.currentItem.setX(value) elif (id == "ypos"): self.currentItem.setY(value) elif (id == "zpos"): self.currentItem.setZ(value) elif tp == str: if (id == "text"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setText(value) elif tp == QColor: if (id == "color"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setColor(value) elif (id == "brush"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle or self.currentItem.rtti() == RttiValues.Rtti_Ellipse): i = self.currentItem b = QBrush(i.brush()) b.setColor(value) i.setBrush(b) elif (id == "pen"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle or self.currentItem.rtti() == RttiValues.Rtti_Line): i = self.currentItem p = QPen(i.pen()) p.setColor(value) i.setPen(p) elif tp == QFont: if (id == "font"): if (self.currentItem.rtti() == RttiValues.Rtti_Text): i = self.currentItem i.setFont(value) elif tp == QPoint: if (self.currentItem.rtti() == RttiValues.Rtti_Line): i = self.currentItem if (id == "endpoint"): i.setPoints(i.startPoint().x(), i.startPoint().y(), value.x(), value.y()) elif tp == QSize: if (id == "size"): if (self.currentItem.rtti() == RttiValues.Rtti_Rectangle): i = self.currentItem i.setSize(value.width(), value.height()) elif (self.currentItem.rtti() == RttiValues.Rtti_Ellipse): i = self.currentItem i.setSize(value.width(), value.height()) self.canvas.update()
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.propertyToId = QMap() self.idToProperty = QMap() self.idToExpanded = QMap() editMenu = self.menuBar().addMenu(self.tr("Edit")) newObjectMenu = editMenu.addMenu(self.tr("New Object")) newRectangleAction = QAction(self.tr("Rectangle"), self) newRectangleAction.triggered.connect(self.newRectangle) newObjectMenu.addAction(newRectangleAction) newLineAction = QAction(self.tr("Line"), self) newLineAction.triggered.connect(self.newLine) newObjectMenu.addAction(newLineAction) newEllipseAction = QAction(self.tr("Ellipse"), self) newEllipseAction.triggered.connect(self.newEllipse) newObjectMenu.addAction(newEllipseAction) newTextAction = QAction(self.tr("Text"), self) newTextAction.triggered.connect(self.newText) newObjectMenu.addAction(newTextAction) self.deleteAction = QAction(self.tr("Delete Object"), self) self.deleteAction.triggered.connect(self.deleteObject) editMenu.addAction(self.deleteAction) clearAction = QAction(self.tr("Clear All"), self) clearAction.triggered.connect(self.clearAll) editMenu.addAction(clearAction) fillAction = QAction(self.tr("Fill View"), self) fillAction.triggered.connect(self.fillView) editMenu.addAction(fillAction) self.doubleManager = QtDoublePropertyManager(self) self.stringManager = QtStringPropertyManager(self) self.colorManager = QtColorPropertyManager(self) self.fontManager = QtFontPropertyManager(self) self.pointManager = QtPointPropertyManager(self) self.sizeManager = QtSizePropertyManager(self) self.doubleManager.valueChangedSignal.connect(self.valueChanged) self.stringManager.valueChangedSignal.connect(self.valueChanged) self.colorManager.valueChangedSignal.connect(self.valueChanged) self.fontManager.valueChangedSignal.connect(self.valueChanged) self.pointManager.valueChangedSignal.connect(self.valueChanged) self.sizeManager.valueChangedSignal.connect(self.valueChanged) doubleSpinBoxFactory = QtDoubleSpinBoxFactory(self) checkBoxFactory = QtCheckBoxFactory(self) spinBoxFactory = QtSpinBoxFactory(self) lineEditFactory = QtLineEditFactory(self) comboBoxFactory = QtEnumEditorFactory(self) self.canvas = QtCanvas(800, 600) self.canvasView = CanvasView(self.canvas, self) self.setCentralWidget(self.canvasView) dock = QDockWidget(self) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.doubleManager, doubleSpinBoxFactory) self.propertyEditor.setFactoryForManager(self.stringManager, lineEditFactory) self.propertyEditor.setFactoryForManager( self.colorManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager( self.fontManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager( self.fontManager.subBoolPropertyManager(), checkBoxFactory) self.propertyEditor.setFactoryForManager( self.fontManager.subEnumPropertyManager(), comboBoxFactory) self.propertyEditor.setFactoryForManager( self.pointManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager( self.sizeManager.subIntPropertyManager(), spinBoxFactory) dock.setWidget(self.propertyEditor) self.currentItem = QtCanvasItem(None) self.canvasView.itemClickedSignal.connect(self.itemClicked) self.canvasView.itemMovedSignal.connect(self.itemMoved) self.fillView() self.itemClicked(QtCanvasItem(None))
def __init__(self): super(MainWindow, self).__init__() self.setGeometry(0, 0, 1280, 780) # Create actions and menus self.createMenu() self.createToolBar() # Create status bar self.statusBar().showMessage("Ready") # Vulkan widget self.vulkanWindow = VulkanWindow(self) self.vulkanWindowWidget = QtWidgets.QWidget.createWindowContainer( self.vulkanWindow) self.vulkanWindow.initialize() # Stop rendering while moving the window self.moveEventTimer = QtCore.QTimer(self) self.moveEventTimer.timeout.connect(self.moveEventDone) # Dock layout dock = QtWidgets.QDockWidget() dock.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, dock) # Property editor self.variantManager = QtVariantPropertyManager(self) self.variantManager.valueChangedSignal.connect(self.valueChanged) topItem = self.variantManager.addProperty( QtVariantPropertyManager.groupTypeId(), "Group Property") item = self.variantManager.addProperty(QtCore.QVariant.Bool, "Pause?") item.setValue(False) topItem.addSubProperty(item) self.variantFactory = QtVariantEditorFactory() self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.variantManager, self.variantFactory) self.propertyEditor.addProperty(topItem) self.propertyEditor.setPropertiesWithoutValueMarked(True) self.propertyEditor.setRootIsDecorated(False) dock.setWidget(self.propertyEditor) # Vulkan viewport dock = QtWidgets.QDockWidget() dock.setWidget(self.vulkanWindowWidget) # Box layout #layout = QtWidgets.QVBoxLayout() #layout.addWidget(self.button) #layout.addWidget(self.vulkanWindowWidget) #layout.addWidget(dock) #mainWidget = QtWidgets.QWidget() #mainWidget.setLayout(layout) #self.setCentralWidget(mainWidget) self.setCentralWidget(self.vulkanWindowWidget)
class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.setGeometry(0, 0, 1280, 780) # Create actions and menus self.createMenu() self.createToolBar() # Create status bar self.statusBar().showMessage("Ready") # Vulkan widget self.vulkanWindow = VulkanWindow(self) self.vulkanWindowWidget = QtWidgets.QWidget.createWindowContainer( self.vulkanWindow) self.vulkanWindow.initialize() # Stop rendering while moving the window self.moveEventTimer = QtCore.QTimer(self) self.moveEventTimer.timeout.connect(self.moveEventDone) # Dock layout dock = QtWidgets.QDockWidget() dock.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, dock) # Property editor self.variantManager = QtVariantPropertyManager(self) self.variantManager.valueChangedSignal.connect(self.valueChanged) topItem = self.variantManager.addProperty( QtVariantPropertyManager.groupTypeId(), "Group Property") item = self.variantManager.addProperty(QtCore.QVariant.Bool, "Pause?") item.setValue(False) topItem.addSubProperty(item) self.variantFactory = QtVariantEditorFactory() self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.variantManager, self.variantFactory) self.propertyEditor.addProperty(topItem) self.propertyEditor.setPropertiesWithoutValueMarked(True) self.propertyEditor.setRootIsDecorated(False) dock.setWidget(self.propertyEditor) # Vulkan viewport dock = QtWidgets.QDockWidget() dock.setWidget(self.vulkanWindowWidget) # Box layout #layout = QtWidgets.QVBoxLayout() #layout.addWidget(self.button) #layout.addWidget(self.vulkanWindowWidget) #layout.addWidget(dock) #mainWidget = QtWidgets.QWidget() #mainWidget.setLayout(layout) #self.setCentralWidget(mainWidget) self.setCentralWidget(self.vulkanWindowWidget) #self.showMaximized() def __del__(self): del self.variantManager del self.variantFactory del self.variantEditor self.destroy() def valueChanged(self, property, value): tp = type(value) if tp == bool: self.vulkanWindow.vk_renderer.is_paused = value def closeEvent(self, event): self.vulkanWindow.cleanup() del self.vulkanWindow def moveEvent(self, event): self.moveEventTimer.start(500) self.vulkanWindow.timer.stop() def moveEventDone(self): self.vulkanWindow.timer.start() def createMenu(self): fileMenu = self.menuBar().addMenu("&File") fileMenu.addAction("Exit", self.exit) def createToolBar(self): exitAction = QtWidgets.QAction(QtGui.QIcon(":/images/open.png"), "&Open...", self) exitAction.setStatusTip("Open an existing file") exitAction.triggered.connect(self.exit) self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(exitAction) def exit(self): print("exit")
enumIcons[3] = QIcon(":/demo/images/left.png") enumManager.setEnumIcons(item8, enumIcons) item0.addSubProperty(item8) item9 = intManager.addProperty("value") intManager.setRange(item9, -100, 100) item0.addSubProperty(item9) checkBoxFactory = QtCheckBoxFactory(w) spinBoxFactory = QtSpinBoxFactory(w) sliderFactory = QtSliderFactory(w) scrollBarFactory = QtScrollBarFactory(w) lineEditFactory = QtLineEditFactory(w) comboBoxFactory = QtEnumEditorFactory(w) editor1 = QtTreePropertyBrowser() editor1.setFactoryForManager(boolManager, checkBoxFactory) editor1.setFactoryForManager(intManager, spinBoxFactory) editor1.setFactoryForManager(stringManager, lineEditFactory) editor1.setFactoryForManager(sizeManager.subIntPropertyManager(), spinBoxFactory) editor1.setFactoryForManager(rectManager.subIntPropertyManager(), spinBoxFactory) editor1.setFactoryForManager(sizePolicyManager.subIntPropertyManager(), spinBoxFactory) editor1.setFactoryForManager(sizePolicyManager.subEnumPropertyManager(), comboBoxFactory) editor1.setFactoryForManager(enumManager, comboBoxFactory) editor1.addProperty(item0) editor2 = QtTreePropertyBrowser() editor2.addProperty(item0) editor3 = QtGroupBoxPropertyBrowser()
app = QApplication(sys.argv) undecoratedManager = QtDoublePropertyManager() undecoratedProperty = undecoratedManager.addProperty("Undecorated") undecoratedManager.setValue(undecoratedProperty, 123.45) decoratedManager = DecoratedDoublePropertyManager() decoratedProperty = decoratedManager.addProperty("Decorated") decoratedManager.setPrefix(decoratedProperty, "speed: ") decoratedManager.setSuffix(decoratedProperty, " km/h") decoratedManager.setValue(decoratedProperty, 123.45) undecoratedFactory = QtDoubleSpinBoxFactory() decoratedFactory = DecoratedDoubleSpinBoxFactory() editor = QtTreePropertyBrowser() editor.setFactoryForManager(undecoratedManager, undecoratedFactory) editor.setFactoryForManager(decoratedManager, decoratedFactory) editor.addProperty(undecoratedProperty) editor.addProperty(decoratedProperty) editor.show() ret = app.exec() del decoratedFactory del decoratedManager del undecoratedFactory del undecoratedManager del editor
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.propertyToId = QMap() self.idToProperty = QMap() self.idToExpanded = QMap() editMenu = self.menuBar().addMenu(self.tr("Edit")) newObjectMenu = editMenu.addMenu(self.tr("New Object")) newRectangleAction = QAction(self.tr("Rectangle"), self) newRectangleAction.triggered.connect(self.newRectangle) newObjectMenu.addAction(newRectangleAction) newLineAction = QAction(self.tr("Line"), self) newLineAction.triggered.connect(self.newLine) newObjectMenu.addAction(newLineAction) newEllipseAction = QAction(self.tr("Ellipse"), self) newEllipseAction.triggered.connect(self.newEllipse) newObjectMenu.addAction(newEllipseAction) newTextAction = QAction(self.tr("Text"), self) newTextAction.triggered.connect(self.newText) newObjectMenu.addAction(newTextAction) self.deleteAction = QAction(self.tr("Delete Object"), self) self.deleteAction.triggered.connect(self.deleteObject) editMenu.addAction(self.deleteAction) clearAction = QAction(self.tr("Clear All"), self) clearAction.triggered.connect(self.clearAll) editMenu.addAction(clearAction) fillAction = QAction(self.tr("Fill View"), self) fillAction.triggered.connect(self.fillView) editMenu.addAction(fillAction) self.doubleManager = QtDoublePropertyManager(self) self.stringManager = QtStringPropertyManager(self) self.colorManager = QtColorPropertyManager(self) self.fontManager = QtFontPropertyManager(self) self.pointManager = QtPointPropertyManager(self) self.sizeManager = QtSizePropertyManager(self) self.doubleManager.valueChangedSignal.connect(self.valueChanged) self.stringManager.valueChangedSignal.connect(self.valueChanged) self.colorManager.valueChangedSignal.connect(self.valueChanged) self.fontManager.valueChangedSignal.connect(self.valueChanged) self.pointManager.valueChangedSignal.connect(self.valueChanged) self.sizeManager.valueChangedSignal.connect(self.valueChanged) doubleSpinBoxFactory = QtDoubleSpinBoxFactory(self) checkBoxFactory = QtCheckBoxFactory(self) spinBoxFactory = QtSpinBoxFactory(self) lineEditFactory = QtLineEditFactory(self) comboBoxFactory = QtEnumEditorFactory(self) self.canvas = QtCanvas(800, 600) self.canvasView = CanvasView(self.canvas, self) self.setCentralWidget(self.canvasView) dock = QDockWidget(self) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.propertyEditor = QtTreePropertyBrowser(dock) self.propertyEditor.setFactoryForManager(self.doubleManager, doubleSpinBoxFactory) self.propertyEditor.setFactoryForManager(self.stringManager, lineEditFactory) self.propertyEditor.setFactoryForManager(self.colorManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subBoolPropertyManager(), checkBoxFactory) self.propertyEditor.setFactoryForManager(self.fontManager.subEnumPropertyManager(), comboBoxFactory) self.propertyEditor.setFactoryForManager(self.pointManager.subIntPropertyManager(), spinBoxFactory) self.propertyEditor.setFactoryForManager(self.sizeManager.subIntPropertyManager(), spinBoxFactory) dock.setWidget(self.propertyEditor) self.currentItem = QtCanvasItem(None) self.canvasView.itemClickedSignal.connect(self.itemClicked) self.canvasView.itemMovedSignal.connect(self.itemMoved) self.fillView() self.itemClicked(QtCanvasItem(None))