Code

gtk-tpdfv-screen: Added module to abstract access to different screens.
[tpdfview.git] / src / tpdfview.c
index d46aef030a44a977ebd72a4ed0d5b0f1aa40ca27..b15bad3a078d0b87aa93e9dee03b034508106aaf 100644 (file)
@@ -88,6 +88,22 @@ exit_version(void)
        exit(0);
 } /* exit_version */
 
+static void
+toggle_fullscreen(GtkWindow *win)
+{
+       GdkWindowState state;
+
+       if (! gtk_widget_get_realized(GTK_WIDGET(win)))
+               return;
+
+       state = gdk_window_get_state(GTK_WIDGET(win)->window);
+
+       if (state & GDK_WINDOW_STATE_FULLSCREEN)
+               gtk_window_unfullscreen(win);
+       else
+               gtk_window_fullscreen(win);
+} /* toggle_fullscreen */
+
 static void
 on_destroy(GtkWidget __attribute__((unused)) *widget,
                gpointer __attribute__((unused)) data)
@@ -96,8 +112,7 @@ on_destroy(GtkWidget __attribute__((unused)) *widget,
 } /* on_destroy */
 
 static gboolean
-key_press(GtkWidget __attribute__((unused)) *widget,
-               GdkEventKey *event, gpointer data)
+key_press(GtkWidget *window, GdkEventKey *event, gpointer data)
 {
        GtkWidget *tpdfv;
 
@@ -109,6 +124,14 @@ key_press(GtkWidget __attribute__((unused)) *widget,
                        gtk_main_quit();
                        break;
 
+               case GDK_r:
+                       gtk_tpdfv_reload(tpdfv);
+                       break;
+
+               case GDK_F:
+                       toggle_fullscreen(GTK_WINDOW(window));
+                       break;
+
                /* navigation */
                case GDK_Page_Up:
                        gtk_tpdfv_page_up(tpdfv);
@@ -165,11 +188,17 @@ key_press(GtkWidget __attribute__((unused)) *widget,
 int
 main(int argc, char **argv)
 {
+       gtk_tpdfv_screens_t *screens;
+
        GtkWidget *win   = NULL;
        GtkWidget *tpdfv = NULL;
 
+       char win_title[1024];
+
        GdkColor bg_color;
 
+       char *filename;
+
        gtk_init(&argc, &argv);
 
        while (42) {
@@ -195,7 +224,9 @@ main(int argc, char **argv)
                exit_usage(argv[0], 1);
        }
 
-       tpdfv = gtk_tpdfv_new(argv[optind]);
+       filename = argv[optind];
+
+       tpdfv = gtk_tpdfv_new(filename);
        if (! tpdfv)
                return 1;
 
@@ -203,6 +234,14 @@ main(int argc, char **argv)
        if (! win)
                return 1;
 
+       screens = gtk_tpdfv_screens_init(/* display = */ NULL);
+       if (! screens)
+               return 1;
+
+       snprintf(win_title, sizeof(win_title), "tpdfview: %s",
+                       basename(filename));
+       gtk_window_set_title(GTK_WINDOW(win), win_title);
+
        gtk_container_add(GTK_CONTAINER(win), tpdfv);
 
        g_signal_connect(G_OBJECT(win), "destroy",
@@ -217,6 +256,8 @@ main(int argc, char **argv)
        gtk_widget_show_all(win);
 
        gtk_main();
+
+       gtk_tpdfv_screens_destroy(screens);
        return 0;
 } /* main */