]> www.fi.muni.cz Git - evince.git/blob - backend/ev-document-find.h
112faf2d8dbd345b3d321dea5f250d01daf8d4a3
[evince.git] / backend / ev-document-find.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
2 /*
3  *  Copyright (C) 2004 Red Hat, Inc.
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2, or (at your option)
8  *  any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  *
19  *  $Id$
20  */
21
22 #ifndef EV_DOCUMENT_FIND_H
23 #define EV_DOCUMENT_FIND_H
24
25 #include <glib-object.h>
26 #include <glib.h>
27 #include <gdk/gdk.h>
28
29 G_BEGIN_DECLS
30
31 typedef struct
32 {
33   int page_num;
34   GdkRectangle highlight_area;
35 } EvFindResult;
36
37 #define EV_TYPE_DOCUMENT_FIND       (ev_document_find_get_type ())
38 #define EV_DOCUMENT_FIND(o)                 (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_DOCUMENT_FIND, EvDocumentFind))
39 #define EV_DOCUMENT_FIND_IFACE(k)           (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_DOCUMENT_FIND, EvDocumentFindIface))
40 #define EV_IS_DOCUMENT_FIND(o)      (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_DOCUMENT_FIND))
41 #define EV_IS_DOCUMENT_FIND_IFACE(k)        (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_DOCUMENT_FIND))
42 #define EV_DOCUMENT_FIND_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_DOCUMENT_FIND, EvDocumentFindIface))
43
44 typedef struct _EvDocumentFind  EvDocumentFind;
45 typedef struct _EvDocumentFindIface     EvDocumentFindIface;
46
47 struct _EvDocumentFindIface
48 {
49         GTypeInterface base_iface;
50
51         /* Methods */
52         
53         void         (* begin)     (EvDocumentFind    *document_find,
54                                     const char        *search_string,
55                                     gboolean           case_sensitive);
56         void         (* cancel)    (EvDocumentFind    *document_find);
57
58         /* Signals */
59
60         void         (* found)      (EvDocumentFind     *document_find,
61                                      const EvFindResult *results,
62                                      int                 n_results,
63                                      double              percent_complete);
64 };
65
66 GType ev_document_find_get_type (void);
67
68 void ev_document_find_begin  (EvDocumentFind     *document_find,
69                               const char         *search_string,
70                               gboolean            case_sensitive);
71 void ev_document_find_cancel (EvDocumentFind     *document_find);
72 void ev_document_find_found  (EvDocumentFind     *document_find,
73                               const EvFindResult *results,
74                               int                 n_results,
75                               double              percent_complete);
76
77
78 /* How this interface works:
79  *
80  * begin() begins a new search, canceling any previous search.
81  * 
82  * cancel() cancels a search if any, otherwise does nothing.
83  * 
84  * If begin() has been called and cancel() has not, then the
85  * "found" signal can be emitted at any time.
86  * The results given in the "found" signal are always all-inclusive,
87  * that is, the array will contain all results found so far.
88  * There are no guarantees about the ordering of the array,
89  * or consistency of ordering between "found" signal emissions.
90  *
91  * When cancel() is called, "found" will always be emitted with NULL,0
92  */
93
94 G_END_DECLS
95
96 #endif