From 3607f14f86f407acc0acdb3f8dc09bc680e2ed21 Mon Sep 17 00:00:00 2001 From: Vincenzo Nikodem Cesqui Podiani Date: Fri, 13 Jun 2025 00:48:23 +0200 Subject: [PATCH] Pierosforo --- main.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++------ newCounter | Bin 21568 -> 22760 bytes 2 files changed, 100 insertions(+), 13 deletions(-) diff --git a/main.c b/main.c index 970fd8c..15dff74 100644 --- a/main.c +++ b/main.c @@ -13,18 +13,21 @@ #include #include +#include #include // Prototipi int runMainMenu(); +void warning(char *string); WINDOW *create_newwin(int height, int width, int starty, int startx); void destroy_win(WINDOW *local_win); -void print_menu(WINDOW *menu_win, int highlight); +void print_menu(WINDOW *menu_win, int y, int x, int highlight); +void word_wrap_print(WINDOW *win, int start_y, int start_x, int max_width, const char *str); int getCount(); void changeFile(); int checkIfFileExists(); -// Costanti +// Globali char productPricesFileLocation[64]="./productPricesSetting.txt"; char countFileLocation[64]="./count.txt"; FILE *productPrices; @@ -47,6 +50,7 @@ int n_mainMenu = sizeof(mainMenu) / sizeof(char *); // Funzioni int main(){ initscr(); + //initialize options noecho(); curs_set(0); raw(); @@ -55,6 +59,13 @@ int main(){ int running = 0; while(running != 6){ running = runMainMenu(); + switch(running) { + case 5: + warning("Questa รจ una stringa molto lunga . . . Ma anche un test, che ti devo dire, ci proviamo a fare cose che non sono mai state fatte, oltretutto che divertimento ci sarebbe senza esperienze nuove?"); + break; + case 6: + break; + } } endwin(); @@ -77,37 +88,41 @@ int runMainMenu(){ int c; keypad(mainWin, TRUE); - mvwprintw(mainWin, 1, 2, "Usa le freccette ed invio per scegliere un'opzione!"); + mvwprintw(mainWin, 2, 2, "Usa le FRECCETTE ed INVIO per scegliere un'opzione!"); + mvwprintw(mainWin, 3, 2, "In alternativa ci sono J e K con SPAZIO!"); refresh(); - print_menu(mainWin, highlight); + print_menu(mainWin, 6, width / 2 - 10, highlight); while(1) { c = wgetch(mainWin); switch(c) { case KEY_UP: + case 'k': if(highlight == 1) highlight = n_mainMenu; else --highlight; break; case KEY_DOWN: + case 'j': if(highlight == n_mainMenu) highlight = 1; else ++highlight; break; case 10: + case 32: choice = highlight; break; default: - mvwprintw(mainWin, height - 2, 2, "Hai premuto il tasto '%c'", c, c); + mvprintw(LINES - 2, 1, "Il tasto '%c' non e' un tasto valido . . .", c); refresh(); break; } - print_menu(mainWin, highlight); + print_menu(mainWin, 6, width / 2 - 10, highlight); if(choice != 0) /* User did a choice come out of the infinite loop */ break; } - mvprintw( LINES - 1 , 0, "Hai premuto il tasto %s\n . . .", mainMenu[choice - 1]); + mvprintw( LINES - 2 , 1, "Avvio opzione '%s' . . . ", mainMenu[choice - 1]); clrtoeol(); refresh(); destroy_win(mainWin); @@ -115,6 +130,23 @@ int runMainMenu(){ return choice; } +void warning(char *string){ + WINDOW *warningWin; + int startx, starty, width, height; + height = LINES / 2 - 2; + width = COLS / 2; + starty = LINES / 2; + startx = 0; + warningWin = create_newwin(height, width, starty, startx); + + mvwprintw(warningWin, 2, 2, "ATTENZIONE! E' avvenuto un errore . . . "); + word_wrap_print(warningWin, 4, 3, width - 5, string); + + wrefresh(warningWin); + getch(); + destroy_win(warningWin); +} + WINDOW *create_newwin(int height, int width, int starty, int startx) { WINDOW *local_win; @@ -128,17 +160,14 @@ WINDOW *create_newwin(int height, int width, int starty, int startx) void destroy_win(WINDOW *local_win) { - wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' '); + wborder(local_win, ':', ':', '.', '.', '+', '+', '+', '+'); wrefresh(local_win); delwin(local_win); } -void print_menu(WINDOW *menu_win, int highlight) +void print_menu(WINDOW *menu_win, int y, int x, int highlight) { - int x, y, i; - - x = 3; - y = 3; + int i; box(menu_win, 0, 0); for(i = 0; i < n_mainMenu; ++i) { if(highlight == i + 1) /* High light the present choice */ @@ -153,10 +182,67 @@ void print_menu(WINDOW *menu_win, int highlight) wrefresh(menu_win); } +void word_wrap_print(WINDOW *win, int start_y, int start_x, int max_width, const char *str) { + int y = start_y; + int x = start_x; + int line_length = 0; + int word_length = 0; + const char *word_start = str; + while (*str) { + // Trova la prossima parola + if (*str != ' ' && *str != '\n' && *str != '\t') { + str++; + continue; + } + + // Calcola lunghezza parola corrente + word_length = str - word_start; + + // Gestione wrap + if (line_length + word_length > max_width) { + y++; + x = start_x; + line_length = 0; + } + + // Stampa parola + for (int i = 0; i < word_length; i++) { + mvwaddch(win, y, x++, word_start[i]); + } + line_length += word_length; + + // Gestione spazi + if (*str == ' ' || *str == '\t') { + if (line_length < max_width) { + mvwaddch(win, y, x++, ' '); + line_length++; + } else { + y++; + x = start_x; + line_length = 0; + } + } else if (*str == '\n') { + y++; + x = start_x; + line_length = 0; + } + + word_start = ++str; + } + + // Stampa ultima parola + word_length = strlen(word_start); + if (line_length + word_length > max_width) { + y++; + x = start_x; + } + mvwprintw(win, y, x, "%s", word_start); +} int checkIfFileExists(){ + return 0; } void changeFile(){ @@ -165,5 +251,6 @@ void changeFile(){ int getCount(){ + return 0; } diff --git a/newCounter b/newCounter index 0dd198f254ae1197086aa5d15a54271d1622e663..c508b7bd51cf66fb0f1f09e533db889ecf0bc455 100755 GIT binary patch literal 22760 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 BlpX*8 delta 6353 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 EFWOq^Hvj+t