From 60a4dc51a7fdefee417c6e1bcf1a8824a2619840 Mon Sep 17 00:00:00 2001 From: hippoz <10706925-hippoz@users.noreply.gitlab.com> Date: Sun, 3 Apr 2022 13:25:09 +0300 Subject: [PATCH] Move logic from Layout into DocumentLayout --- meson.build | 2 +- src/{Layout.cpp => DocumentLayout.cpp} | 8 +++----- src/DocumentLayout.hpp | 20 ++++++++++++++++++++ src/Layout.hpp | 10 ++++------ src/main.cpp | 3 ++- 5 files changed, 30 insertions(+), 13 deletions(-) rename src/{Layout.cpp => DocumentLayout.cpp} (92%) create mode 100644 src/DocumentLayout.hpp diff --git a/meson.build b/meson.build index 7ff3704..a796c6e 100644 --- a/meson.build +++ b/meson.build @@ -11,7 +11,7 @@ executable( './src/Window.cpp', './src/Widget.cpp', './src/Button.cpp', - './src/Layout.cpp', + './src/DocumentLayout.cpp', './src/Label.cpp', './src/main.cpp', dependencies : [cairomm_dep, xlib_dep, pangocairo_dep] diff --git a/src/Layout.cpp b/src/DocumentLayout.cpp similarity index 92% rename from src/Layout.cpp rename to src/DocumentLayout.cpp index 4996a29..dcedf6f 100644 --- a/src/Layout.cpp +++ b/src/DocumentLayout.cpp @@ -1,12 +1,10 @@ -#include -#include "Layout.hpp" +#include "DocumentLayout.hpp" #include "Point.hpp" -#include "Box.hpp" #include "Widget.hpp" namespace Raven { -void Layout::run() { +void DocumentLayout::run() { if (!m_target) return; @@ -29,4 +27,4 @@ void Layout::run() { } } -} \ No newline at end of file +} diff --git a/src/DocumentLayout.hpp b/src/DocumentLayout.hpp new file mode 100644 index 0000000..3c60f5c --- /dev/null +++ b/src/DocumentLayout.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "Layout.hpp" + +namespace Raven { + +class DocumentLayout : public Layout { +private: + double m_margin { 0.0 }; +public: + DocumentLayout() + : Layout() {} + + void run(); + + double get_margin() { return m_margin; } + void set_margin(double margin) { m_margin = margin; run(); } +}; + +} diff --git a/src/Layout.hpp b/src/Layout.hpp index cfba785..30f69e9 100644 --- a/src/Layout.hpp +++ b/src/Layout.hpp @@ -5,19 +5,17 @@ namespace Raven { class Layout { -private: - double m_margin { 0.0 }; +protected: Widget *m_target { nullptr }; public: Layout() {} - void run(); - - double get_margin() { return m_margin; } - void set_margin(double margin) { m_margin = margin; run(); } + virtual void run() {}; void bind_to(Widget *target) { m_target = target; } Widget *get_target() { return m_target; } + + virtual ~Layout() {} }; } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index f1cf0ef..206cac8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,9 +5,10 @@ #include "Box.hpp" #include "Label.hpp" #include "Layout.hpp" +#include "src/DocumentLayout.hpp" int main() { - Raven::Layout main_layout {}; + Raven::DocumentLayout main_layout {}; Raven::Widget new_row { Raven::ControlWidgetType::NewRow }; Raven::Window window {};