Group nodes by app name
This commit is contained in:
parent
07e2fb4c5a
commit
621d67ebab
3 changed files with 712 additions and 144 deletions
|
|
@ -802,13 +802,13 @@ void GraphEditorWidget::onContextMenuRequested(const QPoint &pos) {
|
|||
QPointF scenePos = m_view->mapToScene(pos);
|
||||
m_lastContextMenuScenePos = scenePos;
|
||||
|
||||
bool hitNode = false;
|
||||
uint32_t hitPwNodeId = 0;
|
||||
QtNodes::NodeId hitQtNodeId = 0;
|
||||
for (auto nodeId : m_model->allNodeIds()) {
|
||||
const WarpNodeData *data = m_model->warpNodeData(nodeId);
|
||||
if (!data) {
|
||||
if (!data)
|
||||
continue;
|
||||
}
|
||||
QPointF nodePos =
|
||||
m_model->nodeData(nodeId, QtNodes::NodeRole::Position).toPointF();
|
||||
QSize nodeSize =
|
||||
|
|
@ -817,12 +817,13 @@ void GraphEditorWidget::onContextMenuRequested(const QPoint &pos) {
|
|||
if (nodeRect.contains(scenePos)) {
|
||||
hitPwNodeId = data->info.id.value;
|
||||
hitQtNodeId = nodeId;
|
||||
hitNode = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QPoint screenPos = m_view->mapToGlobal(pos);
|
||||
if (hitPwNodeId != 0) {
|
||||
if (hitNode) {
|
||||
showNodeContextMenu(screenPos, hitPwNodeId, hitQtNodeId);
|
||||
} else {
|
||||
showCanvasContextMenu(screenPos, scenePos);
|
||||
|
|
@ -1673,13 +1674,29 @@ void GraphEditorWidget::updateMeters() {
|
|||
const WarpNodeData *data = m_model->warpNodeData(nodeId);
|
||||
if (!data || !row.meter)
|
||||
continue;
|
||||
auto peak = m_client->NodeMeterPeak(data->info.id);
|
||||
if (peak.ok()) {
|
||||
float level = std::max(peak.value.peak_left, peak.value.peak_right);
|
||||
row.meter->setLevel(level);
|
||||
m_model->setNodePeakLevel(nodeId, level);
|
||||
if (level > 0.001f)
|
||||
|
||||
const AppGroupData *group = m_model->appGroupData(nodeId);
|
||||
if (group) {
|
||||
float maxLevel = 0.0f;
|
||||
for (uint32_t memberPwId : group->memberPwIds) {
|
||||
auto peak = m_client->NodeMeterPeak(warppipe::NodeId{memberPwId});
|
||||
if (peak.ok())
|
||||
maxLevel = std::max(maxLevel,
|
||||
std::max(peak.value.peak_left, peak.value.peak_right));
|
||||
}
|
||||
row.meter->setLevel(maxLevel);
|
||||
m_model->setNodePeakLevel(nodeId, maxLevel);
|
||||
if (maxLevel > 0.001f)
|
||||
anyActive = true;
|
||||
} else {
|
||||
auto peak = m_client->NodeMeterPeak(data->info.id);
|
||||
if (peak.ok()) {
|
||||
float level = std::max(peak.value.peak_left, peak.value.peak_right);
|
||||
row.meter->setLevel(level);
|
||||
m_model->setNodePeakLevel(nodeId, level);
|
||||
if (level > 0.001f)
|
||||
anyActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1720,8 +1737,16 @@ void GraphEditorWidget::rebuildNodeMeters() {
|
|||
if (!data)
|
||||
continue;
|
||||
|
||||
new_pw_ids[data->info.id.value] = true;
|
||||
m_client->EnsureNodeMeter(data->info.id);
|
||||
const AppGroupData *group = m_model->appGroupData(nodeId);
|
||||
if (group) {
|
||||
for (uint32_t memberPwId : group->memberPwIds) {
|
||||
new_pw_ids[memberPwId] = true;
|
||||
m_client->EnsureNodeMeter(warppipe::NodeId{memberPwId});
|
||||
}
|
||||
} else {
|
||||
new_pw_ids[data->info.id.value] = true;
|
||||
m_client->EnsureNodeMeter(data->info.id);
|
||||
}
|
||||
|
||||
auto *row = new QWidget();
|
||||
auto *rowLayout = new QHBoxLayout(row);
|
||||
|
|
@ -2299,8 +2324,21 @@ void GraphEditorWidget::updateNodeDetailsPanel(QtNodes::NodeId nodeId) {
|
|||
QString::fromStdString(info.media_role));
|
||||
}
|
||||
|
||||
addField(QStringLiteral("NODE ID"),
|
||||
QString::number(info.id.value));
|
||||
const AppGroupData *groupData = m_model->appGroupData(nodeId);
|
||||
if (groupData) {
|
||||
addField(QStringLiteral("STREAMS"),
|
||||
QString::number(groupData->memberPwIds.size()));
|
||||
QString memberIds;
|
||||
for (uint32_t pwId : groupData->memberPwIds) {
|
||||
if (!memberIds.isEmpty())
|
||||
memberIds += QStringLiteral(", ");
|
||||
memberIds += QString::number(pwId);
|
||||
}
|
||||
addField(QStringLiteral("MEMBER NODE IDS"), memberIds);
|
||||
} else {
|
||||
addField(QStringLiteral("NODE ID"),
|
||||
QString::number(info.id.value));
|
||||
}
|
||||
|
||||
if (!data->inputPorts.empty()) {
|
||||
layout->addSpacing(8);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue