AronaSlate/Source/Arona/UI/Widget/WindowManager.h
2024-01-25 11:21:15 +08:00

43 lines
1.1 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "Singleton/Singleton.h"
class IChildWindow;
class FMainWindow;
class SWidget;
class FPluginHost;
class SConstraintCanvas;
class SWindow;
class SChildWindow;
struct FWindowInfo
{
FVector2D Pos;
FVector2D Size;
};
class FWindowManager : public TSingleton<FWindowManager>
{
public:
virtual void Init() override;
virtual void Release() override;
FMainWindow* GetMainWindow() const { return MainWindow; }
void CreateChildWindow(FVector2D Size, FString Title, TSharedRef<IChildWindow> Content);
void FrontChildWindow(TSharedPtr<SChildWindow> ChildWindow);
void OpenPluginEditor(FPluginHost* PluginHost);
void ClosePluginEditor(FPluginHost* PluginHost);
void TogglePluginEditor(FPluginHost* PluginHost);
TSharedPtr<SWindow> FindPluginEditor(FPluginHost* PluginHost);
private:
void OnPluginWindowClosed(const TSharedRef<SWindow>& Window);
bool HasPluginEditor(TSharedPtr<SWindow> Window);
FMainWindow* MainWindow;
TMap<TSharedPtr<SWindow>, FPluginHost*> PluginEditorWindows;
TMap<FPluginHost*, FWindowInfo> PluginEditorWindowInfos;
};