Renamed key/mouse commands to indicate supported modes
This commit is contained in:
		
							parent
							
								
									535c18afda
								
							
						
					
					
						commit
						1c68a34463
					
				
							
								
								
									
										162
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								config.h
									
									
									
									
									
								
							| @ -1,25 +1,29 @@ | |||||||
| #ifdef _WINDOW_CONFIG | #ifdef _WINDOW_CONFIG | ||||||
| 
 | 
 | ||||||
| /* default window dimensions (overwritten via -g option):      */ | /* default window dimensions (overwritten via -g option): */ | ||||||
| enum { WIN_WIDTH  = 800, WIN_HEIGHT = 600 }; | enum { | ||||||
|  | 	WIN_WIDTH  = 800, | ||||||
|  | 	WIN_HEIGHT = 600 | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| /* default color for window background:                        *
 | /* default color for window background: */ | ||||||
|  * (see X(7) "COLOR NAMES" section for valid values)           */ |  | ||||||
| static const char * const BG_COLOR  = "#777777"; | static const char * const BG_COLOR  = "#777777"; | ||||||
| /* default color for thumbnail selection:                      */ | /* default color for thumbnail selection: */ | ||||||
| static const char * const SEL_COLOR = "#DDDDDD"; | static const char * const SEL_COLOR = "#DDDDDD"; | ||||||
|  | /* (see X(7) section "COLOR NAMES" for valid values) */ | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| #ifdef _IMAGE_CONFIG | #ifdef _IMAGE_CONFIG | ||||||
| 
 | 
 | ||||||
| /* how should images be scaled when they are loaded?:          *
 | /* how should images be scaled when they are loaded?
 | ||||||
|  * (also controllable via -d/-s/-Z/-z options)                 * |  * (also controllable via -d/-s/-Z/-z options) | ||||||
|  *   SCALE_DOWN: 100%, but fit large images into window,       * |  *   SCALE_DOWN: 100%, but fit large images into window, | ||||||
|  *   SCALE_FIT:  fit all images into window,                   * |  *   SCALE_FIT:  fit all images into window, | ||||||
|  *   SCALE_ZOOM: use current zoom level, 100% at startup       */ |  *   SCALE_ZOOM: use current zoom level, 100% at startup | ||||||
|  |  */ | ||||||
| static const scalemode_t SCALE_MODE = SCALE_DOWN; | static const scalemode_t SCALE_MODE = SCALE_DOWN; | ||||||
| 
 | 
 | ||||||
| /* levels (percent) to use when zooming via '-' and '+':       */ | /* levels (percent) to use when zooming via '-' and '+': */ | ||||||
| static const float zoom_levels[] = { | static const float zoom_levels[] = { | ||||||
| 	 12.5,  25.0,  50.0,  75.0, | 	 12.5,  25.0,  50.0,  75.0, | ||||||
| 	100.0, 150.0, 200.0, 400.0, 800.0 | 	100.0, 150.0, 200.0, 400.0, 800.0 | ||||||
| @ -28,92 +32,92 @@ static const float zoom_levels[] = { | |||||||
| #endif | #endif | ||||||
| #ifdef _THUMBS_CONFIG | #ifdef _THUMBS_CONFIG | ||||||
| 
 | 
 | ||||||
| /* default dimension of thumbnails (width == height):          */ | /* default dimension of thumbnails (width == height): */ | ||||||
| enum { THUMB_SIZE = 60 }; | enum { THUMB_SIZE = 60 }; | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| #ifdef _MAPPINGS_CONFIG | #ifdef _MAPPINGS_CONFIG | ||||||
| 
 | 
 | ||||||
| /* keyboard mappings for image and thumbnail mode:             */ | /* keyboard mappings for image and thumbnail mode: */ | ||||||
| static const keymap_t keys[] = { | static const keymap_t keys[] = { | ||||||
| 	/* ctrl    key              function           argument      */ | 	/* ctrl   key               function              argument */ | ||||||
| 	{ False,   XK_q,            quit,              (arg_t) None }, | 	{ False,  XK_q,             it_quit,              (arg_t) None }, | ||||||
| 	{ False,   XK_r,            reload,            (arg_t) None }, | 	{ False,  XK_Return,        it_switch_mode,       (arg_t) None }, | ||||||
| 	{ False,   XK_f,            toggle_fullscreen, (arg_t) None }, | 	{ False,  XK_f,             it_toggle_fullscreen, (arg_t) None }, | ||||||
| 	{ False,   XK_a,            toggle_antialias,  (arg_t) None }, |  | ||||||
| 	{ False,   XK_A,            toggle_alpha,      (arg_t) None }, |  | ||||||
| 	{ False,   XK_Return,       switch_mode,       (arg_t) None }, |  | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_g,            first,             (arg_t) None }, | 	{ False,  XK_r,             it_reload_image,      (arg_t) None }, | ||||||
| 	{ False,   XK_G,            last,              (arg_t) None }, | 	{ False,  XK_D,             it_remove_image,      (arg_t) None }, | ||||||
| 	{ False,   XK_n,            navigate,          (arg_t) +1 }, |  | ||||||
| 	{ False,   XK_space,        navigate,          (arg_t) +1 }, |  | ||||||
| 	{ False,   XK_p,            navigate,          (arg_t) -1 }, |  | ||||||
| 	{ False,   XK_BackSpace,    navigate,          (arg_t) -1 }, |  | ||||||
| 	{ False,   XK_bracketright, navigate,          (arg_t) +10 }, |  | ||||||
| 	{ False,   XK_bracketleft,  navigate,          (arg_t) -10 }, |  | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_D,            remove_image,      (arg_t) None }, | 	{ False,  XK_n,             i_navigate,           (arg_t) +1 }, | ||||||
|  | 	{ False,  XK_space,         i_navigate,           (arg_t) +1 }, | ||||||
|  | 	{ False,  XK_p,             i_navigate,           (arg_t) -1 }, | ||||||
|  | 	{ False,  XK_BackSpace,     i_navigate,           (arg_t) -1 }, | ||||||
|  | 	{ False,  XK_bracketright,  i_navigate,           (arg_t) +10 }, | ||||||
|  | 	{ False,  XK_bracketleft,   i_navigate,           (arg_t) -10 }, | ||||||
|  | 	{ False,  XK_g,             it_first,             (arg_t) None }, | ||||||
|  | 	{ False,  XK_G,             it_last,              (arg_t) None }, | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_h,            move,              (arg_t) DIR_LEFT }, | 	{ False,  XK_h,             it_move,              (arg_t) DIR_LEFT }, | ||||||
| 	{ False,   XK_Left,         move,              (arg_t) DIR_LEFT }, | 	{ False,  XK_Left,          it_move,              (arg_t) DIR_LEFT }, | ||||||
| 	{ False,   XK_j,            move,              (arg_t) DIR_DOWN }, | 	{ False,  XK_j,             it_move,              (arg_t) DIR_DOWN }, | ||||||
| 	{ False,   XK_Down,         move,              (arg_t) DIR_DOWN }, | 	{ False,  XK_Down,          it_move,              (arg_t) DIR_DOWN }, | ||||||
| 	{ False,   XK_k,            move,              (arg_t) DIR_UP }, | 	{ False,  XK_k,             it_move,              (arg_t) DIR_UP }, | ||||||
| 	{ False,   XK_Up,           move,              (arg_t) DIR_UP }, | 	{ False,  XK_Up,            it_move,              (arg_t) DIR_UP }, | ||||||
| 	{ False,   XK_l,            move,              (arg_t) DIR_RIGHT }, | 	{ False,  XK_l,             it_move,              (arg_t) DIR_RIGHT }, | ||||||
| 	{ False,   XK_Right,        move,              (arg_t) DIR_RIGHT }, | 	{ False,  XK_Right,         it_move,              (arg_t) DIR_RIGHT }, | ||||||
| 
 | 
 | ||||||
| 	{ True,    XK_h,            pan_screen,        (arg_t) DIR_LEFT }, | 	{ True,   XK_h,             i_pan_screen,         (arg_t) DIR_LEFT }, | ||||||
| 	{ True,    XK_Left,         pan_screen,        (arg_t) DIR_LEFT }, | 	{ True,   XK_Left,          i_pan_screen,         (arg_t) DIR_LEFT }, | ||||||
| 	{ True,    XK_j,            pan_screen,        (arg_t) DIR_DOWN }, | 	{ True,   XK_j,             i_pan_screen,         (arg_t) DIR_DOWN }, | ||||||
| 	{ True,    XK_Down,         pan_screen,        (arg_t) DIR_DOWN }, | 	{ True,   XK_Down,          i_pan_screen,         (arg_t) DIR_DOWN }, | ||||||
| 	{ True,    XK_k,            pan_screen,        (arg_t) DIR_UP }, | 	{ True,   XK_k,             i_pan_screen,         (arg_t) DIR_UP }, | ||||||
| 	{ True,    XK_Up,           pan_screen,        (arg_t) DIR_UP }, | 	{ True,   XK_Up,            i_pan_screen,         (arg_t) DIR_UP }, | ||||||
| 	{ True,    XK_l,            pan_screen,        (arg_t) DIR_RIGHT }, | 	{ True,   XK_l,             i_pan_screen,         (arg_t) DIR_RIGHT }, | ||||||
| 	{ True,    XK_Right,        pan_screen,        (arg_t) DIR_RIGHT }, | 	{ True,   XK_Right,         i_pan_screen,         (arg_t) DIR_RIGHT }, | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_H,            pan_edge,          (arg_t) DIR_LEFT }, | 	{ False,  XK_H,             i_pan_edge,           (arg_t) DIR_LEFT }, | ||||||
| 	{ False,   XK_J,            pan_edge,          (arg_t) DIR_DOWN }, | 	{ False,  XK_J,             i_pan_edge,           (arg_t) DIR_DOWN }, | ||||||
| 	{ False,   XK_K,            pan_edge,          (arg_t) DIR_UP }, | 	{ False,  XK_K,             i_pan_edge,           (arg_t) DIR_UP }, | ||||||
| 	{ False,   XK_L,            pan_edge,          (arg_t) DIR_RIGHT }, | 	{ False,  XK_L,             i_pan_edge,           (arg_t) DIR_RIGHT }, | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_plus,         zoom,              (arg_t) +1 }, | 	{ False,  XK_plus,          i_zoom,               (arg_t) +1 }, | ||||||
| 	{ False,   XK_equal,        zoom,              (arg_t) +1 }, | 	{ False,  XK_equal,         i_zoom,               (arg_t) +1 }, | ||||||
| 	{ False,   XK_KP_Add,       zoom,              (arg_t) +1 }, | 	{ False,  XK_KP_Add,        i_zoom,               (arg_t) +1 }, | ||||||
| 	{ False,   XK_minus,        zoom,              (arg_t) -1 }, | 	{ False,  XK_minus,         i_zoom,               (arg_t) -1 }, | ||||||
| 	{ False,   XK_KP_Subtract,  zoom,              (arg_t) -1 }, | 	{ False,  XK_KP_Subtract,   i_zoom,               (arg_t) -1 }, | ||||||
| 	{ False,   XK_0,            zoom,              (arg_t) None }, | 	{ False,  XK_0,             i_zoom,               (arg_t) None }, | ||||||
| 	{ False,   XK_KP_0,         zoom,              (arg_t) None }, | 	{ False,  XK_KP_0,          i_zoom,               (arg_t) None }, | ||||||
| 	{ False,   XK_w,            fit_to_win,        (arg_t) None }, | 	{ False,  XK_w,             i_fit_to_win,         (arg_t) None }, | ||||||
| 	{ False,   XK_W,            fit_to_img,        (arg_t) None }, | 	{ False,  XK_W,             i_fit_to_img,         (arg_t) None }, | ||||||
| 
 | 
 | ||||||
| 	{ False,   XK_less,         rotate,            (arg_t) DIR_LEFT }, | 	{ False,  XK_less,          i_rotate,             (arg_t) DIR_LEFT }, | ||||||
| 	{ False,   XK_greater,      rotate,            (arg_t) DIR_RIGHT }, | 	{ False,  XK_greater,       i_rotate,             (arg_t) DIR_RIGHT }, | ||||||
| 
 | 
 | ||||||
| 	                            /* open the current image with given program:  */ | 	{ False,  XK_a,             i_toggle_antialias,   (arg_t) None }, | ||||||
| 	{ True,    XK_g,            open_with,         (arg_t) "gimp" }, | 	{ False,  XK_A,             i_toggle_alpha,       (arg_t) None }, | ||||||
| 
 | 
 | ||||||
| 	                            /* run shell command line on the current file,
 | 	/* open current image with given program: */ | ||||||
| 	                             * '#' is replaced by filename:                */ | 	{ True,   XK_g,             it_open_with,         (arg_t) "gimp" }, | ||||||
| 	{ True,    XK_less,         run_command,       (arg_t) "mogrify -rotate -90 #" }, | 
 | ||||||
| 	{ True,    XK_greater,      run_command,       (arg_t) "mogrify -rotate +90 #" }, | 	/* run shell command line on current file ('#' is replaced by file path: */ | ||||||
| 	{ True,    XK_comma,        run_command,       (arg_t) "jpegtran -rotate 270 -copy all -outfile # #" }, | 	{ True,   XK_less,          it_shell_cmd,         (arg_t) "mogrify -rotate -90 #" }, | ||||||
| 	{ True,    XK_period,       run_command,       (arg_t) "jpegtran -rotate 90 -copy all -outfile # #" }, | 	{ True,   XK_greater,       it_shell_cmd,         (arg_t) "mogrify -rotate +90 #" }, | ||||||
|  | 	{ True,   XK_comma,         it_shell_cmd,         (arg_t) "jpegtran -rotate 270 -copy all -outfile # #" }, | ||||||
|  | 	{ True,   XK_period,        it_shell_cmd,         (arg_t) "jpegtran -rotate 90 -copy all -outfile # #" }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* mouse button mappings for image mode:                       */ | /* mouse button mappings for image mode: */ | ||||||
| static const button_t buttons[] = { | static const button_t buttons[] = { | ||||||
| 	/* ctrl    shift    button       function      argument      */ | 	/* ctrl   shift   button    function              argument */ | ||||||
| 	{ False,   False,   Button1,     navigate,     (arg_t) +1 }, | 	{ False,  False,  Button1,  i_navigate,           (arg_t) +1 }, | ||||||
| 	{ False,   False,   Button3,     navigate,     (arg_t) -1 }, | 	{ False,  False,  Button3,  i_navigate,           (arg_t) -1 }, | ||||||
| 	{ False,   False,   Button2,     drag,         (arg_t) None }, | 	{ False,  False,  Button2,  i_drag,               (arg_t) None }, | ||||||
| 	{ False,   False,   Button4,     move,         (arg_t) DIR_UP }, | 	{ False,  False,  Button4,  it_move,              (arg_t) DIR_UP }, | ||||||
| 	{ False,   False,   Button5,     move,         (arg_t) DIR_DOWN }, | 	{ False,  False,  Button5,  it_move,              (arg_t) DIR_DOWN }, | ||||||
| 	{ False,   True,    Button4,     move,         (arg_t) DIR_LEFT }, | 	{ False,  True,   Button4,  it_move,              (arg_t) DIR_LEFT }, | ||||||
| 	{ False,   True,    Button5,     move,         (arg_t) DIR_RIGHT }, | 	{ False,  True,   Button5,  it_move,              (arg_t) DIR_RIGHT }, | ||||||
| 	{ True,    False,   Button4,     zoom,         (arg_t) +1 }, | 	{ True,   False,  Button4,  i_zoom,               (arg_t) +1 }, | ||||||
| 	{ True,    False,   Button5,     zoom,         (arg_t) -1 }, | 	{ True,   False,  Button5,  i_zoom,               (arg_t) -1 }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
							
								
								
									
										175
									
								
								events.c
									
									
									
									
									
								
							
							
						
						
									
										175
									
								
								events.c
									
									
									
									
									
								
							| @ -93,7 +93,7 @@ void on_keypress(XKeyEvent *kev) { | |||||||
| 
 | 
 | ||||||
| 	for (i = 0; i < LEN(keys); i++) { | 	for (i = 0; i < LEN(keys); i++) { | ||||||
| 		if (keys[i].ksym == ksym && keymask(&keys[i], kev->state)) { | 		if (keys[i].ksym == ksym && keymask(&keys[i], kev->state)) { | ||||||
| 			if (keys[i].handler && keys[i].handler(keys[i].arg)) | 			if (keys[i].cmd && keys[i].cmd(keys[i].arg)) | ||||||
| 				redraw(); | 				redraw(); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| @ -114,7 +114,7 @@ void on_buttonpress(XButtonEvent *bev) { | |||||||
| 			if (buttons[i].button == bev->button && | 			if (buttons[i].button == bev->button && | ||||||
| 			    buttonmask(&buttons[i], bev->state)) | 			    buttonmask(&buttons[i], bev->state)) | ||||||
| 			{ | 			{ | ||||||
| 				if (buttons[i].handler && buttons[i].handler(buttons[i].arg)) | 				if (buttons[i].cmd && buttons[i].cmd(buttons[i].arg)) | ||||||
| 					redraw(); | 					redraw(); | ||||||
| 				return; | 				return; | ||||||
| 			} | 			} | ||||||
| @ -241,51 +241,14 @@ void run() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* handler functions for key and button mappings: */ | /* command functions for key and button mappings: */ | ||||||
| 
 | 
 | ||||||
| int quit(arg_t a) { | int it_quit(arg_t a) { | ||||||
| 	cleanup(); | 	cleanup(); | ||||||
| 	exit(0); | 	exit(0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int reload(arg_t a) { | int it_switch_mode(arg_t a) { | ||||||
| 	if (mode == MODE_NORMAL) { |  | ||||||
| 		load_image(fileidx); |  | ||||||
| 		return 1; |  | ||||||
| 	} else { |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int toggle_fullscreen(arg_t a) { |  | ||||||
| 	win_toggle_fullscreen(&win); |  | ||||||
| 	if (mode == MODE_NORMAL) |  | ||||||
| 		img.checkpan = 1; |  | ||||||
| 	else |  | ||||||
| 		tns.dirty = 1; |  | ||||||
| 	timo_redraw = TO_WIN_RESIZE; |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int toggle_antialias(arg_t a) { |  | ||||||
| 	if (mode == MODE_NORMAL) { |  | ||||||
| 		img_toggle_antialias(&img); |  | ||||||
| 		return 1; |  | ||||||
| 	} else { |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int toggle_alpha(arg_t a) { |  | ||||||
| 	if (mode == MODE_NORMAL) { |  | ||||||
| 		img.alpha ^= 1; |  | ||||||
| 		return 1; |  | ||||||
| 	} else { |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int switch_mode(arg_t a) { |  | ||||||
| 	if (mode == MODE_NORMAL) { | 	if (mode == MODE_NORMAL) { | ||||||
| 		if (!tns.thumbs) | 		if (!tns.thumbs) | ||||||
| 			tns_init(&tns, filecnt); | 			tns_init(&tns, filecnt); | ||||||
| @ -303,7 +266,45 @@ int switch_mode(arg_t a) { | |||||||
| 	return 1; | 	return 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int navigate(arg_t a) { | int it_toggle_fullscreen(arg_t a) { | ||||||
|  | 	win_toggle_fullscreen(&win); | ||||||
|  | 	if (mode == MODE_NORMAL) | ||||||
|  | 		img.checkpan = 1; | ||||||
|  | 	else | ||||||
|  | 		tns.dirty = 1; | ||||||
|  | 	timo_redraw = TO_WIN_RESIZE; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int it_reload_image(arg_t a) { | ||||||
|  | 	if (mode == MODE_NORMAL) { | ||||||
|  | 		load_image(fileidx); | ||||||
|  | 	} else if (!tns_load(&tns, tns.sel, &files[tns.sel], 0)) { | ||||||
|  | 		remove_file(tns.sel, 0); | ||||||
|  | 		tns.dirty = 1; | ||||||
|  | 		if (tns.sel >= tns.cnt) | ||||||
|  | 			tns.sel = tns.cnt - 1; | ||||||
|  | 	} | ||||||
|  | 	return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int it_remove_image(arg_t a) { | ||||||
|  | 	if (mode == MODE_NORMAL) { | ||||||
|  | 		remove_file(fileidx, 1); | ||||||
|  | 		load_image(fileidx >= filecnt ? filecnt - 1 : fileidx); | ||||||
|  | 		return 1; | ||||||
|  | 	} else if (tns.sel < tns.cnt) { | ||||||
|  | 		remove_file(tns.sel, 1); | ||||||
|  | 		tns.dirty = 1; | ||||||
|  | 		if (tns.sel >= tns.cnt) | ||||||
|  | 			tns.sel = tns.cnt - 1; | ||||||
|  | 		return 1; | ||||||
|  | 	} else { | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int i_navigate(arg_t a) { | ||||||
| 	int n = (int) a; | 	int n = (int) a; | ||||||
| 
 | 
 | ||||||
| 	if (mode == MODE_NORMAL) { | 	if (mode == MODE_NORMAL) { | ||||||
| @ -321,7 +322,7 @@ int navigate(arg_t a) { | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int first(arg_t a) { | int it_first(arg_t a) { | ||||||
| 	if (mode == MODE_NORMAL && fileidx != 0) { | 	if (mode == MODE_NORMAL && fileidx != 0) { | ||||||
| 		load_image(0); | 		load_image(0); | ||||||
| 		return 1; | 		return 1; | ||||||
| @ -334,7 +335,7 @@ int first(arg_t a) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int last(arg_t a) { | int it_last(arg_t a) { | ||||||
| 	if (mode == MODE_NORMAL && fileidx != filecnt - 1) { | 	if (mode == MODE_NORMAL && fileidx != filecnt - 1) { | ||||||
| 		load_image(filecnt - 1); | 		load_image(filecnt - 1); | ||||||
| 		return 1; | 		return 1; | ||||||
| @ -347,23 +348,7 @@ int last(arg_t a) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int remove_image(arg_t a) { | int it_move(arg_t a) { | ||||||
| 	if (mode == MODE_NORMAL) { |  | ||||||
| 		remove_file(fileidx, 1); |  | ||||||
| 		load_image(fileidx >= filecnt ? filecnt - 1 : fileidx); |  | ||||||
| 		return 1; |  | ||||||
| 	} else if (tns.sel < tns.cnt) { |  | ||||||
| 		remove_file(tns.sel, 1); |  | ||||||
| 		tns.dirty = 1; |  | ||||||
| 		if (tns.sel >= tns.cnt) |  | ||||||
| 			tns.sel = tns.cnt - 1; |  | ||||||
| 		return 1; |  | ||||||
| 	} else { |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int move(arg_t a) { |  | ||||||
| 	direction_t dir = (direction_t) a; | 	direction_t dir = (direction_t) a; | ||||||
| 
 | 
 | ||||||
| 	if (mode == MODE_NORMAL) | 	if (mode == MODE_NORMAL) | ||||||
| @ -372,7 +357,7 @@ int move(arg_t a) { | |||||||
| 		return tns_move_selection(&tns, &win, dir); | 		return tns_move_selection(&tns, &win, dir); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int pan_screen(arg_t a) { | int i_pan_screen(arg_t a) { | ||||||
| 	direction_t dir = (direction_t) a; | 	direction_t dir = (direction_t) a; | ||||||
| 
 | 
 | ||||||
| 	if (mode == MODE_NORMAL) | 	if (mode == MODE_NORMAL) | ||||||
| @ -381,7 +366,7 @@ int pan_screen(arg_t a) { | |||||||
| 		return 0; | 		return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int pan_edge(arg_t a) { | int i_pan_edge(arg_t a) { | ||||||
| 	direction_t dir = (direction_t) a; | 	direction_t dir = (direction_t) a; | ||||||
| 
 | 
 | ||||||
| 	if (mode == MODE_NORMAL) | 	if (mode == MODE_NORMAL) | ||||||
| @ -390,12 +375,12 @@ int pan_edge(arg_t a) { | |||||||
| 		return 0; | 		return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Xlib helper function for drag() */ | /* Xlib helper function for i_drag() */ | ||||||
| Bool is_motionnotify(Display *d, XEvent *e, XPointer a) { | Bool is_motionnotify(Display *d, XEvent *e, XPointer a) { | ||||||
| 	return e != NULL && e->type == MotionNotify; | 	return e != NULL && e->type == MotionNotify; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int drag(arg_t a) { | int i_drag(arg_t a) { | ||||||
| 	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; | ||||||
| 	Bool dragging = True, next = False; | 	Bool dragging = True, next = False; | ||||||
| @ -445,22 +430,7 @@ int drag(arg_t a) { | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int rotate(arg_t a) { | int i_zoom(arg_t a) { | ||||||
| 	direction_t dir = (direction_t) a; |  | ||||||
| 
 |  | ||||||
| 	if (mode == MODE_NORMAL) { |  | ||||||
| 		if (dir == DIR_LEFT) { |  | ||||||
| 			img_rotate_left(&img, &win); |  | ||||||
| 			return 1; |  | ||||||
| 		} else if (dir == DIR_RIGHT) { |  | ||||||
| 			img_rotate_right(&img, &win); |  | ||||||
| 			return 1; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int zoom(arg_t a) { |  | ||||||
| 	int scale = (int) a; | 	int scale = (int) a; | ||||||
| 
 | 
 | ||||||
| 	if (mode != MODE_NORMAL) | 	if (mode != MODE_NORMAL) | ||||||
| @ -473,7 +443,7 @@ int zoom(arg_t a) { | |||||||
| 		return img_zoom(&img, &win, 1.0); | 		return img_zoom(&img, &win, 1.0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int fit_to_win(arg_t a) { | int i_fit_to_win(arg_t a) { | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	if (mode == MODE_NORMAL) { | 	if (mode == MODE_NORMAL) { | ||||||
| @ -485,7 +455,7 @@ int fit_to_win(arg_t a) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int fit_to_img(arg_t a) { | int i_fit_to_img(arg_t a) { | ||||||
| 	int ret, x, y; | 	int ret, x, y; | ||||||
| 	unsigned int w, h; | 	unsigned int w, h; | ||||||
| 
 | 
 | ||||||
| @ -504,7 +474,40 @@ int fit_to_img(arg_t a) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int open_with(arg_t a) { | int i_rotate(arg_t a) { | ||||||
|  | 	direction_t dir = (direction_t) a; | ||||||
|  | 
 | ||||||
|  | 	if (mode == MODE_NORMAL) { | ||||||
|  | 		if (dir == DIR_LEFT) { | ||||||
|  | 			img_rotate_left(&img, &win); | ||||||
|  | 			return 1; | ||||||
|  | 		} else if (dir == DIR_RIGHT) { | ||||||
|  | 			img_rotate_right(&img, &win); | ||||||
|  | 			return 1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int i_toggle_antialias(arg_t a) { | ||||||
|  | 	if (mode == MODE_NORMAL) { | ||||||
|  | 		img_toggle_antialias(&img); | ||||||
|  | 		return 1; | ||||||
|  | 	} else { | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int i_toggle_alpha(arg_t a) { | ||||||
|  | 	if (mode == MODE_NORMAL) { | ||||||
|  | 		img.alpha ^= 1; | ||||||
|  | 		return 1; | ||||||
|  | 	} else { | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | int it_open_with(arg_t a) { | ||||||
| 	const char *prog = (const char*) a; | 	const char *prog = (const char*) a; | ||||||
| 	pid_t pid; | 	pid_t pid; | ||||||
| 
 | 
 | ||||||
| @ -523,7 +526,7 @@ int open_with(arg_t a) { | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int run_command(arg_t a) { | int it_shell_cmd(arg_t a) { | ||||||
| 	const char *cline = (const char*) a; | 	const char *cline = (const char*) a; | ||||||
| 	char *cn, *cmdline; | 	char *cn, *cmdline; | ||||||
| 	const char *co, *fpath; | 	const char *co, *fpath; | ||||||
|  | |||||||
							
								
								
									
										47
									
								
								events.h
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								events.h
									
									
									
									
									
								
							| @ -22,11 +22,12 @@ | |||||||
| #include <X11/Xlib.h> | #include <X11/Xlib.h> | ||||||
| 
 | 
 | ||||||
| typedef void* arg_t; | typedef void* arg_t; | ||||||
|  | typedef int (*command_f)(arg_t); | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| 	Bool ctrl; | 	Bool ctrl; | ||||||
| 	KeySym ksym; | 	KeySym ksym; | ||||||
| 	int (*handler)(arg_t); | 	command_f cmd; | ||||||
| 	arg_t arg; | 	arg_t arg; | ||||||
| } keymap_t; | } keymap_t; | ||||||
| 
 | 
 | ||||||
| @ -34,32 +35,32 @@ typedef struct { | |||||||
| 	Bool ctrl; | 	Bool ctrl; | ||||||
| 	Bool shift; | 	Bool shift; | ||||||
| 	unsigned int button; | 	unsigned int button; | ||||||
| 	int (*handler)(arg_t); | 	command_f cmd; | ||||||
| 	arg_t arg; | 	arg_t arg; | ||||||
| } button_t; | } button_t; | ||||||
| 
 | 
 | ||||||
| void run(); | void run(); | ||||||
| 
 | 
 | ||||||
| /* handler functions for key and button mappings: */ | /* command functions for key and button mappings: */ | ||||||
| int quit(arg_t); | int it_quit(arg_t); | ||||||
| int reload(arg_t); | int it_switch_mode(arg_t); | ||||||
| int toggle_fullscreen(arg_t); | int it_toggle_fullscreen(arg_t); | ||||||
| int toggle_antialias(arg_t); | int it_reload_image(arg_t); | ||||||
| int toggle_alpha(arg_t); | int it_remove_image(arg_t); | ||||||
| int switch_mode(arg_t); | int i_navigate(arg_t); | ||||||
| int navigate(arg_t); | int it_first(arg_t); | ||||||
| int first(arg_t); | int it_last(arg_t); | ||||||
| int last(arg_t); | int it_move(arg_t); | ||||||
| int remove_image(arg_t); | int i_pan_screen(arg_t); | ||||||
| int move(arg_t); | int i_pan_edge(arg_t); | ||||||
| int pan_screen(arg_t); | int i_drag(arg_t); | ||||||
| int pan_edge(arg_t); | int i_zoom(arg_t); | ||||||
| int drag(arg_t); | int i_fit_to_win(arg_t); | ||||||
| int rotate(arg_t); | int i_fit_to_img(arg_t); | ||||||
| int zoom(arg_t); | int i_rotate(arg_t); | ||||||
| int fit_to_win(arg_t); | int i_toggle_antialias(arg_t); | ||||||
| int fit_to_img(arg_t); | int i_toggle_alpha(arg_t); | ||||||
| int open_with(arg_t); | int it_open_with(arg_t); | ||||||
| int run_command(arg_t); | int it_shell_cmd(arg_t); | ||||||
| 
 | 
 | ||||||
| #endif /* EVENTS_H */ | #endif /* EVENTS_H */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert