#pragma once #include #include #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 { 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 scene_; osg::observer_ptr renderer_; std::unordered_map workSpaces_; WorkSpace* current_{ nullptr }; int64_t lastTime_{ 0 }; };