1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
// Copyright 2015 - 2025, GIBIS-UNIFESP and the wiRedPanda contributors
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "graphicsview.h"
#include "scene.h"
#include <QFileInfo>
#include <QTemporaryFile>
#include <QUndoStack>
class GraphicsView;
class Simulation;
/*!
* @class WorkSpace
* @brief A widget containing a complete circuit editing environment
*
* WorkSpace serves as a container for all components needed for circuit editing,
* including the GraphicsView for visualization and interaction, Scene for element
* management, and Simulation for circuit simulation. It also handles file operations
* like loading, saving, and autosaving.
*/
class WorkSpace : public QWidget
{
Q_OBJECT
public:
explicit WorkSpace(QWidget *parent = nullptr);
GraphicsView *view();
QFileInfo fileInfo();
QString dolphinFileName();
Scene *scene();
Simulation *simulation();
void load(QDataStream &stream, QVersionNumber number);
void load(const QString &fileName);
void save(QDataStream &stream);
void save(const QString &fileName);
void setAutosaveFile();
void setDolphinFileName(const QString &fileName);
int lastId() const;
void setLastId(int newLastId);
signals:
void fileChanged(const QFileInfo &fileInfo);
private:
void autosave();
void setAutosaveFileName();
GraphicsView m_view;
QFileInfo m_fileInfo;
QString m_dolphinFileName;
QTemporaryFile m_autosaveFile;
Scene m_scene;
int m_lastId = 0;
};
|