X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=previewer%2Fev-previewer.c;h=d8c1643a7ab135efeb3079e0cea98102a9494a05;hb=761de5f5ba44cc94c98adf2b68809ea453d6bdfa;hp=afe21271a4715148e160f65fa18b8199d6d573a5;hpb=bc8fd91eed538ddb9a3fdd3b7e05c9ac16a61c97;p=evince.git diff --git a/previewer/ev-previewer.c b/previewer/ev-previewer.c index afe21271..d8c1643a 100644 --- a/previewer/ev-previewer.c +++ b/previewer/ev-previewer.c @@ -27,6 +27,18 @@ #include "ev-previewer-window.h" +#ifdef G_OS_WIN32 +#ifdef DATADIR +#undef DATADIR +#endif +#include +#include +#if !(_WIN32_WINNT >= 0x0500) +#error "_WIN32_WINNT must be defined >= 0x0500" +#endif +#include +#endif + static gboolean unlink_temp_file = FALSE; static const gchar *print_settings; static const gchar **filenames; @@ -55,8 +67,8 @@ ev_previewer_unlink_tempfile (const gchar *filename) } static void -ev_previewer_load_job_finished (EvJob *job, - EvPreviewerWindow *window) +ev_previewer_load_job_finished (EvJob *job, + EvDocumentModel *model) { if (ev_job_is_failed (job)) { g_warning ("%s", job->error->message); @@ -64,14 +76,13 @@ ev_previewer_load_job_finished (EvJob *job, return; } - - ev_previewer_window_set_document (window, job->document); + ev_document_model_set_document (model, job->document); g_object_unref (job); } static void -ev_previewer_load_document (const gchar *filename, - EvPreviewerWindow *window) +ev_previewer_load_document (const gchar *filename, + EvDocumentModel *model) { EvJob *job; gchar *uri; @@ -80,7 +91,7 @@ ev_previewer_load_document (const gchar *filename, job = ev_job_load_new (uri); g_signal_connect (job, "finished", G_CALLBACK (ev_previewer_load_job_finished), - window); + model); ev_job_scheduler_push_job (job, EV_JOB_PRIORITY_NONE); g_free (uri); } @@ -88,10 +99,35 @@ ev_previewer_load_document (const gchar *filename, gint main (gint argc, gchar **argv) { - GtkWidget *window; - GOptionContext *context; - const gchar *filename; - GError *error = NULL; + GtkWidget *window; + GOptionContext *context; + const gchar *filename; + EvDocumentModel *model; + GError *error = NULL; + +#ifdef G_OS_WIN32 + if (fileno (stdout) != -1 && + _get_osfhandle (fileno (stdout)) != -1) + { + /* stdout is fine, presumably redirected to a file or pipe */ + } + else + { + typedef BOOL (* WINAPI AttachConsole_t) (DWORD); + + AttachConsole_t p_AttachConsole = + (AttachConsole_t) GetProcAddress (GetModuleHandle ("kernel32.dll"), "AttachConsole"); + + if (p_AttachConsole != NULL && p_AttachConsole (ATTACH_PARENT_PROCESS)) + { + freopen ("CONOUT$", "w", stdout); + dup2 (fileno (stdout), 1); + freopen ("CONOUT$", "w", stderr); + dup2 (fileno (stderr), 2); + + } + } +#endif /* Init glib threads asap */ if (!g_thread_supported ()) @@ -141,7 +177,8 @@ main (gint argc, gchar **argv) g_set_application_name (_("GNOME Document Previewer")); gtk_window_set_default_icon_name ("evince"); - window = ev_previewer_window_new (); + model = ev_document_model_new (); + window = ev_previewer_window_new (model); ev_previewer_window_set_source_file (EV_PREVIEWER_WINDOW (window), filename); ev_previewer_window_set_print_settings (EV_PREVIEWER_WINDOW (window), print_settings); g_signal_connect (window, "delete-event", @@ -150,7 +187,7 @@ main (gint argc, gchar **argv) G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show (window); - ev_previewer_load_document (filename, EV_PREVIEWER_WINDOW (window)); + ev_previewer_load_document (filename, model); gtk_main (); @@ -161,6 +198,7 @@ main (gint argc, gchar **argv) ev_shutdown (); ev_stock_icons_shutdown (); + g_object_unref (model); return 0; }