X-Git-Url: http://git.code-monkey.de/?p=raktpdf.git;a=blobdiff_plain;f=src%2Frakt-window.c;h=c1e19611a3c599d06a2206c8e50a447b88b9d8f6;hp=7cea82202828ca59208b9f1b1c394fdc9bc53009;hb=ec9ee381ad4163b5257f7a86a0ea92dc667f3209;hpb=7b2bc2306cc71d72f4416069c4551b69de8f3c5f diff --git a/src/rakt-window.c b/src/rakt-window.c index 7cea822..c1e1961 100644 --- a/src/rakt-window.c +++ b/src/rakt-window.c @@ -58,12 +58,15 @@ static const GtkActionEntry action_entries[] = { { "FileMenu", NULL, "_File", NULL, NULL, NULL }, + { + "GoMenu", NULL, "_Go", NULL, NULL, NULL + }, { "HelpMenu", NULL, "_Help", NULL, NULL, NULL }, { - "Open", GTK_STOCK_OPEN, - "_Open", "O", "Open a PDF file", + "Open", GTK_STOCK_OPEN, "_Open", + "O", "Open a PDF file", G_CALLBACK (on_action_open) }, { @@ -77,13 +80,13 @@ static const GtkActionEntry action_entries[] = { G_CALLBACK (on_action_go_previous) }, { - "Quit", GTK_STOCK_QUIT, - "_Quit", "Q", "Quit the application", + "Quit", GTK_STOCK_QUIT, "_Quit", + "Q", "Quit the application", G_CALLBACK (on_action_quit) }, { - "About", GTK_STOCK_ABOUT, - "_About", NULL, "About this application", + "About", GTK_STOCK_ABOUT, "_About", + NULL, "About this application", G_CALLBACK (on_action_about) } }; @@ -96,6 +99,10 @@ static const gchar *ui_layout = " " " " " " + " " + " " + " " + " " " " " " " " @@ -152,20 +159,14 @@ render_page (RaktWindow *window) } static void -open_document (RaktWindow *window, gchar *file) +open_document (RaktWindow *window, gchar *uri) { RaktWindowPriv *priv; GError *error = NULL; - gchar real[PATH_MAX], buf[16 + PATH_MAX]; priv = GET_PRIV (window); - realpath (file, real); - - g_strlcpy (buf, "file://", sizeof (buf)); - g_strlcat (buf, real, sizeof (buf)); - - priv->document = poppler_document_new_from_file (buf, NULL, &error); + priv->document = poppler_document_new_from_file (uri, NULL, &error); priv->page_no = 0; render_page (window); @@ -176,6 +177,7 @@ window_create_menu (RaktWindow *window) { RaktWindowPriv *priv; GtkActionGroup *action_group; + GtkAccelGroup *accel_group; GError *error = NULL; priv = GET_PRIV (window); @@ -191,6 +193,10 @@ window_create_menu (RaktWindow *window) gtk_action_group_add_actions (action_group, action_entries, G_N_ELEMENTS (action_entries), window); gtk_ui_manager_insert_action_group (priv->ui_manager, action_group, 0); + + accel_group = gtk_ui_manager_get_accel_group (priv->ui_manager); + gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); + g_object_unref (action_group); gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui_layout, -1, &error); @@ -296,10 +302,11 @@ on_action_open (GtkAction *action, RaktWindow *window) n = gtk_dialog_run (GTK_DIALOG (dialog)); if (n == GTK_RESPONSE_ACCEPT) { - gchar *file; + gchar *uri; - file = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - open_document (window, file); + uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); + open_document (window, uri); + g_free (uri); } gtk_widget_destroy (dialog);