From f3d11d516adad61a99ec1e1a7585f33c0773114e Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 10 Feb 2016 22:26:33 +0100 Subject: add preliminary action-title support (#224) --- man/feh.pre | 12 +++++++++++- src/imlib.c | 10 +++++----- src/options.c | 12 +++++++++++- src/options.h | 1 + 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/man/feh.pre b/man/feh.pre index 01f51c2..747c471 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -136,7 +136,7 @@ For animated images, only the first frame is shown. . .Bl -tag -width indent . -.It Cm -A , --action Oo Ar flag Oc Ns Ar action +.It Cm -A , --action Oo Ar flag Oc Ns Oo [ Ar title ] Oc Ns Ar action . Specify a shell command as an action to perform on the image. In slideshow or multiwindow mode, the action will be run when the action_0 key is pressed, in @@ -154,6 +154,16 @@ is will reload the current image instead of switching to the next one after executing the action. . +If +.No [ Ar title ] +is specified, +.Cm --draw-actions +will display +.Ar title +instead of +.Ar action +in the action list. +. .Pp . The action will be executed by /bin/sh. Use format specifiers to refer to diff --git a/src/imlib.c b/src/imlib.c index 6d6f979..e6e5b5c 100644 --- a/src/imlib.c +++ b/src/imlib.c @@ -1257,9 +1257,9 @@ void feh_draw_actions(winwidget w) for (i = 0; i < 10; i++) { if (opt.actions[i]) { - line = emalloc(strlen(opt.actions[i]) + 5); + line = emalloc(strlen(opt.action_titles[i]) + 5); strcpy(line, "0: "); - line = strcat(line, opt.actions[i]); + line = strcat(line, opt.action_titles[i]); gib_imlib_get_text_size(fn, line, NULL, &tw, &th, IMLIB_TEXT_TO_RIGHT); free(line); if (tw > max_tw) @@ -1289,13 +1289,13 @@ void feh_draw_actions(winwidget w) gib_imlib_text_draw(im, fn, NULL, 1, 1, "defined actions:", IMLIB_TEXT_TO_RIGHT, 255, 255, 255, 255); for (i = 0; i < 10; i++) { - if (opt.actions[i]) { + if (opt.action_titles[i]) { cur_action++; - line = emalloc(strlen(opt.actions[i]) + 5); + line = emalloc(strlen(opt.action_titles[i]) + 5); sprintf(index, "%d", i); strcpy(line, index); strcat(line, ": "); - strcat(line, opt.actions[i]); + strcat(line, opt.action_titles[i]); gib_imlib_text_draw(im, fn, NULL, 2, (cur_action * line_th) + 2, line, diff --git a/src/options.c b/src/options.c index 0a8bbdf..0265156 100644 --- a/src/options.c +++ b/src/options.c @@ -787,10 +787,20 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) static void check_options(void) { int i; + char *endptr; + for (i = 0; i < 10; i++) { if (opt.actions[i] && !opt.hold_actions[i] && (opt.actions[i][0] == ';')) { opt.hold_actions[i] = 1; - opt.actions[i] = &opt.actions[i][1]; + opt.actions[i] = opt.actions[i] + 1; + } + opt.action_titles[i] = opt.actions[i]; + if (opt.actions[i] && (opt.actions[i][0] == '[')) { + if ((endptr = strchr(opt.actions[i], ']')) != NULL) { + opt.action_titles[i] = opt.actions[i] + 1; + opt.actions[i] = endptr + 1; + *endptr = 0; + } } } diff --git a/src/options.h b/src/options.h index 78deaae..0052d5d 100644 --- a/src/options.h +++ b/src/options.h @@ -83,6 +83,7 @@ struct __fehoptions { char *title; char *thumb_title; char *actions[10]; + char *action_titles[10]; char *fontpath; char *filelistfile; char *menu_font; -- cgit v1.2.3