summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2016-02-10 22:26:33 +0100
committerDaniel Friesel <derf@finalrewind.org>2016-02-10 22:26:33 +0100
commitf3d11d516adad61a99ec1e1a7585f33c0773114e (patch)
treeb1788759e5732153a121960058ce9649a8b54a57
parentdc64b30d981d7a368d7b11aef19ec60b6f05dbbd (diff)
add preliminary action-title support (#224)
-rw-r--r--man/feh.pre12
-rw-r--r--src/imlib.c10
-rw-r--r--src/options.c12
-rw-r--r--src/options.h1
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;