2
/* Ekiga -- A VoIP and Video-Conferencing application
3
* Copyright (C) 2000-2008 Damien Sandras
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 of the License, or
8
* (at your option) any later version.
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.
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 Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
20
* Ekiga is licensed under the GPL license and as a special exception,
21
* you have permission to link or otherwise combine this program with the
22
* programs OPAL, OpenH323 and PWLIB, and distribute the combination,
23
* without applying the requirements of the GNU GPL to the OPAL, OpenH323
24
* and PWLIB programs, as long as you do follow the requirements of the
25
* GNU GPL for all the rest of the software thus combined.
30
* gm-text-buffer-enhancer-helper-iface.h - description
31
* --------------------------------
32
* begin : written in july 2008 by Julien Puydt
33
* copyright : (C) 2008 by Julien Puydt
34
* description : Declaration of the interface of a text decorator
35
* (for use with GmTextBufferEnhancer)
39
#ifndef __GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE_H__
40
#define __GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE_H__
46
typedef struct _GmTextBufferEnhancerHelperIFace GmTextBufferEnhancerHelperIFace;
47
typedef struct _GmTextBufferEnhancerHelperIFaceClass GmTextBufferEnhancerHelperIFaceClass;
51
/* This method is used to have all enhancers tell what they think they can do
52
* to enhance a text ; then the enhancer will choose the most suitable helper
53
* and use the next method.
54
* For this reason, the helper receives :
55
* - the full text (full_text parameter) ;
56
* - where in the full text it should start looking for interesting things (from
58
* and it returns two values (the start and length out parameters) :
59
* - where it thinks it can do something (the start parameter) ;
60
* - on which length it will do it (the length parameter).
63
* - return a zero length if nothing interesting can be done (start will then
64
* be ignored by the caller) ;
65
* - the length allows the enhancer to prefer the helper which saw "fooz" when
66
* compared to the one which saw "foo".
68
void gm_text_buffer_enhancer_helper_check (GmTextBufferEnhancerHelperIFace* self,
69
const gchar* full_text,
75
/* This method is called by the enhancer when the helper has been choosen
76
* to act ; it receives :
77
* - the buffer (buffer parameter) in which the enhanced text has to go ;
78
* - the iterator (iter parameter) where to insert the enhanced text ;
79
* - the active tags (tags parameter), which is an in&out parameter, hence
80
* the enhancer can change them and use them ;
81
* - the full text which the enhancer is trying to insert ;
82
* - where in the text the helper said it would work (the start parameter),
83
* as in&out parameter so the helper can swallow it ;
84
* - the length (length parameter) of the part the helper said was interested
87
* "the helper said" means those values are those the helper answered in its
90
void gm_text_buffer_enhancer_helper_enhance (GmTextBufferEnhancerHelperIFace* self,
91
GtkTextBuffer* buffer,
94
const gchar* full_text,
98
/* GObject boilerplate */
100
struct _GmTextBufferEnhancerHelperIFaceClass {
101
GTypeInterface parent;
103
void (*do_check) (GmTextBufferEnhancerHelperIFace* self,
104
const gchar* full_text,
109
void (*do_enhance) (GmTextBufferEnhancerHelperIFace* self,
110
GtkTextBuffer* buffer,
113
const gchar* full_text,
118
#define GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE (gm_text_buffer_enhancer_helper_iface_get_type())
119
#define GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE,GmTextBufferEnhancerHelperIFace))
120
#define GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST((vtable),GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE,GTypeInterface))
121
#define GM_IS_TEXT_BUFFER_ENHANCER_HELPER_IFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE))
122
#define GM_IS_TEXT_BUFFER_ENHANCER_HELPER_IFACE_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE((vtable),GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE))
123
#define GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_INTERFACE((inst),GM_TYPE_TEXT_BUFFER_ENHANCER_HELPER_IFACE,GmTextBufferEnhancerHelperIFaceClass))
125
GType gm_text_buffer_enhancer_helper_iface_get_type () G_GNUC_CONST;
129
#endif /* __GM_TEXT_BUFFER_ENHANCER_HELPER_IFACE_H__ */