Renamed key/mouse commands to indicate supported modes
This commit is contained in:
		
							parent
							
								
									535c18afda
								
							
						
					
					
						commit
						1c68a34463
					
				
							
								
								
									
										146
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										146
									
								
								config.h
									
									
									
									
									
								
							| @ -1,22 +1,26 @@ | ||||
| #ifdef _WINDOW_CONFIG | ||||
| 
 | ||||
| /* 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:                        *
 | ||||
|  * (see X(7) "COLOR NAMES" section for valid values)           */ | ||||
| /* default color for window background: */ | ||||
| static const char * const BG_COLOR  = "#777777"; | ||||
| /* default color for thumbnail selection: */ | ||||
| static const char * const SEL_COLOR = "#DDDDDD"; | ||||
| /* (see X(7) section "COLOR NAMES" for valid values) */ | ||||
| 
 | ||||
| #endif | ||||
| #ifdef _IMAGE_CONFIG | ||||
| 
 | ||||
| /* how should images be scaled when they are loaded?:          *
 | ||||
|  * (also controllable via -d/-s/-Z/-z options)                 * | ||||
|  *   SCALE_DOWN: 100%, but fit large images into window,       * | ||||
|  *   SCALE_FIT:  fit all images into window,                   * | ||||
|  *   SCALE_ZOOM: use current zoom level, 100% at startup       */ | ||||
| /* how should images be scaled when they are loaded?
 | ||||
|  * (also controllable via -d/-s/-Z/-z options) | ||||
|  *   SCALE_DOWN: 100%, but fit large images into window, | ||||
|  *   SCALE_FIT:  fit all images into window, | ||||
|  *   SCALE_ZOOM: use current zoom level, 100% at startup | ||||
|  */ | ||||
| static const scalemode_t SCALE_MODE = SCALE_DOWN; | ||||
| 
 | ||||
| /* levels (percent) to use when zooming via '-' and '+': */ | ||||
| @ -37,83 +41,83 @@ enum { THUMB_SIZE = 60 }; | ||||
| /* keyboard mappings for image and thumbnail mode: */ | ||||
| static const keymap_t keys[] = { | ||||
| 	/* ctrl   key               function              argument */ | ||||
| 	{ False,   XK_q,            quit,              (arg_t) None }, | ||||
| 	{ False,   XK_r,            reload,            (arg_t) None }, | ||||
| 	{ False,   XK_f,            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_q,             it_quit,              (arg_t) None }, | ||||
| 	{ False,  XK_Return,        it_switch_mode,       (arg_t) None }, | ||||
| 	{ False,  XK_f,             it_toggle_fullscreen, (arg_t) None }, | ||||
| 
 | ||||
| 	{ False,   XK_g,            first,             (arg_t) None }, | ||||
| 	{ False,   XK_G,            last,              (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_r,             it_reload_image,      (arg_t) None }, | ||||
| 	{ False,  XK_D,             it_remove_image,      (arg_t) None }, | ||||
| 
 | ||||
| 	{ 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_Left,         move,              (arg_t) DIR_LEFT }, | ||||
| 	{ False,   XK_j,            move,              (arg_t) DIR_DOWN }, | ||||
| 	{ False,   XK_Down,         move,              (arg_t) DIR_DOWN }, | ||||
| 	{ False,   XK_k,            move,              (arg_t) DIR_UP }, | ||||
| 	{ False,   XK_Up,           move,              (arg_t) DIR_UP }, | ||||
| 	{ False,   XK_l,            move,              (arg_t) DIR_RIGHT }, | ||||
| 	{ False,   XK_Right,        move,              (arg_t) DIR_RIGHT }, | ||||
| 	{ False,  XK_h,             it_move,              (arg_t) DIR_LEFT }, | ||||
| 	{ False,  XK_Left,          it_move,              (arg_t) DIR_LEFT }, | ||||
| 	{ False,  XK_j,             it_move,              (arg_t) DIR_DOWN }, | ||||
| 	{ False,  XK_Down,          it_move,              (arg_t) DIR_DOWN }, | ||||
| 	{ False,  XK_k,             it_move,              (arg_t) DIR_UP }, | ||||
| 	{ False,  XK_Up,            it_move,              (arg_t) DIR_UP }, | ||||
| 	{ False,  XK_l,             it_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_Left,         pan_screen,        (arg_t) DIR_LEFT }, | ||||
| 	{ True,    XK_j,            pan_screen,        (arg_t) DIR_DOWN }, | ||||
| 	{ True,    XK_Down,         pan_screen,        (arg_t) DIR_DOWN }, | ||||
| 	{ True,    XK_k,            pan_screen,        (arg_t) DIR_UP }, | ||||
| 	{ True,    XK_Up,           pan_screen,        (arg_t) DIR_UP }, | ||||
| 	{ True,    XK_l,            pan_screen,        (arg_t) DIR_RIGHT }, | ||||
| 	{ True,    XK_Right,        pan_screen,        (arg_t) DIR_RIGHT }, | ||||
| 	{ True,   XK_h,             i_pan_screen,         (arg_t) DIR_LEFT }, | ||||
| 	{ True,   XK_Left,          i_pan_screen,         (arg_t) DIR_LEFT }, | ||||
| 	{ True,   XK_j,             i_pan_screen,         (arg_t) DIR_DOWN }, | ||||
| 	{ True,   XK_Down,          i_pan_screen,         (arg_t) DIR_DOWN }, | ||||
| 	{ True,   XK_k,             i_pan_screen,         (arg_t) DIR_UP }, | ||||
| 	{ True,   XK_Up,            i_pan_screen,         (arg_t) DIR_UP }, | ||||
| 	{ True,   XK_l,             i_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_J,            pan_edge,          (arg_t) DIR_DOWN }, | ||||
| 	{ False,   XK_K,            pan_edge,          (arg_t) DIR_UP }, | ||||
| 	{ False,   XK_L,            pan_edge,          (arg_t) DIR_RIGHT }, | ||||
| 	{ False,  XK_H,             i_pan_edge,           (arg_t) DIR_LEFT }, | ||||
| 	{ False,  XK_J,             i_pan_edge,           (arg_t) DIR_DOWN }, | ||||
| 	{ False,  XK_K,             i_pan_edge,           (arg_t) DIR_UP }, | ||||
| 	{ False,  XK_L,             i_pan_edge,           (arg_t) DIR_RIGHT }, | ||||
| 
 | ||||
| 	{ False,   XK_plus,         zoom,              (arg_t) +1 }, | ||||
| 	{ False,   XK_equal,        zoom,              (arg_t) +1 }, | ||||
| 	{ False,   XK_KP_Add,       zoom,              (arg_t) +1 }, | ||||
| 	{ False,   XK_minus,        zoom,              (arg_t) -1 }, | ||||
| 	{ False,   XK_KP_Subtract,  zoom,              (arg_t) -1 }, | ||||
| 	{ False,   XK_0,            zoom,              (arg_t) None }, | ||||
| 	{ False,   XK_KP_0,         zoom,              (arg_t) None }, | ||||
| 	{ False,   XK_w,            fit_to_win,        (arg_t) None }, | ||||
| 	{ False,   XK_W,            fit_to_img,        (arg_t) None }, | ||||
| 	{ False,  XK_plus,          i_zoom,               (arg_t) +1 }, | ||||
| 	{ False,  XK_equal,         i_zoom,               (arg_t) +1 }, | ||||
| 	{ False,  XK_KP_Add,        i_zoom,               (arg_t) +1 }, | ||||
| 	{ False,  XK_minus,         i_zoom,               (arg_t) -1 }, | ||||
| 	{ False,  XK_KP_Subtract,   i_zoom,               (arg_t) -1 }, | ||||
| 	{ False,  XK_0,             i_zoom,               (arg_t) None }, | ||||
| 	{ False,  XK_KP_0,          i_zoom,               (arg_t) None }, | ||||
| 	{ False,  XK_w,             i_fit_to_win,         (arg_t) None }, | ||||
| 	{ False,  XK_W,             i_fit_to_img,         (arg_t) None }, | ||||
| 
 | ||||
| 	{ False,   XK_less,         rotate,            (arg_t) DIR_LEFT }, | ||||
| 	{ False,   XK_greater,      rotate,            (arg_t) DIR_RIGHT }, | ||||
| 	{ False,  XK_less,          i_rotate,             (arg_t) DIR_LEFT }, | ||||
| 	{ False,  XK_greater,       i_rotate,             (arg_t) DIR_RIGHT }, | ||||
| 
 | ||||
| 	                            /* open the current image with given program:  */ | ||||
| 	{ True,    XK_g,            open_with,         (arg_t) "gimp" }, | ||||
| 	{ False,  XK_a,             i_toggle_antialias,   (arg_t) None }, | ||||
| 	{ False,  XK_A,             i_toggle_alpha,       (arg_t) None }, | ||||
| 
 | ||||
| 	                            /* run shell command line on the current file,
 | ||||
| 	                             * '#' is replaced by filename:                */ | ||||
| 	{ True,    XK_less,         run_command,       (arg_t) "mogrify -rotate -90 #" }, | ||||
| 	{ True,    XK_greater,      run_command,       (arg_t) "mogrify -rotate +90 #" }, | ||||
| 	{ True,    XK_comma,        run_command,       (arg_t) "jpegtran -rotate 270 -copy all -outfile # #" }, | ||||
| 	{ True,    XK_period,       run_command,       (arg_t) "jpegtran -rotate 90 -copy all -outfile # #" }, | ||||
| 	/* open current image with given program: */ | ||||
| 	{ True,   XK_g,             it_open_with,         (arg_t) "gimp" }, | ||||
| 
 | ||||
| 	/* run shell command line on current file ('#' is replaced by file path: */ | ||||
| 	{ True,   XK_less,          it_shell_cmd,         (arg_t) "mogrify -rotate -90 #" }, | ||||
| 	{ 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: */ | ||||
| static const button_t buttons[] = { | ||||
| 	/* ctrl   shift   button    function              argument */ | ||||
| 	{ False,   False,   Button1,     navigate,     (arg_t) +1 }, | ||||
| 	{ False,   False,   Button3,     navigate,     (arg_t) -1 }, | ||||
| 	{ False,   False,   Button2,     drag,         (arg_t) None }, | ||||
| 	{ False,   False,   Button4,     move,         (arg_t) DIR_UP }, | ||||
| 	{ False,   False,   Button5,     move,         (arg_t) DIR_DOWN }, | ||||
| 	{ False,   True,    Button4,     move,         (arg_t) DIR_LEFT }, | ||||
| 	{ False,   True,    Button5,     move,         (arg_t) DIR_RIGHT }, | ||||
| 	{ True,    False,   Button4,     zoom,         (arg_t) +1 }, | ||||
| 	{ True,    False,   Button5,     zoom,         (arg_t) -1 }, | ||||
| 	{ False,  False,  Button1,  i_navigate,           (arg_t) +1 }, | ||||
| 	{ False,  False,  Button3,  i_navigate,           (arg_t) -1 }, | ||||
| 	{ False,  False,  Button2,  i_drag,               (arg_t) None }, | ||||
| 	{ False,  False,  Button4,  it_move,              (arg_t) DIR_UP }, | ||||
| 	{ False,  False,  Button5,  it_move,              (arg_t) DIR_DOWN }, | ||||
| 	{ False,  True,   Button4,  it_move,              (arg_t) DIR_LEFT }, | ||||
| 	{ False,  True,   Button5,  it_move,              (arg_t) DIR_RIGHT }, | ||||
| 	{ True,   False,  Button4,  i_zoom,               (arg_t) +1 }, | ||||
| 	{ True,   False,  Button5,  i_zoom,               (arg_t) -1 }, | ||||
| }; | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										175
									
								
								events.c
									
									
									
									
									
								
							
							
						
						
									
										175
									
								
								events.c
									
									
									
									
									
								
							| @ -93,7 +93,7 @@ void on_keypress(XKeyEvent *kev) { | ||||
| 
 | ||||
| 	for (i = 0; i < LEN(keys); i++) { | ||||
| 		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(); | ||||
| 			return; | ||||
| 		} | ||||
| @ -114,7 +114,7 @@ void on_buttonpress(XButtonEvent *bev) { | ||||
| 			if (buttons[i].button == bev->button && | ||||
| 			    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(); | ||||
| 				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(); | ||||
| 	exit(0); | ||||
| } | ||||
| 
 | ||||
| int reload(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) { | ||||
| int it_switch_mode(arg_t a) { | ||||
| 	if (mode == MODE_NORMAL) { | ||||
| 		if (!tns.thumbs) | ||||
| 			tns_init(&tns, filecnt); | ||||
| @ -303,7 +266,45 @@ int switch_mode(arg_t a) { | ||||
| 	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; | ||||
| 
 | ||||
| 	if (mode == MODE_NORMAL) { | ||||
| @ -321,7 +322,7 @@ int navigate(arg_t a) { | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int first(arg_t a) { | ||||
| int it_first(arg_t a) { | ||||
| 	if (mode == MODE_NORMAL && fileidx != 0) { | ||||
| 		load_image(0); | ||||
| 		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) { | ||||
| 		load_image(filecnt - 1); | ||||
| 		return 1; | ||||
| @ -347,23 +348,7 @@ int last(arg_t a) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| int 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 move(arg_t a) { | ||||
| int it_move(arg_t a) { | ||||
| 	direction_t dir = (direction_t) a; | ||||
| 
 | ||||
| 	if (mode == MODE_NORMAL) | ||||
| @ -372,7 +357,7 @@ int move(arg_t a) { | ||||
| 		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; | ||||
| 
 | ||||
| 	if (mode == MODE_NORMAL) | ||||
| @ -381,7 +366,7 @@ int pan_screen(arg_t a) { | ||||
| 		return 0; | ||||
| } | ||||
| 
 | ||||
| int pan_edge(arg_t a) { | ||||
| int i_pan_edge(arg_t a) { | ||||
| 	direction_t dir = (direction_t) a; | ||||
| 
 | ||||
| 	if (mode == MODE_NORMAL) | ||||
| @ -390,12 +375,12 @@ int pan_edge(arg_t a) { | ||||
| 		return 0; | ||||
| } | ||||
| 
 | ||||
| /* Xlib helper function for drag() */ | ||||
| /* Xlib helper function for i_drag() */ | ||||
| Bool is_motionnotify(Display *d, XEvent *e, XPointer a) { | ||||
| 	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; | ||||
| 	unsigned int ui; | ||||
| 	Bool dragging = True, next = False; | ||||
| @ -445,22 +430,7 @@ int drag(arg_t a) { | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int 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 zoom(arg_t a) { | ||||
| int i_zoom(arg_t a) { | ||||
| 	int scale = (int) a; | ||||
| 
 | ||||
| 	if (mode != MODE_NORMAL) | ||||
| @ -473,7 +443,7 @@ int zoom(arg_t a) { | ||||
| 		return img_zoom(&img, &win, 1.0); | ||||
| } | ||||
| 
 | ||||
| int fit_to_win(arg_t a) { | ||||
| int i_fit_to_win(arg_t a) { | ||||
| 	int ret; | ||||
| 
 | ||||
| 	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; | ||||
| 	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; | ||||
| 	pid_t pid; | ||||
| 
 | ||||
| @ -523,7 +526,7 @@ int open_with(arg_t a) { | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int run_command(arg_t a) { | ||||
| int it_shell_cmd(arg_t a) { | ||||
| 	const char *cline = (const char*) a; | ||||
| 	char *cn, *cmdline; | ||||
| 	const char *co, *fpath; | ||||
|  | ||||
							
								
								
									
										47
									
								
								events.h
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								events.h
									
									
									
									
									
								
							| @ -22,11 +22,12 @@ | ||||
| #include <X11/Xlib.h> | ||||
| 
 | ||||
| typedef void* arg_t; | ||||
| typedef int (*command_f)(arg_t); | ||||
| 
 | ||||
| typedef struct { | ||||
| 	Bool ctrl; | ||||
| 	KeySym ksym; | ||||
| 	int (*handler)(arg_t); | ||||
| 	command_f cmd; | ||||
| 	arg_t arg; | ||||
| } keymap_t; | ||||
| 
 | ||||
| @ -34,32 +35,32 @@ typedef struct { | ||||
| 	Bool ctrl; | ||||
| 	Bool shift; | ||||
| 	unsigned int button; | ||||
| 	int (*handler)(arg_t); | ||||
| 	command_f cmd; | ||||
| 	arg_t arg; | ||||
| } button_t; | ||||
| 
 | ||||
| void run(); | ||||
| 
 | ||||
| /* handler functions for key and button mappings: */ | ||||
| int quit(arg_t); | ||||
| int reload(arg_t); | ||||
| int toggle_fullscreen(arg_t); | ||||
| int toggle_antialias(arg_t); | ||||
| int toggle_alpha(arg_t); | ||||
| int switch_mode(arg_t); | ||||
| int navigate(arg_t); | ||||
| int first(arg_t); | ||||
| int last(arg_t); | ||||
| int remove_image(arg_t); | ||||
| int move(arg_t); | ||||
| int pan_screen(arg_t); | ||||
| int pan_edge(arg_t); | ||||
| int drag(arg_t); | ||||
| int rotate(arg_t); | ||||
| int zoom(arg_t); | ||||
| int fit_to_win(arg_t); | ||||
| int fit_to_img(arg_t); | ||||
| int open_with(arg_t); | ||||
| int run_command(arg_t); | ||||
| /* command functions for key and button mappings: */ | ||||
| int it_quit(arg_t); | ||||
| int it_switch_mode(arg_t); | ||||
| int it_toggle_fullscreen(arg_t); | ||||
| int it_reload_image(arg_t); | ||||
| int it_remove_image(arg_t); | ||||
| int i_navigate(arg_t); | ||||
| int it_first(arg_t); | ||||
| int it_last(arg_t); | ||||
| int it_move(arg_t); | ||||
| int i_pan_screen(arg_t); | ||||
| int i_pan_edge(arg_t); | ||||
| int i_drag(arg_t); | ||||
| int i_zoom(arg_t); | ||||
| int i_fit_to_win(arg_t); | ||||
| int i_fit_to_img(arg_t); | ||||
| int i_rotate(arg_t); | ||||
| int i_toggle_antialias(arg_t); | ||||
| int i_toggle_alpha(arg_t); | ||||
| int it_open_with(arg_t); | ||||
| int it_shell_cmd(arg_t); | ||||
| 
 | ||||
| #endif /* EVENTS_H */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bert
						Bert