/** * @brief Window manager * @author Christian Burger (christian@krikkel.de) */ #ifndef C51BA18F_0915_43B9_BD5D_129F0CDBC1CD #define C51BA18F_0915_43B9_BD5D_129F0CDBC1CD #include #include #include namespace krikkel::NCurses { class Window; class SingleUserInput; class TilingWindowManager { public: TilingWindowManager(NCursesWindow *rootWindow, std::recursive_mutex *ncursesMutex); void addWindow(Window *window); void refresh(); virtual void updateLayout() = 0; void hideWindow(Window *window); void showWindow(Window *window); SingleUserInput readSingleUserInput(); protected: Window *rootWindow; 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 */