4 #include <QRegularExpression>
5 #include <QGraphicsView>>
6 #include "QGVCore/QGVNode.h"
7 #include "QGVCore/QGVEdge.h"
11 DataflowInteractionRegistration DataflowInteractionRegistration::sRegistration;
24 : QGVInteraction(parent), mScene(parent)
28 connect(parent, &QGVScene::edgeContextMenu,
this, &DataflowInteraction::handleEdgeContextMenu);
49 mModuleHash[m->get_id()] = node;
50 mNodeHash[node] = m->get_id();
56 void DataflowInteraction::handleQGVSelectionChanged()
58 if (mDisableHandler)
return;
59 mDisableHandler =
true;
60 std::vector<u32> modIds;
63 QGVNode* node =
dynamic_cast<QGVNode*
>(it);
67 modIds.push_back(modId);
70 mDisableHandler =
false;
73 void DataflowInteraction::handleEdgeContextMenu(QGVEdge* edge)
75 if (!edge->headNode() || !edge->tailNode() || edge->headNode() == edge->tailNode())
78 u32 tailModuleId = mNodeHash.
value(edge->tailNode(),0);
79 u32 headModuleId = mNodeHash.
value(edge->headNode(),0);
80 if (!tailModuleId || !headModuleId || tailModuleId == headModuleId)
return;
81 mDisableHandler =
true;
83 QAction* act = menu.
addAction(
QString(
"Isolate path from mod_%1 to mod_%2 in new view").arg(tailModuleId).arg(headModuleId));
86 mDisableHandler =
false;
89 void DataflowInteraction::handleHALModuleNameChanged(Module* m)
92 mDisableHandler =
true;
93 u32 modId = m->get_id();
95 QGVNode* node = mModuleHash.
value(modId,
nullptr);
98 node->setLabel(modName);
101 mDisableHandler =
false;
104 void DataflowInteraction::handleHALSelectionChanged(
void* sender)
109 if (mDisableHandler)
return;
110 mDisableHandler =
true;
112 mScene->clearSelection();
115 QGVNode* node = mModuleHash.
value(modId,
nullptr);
118 node->setSelected(
true);
120 gv->ensureVisible(node);
123 mDisableHandler =
false;
void registerNode(QGVNode *node) override
void registerEdge(QGVEdge *scene) override
DataflowInteraction(QGVScene *parent)
DataflowInteractionRegistration()
static int isolateModuleToModulePathInNewView(u32 fromModId, u32 toModId)
void selectModule(u32 module_id, bool clear_current_selection=true, bool navigate_to_selection=true)
const std::vector< Module * > & get_modules() const
void moduleNameChanged(Module *m) const
void selectionChanged(void *sender)
QList< u32 > selectedModulesList() const
QGVInteraction * constructDataflowInteraction(QGVScene *parent)
SelectionRelay * gSelectionRelay
NetlistRelay * gNetlistRelay
void triggered(bool checked)
const T value(const Key &key) const const
QRegularExpressionMatch match(const QString &subject, int offset, QRegularExpression::MatchType matchType, QRegularExpression::MatchOptions matchOptions) const const
QString captured(int nth) const const
bool hasMatch() const const
QString fromStdString(const std::string &str)