4 #include <QRegularExpression>
5 #include <QGraphicsView>>
6 #include "QGVCore/QGVNode.h"
7 #include "QGVCore/QGVEdge.h"
11 ClockTreeExtractorInteractionRegistration ClockTreeExtractorInteractionRegistration::sRegistration;
24 : QGVInteraction(parent), mScene(parent)
39 if (node->getShape() ==
"circle")
42 bool assigned =
false;
45 if (n->get_name() == node->label().trimmed().toStdString())
47 mNetHash[n->get_id()] = node;
48 mGlobalInputHash[node] = n->get_id();
54 log_warning(
"dot_viewer",
"Cannot assign circle with label='{}' to global input.", node->label().toStdString());
57 u32 gateId = node->label().trimmed().toInt(&ok);
60 log_warning(
"dot_viewer",
"Cannot parse gate ID from string '{}'.", node->label().toStdString());
67 log_warning(
"dot_viewer",
"Gate with ID={} not found in netlist.", gateId);
71 mGateHash[gateId] = node;
72 mNodeHash[node] = gateId;
75 void ClockTreeExtractorInteraction::handleQGVSelectionChanged()
77 if (mDisableHandler)
return;
78 mDisableHandler =
true;
79 std::vector<u32> gatIds;
80 std::vector<u32> netIds;
83 QGVNode* node =
dynamic_cast<QGVNode*
>(it);
85 if (node->getShape() ==
"circle")
87 u32 netId = mGlobalInputHash.
value(node,0);
88 if (netId) netIds.push_back(netId);
93 if (gatId) gatIds.push_back(gatId);
99 mDisableHandler =
false;
102 void ClockTreeExtractorInteraction::handleHALSelectionChanged(
void* sender)
107 if (mDisableHandler)
return;
108 mDisableHandler =
true;
110 mScene->clearSelection();
113 QGVNode* node = mGateHash.
value(gatId,
nullptr);
116 node->setSelected(
true);
118 gv->ensureVisible(node);
124 QGVNode* node = mNetHash.
value(netId,
nullptr);
127 node->setSelected(
true);
129 gv->ensureVisible(node);
132 mDisableHandler =
false;
void selectNet(u32 netId, bool clear_current_selection=true, bool navigate_to_selection=true)
void selectGate(u32 gate_id, bool clear_current_selection=true, bool navigate_to_selection=true)
const std::vector< Net * > & get_global_input_nets() const
Gate * get_gate_by_id(const u32 gate_id) const
void selectionChanged(void *sender)
QList< u32 > selectedNetsList() const
QList< u32 > selectedGatesList() const
#define log_warning(channel,...)
QGVInteraction * constructClockTreeExtractorInteraction(QGVScene *parent)
SelectionRelay * gSelectionRelay
const T value(const Key &key) const const