kNCurses/include/kNCurses/TilingWindowManager.hpp

39 lines
1.0 KiB
C++

/**
* @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 <list>
#include <mutex>
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<Window *> stack, visibleStack;
void resizeWindow(Window *window, uint16_t height, uint16_t width, uint16_t y, uint16_t x);
};
}
#endif /* C51BA18F_0915_43B9_BD5D_129F0CDBC1CD */