X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=previewer%2Fev-previewer.c;h=d8c1643a7ab135efeb3079e0cea98102a9494a05;hb=d3688d90ef2ac74632997a421a042e44534af9d9;hp=a425037cad3dd612d9a13f365447bd2e4ea6f2f0;hpb=f3e297cfbe271722e7263fb49cba9e63a5174bf0;p=evince.git diff --git a/previewer/ev-previewer.c b/previewer/ev-previewer.c index a425037c..d8c1643a 100644 --- a/previewer/ev-previewer.c +++ b/previewer/ev-previewer.c @@ -24,10 +24,21 @@ #include #include #include -#include "ev-stock-icons.h" #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; @@ -56,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); @@ -65,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; @@ -81,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); } @@ -89,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 ()) @@ -142,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", @@ -151,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 (); @@ -162,6 +198,7 @@ main (gint argc, gchar **argv) ev_shutdown (); ev_stock_icons_shutdown (); + g_object_unref (model); return 0; }