From ec2aa10ab1ec9246d6c35b90f5d1df372f39c732 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Thu, 23 Dec 2004 03:09:00 +0000 Subject: display an error if the document doesn't support find (better ideas?) 2004-12-22 Havoc Pennington * shell/ev-window.c (ev_window_cmd_edit_find): display an error if the document doesn't support find (better ideas?) (find_bar_search_changed_cb): handle missing document or document that doesn't support find * pdf/xpdf/pdf-document.cc: port to implement the new EvDocumentFindIface * backend/ev-document-find.c: create a new interface for searching * backend/ev-document.h, backend/ev-document.c: delete the find stuff --- (limited to 'pdf') diff --git a/pdf/xpdf/pdf-document.cc b/pdf/xpdf/pdf-document.cc index 8323ebe..efee462 100644 --- a/pdf/xpdf/pdf-document.cc +++ b/pdf/xpdf/pdf-document.cc @@ -20,6 +20,7 @@ #include "gpdf-g-switch.h" #include "pdf-document.h" #include "ev-ps-exporter.h" +#include "ev-document-find.h" #include "gpdf-g-switch.h" #include "GlobalParams.h" @@ -55,8 +56,9 @@ struct _PdfDocument gboolean page_valid; }; -static void pdf_document_document_iface_init (EvDocumentIface *iface); -static void pdf_document_ps_exporter_iface_init (EvPSExporterIface *iface); +static void pdf_document_document_iface_init (EvDocumentIface *iface); +static void pdf_document_ps_exporter_iface_init (EvPSExporterIface *iface); +static void pdf_document_find_iface_init (EvDocumentFindIface *iface); G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT, { @@ -64,6 +66,8 @@ G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT, pdf_document_document_iface_init); G_IMPLEMENT_INTERFACE (EV_TYPE_PS_EXPORTER, pdf_document_ps_exporter_iface_init); + G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_FIND, + pdf_document_find_iface_init); }); static gboolean @@ -281,9 +285,9 @@ pdf_document_render (EvDocument *document, } static void -pdf_document_begin_find (EvDocument *document, - const char *search_string, - gboolean case_sensitive) +pdf_document_find_begin (EvDocumentFind *document, + const char *search_string, + gboolean case_sensitive) { /* FIXME make this incremental (idle handler) and multi-page */ /* Right now it's fully synchronous plus only does the current page */ @@ -340,26 +344,22 @@ pdf_document_begin_find (EvDocument *document, } } - ev_document_found (document, - (EvFindResult*) results->data, - results->len, - 1.0); + ev_document_find_found (document, + (EvFindResult*) results->data, + results->len, + 1.0); g_array_free (results, TRUE); } static void -pdf_document_end_find (EvDocument *document) +pdf_document_find_cancel (EvDocumentFind *document) { PdfDocument *pdf_document = PDF_DOCUMENT (document); /* FIXME this will do something once begin_find queues * an incremental find */ - - // this should probably be shared among EvDocument - // implementations somehow? - ev_document_found (document, NULL, 0, 1.0); } static void @@ -431,8 +431,6 @@ pdf_document_document_iface_init (EvDocumentIface *iface) iface->set_page_offset = pdf_document_set_page_offset; iface->get_page_size = pdf_document_get_page_size; iface->render = pdf_document_render; - iface->begin_find = pdf_document_begin_find; - iface->end_find = pdf_document_end_find; } static void @@ -443,6 +441,14 @@ pdf_document_ps_exporter_iface_init (EvPSExporterIface *iface) iface->end = pdf_document_ps_export_end; } + +static void +pdf_document_find_iface_init (EvDocumentFindIface *iface) +{ + iface->begin = pdf_document_find_begin; + iface->cancel = pdf_document_find_cancel; +} + static void pdf_document_init (PdfDocument *pdf_document) { -- cgit v0.9.1