39 lines
1.0 KiB
C++
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 */
|