diff options
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | backend/ev-document-fonts.c | 22 | ||||
-rw-r--r-- | backend/ev-document-fonts.h | 20 | ||||
-rw-r--r-- | data/evince-properties.glade | 133 | ||||
-rw-r--r-- | pdf/ev-poppler.cc | 73 | ||||
-rw-r--r-- | shell/ev-jobs.c | 6 | ||||
-rw-r--r-- | shell/ev-jobs.h | 4 | ||||
-rw-r--r-- | shell/ev-properties.c | 78 |
8 files changed, 176 insertions, 181 deletions
@@ -1,3 +1,24 @@ +2005-06-13 Marco Pesenti Gritti <mpg@redhat.com> + + * backend/ev-document-fonts.c: (ev_document_fonts_get_progress), + (ev_document_fonts_scan), (ev_document_fonts_fill_model): + * backend/ev-document-fonts.h: + + Separate scan and fill so that we can incrementally fill from + the main thread. Add a progress api. + + * data/evince-properties.glade: + * pdf/ev-poppler.cc: + * shell/ev-jobs.c: (ev_job_fonts_new), (ev_job_fonts_run): + * shell/ev-jobs.h: + * shell/ev-properties.c: (update_progress_label), + (job_fonts_finished_cb), (setup_fonts_view): + + Incrementally feel the list and show the progress + percentage in a label like acrobat does. + + You are going to need poppler cvs + 2005-06-11 Marco Pesenti Gritti <mpg@redhat.com> * backend/ev-document-fonts.c: (ev_document_fonts_fill_model): diff --git a/backend/ev-document-fonts.c b/backend/ev-document-fonts.c index cd53d1e..854383d 100644 --- a/backend/ev-document-fonts.c +++ b/backend/ev-document-fonts.c @@ -47,12 +47,28 @@ ev_document_fonts_get_type (void) return type; } +double +ev_document_fonts_get_progress (EvDocumentFonts *document_fonts) +{ + EvDocumentFontsIface *iface = EV_DOCUMENT_FONTS_GET_IFACE (document_fonts); + + return iface->get_progress (document_fonts); +} + gboolean +ev_document_fonts_scan (EvDocumentFonts *document_fonts, + int n_pages) +{ + EvDocumentFontsIface *iface = EV_DOCUMENT_FONTS_GET_IFACE (document_fonts); + + return iface->scan (document_fonts, n_pages); +} + +void ev_document_fonts_fill_model (EvDocumentFonts *document_fonts, - GtkTreeModel *model, - int n_pages) + GtkTreeModel *model) { EvDocumentFontsIface *iface = EV_DOCUMENT_FONTS_GET_IFACE (document_fonts); - return iface->fill_model (document_fonts, model, n_pages); + iface->fill_model (document_fonts, model); } diff --git a/backend/ev-document-fonts.h b/backend/ev-document-fonts.h index 2a05e7e..d069b9d 100644 --- a/backend/ev-document-fonts.h +++ b/backend/ev-document-fonts.h @@ -53,16 +53,20 @@ struct _EvDocumentFontsIface { GTypeInterface base_iface; - /* Methods */ - gboolean (* fill_model) (EvDocumentFonts *document_fonts, - GtkTreeModel *model, - int n_pages); + /* Methods */ + gboolean (* scan) (EvDocumentFonts *document_fonts, + int n_pages); + double (* get_progress) (EvDocumentFonts *document_fonts); + void (* fill_model) (EvDocumentFonts *document_fonts, + GtkTreeModel *model); }; -GType ev_document_fonts_get_type (void); -gboolean ev_document_fonts_fill_model (EvDocumentFonts *document_fonts, - GtkTreeModel *model, - int n_pages); +GType ev_document_fonts_get_type (void); +gboolean ev_document_fonts_scan (EvDocumentFonts *document_fonts, + int n_pages); +double ev_document_fonts_get_progress (EvDocumentFonts *document_fonts); +void ev_document_fonts_fill_model (EvDocumentFonts *document_fonts, + GtkTreeModel *model); G_END_DECLS diff --git a/data/evince-properties.glade b/data/evince-properties.glade index a672716..837ecd5 100644 --- a/data/evince-properties.glade +++ b/data/evince-properties.glade @@ -16,7 +16,6 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_CENTER</property> - <property name="focus_on_map">True</property> <property name="has_separator">False</property> <child internal-child="vbox"> @@ -85,10 +84,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -113,10 +108,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -141,10 +132,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -169,10 +156,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -197,10 +180,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -225,10 +204,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -253,10 +228,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -281,10 +252,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -309,10 +276,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -337,10 +300,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -365,10 +324,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -393,10 +348,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -422,10 +373,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -451,10 +398,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -480,10 +423,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -509,10 +448,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -538,10 +473,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -567,10 +498,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -596,10 +523,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -624,10 +547,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -652,10 +571,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -680,10 +595,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -708,10 +619,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -736,10 +643,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_END</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -769,10 +672,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -784,7 +683,7 @@ <property name="border_width">12</property> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">0</property> + <property name="spacing">6</property> <child> <widget class="GtkScrolledWindow" id="scrolledwindow1"> @@ -799,13 +698,10 @@ <widget class="GtkTreeView" id="fonts_treeview"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="headers_visible">True</property> + <property name="headers_visible">False</property> <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> - <property name="fixed_height_mode">False</property> - <property name="hover_selection">False</property> - <property name="hover_expand">False</property> </widget> </child> </widget> @@ -815,6 +711,27 @@ <property name="fill">True</property> </packing> </child> + + <child> + <widget class="GtkLabel" id="font_progress_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="tab_expand">False</property> @@ -835,10 +752,6 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index 8d555af..7c60d9c 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -56,6 +56,10 @@ struct _PdfDocument PopplerPSFile *ps_file; gchar *password; + PopplerFontInfo *font_info; + PopplerFontsIter *fonts_iter; + int fonts_scanned_pages; + PdfDocumentSearch *search; }; @@ -100,6 +104,14 @@ pdf_document_dispose (GObject *object) if (pdf_document->document) { g_object_unref (pdf_document->document); } + + if (pdf_document->font_info) { + poppler_font_info_free (pdf_document->font_info); + } + + if (pdf_document->fonts_iter) { + poppler_fonts_iter_free (pdf_document->fonts_iter); + } } static void @@ -495,28 +507,55 @@ pdf_document_security_iface_init (EvDocumentSecurityIface *iface) iface->set_password = pdf_document_set_password; } +static gdouble +pdf_document_fonts_get_progress (EvDocumentFonts *document_fonts) +{ + PdfDocument *pdf_document = PDF_DOCUMENT (document_fonts); + int n_pages; + + n_pages = pdf_document_get_n_pages (EV_DOCUMENT (pdf_document)); + + return (double)pdf_document->fonts_scanned_pages / (double)n_pages; +} + static gboolean -pdf_document_fonts_fill_model (EvDocumentFonts *document_fonts, - GtkTreeModel *model, - int n_pages) +pdf_document_fonts_scan (EvDocumentFonts *document_fonts, + int n_pages) { -#ifdef POPPLER_FONT_INFO PdfDocument *pdf_document = PDF_DOCUMENT (document_fonts); - PopplerFontInfo *info; - PopplerFontsIter *iter; gboolean result; g_return_val_if_fail (PDF_IS_DOCUMENT (document_fonts), FALSE); - info = (PopplerFontInfo *)g_object_get_data (G_OBJECT (model), "font_info"); - if (info == NULL) { - info = poppler_font_info_new (pdf_document->document); - g_object_set_data_full (G_OBJECT (model), "font_info", - (PopplerFontInfo *)info, - (GDestroyNotify)poppler_font_info_free); + if (pdf_document->font_info == NULL) { + pdf_document->font_info = poppler_font_info_new (pdf_document->document); + } + + if (pdf_document->fonts_iter) { + poppler_fonts_iter_free (pdf_document->fonts_iter); } - result = poppler_font_info_scan (info, n_pages, &iter); + pdf_document->fonts_scanned_pages += n_pages; + + result = poppler_font_info_scan (pdf_document->font_info, n_pages, + &pdf_document->fonts_iter); + if (!result) { + pdf_document->fonts_scanned_pages = 0; + poppler_font_info_free (pdf_document->font_info); + pdf_document->font_info = NULL; + } + + return result; +} + +static void +pdf_document_fonts_fill_model (EvDocumentFonts *document_fonts, + GtkTreeModel *model) +{ + PdfDocument *pdf_document = PDF_DOCUMENT (document_fonts); + PopplerFontsIter *iter = pdf_document->fonts_iter; + + g_return_if_fail (PDF_IS_DOCUMENT (document_fonts)); if (iter) { do { @@ -530,19 +569,15 @@ pdf_document_fonts_fill_model (EvDocumentFonts *document_fonts, EV_DOCUMENT_FONTS_COLUMN_NAME, name, -1); } while (poppler_fonts_iter_next (iter)); - poppler_fonts_iter_free (iter); } - - return result; -#else - return FALSE; -#endif } static void pdf_document_document_fonts_iface_init (EvDocumentFontsIface *iface) { iface->fill_model = pdf_document_fonts_fill_model; + iface->scan = pdf_document_fonts_scan; + iface->get_progress = pdf_document_fonts_get_progress; } static gboolean diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index 82f310f..20ebf85 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -347,15 +347,13 @@ static void ev_job_fonts_init (EvJobFonts *job) { /* Do Nothing */ } static void ev_job_fonts_class_init (EvJobFontsClass *class) { /* Do Nothing */ } EvJob * -ev_job_fonts_new (EvDocument *document, - GtkTreeModel *model) +ev_job_fonts_new (EvDocument *document) { EvJobFonts *job; job = g_object_new (EV_TYPE_JOB_FONTS, NULL); EV_JOB (job)->document = g_object_ref (document); - job->model = g_object_ref (model); return EV_JOB (job); } @@ -370,7 +368,7 @@ ev_job_fonts_run (EvJobFonts *job) ev_document_doc_mutex_lock (); fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document); - job->scan_completed = !ev_document_fonts_fill_model (fonts, job->model, 20); + job->scan_completed = !ev_document_fonts_scan (fonts, 20); EV_JOB (job)->finished = TRUE; diff --git a/shell/ev-jobs.h b/shell/ev-jobs.h index d585d86..900d040 100644 --- a/shell/ev-jobs.h +++ b/shell/ev-jobs.h @@ -152,7 +152,6 @@ struct _EvJobLoadClass struct _EvJobFonts { EvJob parent; - GtkTreeModel *model; gboolean scan_completed; }; @@ -195,8 +194,7 @@ void ev_job_load_run (EvJobLoad *load); /* EvJobFonts */ GType ev_job_fonts_get_type (void); -EvJob *ev_job_fonts_new (EvDocument *document, - GtkTreeModel *model); +EvJob *ev_job_fonts_new (EvDocument *document); void ev_job_fonts_run (EvJobFonts *fonts); G_END_DECLS diff --git a/shell/ev-properties.c b/shell/ev-properties.c index 6007f13..e8eca8f 100644 --- a/shell/ev-properties.c +++ b/shell/ev-properties.c @@ -106,61 +106,60 @@ set_property (GladeXML *xml, Property property, const char *text) } static void +update_progress_label (GtkWidget *label, double progress) +{ + if (progress > 0) { + char *progress_text; + progress_text = g_strdup_printf (_("Gathering font information... %3d%%"), + (int) (progress * 100)); + gtk_label_set_text (GTK_LABEL (label), progress_text); + g_free (progress_text); + } else { + gtk_label_set_text (GTK_LABEL (label), ""); + } +} + +static void job_fonts_finished_cb (EvJob *job, GtkTreeView *tree_view) { - GtkTreeModel *model = EV_JOB_FONTS (job)->model; + EvDocumentFonts *document_fonts = EV_DOCUMENT_FONTS (job->document); + GtkWidget *progress_label; + double progress; + + progress_label = g_object_get_data (G_OBJECT (tree_view), "progress_label"); + progress = ev_document_fonts_get_progress (document_fonts); + update_progress_label (progress_label, progress); if (EV_JOB_FONTS (job)->scan_completed) { g_signal_handlers_disconnect_by_func (job, job_fonts_finished_cb, tree_view); - gtk_tree_view_set_model (tree_view, model); } else { - EvJob *new_job = ev_job_fonts_new (job->document, model); + EvJob *new_job; + + ev_document_fonts_fill_model (document_fonts, + gtk_tree_view_get_model (tree_view)); + new_job = ev_job_fonts_new (job->document); ev_job_queue_add_job (job, EV_JOB_PRIORITY_LOW); g_object_unref (new_job); } } static void -fill_fonts_treeview (GtkTreeView *tree_view, - EvDocument *document) -{ - GtkListStore *list_store; - EvJob *job; - - list_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING); - g_object_set_data_full (G_OBJECT (tree_view), "list_store", - list_store, g_object_unref); - - job = ev_job_fonts_new (document, GTK_TREE_MODEL (list_store)); - g_signal_connect_object (job, "finished", - G_CALLBACK (job_fonts_finished_cb), - tree_view, 0); - ev_job_queue_add_job (job, EV_JOB_PRIORITY_LOW); - g_object_unref (job); -} - -static void setup_fonts_view (GladeXML *xml, EvDocument *document) { - GtkWidget *widget; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkListStore *list_store; - GtkTreeIter iter; - - widget = glade_xml_get_widget (xml, "fonts_treeview"); - - list_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING); - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, FONT_NAME_COL, _("Loading..."), -1); + EvJob *job; + GtkWidget *tree_view; + GtkWidget *progress_label; - gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (list_store)); - g_object_unref (list_store); + tree_view = glade_xml_get_widget (xml, "fonts_treeview"); + progress_label = glade_xml_get_widget (xml, "font_progress_label"); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE); - gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE); @@ -169,7 +168,18 @@ setup_fonts_view (GladeXML *xml, EvDocument *document) "text", EV_DOCUMENT_FONTS_COLUMN_NAME, NULL); - fill_fonts_treeview (GTK_TREE_VIEW (widget), document); + list_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING); + gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), + GTK_TREE_MODEL (list_store)); + + job = ev_job_fonts_new (document); + g_object_set_data (G_OBJECT (tree_view), "progress_label", + progress_label); + g_signal_connect_object (job, "finished", + G_CALLBACK (job_fonts_finished_cb), + tree_view, 0); + ev_job_queue_add_job (job, EV_JOB_PRIORITY_LOW); + g_object_unref (job); } GtkDialog * |