21PROMEKI_NAMESPACE_BEGIN
126 _screen.setColorMode(mode);
134 Terminal::ColorSupport
colorMode()
const {
return _screen.colorMode(); }
183 EventLoop *_eventLoop =
nullptr;
193 AnsiStream &_ansiStream;
199 bool _windowFocused =
true;
200 int _crashCleanupHandle = -1;
211 int _stdinSourceHandle = -1;
212 int _winchSubscription = -1;
213 Atomic<bool> _repaintQueued;
216 using Clock = std::chrono::steady_clock;
217 using TimePoint = Clock::time_point;
218 static constexpr int DoubleClickIntervalMs = 400;
219 TimePoint _lastClickTime{};
220 Point2Di32 _lastClickPos{-1, -1};
221 MouseEvent::Button _lastClickButton = MouseEvent::NoButton;
223 void setupEventSources();
224 void teardownEventSources();
228 void paintWidget(TuiWidget *widget);
230 void dispatchKeyEvent(
const TuiInputParser::ParsedEvent &ev);
231 void dispatchMouseEvent(
const TuiInputParser::ParsedEvent &ev);
232 void dispatchPasteEvent(
const TuiInputParser::ParsedEvent &ev);
233 void dispatchWindowFocusEvent(
bool gained);
236 static void crashRestore(
void *userdata);
237 void collectFocusable(TuiWidget *widget, List<TuiWidget *> &list);
238 TuiWidget *widgetAt(TuiWidget *widget,
const Point2Di32 &globalPos);
Style palette for TUI widgets.
Definition palette.h:41
Double-buffered character cell grid for TUI rendering.
Definition screen.h:68
TUI subsystem installed alongside an Application.
Definition tuisubsystem.h:57
void releaseMouse()
Releases the mouse grab.
Definition tuisubsystem.h:178
const TuiPalette & palette() const
Returns the palette.
Definition tuisubsystem.h:106
void setColorMode(Terminal::ColorSupport mode)
Sets the color mode for the TUI screen.
Definition tuisubsystem.h:125
void setRootWidget(TuiWidget *widget)
Sets the top-level (root) widget.
void setFocusWidget(TuiWidget *widget)
Sets the focused widget.
void grabMouse(TuiWidget *widget)
Grabs mouse events for a widget.
Definition tuisubsystem.h:173
TuiScreen & screen()
Returns the screen.
Definition tuisubsystem.h:90
TuiSubsystem()
Installs the TUI on the current Application.
void updateAll()
Forces a full screen repaint.
void setPalette(const TuiPalette &palette)
Sets the palette.
Definition tuisubsystem.h:112
static TuiSubsystem * instance()
Returns the active TuiSubsystem instance.
Definition tuisubsystem.h:78
TuiWidget * focusWidget() const
Returns the currently focused widget.
Definition tuisubsystem.h:148
void focusNext(bool reverse=false)
Cycles focus to the next focusable widget.
bool isWindowFocused() const
Returns whether the terminal window currently has focus.
Definition tuisubsystem.h:103
~TuiSubsystem()
Destructor. Restores terminal state and releases I/O sources.
void markNeedsRepaint()
Marks the screen as needing a repaint.
Terminal::ColorSupport colorMode() const
Returns the current color mode.
Definition tuisubsystem.h:134
TuiPalette & palette()
Returns the palette for modification.
Definition tuisubsystem.h:109
Terminal & terminal()
Returns the terminal.
Definition tuisubsystem.h:93
TuiWidget * rootWidget() const
Returns the root widget.
Definition tuisubsystem.h:87