#pragma once #include #include "Widget.h" #include "Common.h" enum class Anchor { Top = BIT(0), Bottom = BIT(1), Left = BIT(2), Right = BIT(3) }; DEFINE_ENUM_FLAGS(Anchor); class Window { public: Window() = default; Window(std::unique_ptr&& mainWidget, int32_t monitor); Window(Window&& window) noexcept = default; Window& operator=(Window&& other) noexcept = default; ~Window(); void Run(int argc, char** argv); void Close(); void SetAnchor(Anchor anchor) { m_Anchor = anchor; } void SetMargin(Anchor anchor, int32_t margin); void SetExclusive(bool exclusive) { m_Exclusive = exclusive; } private: void CreateAndAddWidget(Widget* widget, GtkWidget* parentWidget); GtkWindow* m_Window; GtkApplication* m_App = nullptr; std::unique_ptr m_MainWidget; Anchor m_Anchor; bool m_Exclusive = true; int32_t m_Monitor; };