aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c161
1 files changed, 10 insertions, 151 deletions
diff --git a/main.c b/main.c
index d3b25f6..f458ca5 100644
--- a/main.c
+++ b/main.c
@@ -1,178 +1,37 @@
#include "file.h"
#include "image.h"
-#include <dirent.h>
+#include "input.h"
+#include "window.h"
#include <gtk-3.0/gtk/gtk.h>
-#include <libgen.h>
-#include <stdlib.h>
-#include <string.h>
-#define TIMEOUT 20
-
-GtkWidget *window;
-gint win_width, win_height;
-GError *error = NULL;
-
-void next()
-{
- char *name;
- if ((name = get_next_file()) != NULL)
- load_image(name, win_width, win_height);
-}
-
-void prev()
-{
- char *name;
- if ((name = get_prev_file()) != NULL)
- load_image(name, win_width, win_height);
-}
-
-void first()
-{
- char *name;
- if ((name = get_first_file()) != NULL)
- load_image(name, win_width, win_height);
-}
-
-void last()
-{
- char *name;
- if ((name = get_last_file()) != NULL)
- load_image(name, win_width, win_height);
-}
-
-static gboolean key_press(GtkWindow *window, GdkEvent *event, gpointer data)
-{
- switch (event->key.keyval) {
- case GDK_KEY_q:
- g_application_quit(
- G_APPLICATION(gtk_window_get_application(GTK_WINDOW(window))));
- return FALSE;
- case GDK_KEY_w:
- curr_scale_mod = fit;
- fit_image(win_width, win_height);
- return FALSE;
- case GDK_KEY_plus:
- case GDK_KEY_KP_Add:
- zoom(1);
- return FALSE;
- case GDK_KEY_minus:
- case GDK_KEY_KP_Subtract:
- zoom(-1);
- return FALSE;
- case GDK_KEY_equal:
- zoom(0);
- return FALSE;
- case GDK_KEY_n:
- case GDK_KEY_j:
- case GDK_KEY_Right:
- next();
- return FALSE;
- case GDK_KEY_p:
- case GDK_KEY_k:
- case GDK_KEY_Left:
- prev();
- return FALSE;
- case GDK_KEY_g:
- case GDK_KEY_Home:
- first();
- return FALSE;
- case GDK_KEY_G:
- case GDK_KEY_End:
- last();
- return FALSE;
- default:
- return TRUE;
- }
-}
-
-gboolean scroll_callback(GtkWindow *window, GdkEvent *event, gpointer data)
-{
- GdkModifierType state;
- gdk_event_get_state(event, &state);
-
- switch (event->scroll.direction) {
- case GDK_SCROLL_UP:
- if (state & GDK_CONTROL_MASK) {
- zoom(1);
- curr_scale_mod = zoomed;
- } else {
- next();
- }
- return FALSE;
- break;
- case GDK_SCROLL_DOWN:
- if (state & GDK_CONTROL_MASK) {
- zoom(-1);
- curr_scale_mod = zoomed;
- } else {
- prev();
- }
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-gboolean resize_done(gpointer data)
+void print_help()
{
- guint *id = data;
- *id = 0;
- gtk_window_get_size(GTK_WINDOW(window), &win_width, &win_height);
- fit_image(win_width, win_height);
- return FALSE;
-}
-
-gboolean configure_callback(GtkWindow *window, GdkEvent *event, gpointer data)
-{
- if (curr_scale_mod != fit) {
- return FALSE;
- }
- static guint id = 0;
- if (id)
- g_source_remove(id);
- id = g_timeout_add(TIMEOUT, resize_done, &id);
- return FALSE;
+ printf("usage: qwe [filename]\n");
}
static void activate(GtkApplication *app, gpointer user_data)
{
+ print_help();
}
static void open(GApplication *app, GFile **files, gint n_files,
const gchar *hint)
{
if (n_files != 1) {
+ print_help();
return;
}
- window = gtk_application_window_new(GTK_APPLICATION(app));
- gtk_window_set_title(GTK_WINDOW(window), "qwe");
- gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
- g_signal_connect(G_OBJECT(window), "configure-event",
- G_CALLBACK(configure_callback), NULL);
- g_signal_connect(G_OBJECT(window), "key-press-event", G_CALLBACK(key_press),
- NULL);
- gtk_widget_add_events(GTK_WIDGET(window), GDK_SCROLL_MASK);
- g_signal_connect(G_OBJECT(window), "scroll-event",
- G_CALLBACK(scroll_callback), NULL);
- char *curr_filename = g_file_get_path(files[0]);
+ create_main_window(app);
+ char *curr_filename = g_file_get_path(files[0]);
int i = scan(curr_filename);
if (i < 0) {
- printf("scan() error %d\n", i);
+ printf("failed to load file");
return;
}
- GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(new_image()));
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(scrolled_window));
- gtk_widget_show_all(GTK_WIDGET(window));
-
- load_image(curr_filename, win_width, win_height);
+ load_image(curr_filename);
}
int main(int argc, char *argv[])