|
@@ -1,5 +1,7 @@
|
|
|
#include "SchemeFlowWidget.h"
|
|
|
|
|
|
+#include "ProjectManager.h"
|
|
|
+
|
|
|
#include <dbService/ClassSet.h>
|
|
|
|
|
|
#include <QGroupBox>
|
|
@@ -16,7 +18,16 @@ static std::shared_ptr<NodeDelegateModelRegistry> registerDataModels()
|
|
|
{
|
|
|
auto ret = std::make_shared<NodeDelegateModelRegistry>();
|
|
|
|
|
|
+ ret->registerModel<FlowTemplateDataModel>();
|
|
|
ret->registerModel<FlowIndexDataModel>();
|
|
|
+ ret->registerModel<FlowSampleDataModel>();
|
|
|
+ ret->registerModel<FlowPCADataModel>();
|
|
|
+ ret->registerModel<FlowWeightDataModel>();
|
|
|
+ ret->registerModel<FlowResultDataModel>();
|
|
|
+ ret->registerModel<FlowReportDataModel>();
|
|
|
+ ret->registerModel<FlowEffiLevDataModel>();
|
|
|
+ ret->registerModel<FlowSchemeDataModel>();
|
|
|
+ ret->registerModel<FlowEffiDataModel>();
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
@@ -76,11 +87,13 @@ static void setStyle_()
|
|
|
)");
|
|
|
}
|
|
|
|
|
|
-SchemeFlowWidget::SchemeFlowWidget(ProjectInfo *proj, int indexType, QWidget *parent) : QWidget(parent)
|
|
|
+SchemeFlowWidget::SchemeFlowWidget(ProjectInfo *proj, int indexType, QWidget *parent) : QWidget(parent), m_proj(proj)
|
|
|
{
|
|
|
setStyle_();
|
|
|
- initWidgets();
|
|
|
- initLayout();
|
|
|
+
|
|
|
+ initWidget();
|
|
|
+
|
|
|
+ setType(indexType);
|
|
|
}
|
|
|
|
|
|
SchemeFlowWidget::~SchemeFlowWidget()
|
|
@@ -88,57 +101,106 @@ SchemeFlowWidget::~SchemeFlowWidget()
|
|
|
delete graphModel;
|
|
|
}
|
|
|
|
|
|
-void SchemeFlowWidget::initWidgets()
|
|
|
+void SchemeFlowWidget::setType(int t)
|
|
|
{
|
|
|
+ m_indexType = t;
|
|
|
+ refresh();
|
|
|
+}
|
|
|
|
|
|
+void SchemeFlowWidget::initWidget()
|
|
|
+{
|
|
|
graphModel = new DataFlowModel(registerDataModels());
|
|
|
+ graphModel->setNodesLocked(true);
|
|
|
+ graphModel->setDetachPossible(false);
|
|
|
|
|
|
- // Initialize and connect two nodes.
|
|
|
- {
|
|
|
- NodeId id1 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
- graphModel->setNodeData(id1, NodeRole::Position, QPointF(0, 0));
|
|
|
+ auto scene = new DataFlowGraphicsScene(*graphModel);
|
|
|
+ GraphicsView *view = new GraphicsView(scene);
|
|
|
+
|
|
|
+ QHBoxLayout *l = new QHBoxLayout(this);
|
|
|
+ l->addWidget(view);
|
|
|
+}
|
|
|
|
|
|
- NodeId id2 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
- graphModel->setNodeData(id2, NodeRole::Position, QPointF(200, 0));
|
|
|
+void SchemeFlowWidget::clearAllNodes()
|
|
|
+{
|
|
|
+ for (int id : graphModel->allNodeIds()) {
|
|
|
+ graphModel->deleteNode(id);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- graphModel->addConnection(ConnectionId { id1, 0, id2, 0 });
|
|
|
+void SchemeFlowWidget::refresh()
|
|
|
+{
|
|
|
+ clearAllNodes();
|
|
|
|
|
|
- NodeId id3 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
- graphModel->setNodeData(id3, NodeRole::Position, QPointF(400, 0));
|
|
|
+ qreal h = 240;
|
|
|
|
|
|
+ switch (m_indexType) {
|
|
|
+ case ProjectManager::AbilityIndex:
|
|
|
+ case ProjectManager::TechIndex: {
|
|
|
+ NodeId id1 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
+ graphModel->setNodeData(id1, NodeRole::Position, QPointF(h * 0, 0));
|
|
|
+
|
|
|
+ NodeId id2 = graphModel->addNode(FlowSampleData().type().id);
|
|
|
+ graphModel->setNodeData(id2, NodeRole::Position, QPointF(h * 1, 0));
|
|
|
+ graphModel->addConnection(ConnectionId { id1, 0, id2, 0 });
|
|
|
+
|
|
|
+ NodeId id3 = graphModel->addNode(FlowPCAData().type().id);
|
|
|
+ graphModel->setNodeData(id3, NodeRole::Position, QPointF(h * 2, 0));
|
|
|
graphModel->addConnection(ConnectionId { id2, 0, id3, 0 });
|
|
|
- }
|
|
|
|
|
|
- auto scene = new DataFlowGraphicsScene(*graphModel);
|
|
|
+ NodeId id4 = graphModel->addNode(FlowWeightData().type().id);
|
|
|
+ graphModel->setNodeData(id4, NodeRole::Position, QPointF(h * 0, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id3, 0, id4, 0 });
|
|
|
|
|
|
- QHBoxLayout *l = new QHBoxLayout(this);
|
|
|
+ NodeId id5 = graphModel->addNode(FlowResultData().type().id);
|
|
|
+ graphModel->setNodeData(id5, NodeRole::Position, QPointF(h * 1, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id4, 0, id5, 0 });
|
|
|
|
|
|
- GraphicsView *view = new GraphicsView(scene);
|
|
|
+ NodeId id6 = graphModel->addNode(FlowReportData().type().id);
|
|
|
+ graphModel->setNodeData(id6, NodeRole::Position, QPointF(h * 2, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case ProjectManager::OptimalIndex: {
|
|
|
+ NodeId id1 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
+ graphModel->setNodeData(id1, NodeRole::Position, QPointF(h * 0, 0));
|
|
|
|
|
|
- l->addWidget(view);
|
|
|
+ NodeId id2 = graphModel->addNode(FlowSampleData().type().id);
|
|
|
+ graphModel->setNodeData(id2, NodeRole::Position, QPointF(h * 1, 0));
|
|
|
+ graphModel->addConnection(ConnectionId { id1, 0, id2, 0 });
|
|
|
|
|
|
- QGroupBox *groupBox = new QGroupBox("Options");
|
|
|
+ NodeId id8 = graphModel->addNode(FlowSchemeData().type().id);
|
|
|
+ graphModel->setNodeData(id8, NodeRole::Position, QPointF(h * 2, 0));
|
|
|
+ graphModel->addConnection(ConnectionId { id2, 0, id8, 0 });
|
|
|
|
|
|
- QCheckBox *cb1 = new QCheckBox("Nodes are locked");
|
|
|
- QCheckBox *cb2 = new QCheckBox("Connections detachable");
|
|
|
- cb2->setChecked(true);
|
|
|
+ NodeId id5 = graphModel->addNode(FlowResultData().type().id);
|
|
|
+ graphModel->setNodeData(id5, NodeRole::Position, QPointF(h * 0, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id8, 0, id5, 0 });
|
|
|
|
|
|
- QVBoxLayout *vbl = new QVBoxLayout;
|
|
|
- vbl->addWidget(cb1);
|
|
|
- vbl->addWidget(cb2);
|
|
|
- vbl->addStretch();
|
|
|
- groupBox->setLayout(vbl);
|
|
|
+ NodeId id6 = graphModel->addNode(FlowReportData().type().id);
|
|
|
+ graphModel->setNodeData(id6, NodeRole::Position, QPointF(h * 1, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case ProjectManager::EfficiencyIndex: {
|
|
|
+ NodeId id1 = graphModel->addNode(FlowIndexData().type().id);
|
|
|
+ graphModel->setNodeData(id1, NodeRole::Position, QPointF(h * 0, 0));
|
|
|
|
|
|
- QObject::connect(cb1, &QCheckBox::stateChanged,
|
|
|
- [this](int state) { graphModel->setNodesLocked(state == Qt::Checked); });
|
|
|
+ NodeId id7 = graphModel->addNode(FlowEffiLevData().type().id);
|
|
|
+ graphModel->setNodeData(id7, NodeRole::Position, QPointF(h * 1, 0));
|
|
|
+ graphModel->addConnection(ConnectionId { id1, 0, id7, 0 });
|
|
|
|
|
|
- QObject::connect(cb2, &QCheckBox::stateChanged,
|
|
|
- [this](int state) { graphModel->setDetachPossible(state == Qt::Checked); });
|
|
|
+ NodeId id9 = graphModel->addNode(FlowEffiData().type().id);
|
|
|
+ graphModel->setNodeData(id9, NodeRole::Position, QPointF(h * 2, 0));
|
|
|
+ graphModel->addConnection(ConnectionId { id7, 0, id9, 0 });
|
|
|
|
|
|
- l->addWidget(groupBox);
|
|
|
+ NodeId id5 = graphModel->addNode(FlowResultData().type().id);
|
|
|
+ graphModel->setNodeData(id5, NodeRole::Position, QPointF(h * 0, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id9, 0, id5, 0 });
|
|
|
|
|
|
- this->setWindowTitle("Locked Nodes and Connections");
|
|
|
- this->resize(800, 600);
|
|
|
+ NodeId id6 = graphModel->addNode(FlowReportData().type().id);
|
|
|
+ graphModel->setNodeData(id6, NodeRole::Position, QPointF(h * 1, 200));
|
|
|
+ graphModel->addConnection(ConnectionId { id5, 0, id6, 0 });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
-void SchemeFlowWidget::initLayout() { }
|