Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
save_handler.h
1#pragma once
2
3#include <QDir>
4#include <QString>
5#include <QWidget>
6
7#include "node_info.h"
8#include "result.h"
9#include "save_info.h"
10
11class QGraphicsItem;
12class Canvas;
13
17class SaveHandler : public QObject
18{
19 Q_OBJECT
20public:
26 SaveHandler(QWidget* parent);
27
28 VoidResult saveProject(SaveInfo& project, bool override = false);
29 VoidResult saveProjectAs(SaveInfo& project);
30
31 VoidResult loadProject();
32 Result<SaveInfo> loadProject(const QString& fileToLoad);
33 Result<SaveInfo> loadProjectManifest(const QString& manifestPath);
34
40 QString lastDir() const;
41
47 void setLastDir(const QString& dir);
48
52 void newFileCreated();
53
57 enum class Function
58 {
59 SAVE,
60 LOAD,
61 };
62
63signals:
69 void fileLoaded(const QString& file, const SaveInfo& info, const QString& error, bool fromTemplate);
70
76 void fileSaved(const QString& file);
77
78private:
79 QString mLastDir;
80 QString mCurrentFile;
81
82 QWidget* mParentWidget;
83
90 QString openAtCenter(Function save);
91
97 void storeFilename(const QString& fileName);
98
99 QString sanitizeFileName(QString name) const;
100
101 VoidResult writeJsonFile(const QString& path, const QJsonObject& object);
102 VoidResult saveProjectInternal(const SaveInfo& project);
103 VoidResult saveManifest(const SaveInfo& project);
104
105 Result<QString> saveNodeTree(const SaveInfo& project, const NodeSaveInfo& node, const QString& folder);
106 Result<QString> saveFlow(const QDir& root, const QString& nodeFolder, const FlowSaveInfo& task);
107 Result<QString> savePipeline(const SaveInfo& project, const FlowSaveInfo& task);
108 Result<QString> saveTypes(const QDir& root);
109 Result<QString> saveMissionParameters(const QDir& root, const QVector<maki::MissionParameter>& parameters);
110
111 VoidResult loadTypes(const QString& projectRoot, const QJsonObject& manifestJson);
112 VoidResult loadMissionParameters(const QString& projectRoot, const QJsonObject& manifestJson, SaveInfo& project);
113 Result<std::shared_ptr<NodeSaveInfo>> loadNodeTree(const QString& projectRoot, const QString& nodeFile);
114};
The Canvas class represents the main drawing area for nodes and transitions.
Definition canvas.h:29
Represents the save information for a flow.
Definition flow_info.h:15
Represents a node that can be saved and loaded.
Definition node_info.h:17
QWidget * mParentWidget
Current file being edited.
Definition save_handler.h:82
QString lastDir() const
Gets the last directory used for saving or loading files.
Definition save_handler.cpp:150
void fileLoaded(const QString &file, const SaveInfo &info, const QString &error, bool fromTemplate)
Emitted when a file is loaded.
void fileSaved(const QString &file)
Emitted when a file is saved.
void storeFilename(const QString &fileName)
Stores the filename and updates the last directory.
Definition save_handler.cpp:163
QString mCurrentFile
Last directory used for saving or loading files.
Definition save_handler.h:80
QString openAtCenter(Function save)
Parent widget.
Definition save_handler.cpp:174
SaveHandler(QWidget *parent)
Constructs a new SaveHandler object.
Definition save_handler.cpp:137
void setLastDir(const QString &dir)
Sets the last directory used for saving or loading files.
Definition save_handler.cpp:155
Function
Enumeration containing the accepted functionalities of the SaveHandler.
Definition save_handler.h:58
void newFileCreated()
Handles a new file being created.
Definition save_handler.cpp:145
Represents a save information object that implements IDocument.
Definition save_info.h:25