More tests
This commit is contained in:
parent
16fc02837a
commit
69d9a9e3f1
5 changed files with 742 additions and 27 deletions
|
|
@ -647,6 +647,11 @@ GraphEditorWidget::GraphEditorWidget(warppipe::Client *client,
|
|||
void GraphEditorWidget::onRefreshTimer() {
|
||||
m_model->refreshFromClient();
|
||||
|
||||
if (m_scene &&
|
||||
m_scene->itemIndexMethod() != QGraphicsScene::BspTreeIndex) {
|
||||
m_scene->setItemIndexMethod(QGraphicsScene::BspTreeIndex);
|
||||
}
|
||||
|
||||
if (!m_graphReady && m_model->allNodeIds().size() > 0) {
|
||||
m_graphReady = true;
|
||||
Q_EMIT graphReady();
|
||||
|
|
@ -688,6 +693,45 @@ int GraphEditorWidget::linkCount() const {
|
|||
return count / 2;
|
||||
}
|
||||
|
||||
QAction *GraphEditorWidget::execMenuAction(QMenu &menu,
|
||||
const QPoint &screenPos) {
|
||||
return menu.exec(screenPos);
|
||||
}
|
||||
|
||||
QString GraphEditorWidget::promptTextInput(const QString &title,
|
||||
const QString &label,
|
||||
bool *ok) {
|
||||
return QInputDialog::getText(this,
|
||||
title,
|
||||
label,
|
||||
QLineEdit::Normal,
|
||||
QString(),
|
||||
ok);
|
||||
}
|
||||
|
||||
QString GraphEditorWidget::chooseSaveFilePath(const QString &title,
|
||||
const QString &initialDir,
|
||||
const QString &filter) {
|
||||
return QFileDialog::getSaveFileName(this,
|
||||
title,
|
||||
initialDir,
|
||||
filter);
|
||||
}
|
||||
|
||||
QString GraphEditorWidget::chooseOpenFilePath(const QString &title,
|
||||
const QString &initialDir,
|
||||
const QString &filter) {
|
||||
return QFileDialog::getOpenFileName(this,
|
||||
title,
|
||||
initialDir,
|
||||
filter);
|
||||
}
|
||||
|
||||
void GraphEditorWidget::showWarningDialog(const QString &title,
|
||||
const QString &message) {
|
||||
QMessageBox::warning(this, title, message);
|
||||
}
|
||||
|
||||
void GraphEditorWidget::setDebugScreenshotDir(const QString &dir) {
|
||||
m_debugScreenshotDir = dir;
|
||||
QDir d(dir);
|
||||
|
|
@ -830,7 +874,7 @@ void GraphEditorWidget::showCanvasContextMenu(const QPoint &screenPos,
|
|||
QAction *savePresetAction = menu.addAction(QStringLiteral("Save Preset..."));
|
||||
QAction *loadPresetAction = menu.addAction(QStringLiteral("Load Preset..."));
|
||||
|
||||
QAction *chosen = menu.exec(screenPos);
|
||||
QAction *chosen = execMenuAction(menu, screenPos);
|
||||
if (chosen == createSink) {
|
||||
createVirtualNode(true, scenePos);
|
||||
} else if (chosen == createSource) {
|
||||
|
|
@ -922,7 +966,7 @@ void GraphEditorWidget::showNodeContextMenu(const QPoint &screenPos,
|
|||
QStringLiteral(
|
||||
"application/warppipe-virtual-graph"))));
|
||||
|
||||
QAction *chosen = menu.exec(screenPos);
|
||||
QAction *chosen = execMenuAction(menu, screenPos);
|
||||
if (!chosen) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -949,9 +993,9 @@ void GraphEditorWidget::createVirtualNode(bool isSink,
|
|||
const QPointF &scenePos) {
|
||||
if (isSink) {
|
||||
bool ok = false;
|
||||
QString name = QInputDialog::getText(
|
||||
this, QStringLiteral("Create Virtual Sink"),
|
||||
QStringLiteral("Node name:"), QLineEdit::Normal, QString(), &ok);
|
||||
QString name = promptTextInput(QStringLiteral("Create Virtual Sink"),
|
||||
QStringLiteral("Node name:"),
|
||||
&ok);
|
||||
if (!ok || name.trimmed().isEmpty())
|
||||
return;
|
||||
|
||||
|
|
@ -959,8 +1003,8 @@ void GraphEditorWidget::createVirtualNode(bool isSink,
|
|||
m_model->setPendingPosition(nodeName, scenePos);
|
||||
auto result = m_client->CreateVirtualSink(nodeName);
|
||||
if (!result.status.ok()) {
|
||||
QMessageBox::warning(this, QStringLiteral("Error"),
|
||||
QString::fromStdString(result.status.message));
|
||||
showWarningDialog(QStringLiteral("Error"),
|
||||
QString::fromStdString(result.status.message));
|
||||
return;
|
||||
}
|
||||
m_model->refreshFromClient();
|
||||
|
|
@ -1034,8 +1078,8 @@ void GraphEditorWidget::createVirtualNode(bool isSink,
|
|||
|
||||
QString name = nameEdit->text().trimmed();
|
||||
if (name.isEmpty()) {
|
||||
QMessageBox::warning(this, QStringLiteral("Error"),
|
||||
QStringLiteral("Name cannot be empty."));
|
||||
showWarningDialog(QStringLiteral("Error"),
|
||||
QStringLiteral("Name cannot be empty."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1050,8 +1094,8 @@ void GraphEditorWidget::createVirtualNode(bool isSink,
|
|||
|
||||
auto result = m_client->CreateVirtualSource(nodeName, opts);
|
||||
if (!result.status.ok()) {
|
||||
QMessageBox::warning(this, QStringLiteral("Error"),
|
||||
QString::fromStdString(result.status.message));
|
||||
showWarningDialog(QStringLiteral("Error"),
|
||||
QString::fromStdString(result.status.message));
|
||||
return;
|
||||
}
|
||||
m_model->refreshFromClient();
|
||||
|
|
@ -1415,9 +1459,9 @@ void GraphEditorWidget::savePreset() {
|
|||
if (!dir.exists())
|
||||
dir.mkpath(".");
|
||||
|
||||
QString path = QFileDialog::getSaveFileName(
|
||||
this, QStringLiteral("Save Preset"), m_presetDir,
|
||||
QStringLiteral("JSON files (*.json)"));
|
||||
QString path = chooseSaveFilePath(QStringLiteral("Save Preset"),
|
||||
m_presetDir,
|
||||
QStringLiteral("JSON files (*.json)"));
|
||||
if (path.isEmpty())
|
||||
return;
|
||||
if (!path.endsWith(QStringLiteral(".json"), Qt::CaseInsensitive))
|
||||
|
|
@ -1428,15 +1472,15 @@ void GraphEditorWidget::savePreset() {
|
|||
mw->statusBar()->showMessage(
|
||||
QStringLiteral("Preset saved: ") + QFileInfo(path).fileName(), 4000);
|
||||
} else {
|
||||
QMessageBox::warning(this, QStringLiteral("Error"),
|
||||
QStringLiteral("Failed to save preset."));
|
||||
showWarningDialog(QStringLiteral("Error"),
|
||||
QStringLiteral("Failed to save preset."));
|
||||
}
|
||||
}
|
||||
|
||||
void GraphEditorWidget::loadPreset() {
|
||||
QString path = QFileDialog::getOpenFileName(
|
||||
this, QStringLiteral("Load Preset"), m_presetDir,
|
||||
QStringLiteral("JSON files (*.json)"));
|
||||
QString path = chooseOpenFilePath(QStringLiteral("Load Preset"),
|
||||
m_presetDir,
|
||||
QStringLiteral("JSON files (*.json)"));
|
||||
if (path.isEmpty())
|
||||
return;
|
||||
|
||||
|
|
@ -1445,8 +1489,8 @@ void GraphEditorWidget::loadPreset() {
|
|||
mw->statusBar()->showMessage(
|
||||
QStringLiteral("Preset loaded: ") + QFileInfo(path).fileName(), 4000);
|
||||
} else {
|
||||
QMessageBox::warning(this, QStringLiteral("Error"),
|
||||
QStringLiteral("Failed to load preset."));
|
||||
showWarningDialog(QStringLiteral("Error"),
|
||||
QStringLiteral("Failed to load preset."));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ class QSplitter;
|
|||
class QTabWidget;
|
||||
class QSlider;
|
||||
class QTimer;
|
||||
class QAction;
|
||||
class QMenu;
|
||||
class DeleteVirtualNodeCommand;
|
||||
|
||||
enum class ConnectionStyleType : uint8_t {
|
||||
|
|
@ -59,6 +61,20 @@ private slots:
|
|||
void onContextMenuRequested(const QPoint &pos);
|
||||
void scheduleSaveLayout();
|
||||
|
||||
protected:
|
||||
virtual QAction *execMenuAction(QMenu &menu, const QPoint &screenPos);
|
||||
virtual QString promptTextInput(const QString &title,
|
||||
const QString &label,
|
||||
bool *ok);
|
||||
virtual QString chooseSaveFilePath(const QString &title,
|
||||
const QString &initialDir,
|
||||
const QString &filter);
|
||||
virtual QString chooseOpenFilePath(const QString &title,
|
||||
const QString &initialDir,
|
||||
const QString &filter);
|
||||
virtual void showWarningDialog(const QString &title,
|
||||
const QString &message);
|
||||
|
||||
private:
|
||||
void showCanvasContextMenu(const QPoint &screenPos, const QPointF &scenePos);
|
||||
void showNodeContextMenu(const QPoint &screenPos, uint32_t pwNodeId,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@
|
|||
#include <QScrollBar>
|
||||
#include <QWheelEvent>
|
||||
|
||||
#include <QtNodes/internal/ConnectionGraphicsObject.hpp>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
class ZoomGraphicsView : public QtNodes::GraphicsView {
|
||||
|
|
@ -41,8 +39,7 @@ public:
|
|||
auto cacheMode = highZoom ? QGraphicsItem::DeviceCoordinateCache
|
||||
: QGraphicsItem::NoCache;
|
||||
for (QGraphicsItem *item : scene()->items()) {
|
||||
if (item->type() == QGraphicsProxyWidget::Type ||
|
||||
item->type() == QtNodes::ConnectionGraphicsObject::Type)
|
||||
if (item->type() == QGraphicsProxyWidget::Type)
|
||||
item->setCacheMode(cacheMode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue