DYTSrouce/src/workspace/WorkSpaceManager.h
2025-01-18 22:36:28 +08:00

49 lines
1.1 KiB
C++

#pragma once
#include <unordered_map>
#include <QObject>
#include "app/Singleton.h"
#include "scene/OEScene.h"
#include "viewer/OSGRenderer.h"
#include "ui/chartPlot/DYTChart.h"
#include "ui/Table/targetlistwgt.h"
class WorkSpace;
class WorkSpaceManager : public QObject, public Singleton<WorkSpaceManager> {
Q_OBJECT
public:
explicit WorkSpaceManager(QObject* parent = nullptr);
~WorkSpaceManager();
void OnDestory();
WorkSpace* LoadDefaultWorkspace(class OEScene* secen);
void SaveDefaultWorkspace();
bool Contains(const QString& name) const;
bool Remove(const QString& name);
WorkSpace* LoadDyt(const QString& dyt);
WorkSpace* GetOrCreate(const QString& path, const QString& name);
void SetCurrent(WorkSpace* workspace);
WorkSpace* GetCurrent() const { return current_; }
void OnFrame();
void OnRendererLoaded(OSGRenderer* renderer);
signals:
void WorkSpaceChanged(WorkSpace*);
private:
QString GetDefaultWorkSpaceName();
private:
osg::ref_ptr<class OEScene> scene_;
osg::observer_ptr<OSGRenderer> renderer_;
std::unordered_map<QString, WorkSpace*> workSpaces_;
WorkSpace* current_{ nullptr };
int64_t lastTime_{ 0 };
};