From f15cde15550aaa8118b56709b67178a858f64012 Mon Sep 17 00:00:00 2001 From: Krow Savcik Date: Thu, 11 Jan 2024 16:23:38 +0200 Subject: feature: picking file Now you can pick a file for import/export/open/save with an external command. --- src/cdraw.h | 1 + src/user.c | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/cdraw.h b/src/cdraw.h index 0f57a7f..38bb058 100644 --- a/src/cdraw.h +++ b/src/cdraw.h @@ -10,6 +10,7 @@ extern SDL_Window *win; extern void *ren; extern void *def_palette; extern const char *def_palette_path; +extern const char *cmd_file_picker; extern int mouseX, mouseY; extern const unsigned int back_c; diff --git a/src/user.c b/src/user.c index ab86010..0261c65 100644 --- a/src/user.c +++ b/src/user.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -86,7 +87,6 @@ user_canvas_open(const Arg *x) void user_canvas_export_png(const Arg *x) { - puts("called"); char line[1024]; if (cur_canvas == NULL) return; choose_file_path("Image File Name (export): ", line); @@ -226,13 +226,19 @@ user_testing_reload_tex(const Arg *_x) static void choose_file_path(const char *prompt, char *input) { - printf(prompt); - fflush(stdout); + FILE *ft; + ft = cmd_file_picker == NULL ? NULL : popen(cmd_file_picker, "r"); + input[0] = '\0'; + + if (ft == NULL) { +/*TODO: error; for now using terminal input as backup*/ + printf(prompt); + fflush(stdout); + ft = stdin; + } - do { - fgets(input, 1024, stdin); - } while (strlen(input) < 4); + while (fgets(input, 1024, ft) != NULL && strlen(input) < 4); input[strcspn(input, "\n")] = '\0'; - printf("%s\n", input); + if (ft != stdin) pclose(ft); } -- cgit v1.2.3