Files

101 lines
3.6 KiB
C

#ifndef WINDOWSBACK_H
#define WINDOWSBACK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ncurses.h>
/**
* @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