HMI/include/document.h

62 lines
1.3 KiB
C
Raw Normal View History

2026-07-08 16:57:46 +08:00
#ifndef DOCUMENT_H
#define DOCUMENT_H
#include <QObject>
#include <QJsonObject>
class DesignerScene;
class QGraphicsItem;
class QUndoCommand;
class QUndoStack;
class Document : public QObject
{
Q_OBJECT
Q_PROPERTY(bool modified READ isModified NOTIFY modifiedChanged)
public:
explicit Document(QObject *parent = nullptr);
~Document();
// Serialization
bool save();
bool saveAs(const QString &filePath);
bool load(const QString &filePath);
// State
bool isModified() const;
QString filePath() const;
// Unified command entry point
void execute(QUndoCommand *cmd);
// Accessors (read-only, no ownership transfer)
DesignerScene *scene() const;
QUndoStack *undoStack() const;
// Reset to empty document
void clear();
// Called by selectors to mark dirty for non-undo operations
// (move, scale, rotate, edit-shape)
void markDirty();
signals:
void modifiedChanged(bool modified);
void filePathChanged(const QString &filePath);
void saved();
void loaded();
private:
void setModified(bool modified);
void setupNewScene();
DesignerScene *m_pScene;
QUndoStack *m_pUndoStack;
bool m_bModified;
int m_nSavedIndex;
QString m_sFilePath;
};
#endif // DOCUMENT_H