ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
errno_stacks.h File Reference

Go to the source code of this file.

Functions

void ui_errno_stacks_toggle (void)
void ui_errno_stacks_hide (void)
bool ui_errno_stacks_visible (void)
bool ui_errno_stacks_handle_key (keyboard_key_t key)

Function Documentation

◆ ui_errno_stacks_handle_key()

bool ui_errno_stacks_handle_key ( keyboard_key_t key)

Returns true when a visible errno-stack UI consumed the key.

Definition at line 452 of file errno_stacks.c.

452 {
454 return false;
455 if (!state_lock())
456 return false;
457 if (key == KEY_BACKTICK || key == KEY_ESCAPE) {
458 g_state.visible = false;
459 state_unlock();
461 return true;
462 }
463 if (key == '\t') {
464 g_state.tab = g_state.tab == ERRNO_TUI_CURRENT ? ERRNO_TUI_HISTORY : ERRNO_TUI_CURRENT;
465 ui_selectable_list_reset(&g_state.list);
466 } else if (key == 's' || key == 'S') {
467 g_state.stack_sort = !g_state.stack_sort;
468 ui_selectable_list_reset(&g_state.list);
469 } else if (key == KEY_UP || key == 'k') {
470 ui_selectable_list_move(&g_state.list, g_state.count, g_state.rows, -1);
471 } else if (key == KEY_DOWN || key == 'j') {
472 ui_selectable_list_move(&g_state.list, g_state.count, g_state.rows, 1);
473 } else if (key == 'x' || key == 'X') {
474 errno_tui_state_t state = g_state;
475 state_unlock();
476 if (state.selected_current)
477 errno_clear_if_current(state.selected_context.thread_id, state.selected_context.generation,
478 state.selected_context.error_id);
479 publish();
480 return true;
481 } else {
482 state_unlock();
483 return false;
484 }
485 state_unlock();
486 publish();
487 return true;
488}
bool errno_clear_if_current(uint64_t id, uint64_t generation, uint64_t error_id)
bool ui_errno_stacks_visible(void)
@ ERRNO_TUI_CURRENT
@ ERRNO_TUI_HISTORY
@ KEY_UP
Up arrow key.
Definition keyboard.h:57
@ KEY_BACKTICK
'`' key - print lock state (debug builds)
Definition keyboard.h:84
@ KEY_ESCAPE
Escape key (ESC).
Definition keyboard.h:55
@ KEY_DOWN
Down arrow key.
Definition keyboard.h:58
void ui_selectable_list_move(ui_selectable_list_t *list, int count, int rows, int delta)
void ui_selectable_list_reset(ui_selectable_list_t *list)
The useful part of errno tui row is in context, resolved_ns, group_id, group_timestamp: together they...
void ui_controller_remove(ui_screen_t screen)
int ui_controller_current_screen(void)
@ UI_SCREEN_ERRNO

References errno_clear_if_current(), ERRNO_TUI_CURRENT, ERRNO_TUI_HISTORY, KEY_BACKTICK, KEY_DOWN, KEY_ESCAPE, KEY_UP, ui_controller_current_screen(), ui_controller_remove(), ui_errno_stacks_visible(), UI_SCREEN_ERRNO, ui_selectable_list_move(), and ui_selectable_list_reset().

Referenced by ui_status_display_interactive().

◆ ui_errno_stacks_hide()

void ui_errno_stacks_hide ( void )

Definition at line 436 of file errno_stacks.c.

436 {
437 if (!state_lock())
438 return;
439 g_state.visible = false;
440 state_unlock();
442}

References ui_controller_remove(), and UI_SCREEN_ERRNO.

Referenced by ui_controller_toggle_logs().

◆ ui_errno_stacks_toggle()

void ui_errno_stacks_toggle ( void )

Toggle the diagnostic errno-stack terminal UI. Available only in diagnostic builds.

Definition at line 418 of file errno_stacks.c.

418 {
419#if defined(ASCIICHAT_DIAGNOSTIC_UI)
420 if (!state_lock())
421 return;
422 g_state.visible = !g_state.visible;
423 if (g_state.visible)
424 ui_selectable_list_reset(&g_state.list);
425 if (g_state.visible)
426 g_state.output_fd = ui_controller_active_fd();
427 bool visible = g_state.visible;
428 state_unlock();
429 if (visible)
430 publish();
431 else
433#endif
434}
int ui_controller_active_fd(void)

References ui_controller_active_fd(), ui_controller_remove(), UI_SCREEN_ERRNO, and ui_selectable_list_reset().

Referenced by ui_status_display_interactive().

◆ ui_errno_stacks_visible()

bool ui_errno_stacks_visible ( void )

Definition at line 444 of file errno_stacks.c.

444 {
445 if (!state_lock())
446 return false;
447 bool visible = g_state.visible;
448 state_unlock();
449 return visible;
450}

Referenced by ui_errno_stacks_handle_key().