aboutsummaryrefslogtreecommitdiff
path: root/include/gui/PageStack.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-08-22 21:44:06 +0200
committerdec05eba <dec05eba@protonmail.com>2024-08-23 18:53:19 +0200
commit54c60d9a18d103011a12939c5029dd35a8e9e200 (patch)
treefefba1d63a13df6c135a6b1f5e8640b12a9c0ff5 /include/gui/PageStack.hpp
parentba007c2b69dca6813c86115b2c1834de45c886be (diff)
Start on file chooser, page stack
Diffstat (limited to 'include/gui/PageStack.hpp')
-rw-r--r--include/gui/PageStack.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/gui/PageStack.hpp b/include/gui/PageStack.hpp
new file mode 100644
index 0000000..cf42b7d
--- /dev/null
+++ b/include/gui/PageStack.hpp
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "Widget.hpp"
+#include "Page.hpp"
+#include "../SafeVector.hpp"
+#include <memory>
+
+namespace gsr {
+ class PageStack : public Widget {
+ public:
+ PageStack();
+ PageStack(const PageStack&) = delete;
+ PageStack& operator=(const PageStack&) = delete;
+
+ bool on_event(mgl::Event &event, mgl::Window &window, mgl::vec2f offset) override;
+ void draw(mgl::Window &window, mgl::vec2f offset) override;
+
+ mgl::vec2f get_size() override;
+
+ void push(std::unique_ptr<Page> page);
+ // This can be used even if the stack is empty
+ void pop();
+ // This can be used even if the stack is empty
+ Page* top();
+ bool empty() const;
+ private:
+ SafeVector<std::unique_ptr<Page>> widget_stack;
+ };
+} \ No newline at end of file