#ifndef WINDOWSBACK_H #define WINDOWSBACK_H #include #include #include #include /** * @brief Crea e restituisce una nuova finestra ncurses con i bordi tracciati. * @param height Altezza della finestra. * @param width Larghezza della finestra. * @param starty Coordinata Y iniziale sullo schermo. * @param startx Coordinata X iniziale sullo schermo. * @return Puntatore all'oggetto WINDOW creato. */ WINDOW *create_newwin(int height, int width, int starty, int startx); /** * @brief Distrugge una finestra ncurses creata in precedenza e libera la memoria associata. * @param local_win Puntatore alla finestra da eliminare. */ void destroy_win(WINDOW *local_win); /** * @brief Stampa del testo all'interno di una finestra gestendo l'andata a capo automatica (word wrapping) per parola. * @param win Finestra in cui stampare. * @param start_y Coordinata Y iniziale all'interno della finestra. * @param start_x Coordinata X iniziale all'interno della finestra. * @param str Stringa di testo da stampare. */ void wwrap_print(WINDOW *win, int start_y, int start_x, const char *str); /** * @brief Gestisce un interruttore grafico interattivo (stato ON/OFF) modificabile da tastiera. * @param win Finestra di visualizzazione. * @param y Coordinata Y dell'interruttore. * @param x Coordinata X dell'interruttore. * @param state Stato iniziale (1 per ON, 0 per OFF). * @return Lo stato finale dell'interruttore dopo l'interazione dell'utente. */ int uiToggleSwitch(WINDOW *win, int y, int x, int state); /** * @brief Gestisce un campo di input di testo interattivo all'interno di una finestra ncurses. * @param win Finestra in cui inserire il testo. * @param y Coordinata Y. * @param x Coordinata X. * @param input Buffer contenente l'eventuale testo iniziale e in cui memorizzare il risultato digitato. * @param max_len Lunghezza massima consentita per l'input. */ void uiTextInput(WINDOW *win, int y, int x, char *input, int max_len); /** * @brief Mostra un menu di scelta multipla navigabile da tastiera tramite frecce o tasti vim (j/k). * @param win Finestra in cui mostrare il menu. * @param start_y Coordinata Y iniziale. * @param start_x Coordinata X iniziale. * @param options Array di stringhe contenente le opzioni del menu. * @param n_options Numero totale di opzioni disponibili. * @return L'indice (1-based) della voce selezionata dall'utente. */ int uiSelectMenu(WINDOW *win, int start_y, int start_x, char **options, int n_options); /** * @brief Stampa un menu all'interno di una finestra evidenziando una voce specifica. * @param menu_win Finestra del menu. * @param y Coordinata Y. * @param x Coordinata X. * @param highlight Indice della voce da evidenziare graficamente. */ void print_menu(WINDOW *menu_win, int y, int x, int highlight); /** * @brief Mostra una finestra di avviso (warning) utilizzando una stringa formattata (stile printf). * @param fmt Stringa di formattazione. * @param ... Argomenti variabili da formattare. */ void warningf(const char *fmt, ...); /** * @brief Apre una finestra di popup con un messaggio di avviso e attende la pressione di un tasto per chiudersi. * @param string Messaggio di errore o avviso da mostrare. */ void warning(char *string); /** * @brief Aggiorna la barra di stato in basso sullo schermo con un messaggio formattato (stile printf). * @param fmt Stringa di formattazione. * @param ... Argomenti variabili da formattare. */ void statusf(const char *fmt, ...); /** * @brief Scrive un messaggio direttamente nella barra di stato in basso sullo schermo. * @param msg Messaggio da visualizzare nella status bar. */ void status(char *msg); #endif