diff options
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/input.c b/input.c deleted file mode 100644 index 1d21ef2..0000000 --- a/input.c +++ /dev/null @@ -1,206 +0,0 @@ -#include "input.h" -#include "file.h" -#include "image.h" -#include "window.h" -#include <gtk-3.0/gtk/gtk.h> - -#define TIMEOUT 20 -#define SCROLLAMMOUNT 30 - -int grabbed = 0; -gdouble start_x, start_y; - -void next() -{ - char *name; - if ((name = get_next_file()) != NULL) - load_image(name); -} - -void prev() -{ - char *name; - if ((name = get_prev_file()) != NULL) - load_image(name); -} - -void first() -{ - char *name; - if ((name = get_first_file()) != NULL) - load_image(name); -} - -void last() -{ - char *name; - if ((name = get_last_file()) != NULL) - load_image(name); -} - -void handle_key_press(GdkEvent *event) -{ - GdkModifierType state; - gdk_event_get_state(event, &state); - - switch (event->key.keyval) { - case GDK_KEY_q: - quit(); - case GDK_KEY_w: - fit_image(); - break; - case GDK_KEY_plus: - case GDK_KEY_KP_Add: - zoom(1); - break; - case GDK_KEY_minus: - case GDK_KEY_KP_Subtract: - zoom(-1); - break; - case GDK_KEY_equal: - zoom(0); - break; - case GDK_KEY_n: - next(); - break; - case GDK_KEY_p: - prev(); - break; - case GDK_KEY_Up: - if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) - prev(); - else - scroll_window(0, -SCROLLAMMOUNT); - break; - case GDK_KEY_Down: - if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) - next(); - else - scroll_window(0, SCROLLAMMOUNT); - break; - case GDK_KEY_Right: - if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) - next(); - else - scroll_window(SCROLLAMMOUNT, 0); - break; - case GDK_KEY_Left: - if (curr_scale_mod == fit || state & GDK_SHIFT_MASK) - prev(); - else - scroll_window(-SCROLLAMMOUNT, 0); - break; - case GDK_KEY_j: - if (curr_scale_mod == fit) - next(); - else - scroll_window(0, SCROLLAMMOUNT); - break; - case GDK_KEY_J: - next(); - break; - case GDK_KEY_k: - if (curr_scale_mod == fit) - prev(); - else - scroll_window(0, -SCROLLAMMOUNT); - break; - case GDK_KEY_K: - prev(); - break; - case GDK_KEY_l: - if (curr_scale_mod == fit) - next(); - else - scroll_window(SCROLLAMMOUNT, 0); - break; - case GDK_KEY_L: - next(); - break; - case GDK_KEY_h: - if (curr_scale_mod == fit) - prev(); - else - scroll_window(-SCROLLAMMOUNT, 0); - break; - case GDK_KEY_H: - prev(); - break; - case GDK_KEY_g: - case GDK_KEY_Home: - first(); - break; - case GDK_KEY_G: - case GDK_KEY_End: - last(); - break; - default: - break; - } -} - -void handle_button_press(GdkEvent *event) -{ - grabbed = 1; - start_x = event->motion.x; - start_y = event->motion.y; -} - -void handle_button_release() -{ - grabbed = 0; -} - -void handle_mouse_move(gdouble x, gdouble y) -{ - if (grabbed) { - gdouble diff_x = start_x - x; - gdouble diff_y = start_y - y; - start_x = x; - start_y = y; - scroll_window(diff_x, diff_y); - } -} - -void handle_scroll(GdkEvent *event) -{ - GdkModifierType state; - gdk_event_get_state(event, &state); - - switch (event->scroll.direction) { - case GDK_SCROLL_UP: - if (state & GDK_CONTROL_MASK) { - zoom(1); - } else { - prev(); - } - break; - case GDK_SCROLL_DOWN: - if (state & GDK_CONTROL_MASK) { - zoom(-1); - } else { - next(); - } - break; - default: - break; - } -} - -gboolean resize_done(gpointer data) -{ - guint *id = data; - *id = 0; - fit_image(); - return FALSE; -} - -void handle_resize() -{ - if (curr_scale_mod != fit) - return; - static guint id = 0; - if (id) - g_source_remove(id); - id = g_timeout_add(TIMEOUT, resize_done, &id); -} |