/** * @brief Window manager * @author Christian Burger (christian@krikkel.de) */ #ifndef C51BA18F_0915_43B9_BD5D_129F0CDBC1CD #define C51BA18F_0915_43B9_BD5D_129F0CDBC1CD #include "Window.hpp" #include #include namespace krikkel::NCurses { class SingleUserInput; class TilingWindowManager : public Window { public: TilingWindowManager(NCursesWindow *rootWindow, std::recursive_mutex *ncursesMutex); void addWindow(Window *window); int resize(int rows, int cols) override; int refresh() override; virtual void updateLayout() = 0; void hideWindow(Window *window); void showWindow(Window *window); SingleUserInput readSingleUserInput(); protected: std::recursive_mutex *ncursesMutex; std::list stack, visibleStack; void resizeWindow(Window *window, uint16_t height, uint16_t width, uint16_t y, uint16_t x); }; } #endif /* C51BA18F_0915_43B9_BD5D_129F0CDBC1CD */