From 6dd887d502e15a8fe5995915e5aeaf919975c722 Mon Sep 17 00:00:00 2001 From: Alexander Zhylin Date: Mon, 9 Feb 2026 17:43:02 +0200 Subject: [PATCH] CMake integration --- .gitignore | 4 +- CMakeLists.txt | 11 +++ Makefile | 2 +- TODO.md | 3 +- setup.sh | 2 +- src/CMakeLists.txt | 29 ++++++++ src/connection.c | 2 +- src/connection.h | 2 +- src/deps.mk | 26 ------- src/draw-modal.c | 68 +++++++++++++++++++ src/draw-modal.h | 5 ++ src/file_processor.c | 6 +- src/file_processor.h | 2 +- src/main.c | 4 +- src/modals/CMakeLists.txt | 18 +++++ src/{ui => }/modals/ask_server_addr.c | 13 ++-- src/{ui => }/modals/ask_server_addr.h | 2 +- src/{ui => }/modals/download_pr.c | 4 +- src/{ui => }/modals/download_pr.h | 3 +- src/{ui => }/modals/login_credentials.c | 5 +- src/{ui => }/modals/login_credentials.h | 3 +- src/{ui => }/modals/login_option.c | 4 +- src/{ui => }/modals/login_option.h | 3 +- src/{ui => }/modals/notification.c | 4 +- src/{ui => }/modals/notification.h | 3 +- src/{ui => }/modals/server_message.c | 4 +- src/{ui => }/modals/server_message.h | 3 +- src/{ui => }/modals/upload_dialogue.c | 7 +- src/{ui => }/modals/upload_dialogue.h | 3 +- src/{ui => }/modals/upload_props_dialogue.c | 5 +- src/{ui => }/modals/upload_props_dialogue.h | 3 +- src/query.c | 3 +- src/query.h | 2 +- src/server.c | 2 +- src/ui-widget-core/CMakeLists.txt | 13 ++++ .../ui-widget-core.c} | 2 +- .../ui-widget-core.h} | 4 +- src/widget/CMakeLists.txt | 22 ++++++ src/{ui => widget}/app.c | 67 ------------------ src/{ui => widget}/app.h | 5 +- src/{ui => }/widget/button.c | 4 +- src/{ui => }/widget/button.h | 6 +- src/{ui => }/widget/dialogue.c | 2 +- src/{ui => }/widget/dialogue.h | 7 +- src/{ui => }/widget/file_list.c | 7 +- src/{ui => }/widget/file_list.h | 2 +- src/{ui => }/widget/fs_file_list.c | 1 - src/{ui => }/widget/fs_file_list.h | 2 +- src/{ui => }/widget/group.c | 0 src/{ui => }/widget/group.h | 2 +- src/{ui => }/widget/input.c | 4 +- src/{ui => }/widget/input.h | 4 +- src/{ui => }/widget/progress_bar.c | 2 +- src/{ui => }/widget/progress_bar.h | 2 +- src/widget/widget.h | 12 ++++ 55 files changed, 247 insertions(+), 183 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 src/draw-modal.c create mode 100644 src/draw-modal.h create mode 100644 src/modals/CMakeLists.txt rename src/{ui => }/modals/ask_server_addr.c (89%) rename src/{ui => }/modals/ask_server_addr.h (86%) rename src/{ui => }/modals/download_pr.c (93%) rename src/{ui => }/modals/download_pr.h (68%) rename src/{ui => }/modals/login_credentials.c (95%) rename src/{ui => }/modals/login_credentials.h (71%) rename src/{ui => }/modals/login_option.c (94%) rename src/{ui => }/modals/login_option.h (69%) rename src/{ui => }/modals/notification.c (93%) rename src/{ui => }/modals/notification.h (66%) rename src/{ui => }/modals/server_message.c (94%) rename src/{ui => }/modals/server_message.h (66%) rename src/{ui => }/modals/upload_dialogue.c (92%) rename src/{ui => }/modals/upload_dialogue.h (68%) rename src/{ui => }/modals/upload_props_dialogue.c (95%) rename src/{ui => }/modals/upload_props_dialogue.h (71%) create mode 100644 src/ui-widget-core/CMakeLists.txt rename src/{ui/widget.c => ui-widget-core/ui-widget-core.c} (99%) rename src/{ui/widget.h => ui-widget-core/ui-widget-core.h} (96%) create mode 100644 src/widget/CMakeLists.txt rename src/{ui => widget}/app.c (63%) rename src/{ui => widget}/app.h (91%) rename src/{ui => }/widget/button.c (96%) rename src/{ui => }/widget/button.h (84%) rename src/{ui => }/widget/dialogue.c (99%) rename src/{ui => }/widget/dialogue.h (91%) rename src/{ui => }/widget/file_list.c (97%) rename src/{ui => }/widget/file_list.h (95%) rename src/{ui => }/widget/fs_file_list.c (99%) rename src/{ui => }/widget/fs_file_list.h (96%) rename src/{ui => }/widget/group.c (100%) rename src/{ui => }/widget/group.h (97%) rename src/{ui => }/widget/input.c (98%) rename src/{ui => }/widget/input.h (91%) rename src/{ui => }/widget/progress_bar.c (98%) rename src/{ui => }/widget/progress_bar.h (91%) create mode 100644 src/widget/widget.h diff --git a/.gitignore b/.gitignore index adb9908..472be1d 100644 --- a/.gitignore +++ b/.gitignore @@ -71,4 +71,6 @@ build Downloads deps.mk -src/deps.mk \ No newline at end of file +src/deps.mk +.cache/ +install/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..85b0f4b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.23) + +project(ZBBSClientTUI + VERSION 1.0.0 +) + +add_subdirectory(src) + +install( + TARGETS zbbs-client-tui +) \ No newline at end of file diff --git a/Makefile b/Makefile index f69bf99..78a0fc8 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(SRC_DIR)/%.h $(OBJ_DIR)/ui/%.o: $(SRC_DIR)/ui/%.c $(SRC_DIR)/ui/%.h $(CC) $(CFLAGS) -c $< -o $@ -$(OBJ_DIR)/ui/widget/%.o: $(SRC_DIR)/ui/widget/%.c $(SRC_DIR)/ui/widget/%.h +$(OBJ_DIR)/widget/%.o: $(SRC_DIR)/widget/%.c $(SRC_DIR)/widget/%.h $(CC) $(CFLAGS) -c $< -o $@ $(OBJ_DIR)/ui/modals/%.o: $(SRC_DIR)/ui/modals/%.c $(SRC_DIR)/ui/modals/%.h diff --git a/TODO.md b/TODO.md index 436bf9d..1df3e18 100644 --- a/TODO.md +++ b/TODO.md @@ -10,4 +10,5 @@ - [ ] Hotkeys for buttons - [ ] Group elements as lists - [ ] "Server message" to notification -- [ ] file list -> list template \ No newline at end of file +- [ ] file list -> list template +- [x] CMAKE \ No newline at end of file diff --git a/setup.sh b/setup.sh index 900ac76..a0d01b7 100755 --- a/setup.sh +++ b/setup.sh @@ -4,4 +4,4 @@ mkdir bin mkdir Downloads mkdir src/obj/ui mkdir src/obj/ui/modals -mkdir src/obj/ui/widget \ No newline at end of file +mkdir src/obj/widget \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..737f45f --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,29 @@ +add_executable(zbbs-client-tui) + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +set(CURSES_NEED_NCURSES TRUE) + +find_package(Curses REQUIRED) + +target_sources(zbbs-client-tui + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} +) + +add_subdirectory(ui-widget-core) +add_subdirectory(widget) +add_subdirectory(modals) + +target_link_libraries(zbbs-client-tui + PRIVATE + ui-widget-core + widget + modals + ${CURSES_LIBRARIES} +) \ No newline at end of file diff --git a/src/connection.c b/src/connection.c index 8096162..1caa1be 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1,5 +1,5 @@ #include "main.h" -#include "ui/app.h" +#include "app.h" #include #include #include diff --git a/src/connection.h b/src/connection.h index 0de36c4..0628a79 100644 --- a/src/connection.h +++ b/src/connection.h @@ -1,7 +1,7 @@ #ifndef CONNECTION_H #define CONNECTION_H #include "main.h" -#include "ui/app.h" +#include void connect_to_server(app_t *params); void init_params(params_t *restrict); diff --git a/src/deps.mk b/src/deps.mk index 76aa036..e69de29 100644 --- a/src/deps.mk +++ b/src/deps.mk @@ -1,26 +0,0 @@ -connection.o: src/connection.c src/main.h src/types.h src/ui/app.h \ - src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h -file_processor.o: src/file_processor.c src/file_processor.h src/main.h \ - src/types.h src/ui/widget/file_list.h src/ui/widget/../widget.h \ - src/ui/widget/../../main.h src/query.h src/ui/app.h src/ui/../common.h \ - src/ui/widget.h src/ui/widget/dialogue.h src/ui/widget/../../common.h \ - src/ui/widget/button.h src/ui/widget/../../main.h src/ui/widget/group.h \ - src/ui/widget/dialogue.h src/ui/widget/progress_bar.h -fs.o: src/fs.c -main.o: src/main.c src/connection.h src/main.h src/types.h src/ui/app.h \ - src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h src/query.h \ - src/ui/widget.h src/ui/widget/file_list.h -query.o: src/query.c src/connection.h src/main.h src/types.h src/ui/app.h \ - src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h src/file_processor.h \ - src/ui/widget/file_list.h src/server.h -server.o: src/server.c src/main.h src/types.h src/ui/widget/file_list.h \ - src/ui/widget/../widget.h src/ui/widget/../../main.h diff --git a/src/draw-modal.c b/src/draw-modal.c new file mode 100644 index 0000000..5cfcb88 --- /dev/null +++ b/src/draw-modal.c @@ -0,0 +1,68 @@ +#include "modals/ask_server_addr.h" +#include "modals/download_pr.h" +#include "modals/login_credentials.h" +#include "modals/login_option.h" +#include "modals/notification.h" +#include "modals/server_message.h" +#include "modals/upload_dialogue.h" +#include "modals/upload_props_dialogue.h" +#include "widget/dialogue.h" +#include "main.h" + +void app_draw_modal(app_t *app) { + if (app->modal.needs_destroy || + (app->query_args->state == S_WAIT_SERVER && app->modal.is_initiated)) { + destroy_dialogue(&(app->modal), app); + } + if (!app->modal.is_initiated) { + switch (app->query_args->state) { + case S_ASK_SEVER_IP: + init_asa_modal(app); + break; + case S_ASK_LOGIN_TYPE: + init_login_option_modal(app); + break; + case S_ASK_LOGIN_USER: + init_login_credentials_modal(app); + break; + case S_PRINT_SERVER_MESSAGE: + init_server_message_modal(app); + break; + case S_FILE_DOWNLOAD: + init_dwn_pr_modal(app, false); + break; + case S_UPLOAD_FILE: + init_dwn_pr_modal(app, true); + break; + case S_UPLOAD_FILE_SELECT: + init_upload_dialogue_modal(app); + break; + case S_UPLOAD_PARAMS: + init_upload_props_dialogue_modal(app); + break; + case WAIT_SERVER_INIT: + case WAIT_SERVER: + case WAIT_REGISTER: + case WAIT_REGISTER_CONFIRMATION: + case WAIT_CLIENT: + case S_FILE_LIST: + case S_FILE_SELECT: + case S_UPLOAD_REQUESTED: + case S_ASK_USER_BEFORE_LOGIN: + case S_ERR: + case S_WAIT_SERVER: + case S_N_D: + case S_NEXT_ACTION: + if (app->query_args->notification != NULL) { + init_notification_modal(app); + } else { + return; + } + } + app->active_callback = app->modal.w.callback; + app->active_win = app->modal.win; + app->active_win_type = aw_modal; + app->active_widget = &(app->modal); + } + draw_dialogue(&(app->modal)); +} \ No newline at end of file diff --git a/src/draw-modal.h b/src/draw-modal.h new file mode 100644 index 0000000..52ee04c --- /dev/null +++ b/src/draw-modal.h @@ -0,0 +1,5 @@ +#ifndef DRAW_MODAL_H +#define DRAW_MODAL_H +#include +void app_draw_modal(app_t *app); +#endif \ No newline at end of file diff --git a/src/file_processor.c b/src/file_processor.c index 1ba4877..3cc7728 100644 --- a/src/file_processor.c +++ b/src/file_processor.c @@ -17,9 +17,9 @@ #include "file_processor.h" #include "main.h" #include "query.h" -#include "ui/widget/dialogue.h" -#include "ui/widget/file_list.h" -#include "ui/widget/progress_bar.h" +#include "widget/dialogue.h" +#include "widget/file_list.h" +#include "widget/progress_bar.h" static void fl_add(fl_item_t **cur, fl_item_t **start, char *fname); fl_item_t *fl_select(fl_item_t *start, int num); diff --git a/src/file_processor.h b/src/file_processor.h index 4345e45..8892ebf 100644 --- a/src/file_processor.h +++ b/src/file_processor.h @@ -1,7 +1,7 @@ #ifndef FILE_PROCESSOR_H #define FILE_PROCESSOR_H #include "main.h" -#include "ui/widget/file_list.h" +#include "widget/file_list.h" void file_list(file_args_t *f_args, query_args_t *q_args); void file_download(file_args_t *f_args, query_args_t *q_args); diff --git a/src/main.c b/src/main.c index 17101be..074e4a8 100644 --- a/src/main.c +++ b/src/main.c @@ -12,9 +12,7 @@ #include "connection.h" #include "main.h" #include "query.h" -#include "ui/app.h" -#include "ui/widget.h" -#include "ui/widget/file_list.h" +#include uint32_t m_id = 0; diff --git a/src/modals/CMakeLists.txt b/src/modals/CMakeLists.txt new file mode 100644 index 0000000..1e9f775 --- /dev/null +++ b/src/modals/CMakeLists.txt @@ -0,0 +1,18 @@ +add_library(modals STATIC) + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +target_link_libraries(modals PRIVATE widget ui-widget-core) + +target_sources(modals + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} +) + +target_include_directories(modals PRIVATE "../widget") +target_include_directories(modals PRIVATE "../ui-widget-core") \ No newline at end of file diff --git a/src/ui/modals/ask_server_addr.c b/src/modals/ask_server_addr.c similarity index 89% rename from src/ui/modals/ask_server_addr.c rename to src/modals/ask_server_addr.c index 75347da..c9d5100 100644 --- a/src/ui/modals/ask_server_addr.c +++ b/src/modals/ask_server_addr.c @@ -2,11 +2,14 @@ #include #include -#include "../../connection.h" -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" -#include "../widget/input.h" +// #include "../app.h" +// #include "../widget/dialogue.h" +// #include "../widget/group.h" +// #include "../widget/input.h" +// #include "../widget/button.h" + +#include +#include "../connection.h" typedef struct { button_t *element; diff --git a/src/ui/modals/ask_server_addr.h b/src/modals/ask_server_addr.h similarity index 86% rename from src/ui/modals/ask_server_addr.h rename to src/modals/ask_server_addr.h index 7b741a8..7d0efa2 100644 --- a/src/ui/modals/ask_server_addr.h +++ b/src/modals/ask_server_addr.h @@ -1,7 +1,7 @@ #ifndef ASK_SERVER_ADDR_H #define ASK_SERVER_ADDR_H -#include "../app.h" +#include #include "../widget/dialogue.h" dialogue_t *init_asa_modal(app_t *app); diff --git a/src/ui/modals/download_pr.c b/src/modals/download_pr.c similarity index 93% rename from src/ui/modals/download_pr.c rename to src/modals/download_pr.c index bfc3606..214eed9 100644 --- a/src/ui/modals/download_pr.c +++ b/src/modals/download_pr.c @@ -1,6 +1,4 @@ -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" +#include #include #include #include diff --git a/src/ui/modals/download_pr.h b/src/modals/download_pr.h similarity index 68% rename from src/ui/modals/download_pr.h rename to src/modals/download_pr.h index b5274e7..4d273f1 100644 --- a/src/ui/modals/download_pr.h +++ b/src/modals/download_pr.h @@ -1,8 +1,7 @@ #ifndef DOWNLOAD_PR_H #define DOWNLOAD_PR_H -#include "../widget/dialogue.h" -#include "../app.h" +#include dialogue_t *init_dwn_pr_modal(app_t *app, bool is_upload); diff --git a/src/ui/modals/login_credentials.c b/src/modals/login_credentials.c similarity index 95% rename from src/ui/modals/login_credentials.c rename to src/modals/login_credentials.c index 4104591..04046c4 100644 --- a/src/ui/modals/login_credentials.c +++ b/src/modals/login_credentials.c @@ -4,10 +4,7 @@ #include #include -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" -#include "../widget/input.h" +#include typedef struct { button_t *element; diff --git a/src/ui/modals/login_credentials.h b/src/modals/login_credentials.h similarity index 71% rename from src/ui/modals/login_credentials.h rename to src/modals/login_credentials.h index c4c06de..6922824 100644 --- a/src/ui/modals/login_credentials.h +++ b/src/modals/login_credentials.h @@ -1,8 +1,7 @@ #ifndef LOGIN_CREDENTIALS_MODAL_H #define LOGIN_CREDENTIALS_MODAL_H -#include "../app.h" -#include "../widget/dialogue.h" +#include dialogue_t *init_login_credentials_modal(app_t *app); diff --git a/src/ui/modals/login_option.c b/src/modals/login_option.c similarity index 94% rename from src/ui/modals/login_option.c rename to src/modals/login_option.c index fab7cef..8289a68 100644 --- a/src/ui/modals/login_option.c +++ b/src/modals/login_option.c @@ -2,9 +2,7 @@ #include #include -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" +#include typedef struct { button_t *element; diff --git a/src/ui/modals/login_option.h b/src/modals/login_option.h similarity index 69% rename from src/ui/modals/login_option.h rename to src/modals/login_option.h index 14414a4..c2eadb0 100644 --- a/src/ui/modals/login_option.h +++ b/src/modals/login_option.h @@ -1,8 +1,7 @@ #ifndef LOGIN_OPTION_MODAL_H #define LOGIN_OPTION_MODAL_H -#include "../widget/dialogue.h" -#include "../app.h" +#include dialogue_t *init_login_option_modal(app_t *app); diff --git a/src/ui/modals/notification.c b/src/modals/notification.c similarity index 93% rename from src/ui/modals/notification.c rename to src/modals/notification.c index 151a9ee..43cce0d 100644 --- a/src/ui/modals/notification.c +++ b/src/modals/notification.c @@ -3,9 +3,7 @@ #include #include -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" +#include typedef struct { button_t *element; diff --git a/src/ui/modals/notification.h b/src/modals/notification.h similarity index 66% rename from src/ui/modals/notification.h rename to src/modals/notification.h index 7f527fa..ccc9ca2 100644 --- a/src/ui/modals/notification.h +++ b/src/modals/notification.h @@ -1,8 +1,7 @@ #ifndef NOTIFICATION_H #define NOTIFICATION_H -#include "../app.h" -#include "../widget/dialogue.h" +#include dialogue_t *init_notification_modal(app_t *app); diff --git a/src/ui/modals/server_message.c b/src/modals/server_message.c similarity index 94% rename from src/ui/modals/server_message.c rename to src/modals/server_message.c index c9bcea8..9c312b4 100644 --- a/src/ui/modals/server_message.c +++ b/src/modals/server_message.c @@ -3,9 +3,7 @@ #include #include -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" +#include typedef struct { button_t *element; diff --git a/src/ui/modals/server_message.h b/src/modals/server_message.h similarity index 66% rename from src/ui/modals/server_message.h rename to src/modals/server_message.h index e4abf49..190f880 100644 --- a/src/ui/modals/server_message.h +++ b/src/modals/server_message.h @@ -1,8 +1,7 @@ #ifndef SERVER_MESSAGE_H #define SERVER_MESSAGE_H -#include "../widget/dialogue.h" -#include "../app.h" +#include void *init_server_message_modal(app_t *app); diff --git a/src/ui/modals/upload_dialogue.c b/src/modals/upload_dialogue.c similarity index 92% rename from src/ui/modals/upload_dialogue.c rename to src/modals/upload_dialogue.c index 3f4e0e8..ea9fbd3 100644 --- a/src/ui/modals/upload_dialogue.c +++ b/src/modals/upload_dialogue.c @@ -1,8 +1,5 @@ -#include "../../file_processor.h" -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/fs_file_list.h" -#include "../widget/group.h" +#include "../file_processor.h" +#include #include #include #include diff --git a/src/ui/modals/upload_dialogue.h b/src/modals/upload_dialogue.h similarity index 68% rename from src/ui/modals/upload_dialogue.h rename to src/modals/upload_dialogue.h index 27bbac6..61b278b 100644 --- a/src/ui/modals/upload_dialogue.h +++ b/src/modals/upload_dialogue.h @@ -1,8 +1,7 @@ #ifndef UPLOAD_DIALOGUE_H #define UPLOAD_DIALOGUE_H -#include "../widget/dialogue.h" -#include "../app.h" +#include dialogue_t *init_upload_dialogue_modal(app_t *app); diff --git a/src/ui/modals/upload_props_dialogue.c b/src/modals/upload_props_dialogue.c similarity index 95% rename from src/ui/modals/upload_props_dialogue.c rename to src/modals/upload_props_dialogue.c index 1251193..dc7be6d 100644 --- a/src/ui/modals/upload_props_dialogue.c +++ b/src/modals/upload_props_dialogue.c @@ -1,7 +1,4 @@ -#include "../app.h" -#include "../widget/dialogue.h" -#include "../widget/group.h" -#include "../widget/input.h" +#include #include #include #include diff --git a/src/ui/modals/upload_props_dialogue.h b/src/modals/upload_props_dialogue.h similarity index 71% rename from src/ui/modals/upload_props_dialogue.h rename to src/modals/upload_props_dialogue.h index 4412f2f..c382383 100644 --- a/src/ui/modals/upload_props_dialogue.h +++ b/src/modals/upload_props_dialogue.h @@ -1,8 +1,7 @@ #ifndef UPLOAD_PROPS_DIALOGUE_H #define UPLOAD_PROPS_DIALOGUE_H -#include "../widget/dialogue.h" -#include "../app.h" +#include dialogue_t *init_upload_props_dialogue_modal(app_t *app); diff --git a/src/query.c b/src/query.c index 97c4f92..1e81ea4 100644 --- a/src/query.c +++ b/src/query.c @@ -20,7 +20,8 @@ #include "file_processor.h" #include "main.h" #include "server.h" -#include "ui/app.h" +#include "app.h" +#include "draw-modal.h" static void wait_side(query_args_t *q_args); void user_request_description(query_args_t *q_args); diff --git a/src/query.h b/src/query.h index a068e68..d3af3dc 100644 --- a/src/query.h +++ b/src/query.h @@ -2,7 +2,7 @@ #define QUERY_H #include "main.h" -#include "ui/app.h" +#include "app.h" void query_loop(app_t *); void wait_register(query_args_t *q_args); diff --git a/src/server.c b/src/server.c index 383413e..0964d4b 100644 --- a/src/server.c +++ b/src/server.c @@ -1,5 +1,5 @@ #include "main.h" -#include "ui/widget/file_list.h" +#include "widget/file_list.h" #include #include #include diff --git a/src/ui-widget-core/CMakeLists.txt b/src/ui-widget-core/CMakeLists.txt new file mode 100644 index 0000000..1b043ad --- /dev/null +++ b/src/ui-widget-core/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(ui-widget-core STATIC) + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +target_sources(ui-widget-core + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} +) diff --git a/src/ui/widget.c b/src/ui-widget-core/ui-widget-core.c similarity index 99% rename from src/ui/widget.c rename to src/ui-widget-core/ui-widget-core.c index 9277614..481a981 100644 --- a/src/ui/widget.c +++ b/src/ui-widget-core/ui-widget-core.c @@ -1,4 +1,4 @@ -#include "widget.h" +#include "ui-widget-core.h" #include "../main.h" #include #include diff --git a/src/ui/widget.h b/src/ui-widget-core/ui-widget-core.h similarity index 96% rename from src/ui/widget.h rename to src/ui-widget-core/ui-widget-core.h index 6db125a..3a07e09 100644 --- a/src/ui/widget.h +++ b/src/ui-widget-core/ui-widget-core.h @@ -1,5 +1,5 @@ -#ifndef WIDGET_H -#define WIDGET_H +#ifndef WIDGET_CORE_H +#define WIDGET_CORE_H #include "../main.h" #include diff --git a/src/widget/CMakeLists.txt b/src/widget/CMakeLists.txt new file mode 100644 index 0000000..0cde073 --- /dev/null +++ b/src/widget/CMakeLists.txt @@ -0,0 +1,22 @@ +add_library(widget STATIC) + +file(GLOB M_HEADERS "*.h") +file(GLOB M_SOURCES "*.c") + +list(REMOVE_ITEM M_HEADERS "widget.h") + +target_sources(widget + PRIVATE + ${M_SOURCES} + PUBLIC + FILE_SET HEADERS + FILES + ${M_HEADERS} +) + +target_link_libraries(widget + PRIVATE + ui-widget-core +) + +target_include_directories(widget PRIVATE "../ui-widget-core") \ No newline at end of file diff --git a/src/ui/app.c b/src/widget/app.c similarity index 63% rename from src/ui/app.c rename to src/widget/app.c index 993234c..85c5e98 100644 --- a/src/ui/app.c +++ b/src/widget/app.c @@ -1,13 +1,4 @@ #include "app.h" -#include "modals/ask_server_addr.h" -#include "modals/download_pr.h" -#include "modals/login_credentials.h" -#include "modals/login_option.h" -#include "modals/notification.h" -#include "modals/server_message.h" -#include "modals/upload_dialogue.h" -#include "modals/upload_props_dialogue.h" -#include "widget/dialogue.h" #include #include #include @@ -137,64 +128,6 @@ void app_refresh(app_t *app) { doupdate(); } -void app_draw_modal(app_t *app) { - if (app->modal.needs_destroy || - (app->query_args->state == S_WAIT_SERVER && app->modal.is_initiated)) { - destroy_dialogue(&(app->modal), app); - } - if (!app->modal.is_initiated) { - switch (app->query_args->state) { - case S_ASK_SEVER_IP: - init_asa_modal(app); - break; - case S_ASK_LOGIN_TYPE: - init_login_option_modal(app); - break; - case S_ASK_LOGIN_USER: - init_login_credentials_modal(app); - break; - case S_PRINT_SERVER_MESSAGE: - init_server_message_modal(app); - break; - case S_FILE_DOWNLOAD: - init_dwn_pr_modal(app, false); - break; - case S_UPLOAD_FILE: - init_dwn_pr_modal(app, true); - break; - case S_UPLOAD_FILE_SELECT: - init_upload_dialogue_modal(app); - break; - case S_UPLOAD_PARAMS: - init_upload_props_dialogue_modal(app); - break; - case WAIT_SERVER_INIT: - case WAIT_SERVER: - case WAIT_REGISTER: - case WAIT_REGISTER_CONFIRMATION: - case WAIT_CLIENT: - case S_FILE_LIST: - case S_FILE_SELECT: - case S_UPLOAD_REQUESTED: - case S_ASK_USER_BEFORE_LOGIN: - case S_ERR: - case S_WAIT_SERVER: - case S_N_D: - case S_NEXT_ACTION: - if (app->query_args->notification != NULL) { - init_notification_modal(app); - } else { - return; - } - } - app->active_callback = app->modal.w.callback; - app->active_win = app->modal.win; - app->active_win_type = aw_modal; - app->active_widget = &(app->modal); - } - draw_dialogue(&(app->modal)); -} - void destroy_app(app_t *app, int32_t exit_code) { delwin(app->win); endwin(); diff --git a/src/ui/app.h b/src/widget/app.h similarity index 91% rename from src/ui/app.h rename to src/widget/app.h index c810972..18e9461 100644 --- a/src/ui/app.h +++ b/src/widget/app.h @@ -1,10 +1,11 @@ #ifndef N_APP_H #define N_APP_H +#include "../main.h" #include "../common.h" -#include "widget.h" -#include "widget/dialogue.h" +#include "dialogue.h" #include +#include typedef enum { modal_color_pair = 3, diff --git a/src/ui/widget/button.c b/src/widget/button.c similarity index 96% rename from src/ui/widget/button.c rename to src/widget/button.c index a3e8ebd..9f8a327 100644 --- a/src/ui/widget/button.c +++ b/src/widget/button.c @@ -3,8 +3,8 @@ #include #include -#include "../app.h" -#include "../widget.h" +#include "app.h" +#include #include "button.h" button_t *init_button(WINDOW **win, widget_t *w_parent, char *label) { diff --git a/src/ui/widget/button.h b/src/widget/button.h similarity index 84% rename from src/ui/widget/button.h rename to src/widget/button.h index ce44c57..f286cdb 100644 --- a/src/ui/widget/button.h +++ b/src/widget/button.h @@ -1,8 +1,8 @@ #ifndef BUTTON_H #define BUTTON_H -#include "../../main.h" -#include "../widget.h" +#include "../main.h" +#include #include typedef struct { @@ -14,4 +14,4 @@ typedef struct { button_t *init_button(WINDOW **win, widget_t *w_parent, char *label); int32_t draw_button(button_t *btn, uint32_t active_id); void destroy_button(button_t *btn); -#endif \ No newline at end of file +#endif diff --git a/src/ui/widget/dialogue.c b/src/widget/dialogue.c similarity index 99% rename from src/ui/widget/dialogue.c rename to src/widget/dialogue.c index ea8966d..110eb64 100644 --- a/src/ui/widget/dialogue.c +++ b/src/widget/dialogue.c @@ -3,7 +3,7 @@ #include #include -#include "../app.h" +#include "app.h" #include "dialogue.h" #include "file_list.h" #include "group.h" diff --git a/src/ui/widget/dialogue.h b/src/widget/dialogue.h similarity index 91% rename from src/ui/widget/dialogue.h rename to src/widget/dialogue.h index 87d62c3..0f876f9 100644 --- a/src/ui/widget/dialogue.h +++ b/src/widget/dialogue.h @@ -1,12 +1,11 @@ #ifndef DIALOGUE_H #define DIALOGUE_H -#include "../widget.h" -#include "../../common.h" -#include "button.h" +#include "../common.h" #include "group.h" #include #include +#include enum g_type { g_content, g_action }; @@ -33,4 +32,4 @@ void destroy_dialogue(dialogue_t *d, void *app); void dialogue_default_callback(callback_args_t *args); void dialogue_init_active_id(dialogue_t *dialogue); -#endif \ No newline at end of file +#endif diff --git a/src/ui/widget/file_list.c b/src/widget/file_list.c similarity index 97% rename from src/ui/widget/file_list.c rename to src/widget/file_list.c index 118a200..0860b2e 100644 --- a/src/ui/widget/file_list.c +++ b/src/widget/file_list.c @@ -1,8 +1,7 @@ #include "file_list.h" -#include "../../file_processor.h" -#include "../../fs.h" -#include "../app.h" -#include "progress_bar.h" +#include "../file_processor.h" +#include "../fs.h" +#include "app.h" #include #include #include diff --git a/src/ui/widget/file_list.h b/src/widget/file_list.h similarity index 95% rename from src/ui/widget/file_list.h rename to src/widget/file_list.h index d30c7fa..08078fa 100644 --- a/src/ui/widget/file_list.h +++ b/src/widget/file_list.h @@ -1,6 +1,6 @@ #ifndef FILE_LIST_H #define FILE_LIST_H -#include "../widget.h" +#include #include typedef struct { diff --git a/src/ui/widget/fs_file_list.c b/src/widget/fs_file_list.c similarity index 99% rename from src/ui/widget/fs_file_list.c rename to src/widget/fs_file_list.c index f21b0da..5983045 100644 --- a/src/ui/widget/fs_file_list.c +++ b/src/widget/fs_file_list.c @@ -1,5 +1,4 @@ #include "fs_file_list.h" -#include "progress_bar.h" #include #include #include diff --git a/src/ui/widget/fs_file_list.h b/src/widget/fs_file_list.h similarity index 96% rename from src/ui/widget/fs_file_list.h rename to src/widget/fs_file_list.h index db380d8..ae5ea46 100644 --- a/src/ui/widget/fs_file_list.h +++ b/src/widget/fs_file_list.h @@ -1,6 +1,6 @@ #ifndef FS_FILE_LIST_H #define FS_FILE_LIST_H -#include "../widget.h" +#include #include #include #include diff --git a/src/ui/widget/group.c b/src/widget/group.c similarity index 100% rename from src/ui/widget/group.c rename to src/widget/group.c diff --git a/src/ui/widget/group.h b/src/widget/group.h similarity index 97% rename from src/ui/widget/group.h rename to src/widget/group.h index 4516dc6..45f691f 100644 --- a/src/ui/widget/group.h +++ b/src/widget/group.h @@ -1,8 +1,8 @@ #ifndef GROUP_H #define GROUP_H -#include "../widget.h" #include +#include enum g_direction { horizontal, diff --git a/src/ui/widget/input.c b/src/widget/input.c similarity index 98% rename from src/ui/widget/input.c rename to src/widget/input.c index 6daaf39..19715eb 100644 --- a/src/ui/widget/input.c +++ b/src/widget/input.c @@ -3,8 +3,8 @@ #include #include -#include "../app.h" -#include "../widget.h" +#include "app.h" +#include #include "input.h" input_t *init_input(WINDOW **win, widget_t *w_parent, char *label, diff --git a/src/ui/widget/input.h b/src/widget/input.h similarity index 91% rename from src/ui/widget/input.h rename to src/widget/input.h index 10731a9..b5a6986 100644 --- a/src/ui/widget/input.h +++ b/src/widget/input.h @@ -1,8 +1,8 @@ #ifndef INPUT_H #define INPUT_H -#include "../../main.h" -#include "../widget.h" +#include "../main.h" +#include #include typedef struct { diff --git a/src/ui/widget/progress_bar.c b/src/widget/progress_bar.c similarity index 98% rename from src/ui/widget/progress_bar.c rename to src/widget/progress_bar.c index f81cd1e..dbd33e9 100644 --- a/src/ui/widget/progress_bar.c +++ b/src/widget/progress_bar.c @@ -1,5 +1,5 @@ #include "progress_bar.h" -#include "../app.h" +#include "app.h" #include #include #include diff --git a/src/ui/widget/progress_bar.h b/src/widget/progress_bar.h similarity index 91% rename from src/ui/widget/progress_bar.h rename to src/widget/progress_bar.h index 4279451..b1a5588 100644 --- a/src/ui/widget/progress_bar.h +++ b/src/widget/progress_bar.h @@ -1,6 +1,6 @@ #ifndef PROGRESS_BAR_H #define PROGRESS_BAR_H -#include "../widget.h" +#include typedef struct { widget_t w; uint32_t procent; diff --git a/src/widget/widget.h b/src/widget/widget.h new file mode 100644 index 0000000..2582210 --- /dev/null +++ b/src/widget/widget.h @@ -0,0 +1,12 @@ +#ifndef WIDGET_H +#define WIDGET_H +#include "app.h" +#include "button.h" +#include "dialogue.h" +#include "file_list.h" +#include "fs_file_list.h" +#include "group.h" +#include "input.h" +#include "progress_bar.h" + +#endif \ No newline at end of file