Simplified command arguments

This commit is contained in:
Bert Münnich 2015-01-11 11:38:28 +01:00
parent 808a10ed04
commit 5dc7993478
4 changed files with 123 additions and 142 deletions

View file

@ -1,4 +1,4 @@
VERSION := git-20150107 VERSION := git-20150111
PREFIX := /usr/local PREFIX := /usr/local
MANPREFIX := $(PREFIX)/share/man MANPREFIX := $(PREFIX)/share/man

View file

@ -55,7 +55,7 @@ extern int markcnt;
extern int prefix; extern int prefix;
extern bool extprefix; extern bool extprefix;
bool cg_quit(arg_t a) bool cg_quit(arg_t _)
{ {
unsigned int i; unsigned int i;
@ -69,7 +69,7 @@ bool cg_quit(arg_t a)
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
bool cg_switch_mode(arg_t a) bool cg_switch_mode(arg_t _)
{ {
if (mode == MODE_IMAGE) { if (mode == MODE_IMAGE) {
if (tns.thumbs == NULL) if (tns.thumbs == NULL)
@ -89,7 +89,7 @@ bool cg_switch_mode(arg_t a)
return true; return true;
} }
bool cg_toggle_fullscreen(arg_t a) bool cg_toggle_fullscreen(arg_t _)
{ {
win_toggle_fullscreen(&win); win_toggle_fullscreen(&win);
/* redraw after next ConfigureNotify event */ /* redraw after next ConfigureNotify event */
@ -101,7 +101,7 @@ bool cg_toggle_fullscreen(arg_t a)
return false; return false;
} }
bool cg_toggle_bar(arg_t a) bool cg_toggle_bar(arg_t _)
{ {
win_toggle_bar(&win); win_toggle_bar(&win);
if (mode == MODE_IMAGE) { if (mode == MODE_IMAGE) {
@ -114,13 +114,13 @@ bool cg_toggle_bar(arg_t a)
return true; return true;
} }
bool cg_prefix_external(arg_t a) bool cg_prefix_external(arg_t _)
{ {
extprefix = true; extprefix = true;
return false; return false;
} }
bool cg_reload_image(arg_t a) bool cg_reload_image(arg_t _)
{ {
if (mode == MODE_IMAGE) { if (mode == MODE_IMAGE) {
load_image(fileidx); load_image(fileidx);
@ -134,7 +134,7 @@ bool cg_reload_image(arg_t a)
return true; return true;
} }
bool cg_remove_image(arg_t a) bool cg_remove_image(arg_t _)
{ {
remove_file(fileidx, true); remove_file(fileidx, true);
if (mode == MODE_IMAGE) if (mode == MODE_IMAGE)
@ -144,7 +144,7 @@ bool cg_remove_image(arg_t a)
return true; return true;
} }
bool cg_first(arg_t a) bool cg_first(arg_t _)
{ {
if (mode == MODE_IMAGE && fileidx != 0) { if (mode == MODE_IMAGE && fileidx != 0) {
load_image(0); load_image(0);
@ -158,7 +158,7 @@ bool cg_first(arg_t a)
} }
} }
bool cg_n_or_last(arg_t a) bool cg_n_or_last(arg_t _)
{ {
int n = prefix != 0 && prefix - 1 < filecnt ? prefix - 1 : filecnt - 1; int n = prefix != 0 && prefix - 1 < filecnt ? prefix - 1 : filecnt - 1;
@ -174,20 +174,16 @@ bool cg_n_or_last(arg_t a)
} }
} }
bool cg_scroll_screen(arg_t a) bool cg_scroll_screen(arg_t dir)
{ {
direction_t dir = (direction_t) a;
if (mode == MODE_IMAGE) if (mode == MODE_IMAGE)
return img_pan(&img, dir, -1); return img_pan(&img, dir, -1);
else else
return tns_scroll(&tns, dir, true); return tns_scroll(&tns, dir, true);
} }
bool cg_zoom(arg_t a) bool cg_zoom(arg_t d)
{ {
long d = (long) a;
if (mode == MODE_THUMB) if (mode == MODE_THUMB)
return tns_zoom(&tns, d); return tns_zoom(&tns, d);
else if (d > 0) else if (d > 0)
@ -198,7 +194,7 @@ bool cg_zoom(arg_t a)
return false; return false;
} }
bool cg_toggle_image_mark(arg_t a) bool cg_toggle_image_mark(arg_t _)
{ {
files[fileidx].flags ^= FF_MARK; files[fileidx].flags ^= FF_MARK;
markcnt += files[fileidx].flags & FF_MARK ? 1 : -1; markcnt += files[fileidx].flags & FF_MARK ? 1 : -1;
@ -207,7 +203,7 @@ bool cg_toggle_image_mark(arg_t a)
return true; return true;
} }
bool cg_reverse_marks(arg_t a) bool cg_reverse_marks(arg_t _)
{ {
int i; int i;
@ -220,7 +216,7 @@ bool cg_reverse_marks(arg_t a)
return true; return true;
} }
bool cg_unmark_all(arg_t a) bool cg_unmark_all(arg_t _)
{ {
int i; int i;
@ -232,9 +228,8 @@ bool cg_unmark_all(arg_t a)
return true; return true;
} }
bool cg_navigate_marked(arg_t a) bool cg_navigate_marked(arg_t n)
{ {
long n = (long) a;
int d, i; int d, i;
int new = fileidx; int new = fileidx;
@ -260,9 +255,9 @@ bool cg_navigate_marked(arg_t a)
} }
} }
bool cg_change_gamma(arg_t a) bool cg_change_gamma(arg_t d)
{ {
if (img_change_gamma(&img, (long) a * (prefix > 0 ? prefix : 1))) { if (img_change_gamma(&img, d * (prefix > 0 ? prefix : 1))) {
if (mode == MODE_THUMB) if (mode == MODE_THUMB)
tns.dirty = true; tns.dirty = true;
return true; return true;
@ -271,10 +266,8 @@ bool cg_change_gamma(arg_t a)
} }
} }
bool ci_navigate(arg_t a) bool ci_navigate(arg_t n)
{ {
long n = (long) a;
if (prefix > 0) if (prefix > 0)
n *= prefix; n *= prefix;
n += fileidx; n += fileidx;
@ -291,18 +284,18 @@ bool ci_navigate(arg_t a)
} }
} }
bool ci_alternate(arg_t a) bool ci_alternate(arg_t _)
{ {
load_image(alternate); load_image(alternate);
return true; return true;
} }
bool ci_navigate_frame(arg_t a) bool ci_navigate_frame(arg_t d)
{ {
return !img.multi.animate && img_frame_navigate(&img, (long) a); return !img.multi.animate && img_frame_navigate(&img, d);
} }
bool ci_toggle_animation(arg_t a) bool ci_toggle_animation(arg_t _)
{ {
bool dirty = false; bool dirty = false;
@ -318,17 +311,13 @@ bool ci_toggle_animation(arg_t a)
return dirty; return dirty;
} }
bool ci_scroll(arg_t a) bool ci_scroll(arg_t dir)
{ {
direction_t dir = (direction_t) a;
return img_pan(&img, dir, prefix); return img_pan(&img, dir, prefix);
} }
bool ci_scroll_to_edge(arg_t a) bool ci_scroll_to_edge(arg_t dir)
{ {
direction_t dir = (direction_t) a;
return img_pan_edge(&img, dir); return img_pan_edge(&img, dir);
} }
@ -343,7 +332,7 @@ Bool is_motionnotify(Display *d, XEvent *e, XPointer a)
ox = x, oy = y; \ ox = x, oy = y; \
break break
bool ci_drag(arg_t a) bool ci_drag(arg_t _)
{ {
int dx = 0, dy = 0, i, ox, oy, x, y; int dx = 0, dy = 0, i, ox, oy, x, y;
unsigned int ui; unsigned int ui;
@ -402,48 +391,42 @@ bool ci_drag(arg_t a)
return true; return true;
} }
bool ci_set_zoom(arg_t a) bool ci_set_zoom(arg_t zl)
{ {
return img_zoom(&img, (prefix ? prefix : (long) a) / 100.0); return img_zoom(&img, (prefix ? prefix : zl) / 100.0);
} }
bool ci_fit_to_win(arg_t a) bool ci_fit_to_win(arg_t sm)
{ {
scalemode_t sm = (scalemode_t) a;
return img_fit_win(&img, sm); return img_fit_win(&img, sm);
} }
bool ci_rotate(arg_t a) bool ci_rotate(arg_t degree)
{ {
degree_t degree = (degree_t) a;
img_rotate(&img, degree); img_rotate(&img, degree);
return true; return true;
} }
bool ci_flip(arg_t a) bool ci_flip(arg_t dir)
{ {
flipdir_t dir = (flipdir_t) a;
img_flip(&img, dir); img_flip(&img, dir);
return true; return true;
} }
bool ci_toggle_antialias(arg_t a) bool ci_toggle_antialias(arg_t _)
{ {
img_toggle_antialias(&img); img_toggle_antialias(&img);
return true; return true;
} }
bool ci_toggle_alpha(arg_t a) bool ci_toggle_alpha(arg_t _)
{ {
img.alpha = !img.alpha; img.alpha = !img.alpha;
img.dirty = true; img.dirty = true;
return true; return true;
} }
bool ci_slideshow(arg_t a) bool ci_slideshow(arg_t _)
{ {
if (prefix > 0) { if (prefix > 0) {
img.ss.on = true; img.ss.on = true;
@ -458,14 +441,12 @@ bool ci_slideshow(arg_t a)
return true; return true;
} }
bool ct_move_sel(arg_t a) bool ct_move_sel(arg_t dir)
{ {
direction_t dir = (direction_t) a;
return tns_move_selection(&tns, dir, prefix); return tns_move_selection(&tns, dir, prefix);
} }
bool ct_reload_all(arg_t a) bool ct_reload_all(arg_t _)
{ {
tns_free(&tns); tns_free(&tns);
tns_init(&tns, files, &filecnt, &fileidx, &win); tns_init(&tns, files, &filecnt, &fileidx, &win);

View file

@ -23,7 +23,7 @@
#include "types.h" #include "types.h"
typedef void* arg_t; typedef int arg_t;
typedef bool (*cmd_f)(arg_t); typedef bool (*cmd_f)(arg_t);
#define G_CMD(c) g_##c, #define G_CMD(c) g_##c,

View file

@ -62,99 +62,99 @@ static const int thumb_sizes[] = { 32, 64, 96, 128, 160 };
/* keyboard mappings for image and thumbnail mode: */ /* keyboard mappings for image and thumbnail mode: */
static const keymap_t keys[] = { static const keymap_t keys[] = {
/* modifiers key function argument */ /* modifiers key function argument */
{ 0, XK_q, g_quit, (arg_t) None }, { 0, XK_q, g_quit, None },
{ 0, XK_Return, g_switch_mode, (arg_t) None }, { 0, XK_Return, g_switch_mode, None },
{ 0, XK_f, g_toggle_fullscreen, (arg_t) None }, { 0, XK_f, g_toggle_fullscreen, None },
{ 0, XK_b, g_toggle_bar, (arg_t) None }, { 0, XK_b, g_toggle_bar, None },
{ ControlMask, XK_x, g_prefix_external, (arg_t) None }, { ControlMask, XK_x, g_prefix_external, None },
{ 0, XK_g, g_first, (arg_t) None }, { 0, XK_g, g_first, None },
{ 0, XK_G, g_n_or_last, (arg_t) None }, { 0, XK_G, g_n_or_last, None },
{ 0, XK_r, g_reload_image, (arg_t) None }, { 0, XK_r, g_reload_image, None },
{ 0, XK_D, g_remove_image, (arg_t) None }, { 0, XK_D, g_remove_image, None },
{ ControlMask, XK_h, g_scroll_screen, (arg_t) DIR_LEFT }, { ControlMask, XK_h, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_Left, g_scroll_screen, (arg_t) DIR_LEFT }, { ControlMask, XK_Left, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_j, g_scroll_screen, (arg_t) DIR_DOWN }, { ControlMask, XK_j, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_Down, g_scroll_screen, (arg_t) DIR_DOWN }, { ControlMask, XK_Down, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_k, g_scroll_screen, (arg_t) DIR_UP }, { ControlMask, XK_k, g_scroll_screen, DIR_UP },
{ ControlMask, XK_Up, g_scroll_screen, (arg_t) DIR_UP }, { ControlMask, XK_Up, g_scroll_screen, DIR_UP },
{ ControlMask, XK_l, g_scroll_screen, (arg_t) DIR_RIGHT }, { ControlMask, XK_l, g_scroll_screen, DIR_RIGHT },
{ ControlMask, XK_Right, g_scroll_screen, (arg_t) DIR_RIGHT }, { ControlMask, XK_Right, g_scroll_screen, DIR_RIGHT },
{ 0, XK_plus, g_zoom, (arg_t) +1 }, { 0, XK_plus, g_zoom, +1 },
{ 0, XK_KP_Add, g_zoom, (arg_t) +1 }, { 0, XK_KP_Add, g_zoom, +1 },
{ 0, XK_minus, g_zoom, (arg_t) -1 }, { 0, XK_minus, g_zoom, -1 },
{ 0, XK_KP_Subtract, g_zoom, (arg_t) -1 }, { 0, XK_KP_Subtract, g_zoom, -1 },
{ 0, XK_m, g_toggle_image_mark, (arg_t) None }, { 0, XK_m, g_toggle_image_mark, None },
{ 0, XK_M, g_reverse_marks, (arg_t) None }, { 0, XK_M, g_reverse_marks, None },
{ ControlMask, XK_m, g_unmark_all, (arg_t) None }, { ControlMask, XK_m, g_unmark_all, None },
{ 0, XK_N, g_navigate_marked, (arg_t) +1 }, { 0, XK_N, g_navigate_marked, +1 },
{ 0, XK_P, g_navigate_marked, (arg_t) -1 }, { 0, XK_P, g_navigate_marked, -1 },
{ 0, XK_braceleft, g_change_gamma, (arg_t) -1 }, { 0, XK_braceleft, g_change_gamma, -1 },
{ 0, XK_braceright, g_change_gamma, (arg_t) +1 }, { 0, XK_braceright, g_change_gamma, +1 },
{ ControlMask, XK_g, g_change_gamma, (arg_t) 0 }, { ControlMask, XK_g, g_change_gamma, 0 },
{ 0, XK_h, t_move_sel, (arg_t) DIR_LEFT }, { 0, XK_h, t_move_sel, DIR_LEFT },
{ 0, XK_Left, t_move_sel, (arg_t) DIR_LEFT }, { 0, XK_Left, t_move_sel, DIR_LEFT },
{ 0, XK_j, t_move_sel, (arg_t) DIR_DOWN }, { 0, XK_j, t_move_sel, DIR_DOWN },
{ 0, XK_Down, t_move_sel, (arg_t) DIR_DOWN }, { 0, XK_Down, t_move_sel, DIR_DOWN },
{ 0, XK_k, t_move_sel, (arg_t) DIR_UP }, { 0, XK_k, t_move_sel, DIR_UP },
{ 0, XK_Up, t_move_sel, (arg_t) DIR_UP }, { 0, XK_Up, t_move_sel, DIR_UP },
{ 0, XK_l, t_move_sel, (arg_t) DIR_RIGHT }, { 0, XK_l, t_move_sel, DIR_RIGHT },
{ 0, XK_Right, t_move_sel, (arg_t) DIR_RIGHT }, { 0, XK_Right, t_move_sel, DIR_RIGHT },
{ 0, XK_R, t_reload_all, (arg_t) None }, { 0, XK_R, t_reload_all, None },
{ 0, XK_n, i_navigate, (arg_t) +1 }, { 0, XK_n, i_navigate, +1 },
{ 0, XK_n, i_scroll_to_edge, (arg_t) (DIR_LEFT | DIR_UP) }, { 0, XK_n, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_space, i_navigate, (arg_t) +1 }, { 0, XK_space, i_navigate, +1 },
{ 0, XK_p, i_navigate, (arg_t) -1 }, { 0, XK_p, i_navigate, -1 },
{ 0, XK_p, i_scroll_to_edge, (arg_t) (DIR_LEFT | DIR_UP) }, { 0, XK_p, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_BackSpace, i_navigate, (arg_t) -1 }, { 0, XK_BackSpace, i_navigate, -1 },
{ 0, XK_bracketright, i_navigate, (arg_t) +10 }, { 0, XK_bracketright, i_navigate, +10 },
{ 0, XK_bracketleft, i_navigate, (arg_t) -10 }, { 0, XK_bracketleft, i_navigate, -10 },
{ ControlMask, XK_6, i_alternate, (arg_t) None }, { ControlMask, XK_6, i_alternate, None },
{ ControlMask, XK_n, i_navigate_frame, (arg_t) +1 }, { ControlMask, XK_n, i_navigate_frame, +1 },
{ ControlMask, XK_p, i_navigate_frame, (arg_t) -1 }, { ControlMask, XK_p, i_navigate_frame, -1 },
{ ControlMask, XK_space, i_toggle_animation, (arg_t) None }, { ControlMask, XK_space, i_toggle_animation, None },
{ 0, XK_h, i_scroll, (arg_t) DIR_LEFT }, { 0, XK_h, i_scroll, DIR_LEFT },
{ 0, XK_Left, i_scroll, (arg_t) DIR_LEFT }, { 0, XK_Left, i_scroll, DIR_LEFT },
{ 0, XK_j, i_scroll, (arg_t) DIR_DOWN }, { 0, XK_j, i_scroll, DIR_DOWN },
{ 0, XK_Down, i_scroll, (arg_t) DIR_DOWN }, { 0, XK_Down, i_scroll, DIR_DOWN },
{ 0, XK_k, i_scroll, (arg_t) DIR_UP }, { 0, XK_k, i_scroll, DIR_UP },
{ 0, XK_Up, i_scroll, (arg_t) DIR_UP }, { 0, XK_Up, i_scroll, DIR_UP },
{ 0, XK_l, i_scroll, (arg_t) DIR_RIGHT }, { 0, XK_l, i_scroll, DIR_RIGHT },
{ 0, XK_Right, i_scroll, (arg_t) DIR_RIGHT }, { 0, XK_Right, i_scroll, DIR_RIGHT },
{ 0, XK_H, i_scroll_to_edge, (arg_t) DIR_LEFT }, { 0, XK_H, i_scroll_to_edge, DIR_LEFT },
{ 0, XK_J, i_scroll_to_edge, (arg_t) DIR_DOWN }, { 0, XK_J, i_scroll_to_edge, DIR_DOWN },
{ 0, XK_K, i_scroll_to_edge, (arg_t) DIR_UP }, { 0, XK_K, i_scroll_to_edge, DIR_UP },
{ 0, XK_L, i_scroll_to_edge, (arg_t) DIR_RIGHT }, { 0, XK_L, i_scroll_to_edge, DIR_RIGHT },
{ 0, XK_equal, i_set_zoom, (arg_t) 100 }, { 0, XK_equal, i_set_zoom, 100 },
{ 0, XK_w, i_fit_to_win, (arg_t) SCALE_DOWN }, { 0, XK_w, i_fit_to_win, SCALE_DOWN },
{ 0, XK_W, i_fit_to_win, (arg_t) SCALE_FIT }, { 0, XK_W, i_fit_to_win, SCALE_FIT },
{ 0, XK_e, i_fit_to_win, (arg_t) SCALE_WIDTH }, { 0, XK_e, i_fit_to_win, SCALE_WIDTH },
{ 0, XK_E, i_fit_to_win, (arg_t) SCALE_HEIGHT }, { 0, XK_E, i_fit_to_win, SCALE_HEIGHT },
{ 0, XK_less, i_rotate, (arg_t) DEGREE_270 }, { 0, XK_less, i_rotate, DEGREE_270 },
{ 0, XK_greater, i_rotate, (arg_t) DEGREE_90 }, { 0, XK_greater, i_rotate, DEGREE_90 },
{ 0, XK_question, i_rotate, (arg_t) DEGREE_180 }, { 0, XK_question, i_rotate, DEGREE_180 },
{ 0, XK_bar, i_flip, (arg_t) FLIP_HORIZONTAL }, { 0, XK_bar, i_flip, FLIP_HORIZONTAL },
{ 0, XK_underscore, i_flip, (arg_t) FLIP_VERTICAL }, { 0, XK_underscore, i_flip, FLIP_VERTICAL },
{ 0, XK_a, i_toggle_antialias, (arg_t) None }, { 0, XK_a, i_toggle_antialias, None },
{ 0, XK_A, i_toggle_alpha, (arg_t) None }, { 0, XK_A, i_toggle_alpha, None },
{ 0, XK_s, i_slideshow, (arg_t) None }, { 0, XK_s, i_slideshow, None },
}; };
/* mouse button mappings for image mode: */ /* mouse button mappings for image mode: */
static const button_t buttons[] = { static const button_t buttons[] = {
/* modifiers button function argument */ /* modifiers button function argument */
{ 0, 1, i_navigate, (arg_t) +1 }, { 0, 1, i_navigate, +1 },
{ 0, 3, i_navigate, (arg_t) -1 }, { 0, 3, i_navigate, -1 },
{ 0, 2, i_drag, (arg_t) None }, { 0, 2, i_drag, None },
{ 0, 4, i_scroll, (arg_t) DIR_UP }, { 0, 4, i_scroll, DIR_UP },
{ 0, 5, i_scroll, (arg_t) DIR_DOWN }, { 0, 5, i_scroll, DIR_DOWN },
{ ShiftMask, 4, i_scroll, (arg_t) DIR_LEFT }, { ShiftMask, 4, i_scroll, DIR_LEFT },
{ ShiftMask, 5, i_scroll, (arg_t) DIR_RIGHT }, { ShiftMask, 5, i_scroll, DIR_RIGHT },
{ 0, 6, i_scroll, (arg_t) DIR_LEFT }, { 0, 6, i_scroll, DIR_LEFT },
{ 0, 7, i_scroll, (arg_t) DIR_RIGHT }, { 0, 7, i_scroll, DIR_RIGHT },
{ ControlMask, 4, g_zoom, (arg_t) +1 }, { ControlMask, 4, g_zoom, +1 },
{ ControlMask, 5, g_zoom, (arg_t) -1 }, { ControlMask, 5, g_zoom, -1 },
}; };
#endif #endif