diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2016-02-10 22:26:33 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2016-02-10 22:26:33 +0100 | 
| commit | f3d11d516adad61a99ec1e1a7585f33c0773114e (patch) | |
| tree | b1788759e5732153a121960058ce9649a8b54a57 | |
| parent | dc64b30d981d7a368d7b11aef19ec60b6f05dbbd (diff) | |
add preliminary action-title support (#224)
| -rw-r--r-- | man/feh.pre | 12 | ||||
| -rw-r--r-- | src/imlib.c | 10 | ||||
| -rw-r--r-- | src/options.c | 12 | ||||
| -rw-r--r-- | 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; | 
