# Packages
Package components implements re-usable sections of UI which can be used by multiple sections of the program in multiple different ways.
# Functions
ActivateMenu sets the current menu to the requested value and orders a redraw of the menu area This function will block until the new menu is being drawn.
Exit requests that the input handler shuts down and gracefully exits the program via a return to the main function.
InitUI initialises the UI subsystem.
InputLoop - main UI input handler
Receives all key inputs serially, one character at a time If there is no global keybinding for this key, we pass it to the UI subsystem, which can deal with it from there.
MenuActive returns true if the current menu claims to be of the same class as the passed menu
"compare" does not necessarily have to be exactly the same type as the current menu.
PassKeystroke performs a keystroke passthrough for the active menu.
Redraw signals to redraw a specific part of the UI
This call *will* block if a redraw is in progress but will not fail.
RenderLoop is the main render callback for the program This is intended to run in its own thread.
RenderTray renders the statusbar tray at the bottom of the screen Tray takes up two vertical cells and the entirety of the width The top cell is a horizontal line denoting a player status bar The bottom cell is the status text.
StatusMessage sends a status message
Will block for the previous message to finish first.
UpdateDimensions changes the dimensions of the drawable area
Called automatically on detected terminal resizes by the resizeLoop thread.
# Constants
Requesting the menu's name.
MessageTime is the time a message will show for.
Redraw everything.
Redraw just the menu.
Redraw and recalculate dimensions.
Redraw just the tray.
# Variables
Menu singletons.
Library of podcasts and episodes.
Full screen player.
Player queue display.
# Structs
No description provided by the author
Library represents the list menu type and state
Library displays all detected and configured podcasts, along with associated episodes sorted into said podcasts.
Player is the full screen player component
Player displays the currently playing episode, the next up episode, progress through the episode etc.
Queue displays the current play queue Not to be confused with the current download queue, Download.
# Interfaces
A Menu is a renderable UI element which takes up most of primary screen space and is capable of handling unhandled keybinds.