1 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
2 /* vim:set et sts=4: */
3 /* ibus - The Input Bus
4  * Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
5  * Copyright (C) 2013-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
6  * Copyright (C) 2008-2019 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_BUS_H_
29 #define __IBUS_BUS_H_
30 
31 /**
32  * SECTION: ibusbus
33  * @short_description: Connect with IBus daemon.
34  * @stability: Stable
35  *
36  * An IBusBus connects with IBus daemon.
37  */
38 #include <gio/gio.h>
39 #include <glib.h>
40 #include "ibusinputcontext.h"
41 #include "ibusconfig.h"
42 #include "ibuscomponent.h"
43 #include "ibusshare.h"
44 
45 /*
46  * Type macros.
47  */
48 
49 /* define GOBJECT macros */
50 #define IBUS_TYPE_BUS             \
51     (ibus_bus_get_type ())
52 #define IBUS_BUS(obj)             \
53     (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_BUS, IBusBus))
54 #define IBUS_BUS_CLASS(klass)     \
55     (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_BUS, IBusBusClass))
56 #define IBUS_IS_BUS(obj)          \
57     (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_BUS))
58 #define IBUS_IS_BUS_CLASS(klass)  \
59     (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_BUS))
60 #define IBUS_BUS_GET_CLASS(obj)   \
61     (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_BUS, IBusBusClass))
62 
63 G_BEGIN_DECLS
64 
65 typedef struct _IBusBus IBusBus;
66 typedef struct _IBusBusClass IBusBusClass;
67 typedef struct _IBusBusPrivate IBusBusPrivate;
68 
69 /**
70  * IBusBus:
71  *
72  * An opaque data type representing IBus bus (daemon communication) status.
73  */
74 struct _IBusBus {
75     IBusObject parent;
76     /* instance members */
77 
78     IBusBusPrivate *priv;
79 };
80 
81 struct _IBusBusClass {
82     IBusObjectClass parent;
83     /* class members */
84 };
85 
86 GType        ibus_bus_get_type          (void);
87 
88 /**
89  * ibus_bus_new:
90  *
91  * Creates a new #IBusBus instance.
92  *
93  * Returns: A newly allocated #IBusBus instance, and the instance is not
94  * floating.
95  */
96 IBusBus     *ibus_bus_new               (void);
97 
98 /**
99  * ibus_bus_new_async:
100  *
101  * Creates a new #IBusBus instance. The instance will asynchronously connect
102  * to the IBus daemon.
103  *
104  * Returns: A newly allocated #IBusBus instance, and the instance is not
105  * floating.
106  */
107 IBusBus     *ibus_bus_new_async         (void);
108 
109 /**
110  * ibus_bus_new_async_client:
111  *
112  * Creates a new #IBusBus instance for client use only. It will possibly
113  * be limited in what it can do.
114  *
115  * The instance will asynchronously connect to the IBus daemon.
116  *
117  * Returns: A newly allocated #IBusBus instance, and the instance is not
118  * floating.
119  */
120 IBusBus     *ibus_bus_new_async_client  (void);
121 
122 
123 /**
124  * ibus_bus_is_connected:
125  * @bus: An #IBusBus.
126  *
127  * Return %TRUE if @bus is connected to IBus daemon.
128  *
129  * Returns: %TRUE if @bus is connected, %FALSE otherwise.
130  */
131 gboolean     ibus_bus_is_connected      (IBusBus        *bus);
132 
133 /**
134  * ibus_bus_get_connection:
135  * @bus: An #IBusBus.
136  *
137  * Gets a #GDBusConnection of an #IBusBus instance.
138  *
139  * Returns: (transfer none): A #GDBusConnection of an #IBusBus instance.
140  */
141 GDBusConnection *
142              ibus_bus_get_connection    (IBusBus        *bus);
143 
144 /**
145  * ibus_bus_get_service_name:
146  * @bus: An #IBusBus.
147  *
148  * Return the main service name to use for calls on the ibus connection.
149  *
150  * Returns: at dbus name.
151  */
152 const gchar * ibus_bus_get_service_name (IBusBus        *bus);
153 
154 /**
155  * ibus_bus_hello:
156  * @bus: An #IBusBus.
157  *
158  * This function sends a "HELLO" message to DBus daemon,
159  * which replies the unique name of current IBus process.
160  *
161  * Returns: The unique name of IBus process in DBus.
162  */
163 const gchar *ibus_bus_hello             (IBusBus        *bus);
164 
165 /**
166  * ibus_bus_request_name:
167  * @bus: the IBusBus instance to be processed.
168  * @name: Name to be requested.
169  * @flags: IBusBusNameFlag.
170  *
171  * Request a name from IBus daemon synchronously.
172  *
173  * Returns: 0 if failed; IBusBusRequestNameReply otherwise.
174  */
175 guint32      ibus_bus_request_name      (IBusBus        *bus,
176                                          const gchar    *name,
177                                          guint32         flags);
178 
179 /**
180  * ibus_bus_request_name_async:
181  * @bus: An #IBusBus.
182  * @name: Name to be requested.
183  * @flags: Flags (FixMe).
184  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
185  * @cancellable: A #GCancellable or %NULL.
186  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL
187  *      if you don't care about the result of the method invocation.
188  * @user_data: The data to pass to callback.
189  *
190  * Request a name from IBus daemon asynchronously.
191  */
192 void        ibus_bus_request_name_async (IBusBus        *bus,
193                                          const gchar    *name,
194                                          guint           flags,
195                                          gint            timeout_msec,
196                                          GCancellable   *cancellable,
197                                          GAsyncReadyCallback
198                                                          callback,
199                                          gpointer        user_data);
200 
201 /**
202  * ibus_bus_request_name_async_finish:
203  * @bus: An #IBusBus.
204  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
205  *   ibus_bus_request_name_async().
206  * @error: Return location for error or %NULL.
207  *
208  * Finishes an operation started with ibus_bus_request_name_async().
209  *
210  * Returns: 0 if failed; positive number otherwise.
211  */
212 guint       ibus_bus_request_name_async_finish
213                                         (IBusBus        *bus,
214                                          GAsyncResult   *res,
215                                          GError        **error);
216 
217 /**
218  * ibus_bus_release_name:
219  * @bus: An #IBusBus.
220  * @name: Name to be released.
221  *
222  * Release a name to IBus daemon synchronously.
223  *
224  * Returns: 0 if failed; positive number otherwise.
225  */
226 guint        ibus_bus_release_name      (IBusBus        *bus,
227                                          const gchar    *name);
228 
229 /**
230  * ibus_bus_release_name_async:
231  * @bus: An #IBusBus.
232  * @name: Name to be released.
233  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
234  * @cancellable: A #GCancellable or %NULL.
235  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
236  *      or %NULL if you don't care about the result of the method invocation.
237  * @user_data: The data to pass to callback.
238  *
239  * Release a name to IBus daemon asynchronously.
240  */
241 void         ibus_bus_release_name_async
242                                         (IBusBus        *bus,
243                                          const gchar    *name,
244                                          gint            timeout_msec,
245                                          GCancellable   *cancellable,
246                                          GAsyncReadyCallback
247                                                          callback,
248                                          gpointer        user_data);
249 
250 /**
251  * ibus_bus_release_name_async_finish:
252  * @bus: An #IBusBus.
253  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
254  *   ibus_bus_release_name_async().
255  * @error: Return location for error or %NULL.
256  *
257  * Finishes an operation started with ibus_bus_release_name_async().
258  *
259  * Returns: 0 if failed; positive number otherwise.
260  */
261 guint        ibus_bus_release_name_async_finish
262                                         (IBusBus        *bus,
263                                          GAsyncResult   *res,
264                                          GError        **error);
265 
266 /**
267  * ibus_bus_list_queued_owners:
268  * @bus: An IBusBus.
269  * @name: Name to be queried.
270  *
271  * Lists the unique bus names of connections currently queued for a bus name.
272  * FIXME add an asynchronous version.
273  *
274  * Returns: (transfer full) (element-type utf8):
275  *           The unique bus names of connections currently queued for @name.
276  */
277 GList *      ibus_bus_list_queued_owners
278                                         (IBusBus      *bus,
279                                          const gchar  *name);
280 
281 /**
282  * ibus_bus_name_has_owner:
283  * @bus: An #IBusBus.
284  * @name: Name to be checked.
285  *
286  * Checks whether the name has owner synchronously.
287  *
288  * Returns: %TRUE if the name has owner, %FALSE otherwise.
289  */
290 gboolean     ibus_bus_name_has_owner    (IBusBus        *bus,
291                                          const gchar    *name);
292 
293 /**
294  * ibus_bus_name_has_owner_async:
295  * @bus: An #IBusBus.
296  * @name: Name to be checked.
297  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
298  * @cancellable: A #GCancellable or %NULL.
299  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
300  *      or %NULL if you don't care about the result of the method invocation.
301  * @user_data: The data to pass to callback.
302  *
303  * Checks whether the name has owner asynchronously.
304  */
305 void         ibus_bus_name_has_owner_async
306                                         (IBusBus        *bus,
307                                          const gchar    *name,
308                                          gint            timeout_msec,
309                                          GCancellable   *cancellable,
310                                          GAsyncReadyCallback
311                                                          callback,
312                                          gpointer        user_data);
313 
314 /**
315  * ibus_bus_name_has_owner_async_finish:
316  * @bus: An #IBusBus.
317  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
318  *   ibus_bus_name_has_owner_async().
319  * @error: Return location for error or %NULL.
320  *
321  * Finishes an operation started with ibus_bus_name_has_owner_async().
322  *
323  * Returns: %TRUE if the name has owner, %FALSE otherwise.
324  */
325 gboolean     ibus_bus_name_has_owner_async_finish
326                                         (IBusBus        *bus,
327                                          GAsyncResult   *res,
328                                          GError        **error);
329 
330 /**
331  * ibus_bus_list_names:
332  * @bus: An #IBusBus.
333  *
334  * Return lists that attached to @bus.
335  * <note><para>[FixMe] Not implemented yet, only return %NULL.</para></note>
336  * <note><para>[FixMe] Add async version.</para></note>
337  *
338  * Returns: (transfer full) (element-type utf8): Lists that attached to @bus.
339  */
340 GList       *ibus_bus_list_names        (IBusBus        *bus);
341 
342 /**
343  * ibus_bus_add_match:
344  * @bus: An #IBusBus.
345  * @rule: Match rule.
346  *
347  * Add a match rule to an #IBusBus synchronously.
348  *
349  * Returns: %TRUE if the rule is added. %FALSE otherwise.
350  */
351 gboolean     ibus_bus_add_match         (IBusBus        *bus,
352                                          const gchar    *rule);
353 
354 /**
355  * ibus_bus_add_match_async:
356  * @bus: An #IBusBus.
357  * @rule: Match rule.
358  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
359  * @cancellable: A #GCancellable or %NULL.
360  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
361  *      or %NULL if you don't care about the result of the method invocation.
362  * @user_data: The data to pass to callback.
363  *
364  * Add a match rule to an #IBusBus asynchronously.
365  */
366 void         ibus_bus_add_match_async   (IBusBus        *bus,
367                                          const gchar    *rule,
368                                          gint            timeout_msec,
369                                          GCancellable   *cancellable,
370                                          GAsyncReadyCallback
371                                                          callback,
372                                          gpointer        user_data);
373 
374 /**
375  * ibus_bus_add_match_async_finish:
376  * @bus: An #IBusBus.
377  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
378  *   ibus_bus_add_match_async().
379  * @error: Return location for error or %NULL.
380  *
381  * Finishes an operation started with ibus_bus_add_match_async().
382  *
383  * Returns: %TRUE if the rule is added. %FALSE otherwise.
384  */
385 gboolean     ibus_bus_add_match_async_finish
386                                         (IBusBus        *bus,
387                                          GAsyncResult   *res,
388                                          GError        **error);
389 
390 /**
391  * ibus_bus_remove_match:
392  * @bus: An #IBusBus.
393  * @rule: Match rule.
394  *
395  * Remove a match rule to an #IBusBus synchronously.
396  *
397  * Returns: %TRUE if the rule is removed. %FALSE otherwise.
398  */
399 gboolean     ibus_bus_remove_match      (IBusBus        *bus,
400                                          const gchar    *rule);
401 
402 /**
403  * ibus_bus_remove_match_async:
404  * @bus: An #IBusBus.
405  * @rule: Match rule.
406  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
407  * @cancellable: A #GCancellable or %NULL.
408  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
409  *      or %NULL if you don't care about the result of the method invocation.
410  * @user_data: The data to pass to callback.
411  *
412  * Remove a match rule to an IBusBus asynchronously.
413  */
414 void         ibus_bus_remove_match_async
415                                         (IBusBus        *bus,
416                                          const gchar    *rule,
417                                          gint            timeout_msec,
418                                          GCancellable   *cancellable,
419                                          GAsyncReadyCallback
420                                                          callback,
421                                          gpointer        user_data);
422 
423 /**
424  * ibus_bus_remove_match_async_finish:
425  * @bus: An #IBusBus.
426  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
427  *   ibus_bus_remove_match_async().
428  * @error: Return location for error or %NULL.
429  *
430  * Finishes an operation started with ibus_bus_remove_match_async().
431  *
432  * Returns: %TRUE if the rule is removed. %FALSE otherwise.
433  */
434 gboolean     ibus_bus_remove_match_async_finish
435                                         (IBusBus        *bus,
436                                          GAsyncResult   *res,
437                                          GError        **error);
438 
439 /**
440  * ibus_bus_get_name_owner:
441  * @bus: An #IBusBus.
442  * @name: Name.
443  *
444  * Return the name owner synchronously.
445  *
446  * Returns: Owner of the name. The returned value must be freed with g_free().
447  */
448 gchar       *ibus_bus_get_name_owner    (IBusBus        *bus,
449                                          const gchar    *name);
450 
451 /**
452  * ibus_bus_get_name_owner_async:
453  * @bus: An #IBusBus.
454  * @name: Name.
455  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
456  * @cancellable: A #GCancellable or %NULL.
457  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
458  *      or %NULL if you don't care about the result of the method invocation.
459  * @user_data: The data to pass to callback.
460  *
461  * Return the name owner asynchronously.
462  */
463 void         ibus_bus_get_name_owner_async
464                                         (IBusBus        *bus,
465                                          const gchar    *name,
466                                          gint            timeout_msec,
467                                          GCancellable   *cancellable,
468                                          GAsyncReadyCallback
469                                                          callback,
470                                          gpointer        user_data);
471 
472 /**
473  * ibus_bus_get_name_owner_async_finish:
474  * @bus: An #IBusBus.
475  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
476  *   ibus_bus_get_name_owner_async().
477  * @error: Return location for error or %NULL.
478  *
479  * Finishes an operation started with ibus_bus_get_name_owner_async().
480  *
481  * Returns: Owner of the name. The returned value must be freed with g_free().
482  */
483 gchar       *ibus_bus_get_name_owner_async_finish
484                                         (IBusBus        *bus,
485                                          GAsyncResult   *res,
486                                          GError        **error);
487 /* declare ibus methods */
488 
489 /**
490  * ibus_bus_exit:
491  * @bus: An #IBusBus.
492  * @restart: Whether restarting the ibus.
493  *
494  * Exit or restart ibus-daemon synchronously.
495  *
496  * Returns: %TRUE if the "Exit" call is successful, %FALSE otherwise.
497  */
498 gboolean     ibus_bus_exit              (IBusBus        *bus,
499                                          gboolean        restart);
500 
501 /**
502  * ibus_bus_exit_async:
503  * @bus: An #IBusBus.
504  * @restart: Whether restarting the ibus.
505  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
506  * @cancellable: A #GCancellable or %NULL.
507  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
508  *      or %NULL if you don't care about the result of the method invocation.
509  * @user_data: The data to pass to callback.
510  *
511  * Exit or restart ibus-daemon asynchronously.
512  */
513 void        ibus_bus_exit_async         (IBusBus        *bus,
514                                          gboolean        restart,
515                                          gint            timeout_msec,
516                                          GCancellable   *cancellable,
517                                          GAsyncReadyCallback
518                                                          callback,
519                                          gpointer        user_data);
520 
521 /**
522  * ibus_bus_exit_async_finish:
523  * @bus: An #IBusBus.
524  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
525  *   ibus_bus_exit_async().
526  * @error: Return location for error or %NULL.
527  *
528  * Finishes an operation started with ibus_bus_exit_async().
529  *
530  * Returns: %TRUE if the "Exit" call is successful, %FALSE otherwise.
531  */
532 gboolean    ibus_bus_exit_async_finish  (IBusBus        *bus,
533                                          GAsyncResult   *res,
534                                          GError        **error);
535 
536 /**
537  * ibus_bus_create_input_context:
538  * @bus: An #IBusBus.
539  * @client_name: Name of client.
540  *
541  * Create an input context for client synchronously.
542  *
543  * Returns: (transfer full): A newly allocated #IBusInputContext if the
544  *      "CreateInputContext" call is succeeded, %NULL otherwise.
545  */
546 IBusInputContext *
547             ibus_bus_create_input_context
548                                         (IBusBus        *bus,
549                                          const gchar    *client_name);
550 
551 /**
552  * ibus_bus_create_input_context_async:
553  * @bus: An #IBusBus.
554  * @client_name: Name of client.
555  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
556  * @cancellable: A #GCancellable or %NULL.
557  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
558  *      It should not be %NULL.
559  * @user_data: The data to pass to callback.
560  *
561  * Create an input context for client asynchronously.
562  */
563 void        ibus_bus_create_input_context_async
564                                         (IBusBus        *bus,
565                                          const gchar    *client_name,
566                                          gint            timeout_msec,
567                                          GCancellable   *cancellable,
568                                          GAsyncReadyCallback
569                                                          callback,
570                                          gpointer        user_data);
571 
572 /**
573  * ibus_bus_create_input_context_async_finish:
574  * @bus: An #IBusBus.
575  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
576  *   ibus_bus_create_input_context_async().
577  * @error: Return location for error or %NULL.
578  *
579  * Finishes an operation started with ibus_bus_create_input_context_async().
580  *
581  * Returns: (transfer full): A newly allocated #IBusInputContext if the
582  *      "CreateInputContext" call is succeeded, %NULL otherwise.
583  */
584 IBusInputContext *
585              ibus_bus_create_input_context_async_finish
586                                         (IBusBus        *bus,
587                                          GAsyncResult   *res,
588                                          GError        **error);
589 
590 /**
591  * ibus_bus_current_input_context:
592  * @bus: An #IBusBus.
593  *
594  * Get the current focused input context synchronously.
595  *
596  * Returns: Name of the currently focused #IBusInputContext if the
597  *          "CurrentInputContext" call succeeded, %NULL otherwise. The return
598  *          value must be freed with g_free().
599  */
600 gchar       *ibus_bus_current_input_context
601                                         (IBusBus        *bus);
602 
603 /**
604  * ibus_bus_current_input_context_async:
605  * @bus: An #IBusBus.
606  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
607  * @cancellable: A #GCancellable or %NULL.
608  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
609  *      or %NULL if you don't care about the result of the method invocation.
610  * @user_data: The data to pass to callback.
611  *
612  * Get the current focused input context asynchronously.
613  */
614 void         ibus_bus_current_input_context_async
615                                         (IBusBus        *bus,
616                                          gint            timeout_msec,
617                                          GCancellable   *cancellable,
618                                          GAsyncReadyCallback
619                                                          callback,
620                                          gpointer        user_data);
621 
622 /**
623  * ibus_bus_current_input_context_async_finish:
624  * @bus: An #IBusBus.
625  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
626  *   ibus_bus_current_input_context_async().
627  * @error: Return location for error or %NULL.
628  *
629  * Finishes an operation started with ibus_bus_current_input_context_async().
630  *
631  * Returns: Name of the currently focused IBusInputContext if the
632  *          "CurrentInputContext" call succeeded, %NULL otherwise. The return
633  *          value must be freed with g_free().
634  */
635 gchar       *ibus_bus_current_input_context_async_finish
636                                         (IBusBus        *bus,
637                                          GAsyncResult   *res,
638                                          GError        **error);
639 
640 /**
641  * ibus_bus_register_component:
642  * @bus: An #IBusBus.
643  * @component: A input engine component.
644  *
645  * Register a component to an #IBusBus synchronously.
646  *
647  * Returns: %TRUE if the "RegisterComponent" call is successful, %FALSE otherwise.
648  */
649 gboolean     ibus_bus_register_component
650                                         (IBusBus        *bus,
651                                          IBusComponent  *component);
652 
653 /**
654  * ibus_bus_register_component_async:
655  * @bus: An #IBusBus.
656  * @component: A input engine component.
657  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
658  * @cancellable: A #GCancellable or %NULL.
659  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
660  *      or %NULL if you don't care about the result of the method invocation.
661  * @user_data: The data to pass to callback.
662  *
663  * Register a component to an #IBusBus asynchronously.
664  */
665 void         ibus_bus_register_component_async
666                                         (IBusBus        *bus,
667                                          IBusComponent  *component,
668                                          gint            timeout_msec,
669                                          GCancellable   *cancellable,
670                                          GAsyncReadyCallback
671                                                          callback,
672                                          gpointer            user_data);
673 
674 /**
675  * ibus_bus_register_component_async_finish:
676  * @bus: An #IBusBus.
677  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
678  *   ibus_bus_register_component_async().
679  * @error: Return location for error or %NULL.
680  *
681  * Finishes an operation started with ibus_bus_register_component_async().
682  *
683  * Returns: %TRUE if the "RegisterComponent" call is successful, %FALSE otherwise.
684  */
685 gboolean     ibus_bus_register_component_async_finish
686                                         (IBusBus        *bus,
687                                          GAsyncResult   *res,
688                                          GError        **error);
689 
690 /**
691  * ibus_bus_list_engines:
692  * @bus: An #IBusBus.
693  *
694  * List engines synchronously.
695  *
696  * Returns: (transfer full) (element-type IBusEngineDesc):
697  *         A List of engines.
698  */
699 GList       *ibus_bus_list_engines      (IBusBus        *bus);
700 
701 /**
702  * ibus_bus_list_engines_async:
703  * @bus: An #IBusBus.
704  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
705  * @cancellable: A #GCancellable or %NULL.
706  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL
707  *      if you don't care about the result of the method invocation.
708  * @user_data: The data to pass to callback.
709  *
710  * List engines asynchronously.
711  */
712 void         ibus_bus_list_engines_async
713                                         (IBusBus        *bus,
714                                          gint            timeout_msec,
715                                          GCancellable   *cancellable,
716                                          GAsyncReadyCallback
717                                                          callback,
718                                          gpointer        user_data);
719 
720 /**
721  * ibus_bus_list_engines_async_finish:
722  * @bus: An #IBusBus.
723  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
724  *   ibus_bus_list_engines_async().
725  * @error: Return location for error or %NULL.
726  *
727  * Finishes an operation started with ibus_bus_list_engines_async().
728  *
729  * Returns: (transfer full) (element-type IBusEngineDesc):
730  *         A List of engines.
731  */
732 GList       *ibus_bus_list_engines_async_finish
733                                         (IBusBus        *bus,
734                                          GAsyncResult   *res,
735                                          GError        **error);
736 
737 #ifndef IBUS_DISABLE_DEPRECATED
738 /**
739  * ibus_bus_list_active_engines:
740  * @bus: An #IBusBus.
741  *
742  * List active engines synchronously.
743  *
744  * Returns: (transfer full) (element-type IBusEngineDesc):
745  *        A List of active engines.
746  *
747  * Deprecated: 1.5.3: Read dconf value
748  * /desktop/ibus/general/preload-engines instead.
749  */
750 IBUS_DEPRECATED
751 GList       *ibus_bus_list_active_engines
752                                         (IBusBus        *bus);
753 
754 /**
755  * ibus_bus_list_active_engines_async:
756  * @bus: An #IBusBus.
757  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
758  * @cancellable: A #GCancellable or %NULL.
759  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL
760  *      if you don't care about the result of the method invocation.
761  * @user_data: The data to pass to callback.
762  *
763  * List active engines asynchronously.
764  *
765  * Deprecated: 1.5.3: Read dconf value
766  * /desktop/ibus/general/preload-engines instead.
767  */
768 IBUS_DEPRECATED
769 void         ibus_bus_list_active_engines_async
770                                         (IBusBus        *bus,
771                                          gint            timeout_msec,
772                                          GCancellable   *cancellable,
773                                          GAsyncReadyCallback
774                                                          callback,
775                                          gpointer        user_data);
776 
777 /**
778  * ibus_bus_list_active_engines_async_finish:
779  * @bus: An #IBusBus.
780  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
781  *   ibus_bus_list_active_engines_async().
782  * @error: Return location for error or %NULL.
783  *
784  * Finishes an operation started with ibus_bus_list_active_engines_async().
785  *
786  * Returns: (transfer full) (element-type IBusEngineDesc):
787  *         A List of active engines.
788  *
789  * Deprecated: 1.5.3: Read dconf value
790  * /desktop/ibus/general/preload-engines instead.
791  */
792 IBUS_DEPRECATED
793 GList       *ibus_bus_list_active_engines_async_finish
794                                         (IBusBus        *bus,
795                                          GAsyncResult   *res,
796                                          GError         **error);
797 #endif /* IBUS_DISABLE_DEPRECATED */
798 
799 /**
800  * ibus_bus_get_engines_by_names:
801  * @bus: An #IBusBus.
802  * @names: (array zero-terminated=1): A %NULL-terminated array of names.
803  *
804  * Get engines by given names synchronously. If some engine names do not exist,
805  * this function will simply ignore them, and return rest of engines.
806  * TODO(penghuang): add asynchronous version
807  *
808  * Returns: (array zero-terminated=1) (transfer full):
809  *         A %NULL-terminated array of engines.
810  */
811 IBusEngineDesc **
812              ibus_bus_get_engines_by_names
813                                         (IBusBus             *bus,
814                                          const gchar * const *names);
815 #ifndef IBUS_DISABLE_DEPRECATED
816 /**
817  * ibus_bus_get_use_sys_layout:
818  * @bus: An #IBusBus.
819  *
820  * Check if the bus's "use_sys_layout" option is enabled or not synchronously.
821  *
822  * Returns: %TRUE if "use_sys_layout" option is enabled.
823  *
824  * Deprecated: 1.5.3: Read dconf value
825  * /desktop/ibus/general/use_system_keyboard_layout instead.
826  */
827 IBUS_DEPRECATED
828 gboolean     ibus_bus_get_use_sys_layout
829                                         (IBusBus        *bus);
830 
831 /**
832  * ibus_bus_get_use_sys_layout_async:
833  * @bus: An #IBusBus.
834  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
835  * @cancellable: A #GCancellable or %NULL.
836  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
837  *      or %NULL if you don't care about the result of the method invocation.
838  * @user_data: The data to pass to callback.
839  *
840  * Check if the bus's "use_sys_layout" option is enabled or not asynchronously.
841  *
842  * Deprecated: 1.5.3: Read dconf value
843  * /desktop/ibus/general/use_system_keyboard_layout instead.
844  */
845 IBUS_DEPRECATED
846 void         ibus_bus_get_use_sys_layout_async
847                                         (IBusBus        *bus,
848                                          gint            timeout_msec,
849                                          GCancellable   *cancellable,
850                                          GAsyncReadyCallback
851                                                          callback,
852                                          gpointer        user_data);
853 
854 /**
855  * ibus_bus_get_use_sys_layout_async_finish:
856  * @bus: An #IBusBus.
857  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
858  *   ibus_bus_get_use_sys_layout_async().
859  * @error: Return location for error or %NULL.
860  *
861  * Finishes an operation started with ibus_bus_get_use_sys_layout_async().
862  *
863  * Returns: TRUE if "use_sys_layout" option is enabled.
864  *
865  * Deprecated: 1.5.3: Read dconf value
866  * /desktop/ibus/general/use_system_keyboard_layout instead.
867  */
868 IBUS_DEPRECATED
869 gboolean     ibus_bus_get_use_sys_layout_async_finish
870                                         (IBusBus        *bus,
871                                          GAsyncResult   *res,
872                                          GError        **error);
873 
874 /**
875  * ibus_bus_get_use_global_engine:
876  * @bus: An #IBusBus.
877  *
878  * Check if the bus's "use_global_engine" option is enabled or not
879  * synchronously.
880  *
881  * Returns: TRUE if "use_global_engine" option is enabled.
882  *
883  * Deprecated: 1.5.3: Currently global engine is always used.
884  */
885 IBUS_DEPRECATED
886 gboolean     ibus_bus_get_use_global_engine
887                                         (IBusBus        *bus);
888 
889 /**
890  * ibus_bus_get_use_global_engine_async:
891  * @bus: An #IBusBus.
892  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
893  * @cancellable: A #GCancellable or %NULL.
894  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
895  *      or %NULL if you don't care about the result of the method invocation.
896  * @user_data: The data to pass to callback.
897  *
898  * Check if the bus's "use_global_engine" option is enabled or not asynchronously.
899  *
900  * Deprecated: 1.5.3: Currently global engine is always used.
901  */
902 IBUS_DEPRECATED
903 void         ibus_bus_get_use_global_engine_async
904                                         (IBusBus        *bus,
905                                          gint            timeout_msec,
906                                          GCancellable   *cancellable,
907                                          GAsyncReadyCallback
908                                                          callback,
909                                          gpointer        user_data);
910 
911 /**
912  * ibus_bus_get_use_global_engine_async_finish:
913  * @bus: An #IBusBus.
914  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
915  *   ibus_bus_get_use_global_engine_async().
916  * @error: Return location for error or %NULL.
917  *
918  * Finishes an operation started with ibus_bus_get_use_global_engine_async().
919  *
920  * Returns: %TRUE if "use_global_engine" option is enabled.
921  *
922  * Deprecated: 1.5.3: Currently global engine is always used.
923  */
924 IBUS_DEPRECATED
925 gboolean     ibus_bus_get_use_global_engine_async_finish
926                                         (IBusBus        *bus,
927                                          GAsyncResult   *res,
928                                          GError         **error);
929 
930 /**
931  * ibus_bus_is_global_engine_enabled:
932  * @bus: An #IBusBus.
933  *
934  * Check if the current global engine is enabled or not synchronously.
935  *
936  * Returns: %TRUE if the current global engine is enabled.
937  *
938  * Deprecated: 1.5.3: Probably this would be used for Chrome OS only.
939  * Currently global engine is always used and ibus_bus_get_global_engine()
940  * returns NULL until the first global engine is assigned.
941  * You can use ibus_set_log_handler() to disable a warning when
942  * ibus_bus_get_global_engine() returns NULL.
943  */
944 IBUS_DEPRECATED
945 gboolean     ibus_bus_is_global_engine_enabled
946                                         (IBusBus        *bus);
947 
948 /**
949  * ibus_bus_is_global_engine_enabled_async:
950  * @bus: An #IBusBus.
951  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
952  * @cancellable: A #GCancellable or %NULL.
953  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
954  *      or %NULL if you don't care about the result of the method invocation.
955  * @user_data: The data to pass to callback.
956  *
957  * Check if the current global engine is enabled or not asynchronously.
958  *
959  * Deprecated: 1.5.3: Probably this would be used for Chrome OS only.
960  * Currently global engine is always used and ibus_bus_get_global_engine()
961  * returns NULL until the first global engine is assigned.
962  * You can use ibus_set_log_handler() to disable a warning when
963  * ibus_bus_get_global_engine() returns NULL.
964  */
965 IBUS_DEPRECATED
966 void         ibus_bus_is_global_engine_enabled_async
967                                         (IBusBus        *bus,
968                                          gint            timeout_msec,
969                                          GCancellable   *cancellable,
970                                          GAsyncReadyCallback
971                                                          callback,
972                                         gpointer         user_data);
973 
974 /**
975  * ibus_bus_is_global_engine_enabled_async_finish:
976  * @bus: An #IBusBus.
977  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
978  *   ibus_bus_is_global_engine_enabled_async().
979  * @error: Return location for error or %NULL.
980  *
981  * Finishes an operation started with ibus_bus_is_global_engine_enabled_async().
982  *
983  * Returns: %TRUE if the current global engine is enabled.
984  *
985  * Deprecated: 1.5.3: Probably this would be used for Chrome OS only.
986  * Currently global engine is always used and ibus_bus_get_global_engine()
987  * returns NULL until the first global engine is assigned.
988  * You can use ibus_set_log_handler() to disable a warning when
989  * ibus_bus_get_global_engine() returns NULL.
990  */
991 IBUS_DEPRECATED
992 gboolean     ibus_bus_is_global_engine_enabled_async_finish
993                                         (IBusBus        *bus,
994                                          GAsyncResult   *res,
995                                          GError        **error);
996 #endif /* IBUS_DISABLE_DEPRECATED */
997 
998 /**
999  * ibus_bus_get_global_engine:
1000  * @bus: An #IBusBus.
1001  *
1002  * Get the description of current global engine synchronously.
1003  *
1004  * Returns: (transfer full): The description of current global engine,
1005  * or %NULL if there is no global engine.
1006  */
1007 IBusEngineDesc *
1008              ibus_bus_get_global_engine (IBusBus        *bus);
1009 
1010 /**
1011  * ibus_bus_get_global_engine_async:
1012  * @bus: An #IBusBus.
1013  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
1014  * @cancellable: A #GCancellable or %NULL.
1015  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL
1016  *      if you don't care about the result of the method invocation.
1017  * @user_data: The data to pass to callback.
1018  *
1019  * Get the description of current global engine asynchronously.
1020  */
1021 void         ibus_bus_get_global_engine_async
1022                                         (IBusBus        *bus,
1023                                          gint            timeout_msec,
1024                                          GCancellable   *cancellable,
1025                                          GAsyncReadyCallback
1026                                                          callback,
1027                                          gpointer        user_data);
1028 
1029 /**
1030  * ibus_bus_get_global_engine_async_finish:
1031  * @bus: An #IBusBus.
1032  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
1033  *   ibus_bus_get_global_engine_async_finish().
1034  * @error: Return location for error or %NULL.
1035  *
1036  * Finishes an operation started with ibus_bus_get_global_engine_async_finish().
1037  *
1038  * Returns: (transfer none): The description of current global engine,
1039  * or %NULL if there is no global engine.
1040  */
1041 IBusEngineDesc *
1042              ibus_bus_get_global_engine_async_finish
1043                                         (IBusBus        *bus,
1044                                          GAsyncResult   *res,
1045                                          GError        **error);
1046 
1047 /**
1048  * ibus_bus_set_global_engine:
1049  * @bus: An #IBusBus.
1050  * @global_engine: A new engine name.
1051  *
1052  * Set current global engine synchronously.
1053  *
1054  * Returns: %TRUE if the global engine was set successfully.
1055  */
1056 gboolean     ibus_bus_set_global_engine (IBusBus        *bus,
1057                                          const gchar    *global_engine);
1058 
1059 /**
1060  * ibus_bus_set_global_engine_async:
1061  * @bus: An #IBusBus.
1062  * @global_engine: A new engine name.
1063  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
1064  * @cancellable: A #GCancellable or %NULL.
1065  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
1066  *      or %NULL if you don't care about the result of the method invocation.
1067  * @user_data: The data to pass to callback.
1068  *
1069  * Set current global engine asynchronously.
1070  */
1071 void         ibus_bus_set_global_engine_async
1072                                         (IBusBus        *bus,
1073                                          const gchar    *global_engine,
1074                                          gint            timeout_msec,
1075                                          GCancellable   *cancellable,
1076                                          GAsyncReadyCallback
1077                                                          callback,
1078                                          gpointer        user_data);
1079 
1080 /**
1081  * ibus_bus_set_global_engine_async_finish:
1082  * @bus: An #IBusBus.
1083  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
1084  *   ibus_bus_set_global_engine_async().
1085  * @error: Return location for error or %NULL.
1086  *
1087  * Finishes an operation started with ibus_bus_set_global_engine_async().
1088  *
1089  * Returns: %TRUE if no IPC errros. %FALSE otherwise.
1090  */
1091 gboolean     ibus_bus_set_global_engine_async_finish
1092                                         (IBusBus        *bus,
1093                                          GAsyncResult   *res,
1094                                          GError        **error);
1095 
1096 /**
1097  * ibus_bus_set_watch_dbus_signal:
1098  * @bus: An #IBusBus.
1099  * @watch: %TRUE if you want ibusbus to emit "name-owner-changed" signal when
1100  * ibus-daemon emits the NameOwnerChanged DBus signal.
1101  *
1102  * Start or stop watching the NameOwnerChanged DBus signal.
1103  */
1104 void         ibus_bus_set_watch_dbus_signal
1105                                         (IBusBus        *bus,
1106                                          gboolean        watch);
1107 
1108 /**
1109  * ibus_bus_set_watch_ibus_signal:
1110  * @bus: An #IBusBus.
1111  * @watch: %TRUE if you want ibusbus to emit "global-engine-changed" signal when
1112  * ibus-daemon emits the GlobalEngineChanged IBus signal.
1113  *
1114  * Start or stop watching the GlobalEngineChanged IBus signal.
1115  */
1116 void         ibus_bus_set_watch_ibus_signal
1117                                         (IBusBus        *bus,
1118                                          gboolean        watch);
1119 
1120 /* declare config apis */
1121 /**
1122  * ibus_bus_get_config:
1123  * @bus: An #IBusBus.
1124  *
1125  * Get the config instance from #IBusBus.
1126  *
1127  * Returns: (transfer none): An #IBusConfig object which is configurable with
1128  * @bus.
1129  */
1130 IBusConfig  *ibus_bus_get_config        (IBusBus        *bus);
1131 
1132 /**
1133  * ibus_bus_preload_engines:
1134  * @bus: An #IBusBus.
1135  * @names: (array zero-terminated=1): A %NULL-terminated array of engine names.
1136  *
1137  * Start bus components by engine names synchronously.
1138  *
1139  * Returns: %TRUE if components start. %FALSE otherwise.
1140  */
1141 gboolean     ibus_bus_preload_engines   (IBusBus        *bus,
1142                                          const gchar * const *names);
1143 
1144 /**
1145  * ibus_bus_preload_engines_async:
1146  * @bus: An #IBusBus.
1147  * @names: (array zero-terminated=1): A %NULL-terminated array of engine names.
1148  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
1149  * @cancellable: A #GCancellable or %NULL.
1150  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
1151  *      or %NULL if you don't care about the result of the method invocation.
1152  * @user_data: The data to pass to callback.
1153  *
1154  * Start bus components by engine names asynchronously.
1155  */
1156 void         ibus_bus_preload_engines_async
1157                                         (IBusBus        *bus,
1158                                          const gchar * const
1159                                                         *names,
1160                                          gint            timeout_msec,
1161                                          GCancellable   *cancellable,
1162                                          GAsyncReadyCallback
1163                                                          callback,
1164                                          gpointer        user_data);
1165 
1166 /**
1167  * ibus_bus_preload_engines_async_finish:
1168  * @bus: An #IBusBus.
1169  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
1170  *   ibus_bus_preload_engines_async().
1171  * @error: Return location for error or %NULL.
1172  *
1173  * Finishes an operation started with ibus_bus_preload_engines_async().
1174  *
1175  * Returns: %TRUE if component starts. %FALSE otherwise.
1176  */
1177 gboolean     ibus_bus_preload_engines_async_finish
1178                                         (IBusBus        *bus,
1179                                          GAsyncResult   *res,
1180                                          GError        **error);
1181 
1182 /**
1183  * ibus_bus_get_ibus_property:
1184  * @bus: An #IBusBus.
1185  * @property_name: property name in org.freedesktop.DBus.Properties.Get
1186  *
1187  * Get org.freedesktop.DBus.Properties.
1188  *
1189  * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get
1190  *           The returned value must be freed with g_variant_unref().
1191  */
1192 GVariant *   ibus_bus_get_ibus_property (IBusBus        *bus,
1193                                          const gchar    *property_name);
1194 
1195 /**
1196  * ibus_bus_get_ibus_property_async:
1197  * @bus: An #IBusBus.
1198  * @property_name: property name in org.freedesktop.DBus.Properties.Get
1199  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
1200  * @cancellable: A #GCancellable or %NULL.
1201  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
1202  *      or %NULL if you don't care about the result of the method invocation.
1203  * @user_data: The data to pass to callback.
1204  *
1205  * Get org.freedesktop.DBus.Properties asynchronously.
1206  */
1207 void         ibus_bus_get_ibus_property_async
1208                                         (IBusBus        *bus,
1209                                          const gchar    *property_name,
1210                                          gint            timeout_msec,
1211                                          GCancellable   *cancellable,
1212                                          GAsyncReadyCallback
1213                                                          callback,
1214                                          gpointer             user_data);
1215 
1216 /**
1217  * ibus_bus_get_ibus_property_async_finish:
1218  * @bus: An #IBusBus.
1219  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
1220  *   ibus_bus_get_ibus_property_async().
1221  * @error: Return location for error or %NULL.
1222  *
1223  * Finishes an operation started with ibus_bus_get_ibus_property_async().
1224  *
1225  * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get
1226  *           The returned value must be freed with g_variant_unref().
1227  */
1228 GVariant *   ibus_bus_get_ibus_property_async_finish
1229                                         (IBusBus        *bus,
1230                                          GAsyncResult   *res,
1231                                          GError        **error);
1232 
1233 /**
1234  * ibus_bus_set_ibus_property:
1235  * @bus: An #IBusBus.
1236  * @property_name: property name in org.freedesktop.DBus.Properties.Set
1237  * @value: value in org.freedesktop.DBus.Properties.Set
1238  *
1239  * Set org.freedesktop.DBus.Properties.
1240  */
1241 void         ibus_bus_set_ibus_property (IBusBus        *bus,
1242                                          const gchar    *property_name,
1243                                          GVariant       *value);
1244 
1245 /**
1246  * ibus_bus_set_ibus_property_async:
1247  * @bus: An #IBusBus.
1248  * @property_name: property name in org.freedesktop.DBus.Properties.Set
1249  * @value: value in org.freedesktop.DBus.Properties.Set
1250  * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout.
1251  * @cancellable: A #GCancellable or %NULL.
1252  * @callback: A #GAsyncReadyCallback to call when the request is satisfied
1253  *      or %NULL if you don't care about the result of the method invocation.
1254  * @user_data: The data to pass to callback.
1255  *
1256  * Set org.freedesktop.DBus.Properties asynchronously.
1257  */
1258 void         ibus_bus_set_ibus_property_async
1259                                         (IBusBus        *bus,
1260                                          const gchar    *property_name,
1261                                          GVariant       *value,
1262                                          gint            timeout_msec,
1263                                          GCancellable   *cancellable,
1264                                          GAsyncReadyCallback
1265                                                          callback,
1266                                          gpointer             user_data);
1267 
1268 /**
1269  * ibus_bus_set_ibus_property_async_finish:
1270  * @bus: An #IBusBus.
1271  * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to
1272  *   ibus_bus_set_ibus_property_async().
1273  * @error: Return location for error or %NULL.
1274  *
1275  * Finishes an operation started with ibus_bus_set_ibus_property_async().
1276  *
1277  * Returns: %TRUE if property is set with async. %FALSE failed.
1278  */
1279 gboolean     ibus_bus_set_ibus_property_async_finish
1280                                         (IBusBus        *bus,
1281                                          GAsyncResult   *res,
1282                                          GError        **error);
1283 
1284 G_END_DECLS
1285 #endif
1286