1 | /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ |
2 | /* vim:set et sts=4: */ |
3 | /* bus - The Input Bus |
4 | * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com> |
5 | * Copyright (C) 2011-2018 Takao Fujiwara <takao.fujiwara1@gmail.com> |
6 | * Copyright (C) 2008-2018 Red Hat, Inc. |
7 | * |
8 | * This library is free software; you can redistribute it and/or |
9 | * modify it under the terms of the GNU Lesser General Public |
10 | * License as published by the Free Software Foundation; either |
11 | * version 2.1 of the License, or (at your option) any later version. |
12 | * |
13 | * This library is distributed in the hope that it will be useful, |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | * Lesser General Public License for more details. |
17 | * |
18 | * You should have received a copy of the GNU Lesser General Public |
19 | * License along with this library; if not, write to the Free Software |
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 |
21 | * USA |
22 | */ |
23 | |
24 | #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) |
25 | #error "Only <ibus.h> can be included directly" |
26 | #endif |
27 | |
28 | #ifndef __IBUS_ENGINE_DESC_H_ |
29 | #define __IBUS_ENGINE_DESC_H_ |
30 | |
31 | /** |
32 | * SECTION: ibusenginedesc |
33 | * @short_description: Input method engine description data. |
34 | * @title: IBusEngineDesc |
35 | * @stability: Stable |
36 | * |
37 | * An IBusEngineDesc stores description data of IBusEngine. |
38 | * The description data can either be passed to ibus_engine_desc_new(), |
39 | * or loaded from an XML node through ibus_engine_desc_new_from_xml_node() |
40 | * to construct IBusEngineDesc. |
41 | * |
42 | * However, the recommended way to load engine description data is |
43 | * using ibus_component_new_from_file() to load a component file, |
44 | * which also includes engine description data. |
45 | * |
46 | * see_also: #IBusComponent, #IBusEngine |
47 | * |
48 | */ |
49 | |
50 | #include "ibusserializable.h" |
51 | #include "ibusxml.h" |
52 | |
53 | /* |
54 | * Type macros. |
55 | */ |
56 | |
57 | /* define GOBJECT macros */ |
58 | #define IBUS_TYPE_ENGINE_DESC \ |
59 | (ibus_engine_desc_get_type ()) |
60 | #define IBUS_ENGINE_DESC(obj) \ |
61 | (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_ENGINE_DESC, IBusEngineDesc)) |
62 | #define IBUS_ENGINE_DESC_CLASS(klass) \ |
63 | (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_ENGINE_DESC, IBusEngineDescClass)) |
64 | #define IBUS_IS_ENGINE_DESC(obj) \ |
65 | (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_ENGINE_DESC)) |
66 | #define IBUS_IS_ENGINE_DESC_CLASS(klass) \ |
67 | (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_ENGINE_DESC)) |
68 | #define IBUS_ENGINE_DESC_GET_CLASS(obj) \ |
69 | (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ENGINE_DESC, IBusEngineDescClass)) |
70 | |
71 | G_BEGIN_DECLS |
72 | |
73 | typedef struct _IBusEngineDesc IBusEngineDesc; |
74 | typedef struct _IBusEngineDescPrivate IBusEngineDescPrivate; |
75 | typedef struct _IBusEngineDescClass IBusEngineDescClass; |
76 | |
77 | /** |
78 | * IBusEngineDesc: |
79 | * |
80 | * Input method engine description data. |
81 | * You can get extended values with g_object_get_properties. |
82 | */ |
83 | struct _IBusEngineDesc { |
84 | IBusSerializable parent; |
85 | /* instance members */ |
86 | |
87 | /*< public >*/ |
88 | /*< private >*/ |
89 | IBusEngineDescPrivate *priv; |
90 | }; |
91 | |
92 | struct _IBusEngineDescClass { |
93 | IBusSerializableClass parent; |
94 | /* class members */ |
95 | }; |
96 | |
97 | GType ibus_engine_desc_get_type (void); |
98 | |
99 | /** |
100 | * ibus_engine_desc_new: |
101 | * @name: Name of the engine. |
102 | * @longname: Long name of the input method engine. |
103 | * @description: Input method engine description. |
104 | * @language: Language (e.g. zh, jp) supported by this input method engine. |
105 | * @license: License of the input method engine. |
106 | * @author: Author of the input method engine. |
107 | * @icon: Icon file of this engine. |
108 | * @layout: Keyboard layout |
109 | * |
110 | * Creates a new #IBusEngineDesc. |
111 | * If layout is "default", the engine inherits the current layout and |
112 | * does not change the layout. The layouts "default" and "" are same. |
113 | * E.g. If you switch JP XKB engine and an input method engine (IME), |
114 | * the IME inherits the JP layout. |
115 | * |
116 | * Returns: A newly allocated IBusEngineDesc. |
117 | */ |
118 | IBusEngineDesc *ibus_engine_desc_new (const gchar *name, |
119 | const gchar *longname, |
120 | const gchar *description, |
121 | const gchar *language, |
122 | const gchar *license, |
123 | const gchar *author, |
124 | const gchar *icon, |
125 | const gchar *layout); |
126 | |
127 | /** |
128 | * ibus_engine_desc_new_varargs: |
129 | * @first_property_name: Name of the first property. |
130 | * @...: the NULL-terminated arguments of the properties and values. |
131 | * |
132 | * Creates a new #IBusEngineDesc. |
133 | * ibus_engine_desc_new_varargs() supports the va_list format. |
134 | * name property is required. e.g. |
135 | * ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL) |
136 | * If layout is "default", the engine inherits the current layout and |
137 | * does not change the layout. The layouts "default" and "" are same. |
138 | * E.g. If you switch JP XKB engine and an input method engine (IME), |
139 | * the IME inherits the JP layout. |
140 | * |
141 | * Returns: A newly allocated IBusEngineDesc. |
142 | */ |
143 | IBusEngineDesc *ibus_engine_desc_new_varargs (const gchar *first_property_name, |
144 | ...); |
145 | |
146 | |
147 | /** |
148 | * ibus_engine_desc_new_from_xml_node: |
149 | * @node: An XML node |
150 | * |
151 | * Creates a new IBusEngineDesc from an XML node. |
152 | * <note><para>This function is called by ibus_component_new_from_file(), |
153 | * so developers normally do not need to call it directly. |
154 | * </para></note> |
155 | * |
156 | * Returns: A newly allocated IBusEngineDesc that contains description from |
157 | * @node. |
158 | */ |
159 | IBusEngineDesc *ibus_engine_desc_new_from_xml_node |
160 | (XMLNode *node); |
161 | /** |
162 | * ibus_engine_desc_get_name: |
163 | * @info: An IBusEngineDesc |
164 | * |
165 | * Gets the name property in IBusEngineDesc. It should not be freed. |
166 | * |
167 | * Returns: name property in IBusEngineDesc |
168 | */ |
169 | const gchar *ibus_engine_desc_get_name (IBusEngineDesc *info); |
170 | |
171 | /** |
172 | * ibus_engine_desc_get_longname: |
173 | * @info: An IBusEngineDesc |
174 | * |
175 | * Gets the longname property in IBusEngineDesc. It should not be freed. |
176 | * |
177 | * Returns: longname property in IBusEngineDesc |
178 | */ |
179 | const gchar *ibus_engine_desc_get_longname (IBusEngineDesc *info); |
180 | |
181 | /** |
182 | * ibus_engine_desc_get_description: |
183 | * @info: An IBusEngineDesc |
184 | * |
185 | * Gets the description property in IBusEngineDesc. It should not be freed. |
186 | * |
187 | * Returns: description property in IBusEngineDesc |
188 | */ |
189 | const gchar *ibus_engine_desc_get_description |
190 | (IBusEngineDesc *info); |
191 | |
192 | /** |
193 | * ibus_engine_desc_get_language: |
194 | * @info: An IBusEngineDesc |
195 | * |
196 | * Gets the language property in IBusEngineDesc. It should not be freed. |
197 | * |
198 | * Returns: language property in IBusEngineDesc |
199 | */ |
200 | const gchar *ibus_engine_desc_get_language (IBusEngineDesc *info); |
201 | |
202 | |
203 | /** |
204 | * ibus_engine_desc_get_license: |
205 | * @info: An IBusEngineDesc |
206 | * |
207 | * Gets the license property in IBusEngineDesc. It should not be freed. |
208 | * |
209 | * Returns: license property in IBusEngineDesc |
210 | */ |
211 | const gchar *ibus_engine_desc_get_license (IBusEngineDesc *info); |
212 | |
213 | /** |
214 | * ibus_engine_desc_get_author: |
215 | * @info: An IBusEngineDesc |
216 | * |
217 | * Gets the author property in IBusEngineDesc. It should not be freed. |
218 | * |
219 | * Returns: author property in IBusEngineDesc |
220 | */ |
221 | const gchar *ibus_engine_desc_get_author (IBusEngineDesc *info); |
222 | |
223 | /** |
224 | * ibus_engine_desc_get_icon: |
225 | * @info: An IBusEngineDesc |
226 | * |
227 | * Gets the icon property in IBusEngineDesc. It should not be freed. |
228 | * |
229 | * Returns: icon property in IBusEngineDesc |
230 | */ |
231 | const gchar *ibus_engine_desc_get_icon (IBusEngineDesc *info); |
232 | |
233 | /** |
234 | * ibus_engine_desc_get_layout: |
235 | * @info: An IBusEngineDesc |
236 | * |
237 | * Gets the layout property in IBusEngineDesc. It should not be freed. |
238 | * |
239 | * Returns: layout property in IBusEngineDesc |
240 | */ |
241 | const gchar *ibus_engine_desc_get_layout (IBusEngineDesc *info); |
242 | |
243 | /** |
244 | * ibus_engine_desc_get_layout_variant: |
245 | * @info: An IBusEngineDesc |
246 | * |
247 | * Gets the keyboard variant property in IBusEngineDesc. It should not be freed. |
248 | * |
249 | * Returns: keyboard variant property in IBusEngineDesc |
250 | */ |
251 | const gchar *ibus_engine_desc_get_layout_variant |
252 | (IBusEngineDesc *info); |
253 | |
254 | /** |
255 | * ibus_engine_desc_get_layout_option: |
256 | * @info: An IBusEngineDesc |
257 | * |
258 | * Gets the keyboard option property in IBusEngineDesc. It should not be freed. |
259 | * |
260 | * Returns: keyboard option property in IBusEngineDesc |
261 | */ |
262 | const gchar *ibus_engine_desc_get_layout_option |
263 | (IBusEngineDesc *info); |
264 | |
265 | /** |
266 | * ibus_engine_desc_get_rank: |
267 | * @info: An IBusEngineDesc |
268 | * |
269 | * Gets the rank property in IBusEngineDesc. |
270 | * |
271 | * Returns: rank property in IBusEngineDesc |
272 | */ |
273 | guint ibus_engine_desc_get_rank (IBusEngineDesc *info); |
274 | |
275 | /** |
276 | * ibus_engine_desc_get_hotkeys: |
277 | * @info: An IBusEngineDesc |
278 | * |
279 | * Gets the hotkeys property in IBusEngineDesc. It should not be freed. |
280 | * |
281 | * Returns: hotkeys property in IBusEngineDesc |
282 | */ |
283 | const gchar *ibus_engine_desc_get_hotkeys (IBusEngineDesc *info); |
284 | |
285 | /** |
286 | * ibus_engine_desc_get_symbol: |
287 | * @info: An IBusEngineDesc |
288 | * |
289 | * Gets the symbol property in IBusEngineDesc. It should not be freed. |
290 | * |
291 | * Returns: symbol property in IBusEngineDesc |
292 | */ |
293 | const gchar *ibus_engine_desc_get_symbol (IBusEngineDesc *info); |
294 | |
295 | /** |
296 | * ibus_engine_desc_get_setup: |
297 | * @info: An IBusEngineDesc |
298 | * |
299 | * Gets the setup property in IBusEngineDesc. It should not be freed. |
300 | * |
301 | * Returns: setup property in IBusEngineDesc |
302 | */ |
303 | const gchar *ibus_engine_desc_get_setup (IBusEngineDesc *info); |
304 | |
305 | /** |
306 | * ibus_engine_desc_get_version: |
307 | * @info: An IBusEngineDesc |
308 | * |
309 | * Gets the version property in IBusEngineDesc. It should not be freed. |
310 | * |
311 | * Returns: version in IBusEngineDesc |
312 | */ |
313 | const gchar *ibus_engine_desc_get_version (IBusEngineDesc *info); |
314 | |
315 | /** |
316 | * ibus_engine_desc_get_textdomain: |
317 | * @info: An IBusEngineDesc |
318 | * |
319 | * Gets the textdomain property in IBusEngineDesc. It should not be freed. |
320 | * |
321 | * Returns: textdomain in IBusEngineDesc |
322 | */ |
323 | const gchar *ibus_engine_desc_get_textdomain |
324 | (IBusEngineDesc *info); |
325 | |
326 | /** |
327 | * ibus_engine_desc_get_icon_prop_key: |
328 | * @info: An IBusEngineDesc |
329 | * |
330 | * Gets the key of IBusProperty to load the panel icon dynamically |
331 | * in IBusEngineDesc. It should not be freed. |
332 | * |
333 | * Returns: IBusProperty.key for dynamic panel icon in IBusEngineDesc |
334 | */ |
335 | const gchar *ibus_engine_desc_get_icon_prop_key |
336 | (IBusEngineDesc *info); |
337 | |
338 | /** |
339 | * ibus_engine_desc_output: |
340 | * @info: An IBusEngineDesc |
341 | * @output: XML-formatted Input method engine description. |
342 | * @indent: Number of indent (showed as 4 spaces). |
343 | * |
344 | * Output XML-formatted input method engine description. |
345 | * The result will be append to GString specified in @output. |
346 | */ |
347 | void ibus_engine_desc_output (IBusEngineDesc *info, |
348 | GString *output, |
349 | gint indent); |
350 | G_END_DECLS |
351 | #endif |
352 | |