From 5508532619e338a87aed5f47d6cb4a5750fb8af4 Mon Sep 17 00:00:00 2001 From: Vincenzo Nikodem Cesqui Podiani Date: Fri, 13 Jun 2025 02:59:14 +0200 Subject: [PATCH] =?UTF-8?q?Ristrutturato=20in=20pi=C3=B9=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 11 +++ build/globals.d | 2 + build/globals.o | Bin 0 -> 1048 bytes build/logic.d | 4 + build/logic.o | Bin 0 -> 1824 bytes build/main.d | 3 + build/main.o | Bin 0 -> 3224 bytes build/windows.d | 5 ++ build/windows.o | Bin 0 -> 10080 bytes include/globals.h | 11 +++ include/logic.h | 15 ++++ include/windows.h | 20 +++++ makefile | 43 ++++------ newCounter | Bin 22760 -> 22336 bytes productPricesSettings.txt | 0 src/globals.c | 3 + src/logic.c | 28 +++++++ src/main.c | 66 +++++++++++++++ main.c => src/windows.c | 172 +++++++++++++++++++++----------------- 19 files changed, 280 insertions(+), 103 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 build/globals.d create mode 100644 build/globals.o create mode 100644 build/logic.d create mode 100644 build/logic.o create mode 100644 build/main.d create mode 100644 build/main.o create mode 100644 build/windows.d create mode 100644 build/windows.o create mode 100644 include/globals.h create mode 100644 include/logic.h create mode 100644 include/windows.h create mode 100644 productPricesSettings.txt create mode 100644 src/globals.c create mode 100644 src/logic.c create mode 100644 src/main.c rename main.c => src/windows.c (59%) diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..dc80d73 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "makefile.configureOnOpen": false, + "files.associations": { + "ncurses.h": "c", + "logic.h": "c", + "stdio.h": "c", + "globals.h": "c", + "windows.h": "c", + "stdlib.h": "c" + } +} \ No newline at end of file diff --git a/build/globals.d b/build/globals.d new file mode 100644 index 0000000..49d7c7a --- /dev/null +++ b/build/globals.d @@ -0,0 +1,2 @@ +build/globals.o: src/globals.c src/../include/globals.h +src/../include/globals.h: diff --git a/build/globals.o b/build/globals.o new file mode 100644 index 0000000000000000000000000000000000000000..98323c6ad05d53dd0923e2d7ccce08b5eb3f30a9 GIT binary patch literal 1048 zcmbtS%}T>S5T0oLsh)Z(=pi0N1zp=>FM<*%Z9NnbMDUuXOAWS3$!@`(>|=QF;G_5m zzKTzvv+WE`NAcpqfM+P%GfGsG3Ivr(cZyed1 zERM9f)z-#I-zfWJ7v{gRcB66bAGWXWj{Is}RaMomRciIhS*<>E74Yk0tYM%CR=|6A z950XR+<4qtLf0?A=hqU6#WqF>cjXmu(jTPVa9~sfO9yPl1KmlZ(8g&3pv+`w!!DxD z=J>#w)p!G{7upb1*BDSyIvnZ*xg@n(;aN_M4Wmb@`^i}0k48GP6CU9|xPxYQ=5?`2 zAZjk<{q14HajPsK3ljQfzBm6_kqZNh;{l6nn6U#D*q&kRA#J1&eOC)1;bYOLhyXP&^cb zAVQCN3;q>7NudYvAMor&2lSh^Ic7dGCGieQ)N?%BJM1sMU93=d_ulQ5vCTzxl)8{pI@2owon}3L^fyg|^@P<~P5zwcA|i_`5qDN-lAv zBk(>}`8lwUl&^;Fd#)tk4DGdX7VG0nR(9W#vTA? z8Nwv-Zdh}l0cW{@N#X@f2hvlp&wl!I)GOF`+{Ni=pYHZFcAnjFeHvYyx2$D?=ZRDu z-5X=qc#P?c)6>oW;I|k@9pURUU@U9!Mb;4AJB&(H+6cXnHtW&aR+z-38XGaI^=MPo zXg#b%v7)dX)Jm$bQBhP?*!bB0RmnM_svLaNO}=3ddW30LR`W-(?$u zIv653V+byNy|8fUi@bQdngpw?lX_Q|#j2}H;3cY&khc~j0eP!&Odj{GoiM6a75C-U zqC|Q8M(@T+5WX^gskY_u5pAk^vdtV+Qsw9C^`NTEPR^!WrsIv_tkRM*&eJr=wtP1N zPqKkC%?V)i2XmOd@p13q%DcO2aJ(Dfso#f=d^B-e+3Vlo1k|+oEkl&`jC;Jk_;{bF znZA3(T9{aD++P1a=Kz~Va!NiKTmBgm629np4u~x|(4W&z%C>WtIEMFZ@AJTL?0wni z@sjgU)8_v+{D#q@Y(8FLulxUQ3i^hK`^P^>_;UZf)&`|)8kKzvGlq3+K5E)`&k#K^ Y>(9YSiG6 z053Im;^}onZdoP_1}%0qc4&Ni^N%Cm4?q61S^6y@8@IjE=0mV;+-mH6-E=A?%Pzw< z7QR86R<7+XFf3f}AQk7@?rbuQV%93Q6@F)YkCxePIksqw?`^!l*KMbu*QZGzu+KrS zkCE=OXQ9{6knXgD(Cbf<_G~xlj@=`z1aY+8zNG8f+U?rf^|r{UJNhhUaRJ|dN0~3_ z$Z#u7El^^KSF{Yd(w2u&y{?VrWxb>gDx5L85|u5V6iO^g!{^ud>wzjubw%^3;IgjB z8XuG4yHUVrbR`fffEQ!0Ml!U5%VRuJf``@wYEkf-Ub31mMHu_>Z&Glf%2i2bR8DA5 za!hQ%D{@)$N?;_BfY*&)4n$3J!54&)R9{GnER|L~)JpT32q=xPk_@aRFG^*kjVvXE zVI^3W#s)R10LYfY%+E_6(qExE!@4v94Jl%zm*oqLogW)}mLESqb@2or8u5qxAwE1f zJTiECcm)3s@19e`wjvwW!Mqz_ZjXDp`Gd3u@vh7=Z?)e$e6Z)PEi!(T7#ielIKSA} z|53+SZ+GXL9+||voq}l>`}TYWFi_IFzxEYarH3t$)91Ji}3G$9Vxi zR=`gc@Y4l+w1A&4;4=mMwE}*rfX@~1Y5~^;e6@goP{2Pa;GY(7M*Cm+<+x*k3T#+5 ztSZ8}_#}r+s>({B*orWUP9l@5fn{`Dj78U96vKak;H74V$`ekDUw0gX7F)<@0=^ zbTN-l5=YGc>OVxjh`H}w()?PQ=x8pXtDj6_IZGNQgUPh1Z>9m=x7aPXaISxe7Tnm` zp#M2vP`a46#eIPNnK%C>1^K%2^}j>Dh?)2APamke&&VW}ygznfyZ8TbYUtiG-aqb1 z=kIvC+(=YP^B+$O!`mH*6a8fkbIeRO`U&!xZ~RSUrP(MP0wVI_x~5p CzZDDs literal 0 HcmV?d00001 diff --git a/build/windows.d b/build/windows.d new file mode 100644 index 0000000..f019f6a --- /dev/null +++ b/build/windows.d @@ -0,0 +1,5 @@ +build/windows.o: src/windows.c src/../include/windows.h \ + src/../include/logic.h src/../include/globals.h +src/../include/windows.h: +src/../include/logic.h: +src/../include/globals.h: diff --git a/build/windows.o b/build/windows.o new file mode 100644 index 0000000000000000000000000000000000000000..9a1144bd8887287a39fe2dfa5ee8b485c6c5b22c GIT binary patch literal 10080 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 +#include +#include +#include + +extern char productPricesFileLocation[64]; // Dichiarazione extern + +#endif \ No newline at end of file diff --git a/include/logic.h b/include/logic.h new file mode 100644 index 0000000..27a283a --- /dev/null +++ b/include/logic.h @@ -0,0 +1,15 @@ +#ifndef LOGIC_H +#define LOGIC_H + +#include +#include +#include +#include + +// TODO: QUI CI VA LA STRUCT DATI + +int getCount(); +void changeFile(); +int exists(const char *fname); + +#endif \ No newline at end of file diff --git a/include/windows.h b/include/windows.h new file mode 100644 index 0000000..ab4f2c1 --- /dev/null +++ b/include/windows.h @@ -0,0 +1,20 @@ +#ifndef WINDOWS_H +#define WINDOWS_H + +#include +#include +#include +#include + +int runMainMenu(); +void runOptionsMenu(); +void warningf(const char *fmt, ...); +void warning(char *string); +void statusf(const char *fmt, ...); +void status(char *msg); +WINDOW *create_newwin(int height, int width, int starty, int startx); +void destroy_win(WINDOW *local_win); +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); + +#endif \ No newline at end of file diff --git a/makefile b/makefile index d0ae140..c19a008 100644 --- a/makefile +++ b/makefile @@ -1,33 +1,26 @@ -# Makefile per un programma C con ncurses su Linux x64 - -# Variabili CC = gcc -CFLAGS = -Wall -g -std=c11 -NCLUDE_DIRS = ./ -LDLIBS = -lncurses -lncursesw +CFLAGS = -I./include -Wall -Wextra -MMD -MP +LDLIBS = -lncurses +SRC_DIR = src +BUILD_DIR = build +SOURCES = $(wildcard $(SRC_DIR)/*.c) +OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES)) +EXEC = newCounter -# Nome del programma -TARGET = newCounter +DEPS = $(OBJECTS:.o=.d) -# File sorgente -SRC_FILES = main.c +all: $(EXEC) -# Nome dell'eseguibile -EXECUTABLE = $(TARGET) +$(EXEC): $(OBJECTS) + $(CC) $^ -o $@ $(LDLIBS) -# Default target -all: $(EXECUTABLE) - -# Regole di compilazione -$(EXECUTABLE): $(SRC_FILES) - $(CC) $(CFLAGS) $(SRC_FILES) -o $(EXECUTABLE) $(LDLIBS) - -# Regole per la pulizia (rimuove l'eseguibile e i file oggetto) -clean: - rm -f $(EXECUTABLE) *.o - -# Regole per la creazione di file oggetto (opzionale, ma consigliata per una compilazione più veloce) -%.o: %.c +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c + @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ +-include $(DEPS) +clean: + rm -rf $(BUILD_DIR) $(EXEC) + +.PHONY: all clean \ No newline at end of file diff --git a/newCounter b/newCounter index c508b7bd51cf66fb0f1f09e533db889ecf0bc455..9536579b86dac43bb34ea2e1b4ae68bb089f9a99 100755 GIT binary patch literal 22336 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 C)R_?g literal 22760 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 BlpX*8 diff --git a/productPricesSettings.txt b/productPricesSettings.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/globals.c b/src/globals.c new file mode 100644 index 0000000..d524946 --- /dev/null +++ b/src/globals.c @@ -0,0 +1,3 @@ +#include "../include/globals.h" + +char productPricesFileLocation[64]="./productPricesSettings.txt"; \ No newline at end of file diff --git a/src/logic.c b/src/logic.c new file mode 100644 index 0000000..9aac599 --- /dev/null +++ b/src/logic.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include + +#include "../include/logic.h" +#include "../include/globals.h" + +FILE *products; + +int exists(const char *fname) { + FILE *file; + if ((file = fopen(fname, "r"))) + { + fclose(file); + return 1; + } + return 0; +} + +void changeFile(){ + +} + +int getCount(){ + + return 0; +} diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..53743a1 --- /dev/null +++ b/src/main.c @@ -0,0 +1,66 @@ +/* +* [Guida NCURSES](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/intro.html) +* Product Manager +* +* Controllare se file esiste +* Listare prodotti con prezzo da file +* Aggiungere prodotto con prezzo a file +* Listare copie vendute di prodotto da file +* Aggiungere copie venduto di prodotto a file +* Cambiare nome dei file con interagisce +* Calcolare la somma delle entrate dati i file +*/ + +#include +#include +#include +#include + +#include +#include + +int main(){ + initscr(); + if(has_colors() == FALSE) + { endwin(); + warning("Your terminal does not support color"); + exit(1); + } + start_color(); + //initialize options + noecho(); + curs_set(0); + raw(); + mvprintw(LINES -1, COLS / 2 - 25, "Product Manager by Vincenzo Nikodem Cesqui Podiani"); + refresh(); + //initialize colors + init_pair(1, COLOR_RED, COLOR_BLACK); + init_pair(2, COLOR_BLACK, COLOR_BLUE); + init_pair(3, COLOR_BLACK, COLOR_YELLOW); + statusf(""); + + int running = 0; + while(running != 6){ + running = runMainMenu(); + switch(running) { + case 1: + warning("Questa e' 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 2: + break; + case 3: + break; + case 4: + break; + case 5: + runOptionsMenu(); + break; + case 6: + break; + } + } + + endwin(); + return 0; +} + diff --git a/main.c b/src/windows.c similarity index 59% rename from main.c rename to src/windows.c index 15dff74..a45b815 100644 --- a/main.c +++ b/src/windows.c @@ -1,37 +1,12 @@ -/* -* [Guida NCURSES](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/intro.html) -* Product Manager -* -* Controllare se file esiste -* Listare prodotti con prezzo da file -* Aggiungere prodotto con prezzo a file -* Listare copie vendute di prodotto da file -* Aggiungere copie venduto di prodotto a file -* Cambiare nome dei file con interagisce -* Calcolare la somma delle entrate dati i file -*/ - #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 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(); - -// Globali -char productPricesFileLocation[64]="./productPricesSetting.txt"; -char countFileLocation[64]="./count.txt"; -FILE *productPrices; -FILE *count; +#include "../include/windows.h" +#include "../include/logic.h" +#include "../include/globals.h" +#define MAX_LEN 64 char *mainMenu[] = { "Segna vendita", @@ -44,36 +19,6 @@ char *mainMenu[] = { int n_mainMenu = sizeof(mainMenu) / sizeof(char *); - - - -// Funzioni -int main(){ - initscr(); - //initialize options - noecho(); - curs_set(0); - raw(); - refresh(); - - 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(); - return 0; -} - - - int runMainMenu(){ WINDOW *mainWin; int startx, starty, width, height; @@ -114,7 +59,7 @@ int runMainMenu(){ choice = highlight; break; default: - mvprintw(LINES - 2, 1, "Il tasto '%c' non e' un tasto valido . . .", c); + statusf("Il tasto '%c' non e' un tasto valido", c); refresh(); break; } @@ -122,7 +67,7 @@ int runMainMenu(){ if(choice != 0) /* User did a choice come out of the infinite loop */ break; } - mvprintw( LINES - 2 , 1, "Avvio opzione '%s' . . . ", mainMenu[choice - 1]); + statusf("Avvio opzione '%s'", mainMenu[choice - 1]); clrtoeol(); refresh(); destroy_win(mainWin); @@ -130,24 +75,109 @@ int runMainMenu(){ return choice; } +void runOptionsMenu(){ + WINDOW *optionsWin; + int startx, starty, width, height; + height = LINES / 2; + width = COLS / 2; + starty = 0; + startx = COLS / 2; + optionsWin = create_newwin(height, width, starty, startx); + + char input[MAX_LEN + 1]; + strcpy(input, productPricesFileLocation); + int ch, pos = strlen(input); + + mvwprintw(optionsWin, 1, 2, "Posizione file prodotti:"); + wattron(optionsWin, COLOR_PAIR(2)); + for (int i = 0; i < MAX_LEN; i++) { + mvwaddch(optionsWin, 2, 2 + i, ' '); + } + mvwprintw(optionsWin, 2, 2, "%s", input); + wmove(optionsWin, 2, 2 + strlen(input)); + wrefresh(optionsWin); + + pos = strlen(input); + + // Input nella finestra + curs_set(1); + while ((ch = wgetch(optionsWin)) != '\n') { + if (ch == KEY_BACKSPACE || ch == 127 || ch == '\b') { + if (pos > 0) { + pos--; + input[pos] = '\0'; + mvwaddch(optionsWin, 2, 2 + pos, ' '); + wmove(optionsWin, 2, 2 + pos); + } + } else if (pos < MAX_LEN && ch >= 32 && ch <= 126) { + input[pos++] = ch; + input[pos] = '\0'; + mvwaddch(optionsWin, 2, 2 + pos - 1, ch); + } + wrefresh(optionsWin); + } + curs_set(0); + wattroff(optionsWin, COLOR_PAIR(2)); + + if (exists(input)) { + statusf("Il file '%s' esiste e verra' utilizzato al posto di '%s'", input, productPricesFileLocation); + strcpy(productPricesFileLocation, input); + } + else { + warningf("Il file '%s' non esiste, utilizzo il vecchio file '%s'", input, productPricesFileLocation); + } + + werase(optionsWin); + destroy_win(optionsWin); +} + +void warningf(const char *fmt, ...) { + char buf[256]; + va_list args; + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + warning(buf); +} + void warning(char *string){ WINDOW *warningWin; int startx, starty, width, height; - height = LINES / 2 - 2; + height = LINES / 2 - 3; width = COLS / 2; starty = LINES / 2; startx = 0; warningWin = create_newwin(height, width, starty, startx); + wbkgd(warningWin, COLOR_PAIR(1)); - mvwprintw(warningWin, 2, 2, "ATTENZIONE! E' avvenuto un errore . . . "); + mvwprintw(warningWin, 2, 2, "ATTENZIONE!!! E' avvenuto un errore! "); word_wrap_print(warningWin, 4, 3, width - 5, string); + mvwprintw(warningWin, height - 1, width /2, " Premi un tasto per continuare . . . "); wrefresh(warningWin); getch(); + werase(warningWin); destroy_win(warningWin); } +void statusf(const char *fmt, ...) { + char buf[256]; + va_list args; + va_start(args, fmt); + vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + status(buf); +} + +void status(char *msg) { + attron(COLOR_PAIR(3)); + mvprintw(LINES -2, 0, " %-*s", COLS -1, msg); + attroff(COLOR_PAIR(3)); + refresh(); +} + + WINDOW *create_newwin(int height, int width, int starty, int startx) { WINDOW *local_win; @@ -160,7 +190,7 @@ 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); } @@ -240,17 +270,3 @@ void word_wrap_print(WINDOW *win, int start_y, int start_x, int max_width, const mvwprintw(win, y, x, "%s", word_start); } -int checkIfFileExists(){ - - return 0; -} - -void changeFile(){ - -} - -int getCount(){ - - return 0; -} -