Skip to content

Commit

Permalink
Using modified signal in the calculator example
Browse files Browse the repository at this point in the history
  • Loading branch information
zmoth authored and paceholder committed Mar 29, 2024
1 parent b320546 commit a573c05
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
15 changes: 13 additions & 2 deletions examples/calculator/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,12 @@ int main(int argc, char *argv[])

auto menuBar = new QMenuBar();
QMenu *menu = menuBar->addMenu("File");

auto saveAction = menu->addAction("Save Scene");
saveAction->setShortcut(QKeySequence::Save);

auto loadAction = menu->addAction("Load Scene");
loadAction->setShortcut(QKeySequence::Open);

QVBoxLayout *l = new QVBoxLayout(&mainWidget);

Expand All @@ -92,13 +96,20 @@ int main(int argc, char *argv[])
l->setContentsMargins(0, 0, 0, 0);
l->setSpacing(0);

QObject::connect(saveAction, &QAction::triggered, scene, &DataFlowGraphicsScene::save);
QObject::connect(saveAction, &QAction::triggered, scene, [scene, &mainWidget]() {
if (scene->save())
mainWidget.setWindowModified(false);
});

QObject::connect(loadAction, &QAction::triggered, scene, &DataFlowGraphicsScene::load);

QObject::connect(scene, &DataFlowGraphicsScene::sceneLoaded, view, &GraphicsView::centerScene);

mainWidget.setWindowTitle("Data Flow: simplest calculator");
QObject::connect(scene, &DataFlowGraphicsScene::modified, &mainWidget, [&mainWidget]() {
mainWidget.setWindowModified(true);
});

mainWidget.setWindowTitle("[*]Data Flow: simplest calculator");
mainWidget.resize(800, 600);
// Center window.
mainWidget.move(QApplication::primaryScreen()->availableGeometry().center()
Expand Down
4 changes: 2 additions & 2 deletions include/QtNodes/internal/DataFlowGraphicsScene.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ class NODE_EDITOR_PUBLIC DataFlowGraphicsScene : public BasicGraphicsScene
QMenu *createSceneMenu(QPointF const scenePos) override;

public Q_SLOTS:
void save() const;
bool save() const;

void load();
bool load();

Q_SIGNALS:
void sceneLoaded();
Expand Down
12 changes: 8 additions & 4 deletions src/DataFlowGraphicsScene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ QMenu *DataFlowGraphicsScene::createSceneMenu(QPointF const scenePos)
return modelMenu;
}

void DataFlowGraphicsScene::save() const
bool DataFlowGraphicsScene::save() const
{
QString fileName = QFileDialog::getSaveFileName(nullptr,
tr("Open Flow Scene"),
Expand All @@ -158,24 +158,26 @@ void DataFlowGraphicsScene::save() const
QFile file(fileName);
if (file.open(QIODevice::WriteOnly)) {
file.write(QJsonDocument(_graphModel.save()).toJson());
return true;
}
}
return false;
}

void DataFlowGraphicsScene::load()
bool DataFlowGraphicsScene::load()
{
QString fileName = QFileDialog::getOpenFileName(nullptr,
tr("Open Flow Scene"),
QDir::homePath(),
tr("Flow Scene Files (*.flow)"));

if (!QFileInfo::exists(fileName))
return;
return false;

QFile file(fileName);

if (!file.open(QIODevice::ReadOnly))
return;
return false;

clearScene();

Expand All @@ -184,6 +186,8 @@ void DataFlowGraphicsScene::load()
_graphModel.load(QJsonDocument::fromJson(wholeFile).object());

Q_EMIT sceneLoaded();

return true;
}

} // namespace QtNodes

0 comments on commit a573c05

Please sign in to comment.