/** * @brief Window manager * @author Christian Burger (christian@krikkel.de) */ #ifndef C10F5DF3_1DB4_4714_A84D_115F492F5CDC #define C10F5DF3_1DB4_4714_A84D_115F492F5CDC #include #include #include namespace krikkel::NCurses { class Window; class SingleUserInput; class VerticalTilingWindowManager { public: VerticalTilingWindowManager(NCursesWindow *rootWindow, std::recursive_mutex *ncursesMutex); void addWindow(Window *window); void refresh(); void updateLayout(); void hideWindow(Window *window); void showWindow(Window *window); SingleUserInput readSingleUserInput(); private: Window *rootWindow; std::recursive_mutex *ncursesMutex; std::list stack, visibleStack; void resizeWindowInStack(Window *window, uint16_t y, uint16_t height, uint16_t width); }; } #endif /* C10F5DF3_1DB4_4714_A84D_115F492F5CDC */