Add custom routing
This commit is contained in:
parent
7d4804a7f8
commit
978c8c10e3
7 changed files with 182 additions and 0 deletions
|
|
@ -1,12 +1,14 @@
|
|||
#include "AudioLevelMeter.h"
|
||||
#include "GraphEditorWidget.h"
|
||||
#include "PresetManager.h"
|
||||
#include "SquareConnectionPainter.h"
|
||||
#include "VolumeWidgets.h"
|
||||
#include "WarpGraphModel.h"
|
||||
|
||||
#include <QtNodes/BasicGraphicsScene>
|
||||
#include <QtNodes/ConnectionStyle>
|
||||
#include <QtNodes/GraphicsView>
|
||||
#include <QtNodes/internal/DefaultConnectionPainter.hpp>
|
||||
#include <QtNodes/internal/NodeGraphicsObject.hpp>
|
||||
#include <QtNodes/internal/ConnectionGraphicsObject.hpp>
|
||||
#include <QtNodes/internal/UndoCommands.hpp>
|
||||
|
|
@ -641,6 +643,15 @@ void GraphEditorWidget::showCanvasContextMenu(const QPoint &screenPos,
|
|||
autoArrange->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
|
||||
QAction *refreshGraph = menu.addAction(QStringLiteral("Refresh Graph"));
|
||||
refreshGraph->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_R));
|
||||
menu.addSeparator();
|
||||
auto *connStyleMenu = menu.addMenu(QStringLiteral("Connection Style"));
|
||||
auto *styleBezier = connStyleMenu->addAction(QStringLiteral("Bezier Curves"));
|
||||
styleBezier->setCheckable(true);
|
||||
styleBezier->setChecked(m_connectionStyle == ConnectionStyleType::kBezier);
|
||||
auto *styleSquare = connStyleMenu->addAction(QStringLiteral("Square Routing"));
|
||||
styleSquare->setCheckable(true);
|
||||
styleSquare->setChecked(m_connectionStyle == ConnectionStyleType::kSquare);
|
||||
|
||||
menu.addSeparator();
|
||||
QAction *saveLayoutAs = menu.addAction(QStringLiteral("Save Layout As..."));
|
||||
QAction *resetLayout = menu.addAction(QStringLiteral("Reset Layout"));
|
||||
|
|
@ -683,6 +694,10 @@ void GraphEditorWidget::showCanvasContextMenu(const QPoint &screenPos,
|
|||
m_model->autoArrange();
|
||||
m_view->zoomFitAll();
|
||||
saveLayoutWithViewState();
|
||||
} else if (chosen == styleBezier) {
|
||||
setConnectionStyle(ConnectionStyleType::kBezier);
|
||||
} else if (chosen == styleSquare) {
|
||||
setConnectionStyle(ConnectionStyleType::kSquare);
|
||||
} else if (chosen == savePresetAction) {
|
||||
savePreset();
|
||||
} else if (chosen == loadPresetAction) {
|
||||
|
|
@ -1103,6 +1118,7 @@ void GraphEditorWidget::saveLayoutWithViewState() {
|
|||
QList<int> sizes = m_splitter->sizes();
|
||||
vs.splitterGraph = sizes.value(0, 1200);
|
||||
vs.splitterSidebar = sizes.value(1, 320);
|
||||
vs.connectionStyle = static_cast<int>(m_connectionStyle);
|
||||
vs.valid = true;
|
||||
m_model->saveLayout(m_layoutPath, vs);
|
||||
}
|
||||
|
|
@ -1115,6 +1131,9 @@ void GraphEditorWidget::restoreViewState() {
|
|||
if (vs.splitterGraph > 0 || vs.splitterSidebar > 0) {
|
||||
m_splitter->setSizes({vs.splitterGraph, vs.splitterSidebar});
|
||||
}
|
||||
if (vs.connectionStyle == static_cast<int>(ConnectionStyleType::kSquare)) {
|
||||
setConnectionStyle(ConnectionStyleType::kSquare);
|
||||
}
|
||||
} else {
|
||||
m_view->zoomFitAll();
|
||||
}
|
||||
|
|
@ -1540,6 +1559,25 @@ void GraphEditorWidget::rebuildRulesList() {
|
|||
static_cast<QVBoxLayout *>(layout)->addStretch();
|
||||
}
|
||||
|
||||
void GraphEditorWidget::setConnectionStyle(ConnectionStyleType style) {
|
||||
if (style == m_connectionStyle)
|
||||
return;
|
||||
m_connectionStyle = style;
|
||||
|
||||
if (style == ConnectionStyleType::kSquare) {
|
||||
m_scene->setConnectionPainter(std::make_unique<SquareConnectionPainter>());
|
||||
} else {
|
||||
m_scene->setConnectionPainter(
|
||||
std::make_unique<QtNodes::DefaultConnectionPainter>());
|
||||
}
|
||||
|
||||
for (auto *item : m_scene->items()) {
|
||||
item->update();
|
||||
}
|
||||
|
||||
scheduleSaveLayout();
|
||||
}
|
||||
|
||||
void GraphEditorWidget::showAddRuleDialog(const std::string &prefillApp,
|
||||
const std::string &prefillBin,
|
||||
const std::string &prefillRole,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue