1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
import logging
from qtpy import QtWidgets
import qtpynodeeditor
from qtpynodeeditor import (NodeData, NodeDataModel, NodeDataType, PortType,
StyleCollection)
style_json = '''
{
"FlowViewStyle": {
"BackgroundColor": [255, 255, 240],
"FineGridColor": [245, 245, 230],
"CoarseGridColor": [235, 235, 220]
},
"NodeStyle": {
"NormalBoundaryColor": "darkgray",
"SelectedBoundaryColor": "deepskyblue",
"GradientColor0": "mintcream",
"GradientColor1": "mintcream",
"GradientColor2": "mintcream",
"GradientColor3": "mintcream",
"ShadowColor": [200, 200, 200],
"FontColor": [10, 10, 10],
"FontColorFaded": [100, 100, 100],
"ConnectionPointColor": "white",
"PenWidth": 2.0,
"HoveredPenWidth": 2.5,
"ConnectionPointDiameter": 10.0,
"Opacity": 1.0
},
"ConnectionStyle": {
"ConstructionColor": "gray",
"NormalColor": "black",
"SelectedColor": "gray",
"SelectedHaloColor": "deepskyblue",
"HoveredColor": "deepskyblue",
"LineWidth": 3.0,
"ConstructionLineWidth": 2.0,
"PointDiameter": 10.0,
"UseDataDefinedColors": false
}
}
'''
class MyNodeData(NodeData):
data_type = NodeDataType(id='MyNodeData', name='My Node Data')
class MyDataModel(NodeDataModel):
name = 'MyDataModel'
caption = 'Caption'
caption_visible = True
num_ports = {PortType.input: 3,
PortType.output: 3,
}
data_type = MyNodeData.data_type
def out_data(self, port):
return MyNodeData()
def set_in_data(self, node_data, port):
...
def embedded_widget(self):
return None
def main(app):
style = StyleCollection.from_json(style_json)
registry = qtpynodeeditor.DataModelRegistry()
registry.register_model(MyDataModel, category='My Category', style=style)
scene = qtpynodeeditor.FlowScene(style=style, registry=registry)
view = qtpynodeeditor.FlowView(scene)
view.setWindowTitle("Style example")
view.resize(800, 600)
node = scene.create_node(MyDataModel)
return scene, view, [node]
if __name__ == '__main__':
logging.basicConfig(level='DEBUG')
app = QtWidgets.QApplication([])
scene, view, nodes = main(app)
view.show()
app.exec_()
|