Separate process_key_event_with_keycode from process_key_event to prevent build error
[platform/core/uifw/isf.git] / ism / src / scim_helper.h
1 /**
2  * @file scim_helper.h
3  * @brief Defines scim::HelperAgent and it's related types.
4  *
5  * scim::HelperAgent is a class used to write Client Helper modules.
6  *
7  */
8
9 /* ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable. */
10
11 /*
12  * Smart Common Input Method
13  *
14  * Copyright (c) 2004-2005 James Su <suzhe@tsinghua.org.cn>
15  * Copyright (c) 2012-2015 Samsung Electronics Co., Ltd.
16  *
17  *
18  * This library is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU Lesser General Public
20  * License as published by the Free Software Foundation; either
21  * version 2 of the License, or (at your option) any later version.
22  *
23  * This library is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU Lesser General Public License for more details.
27  *
28  * You should have received a copy of the GNU Lesser General Public
29  * License along with this program; if not, write to the
30  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
31  * Boston, MA  02111-1307  USA
32  *
33  * Modifications by Samsung Electronics Co., Ltd.
34  * 1. Add new interface APIs for keyboard ISE
35  *    a. expand_candidate (), contract_candidate () and set_candidate_style ()
36  *    b. set_keyboard_ise_by_uuid () and reset_keyboard_ise ()
37  *    c. get_surrounding_text () and delete_surrounding_text ()
38  *    d. show_preedit_string (), hide_preedit_string (), update_preedit_string () and update_preedit_caret ()
39  *    e. show_candidate_string (), hide_candidate_string () and update_candidate_string ()
40  *
41  * $Id: scim_helper.h,v 1.16 2005/05/24 12:22:51 suzhe Exp $
42  */
43
44 #ifndef __SCIM_HELPER_H
45 #define __SCIM_HELPER_H
46
47 #include "scim_utility.h"
48
49 #ifndef SCIM_HELPER_LAUNCHER_PROGRAM
50 #define SCIM_HELPER_LAUNCHER_PROGRAM  (SCIM_LIBEXECDIR "/scim-helper-launcher")
51 #endif
52
53 namespace scim {
54
55 /**
56  * @addtogroup Helper
57  * @ingroup InputServiceFramework
58  * The accessory classes to help develop and manage Client Helper objects.
59  * @{
60  */
61 class EXAPI HelperError: public Exception
62 {
63 public:
64     HelperError (const String& what_arg)
65         : Exception (String("scim::Helper: ") + what_arg) { }
66 };
67
68 /**
69  * @brief Helper option indicates that it's a stand alone Helper.
70  *
71  * Stand alone Helper has no corresponding IMEngine Factory,
72  * Such Helper can not be started by IMEngine Factory.
73  * So Panel must provide a menu, or something else, which contains
74  * all stand alone Helper items, so that user can start them by
75  * clicking the items.
76  */
77 const uint32 SCIM_HELPER_STAND_ALONE             = 1;
78
79 /**
80  * @brief Helper option indicates that it must be started
81  * automatically when Panel starts.
82  *
83  * If Helper objects want to start itself as soon as
84  * the Panel starts, set this option.
85  */
86 const uint32 SCIM_HELPER_AUTO_START              = (1<<1);
87
88 /**
89  * @brief Helper option indicates that it should be restarted
90  * when it exits abnormally.
91  *
92  * This option should not be used with #SCIM_HELPER_STAND_ALONE.
93  */
94 const uint32 SCIM_HELPER_AUTO_RESTART            = (1<<2);
95
96 /**
97  * @brief Helper option indicates that it needs the screen update
98  * information.
99  *
100  * Helper object with this option will receive the UPDATE_SCREEN event
101  * when the screen of focused ic is changed.
102  */
103 const uint32 SCIM_HELPER_NEED_SCREEN_INFO        = (1<<3);
104
105 /**
106  * @brief Helper option indicates that it needs the spot location
107  * information.
108  *
109  * Helper object with this option will receive the SPOT_LOCATION_INFO event
110  * when the spot location of focused ic is changed.
111  */
112 const uint32 SCIM_HELPER_NEED_SPOT_LOCATION_INFO = (1<<4);
113
114 /**
115  * @brief ISE option indicates whether helper ISE handles the keyboard keyevent
116  */
117 const uint32 ISM_HELPER_PROCESS_KEYBOARD_KEYEVENT = (1<<16);
118
119 /**
120  * @brief ISE option indicates whether it should be hidden in control panel.
121  */
122 const uint32 ISM_ISE_HIDE_IN_CONTROL_PANEL       = (1<<17);
123
124 /**
125  * @brief ISE option for 3rd party; IMEngine is not available.
126  */
127 const uint32 ISM_HELPER_WITHOUT_IMENGINE         = (1<<18);
128
129 /**
130  * @brief Structure to hold the information of a Helper object.
131  */
132 struct HelperInfo
133 {
134     String uuid;            /**< The UUID of this Helper object, replaced with Application ID since tizen 2.4 */
135     String name;            /**< The Name of this Helper object, UTF-8 encoding. Deprecated since tizen 2.4 */
136     String icon;            /**< The Icon file path of this Helper object. Deprecated since tizen 2.4 */
137     String description;     /**< The short description of this Helper object. Deprecated since tizen 2.4 */
138     uint32 option;          /**< The options of this Helper object. @sa #SCIM_HELPER_STAND_ALONE etc. Deprecated since tizen 2.4 */
139
140     HelperInfo (const String &puuid = String (),
141                 const String &pname = String (),
142                 const String &picon = String (),
143                 const String &pdesc = String (),
144                 uint32 opt = 0)
145         : uuid (puuid),
146           name (pname),
147           icon (picon),
148           description (pdesc),
149           option (opt) {
150     }
151 };
152
153 enum HelperState
154 {
155     HELPER_SHOWED,
156     HELPER_HIDED,
157     HELPER_INVALID_STATE
158 };
159
160 class MessageItem;
161 class HelperAgent;
162
163 typedef Slot3<void, const HelperAgent *, int, const String &>
164         HelperAgentSlotVoid;
165
166 typedef Slot4<void, const HelperAgent *, int, const String &, const String &>
167         HelperAgentSlotString;
168
169 typedef Slot4<void, const HelperAgent *, int, const String &, const std::vector<String> &>
170         HelperAgentSlotStringVector;
171
172 typedef Slot5<void, const HelperAgent *, int, const String &, const String &, const String &>
173         HelperAgentSlotString2;
174
175 typedef Slot4<void, const HelperAgent *, int, const String &, int>
176         HelperAgentSlotInt;
177
178 typedef Slot5<void, const HelperAgent *, int, const String &, int, int>
179         HelperAgentSlotIntInt;
180
181 typedef Slot4<void, const HelperAgent *, int, const String &, const Transaction &>
182         HelperAgentSlotTransaction;
183
184 typedef Slot4<void, const HelperAgent *, int, const String &, const rectinfo &>
185         HelperAgentSlotRect;
186
187 typedef Slot2<void, const HelperAgent *, struct rectinfo &>
188         HelperAgentSlotSize;
189
190 typedef Slot2<void, const HelperAgent *, uint32 &>
191         HelperAgentSlotUintVoid;
192
193 typedef Slot3<void, const HelperAgent *, int, uint32 &>
194         HelperAgentSlotIntUint;
195
196 typedef Slot3<void, const HelperAgent *, char *, size_t &>
197         HelperAgentSlotRawVoid;
198
199 typedef Slot3<void, const HelperAgent *, char **, size_t &>
200         HelperAgentSlotGetRawVoid;
201
202 typedef Slot4<void, const HelperAgent *, int, char *, size_t &>
203         HelperAgentSlotIntRawVoid;
204
205 typedef Slot3<void, const HelperAgent *, int, char **>
206         HelperAgentSlotIntGetStringVoid;
207
208 typedef Slot2<void, const HelperAgent *, const std::vector<uint32> &>
209         HelperAgentSlotUintVector;
210
211 typedef Slot2<void, const HelperAgent *, LookupTable &>
212         HelperAgentSlotLookupTable;
213 typedef Slot3<void, const HelperAgent *, KeyEvent &, uint32 &>
214         HelperAgentSlotKeyEventUint;
215 typedef Slot4<void, const HelperAgent *, KeyEvent &, uint32 &, uint32>
216         HelperAgentSlotKeyEventUintUint;
217
218 typedef Slot5<void, const HelperAgent *, uint32 &, char *, size_t &, uint32 &>
219         HelperAgentSlotUintCharSizeUint;
220
221 typedef Slot2<void, const HelperAgent *, const String &>
222         HelperAgentSlotStringVoid;
223
224 /**
225  * @brief The accessory class to write a Helper object.
226  *
227  * This class implements all Socket Transaction protocol between
228  * Helper object and Panel.
229  */
230 class EXAPI HelperAgent
231 {
232     class HelperAgentImpl;
233     HelperAgentImpl *m_impl;
234
235     HelperAgent (const HelperAgent &);
236     const HelperAgent & operator = (const HelperAgent &);
237
238 public:
239     HelperAgent  ();
240     ~HelperAgent ();
241
242     /**
243      * @brief Open socket connection to the Panel.
244      *
245      * Helper objects and Panel communicate with each other via the Socket
246      * created by Panel, just same as the Socket between FrontEnds and Panel.
247      *
248      * Helper object can select/poll on the connection id returned by this function
249      * to see if there are any data available to be read. If any data are available,
250      * Helper object should call HelperAgent::filter_event() to process the data.
251      *
252      * This method should be called after the necessary signal-slots are connected.
253      * If this Helper is started by an IMEngine Instance, then signal attach_input_context
254      * will be emitted during this call.
255      *
256      * Signal update_screen will be emitted during this call as well to set the startup
257      * screen of this Helper. The ic and ic_uuid parameters are invalid here.
258      *
259      * @param info The information of this Helper object.
260      * @param display The display which this Helper object should run on.
261      *
262      * @return The connection socket id. -1 means failed to create
263      *         the connection.
264      */
265     int  open_connection        (const HelperInfo   &info,
266                                  const String       &display);
267
268     /**
269      * @brief Close the socket connection to Panel.
270      */
271     void close_connection       ();
272
273     /**
274      * @brief Get the connection id previously returned by open_connection().
275      *
276      * @return the connection id
277      */
278     int  get_connection_number  () const;
279
280     /**
281      * @brief Check whether this HelperAgent has been connected to a Panel.
282      *
283      * Return true when it is connected to panel, otherwise return false.
284      */
285     bool is_connected           () const;
286
287     /**
288      * @brief Check if there are any events available to be processed.
289      *
290      * If it returns true then Helper object should call
291      * HelperAgent::filter_event() to process them.
292      *
293      * @return true if there are any events available.
294      */
295     bool has_pending_event      () const;
296
297     /**
298      * @brief Process the pending events.
299      *
300      * This function will emit the corresponding signals according
301      * to the events.
302      *
303      * @return false if the connection is broken, otherwise return true.
304      */
305     bool filter_event           ();
306
307     /**
308     * @brief Read messages from socket buffer, and see if there is a message with the given cmd.
309     *
310     * @return false if the connection is broken, or no message available with given cmd. Otherwise return true.
311     */
312     bool wait_for_message       (int cmd, int timeout);
313
314     /**
315     * @brief Process one message that is in our message queue.
316     *
317     * This function will emit the corresponding signals according
318     * to the events.
319     *
320     * @param message The message that needs to be handled.
321     *
322     * @return false if the connection is broken, otherwise return true.
323     */
324     bool handle_message         (MessageItem *message);
325
326     /**
327      * @brief Request SCIM to reload all configuration.
328      *
329      * This function should only by used by Setup Helper to request
330      * scim's reloading the configuration.
331      */
332     void reload_config          () const;
333
334     /**
335      * @brief Register some properties into Panel.
336      *
337      * This function send the request to Panel to register a list
338      * of Properties.
339      *
340      * @param properties The list of Properties to be registered into Panel.
341      *
342      * @sa scim::Property.
343      */
344     void register_properties    (const PropertyList &properties) const;
345
346     /**
347      * @brief Update a registered property.
348      *
349      * @param property The property to be updated.
350      */
351     void update_property        (const Property     &property) const;
352
353     /**
354      * @brief Send a set of events to an IMEngineInstance.
355      *
356      * All events should be put into a Transaction.
357      * And the events can only be received by one IMEngineInstance object.
358      *
359      * @param ic The handle of the Input Context to receive the events.
360      * @param ic_uuid The UUID of the Input Context.
361      * @param trans The Transaction object holds the events.
362      */
363     void send_imengine_event    (int                 ic,
364                                  const String       &ic_uuid,
365                                  const Transaction  &trans) const;
366
367     /**
368      * @brief Send a KeyEvent to an IMEngineInstance.
369      *
370      * @param ic The handle of the IMEngineInstance to receive the event.
371      *        -1 means the currently focused IMEngineInstance.
372      * @param ic_uuid The UUID of the IMEngineInstance. Empty means don't match.
373      * @param key The KeyEvent to be sent.
374      */
375     void send_key_event         (int                 ic,
376                                  const String       &ic_uuid,
377                                  const KeyEvent     &key) const;
378
379     /**
380      * @brief Forward a KeyEvent to client application directly.
381      *
382      * @param ic The handle of the client Input Context to receive the event.
383      *        -1 means the currently focused Input Context.
384      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
385      *        Empty means don't match.
386      * @param key The KeyEvent to be forwarded.
387      */
388     void forward_key_event      (int                 ic,
389                                  const String       &ic_uuid,
390                                  const KeyEvent     &key) const;
391
392     /**
393      * @brief Commit a WideString to client application directly.
394      *
395      * @param ic The handle of the client Input Context to receive the WideString.
396      *        -1 means the currently focused Input Context.
397      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
398      *        Empty means don't match.
399      * @param wstr The WideString to be committed.
400      */
401     void commit_string          (int                 ic,
402                                  const String       &ic_uuid,
403                                  const WideString   &wstr) const;
404
405     /**
406      * @brief Commit a UTF-8 String to client application directly.
407      *
408      * @param ic The handle of the client Input Context to receive the commit string.
409      *        -1 means the currently focused Input Context.
410      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
411      *        Empty means don't match.
412      * @param buf The byte array of UTF-8 string to be committed.
413      * @param buflen The buf size in bytes.
414      */
415     void commit_string          (int                 ic,
416                                  const String       &ic_uuid,
417                                  const char         *buf,
418                                  int                 buflen) const;
419
420     /**
421      * @brief Request to show preedit string.
422      *
423      * @param ic The handle of the client Input Context to receive the request.
424      *        -1 means the currently focused Input Context.
425      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
426      *        Empty means don't match.
427      */
428     void show_preedit_string    (int                 ic,
429                                  const String       &ic_uuid) const;
430
431     /**
432      * @brief Request to show aux string.
433      */
434     void show_aux_string        (void) const;
435
436     /**
437      * @brief Request to show candidate string.
438      */
439     void show_candidate_string  (void) const;
440
441     /**
442      * @brief Request to show associate string.
443      */
444     void show_associate_string  (void) const;
445
446     /**
447      * @brief Request to hide preedit string.
448      *
449      * @param ic The handle of the client Input Context to receive the request.
450      *        -1 means the currently focused Input Context.
451      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
452      *        Empty means don't match.
453      */
454     void hide_preedit_string    (int                 ic,
455                                  const String       &ic_uuid) const;
456
457     /**
458      * @brief Request to hide aux string.
459      */
460     void hide_aux_string        (void) const;
461
462     /**
463      * @brief Request to hide candidate string.
464      */
465     void hide_candidate_string  (void) const;
466
467     /**
468      * @brief Request to hide associate string.
469      */
470     void hide_associate_string  (void) const;
471
472     /**
473      * @brief Update a new WideString for preedit.
474      *
475      * @param ic The handle of the client Input Context to receive the WideString.
476      *        -1 means the currently focused Input Context.
477      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
478      *        Empty means don't match.
479      * @param wstr The WideString to be updated.
480      * @param attrs The attribute list for preedit string.
481      */
482     void update_preedit_string  (int                 ic,
483                                  const String       &ic_uuid,
484                                  const WideString   &wstr,
485                                  const AttributeList &attrs) const;
486
487     /**
488      * @brief Update a new UTF-8 string for preedit.
489      *
490      * @param ic The handle of the client Input Context to receive the UTF-8 String.
491      *        -1 means the currently focused Input Context.
492      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
493      *        Empty means don't match.
494      * @param buf The byte array of UTF-8 string to be updated.
495      * @param buflen The buf size in bytes.
496      * @param attrs The attribute list for preedit string.
497      */
498     void update_preedit_string  (int                 ic,
499                                  const String       &ic_uuid,
500                                  const char         *buf,
501                                  int                 buflen,
502                                  const AttributeList &attrs) const;
503
504     /**
505      * @brief Update a new WideString and caret for preedit.
506      *
507      * @param ic The handle of the client Input Context to receive the WideString.
508      *        -1 means the currently focused Input Context.
509      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
510      *        Empty means don't match.
511      * @param wstr The WideString to be updated.
512      * @param attrs The attribute list for preedit string.
513      * @param caret The caret position in preedit string.
514      */
515     void update_preedit_string  (int                 ic,
516                                  const String       &ic_uuid,
517                                  const WideString    &wstr,
518                                  const AttributeList &attrs,
519                                  int                 caret) const;
520
521     /**
522      * @brief Update a new UTF-8 string and caret for preedit.
523      *
524      * @param ic The handle of the client Input Context to receive the UTF-8 String.
525      *        -1 means the currently focused Input Context.
526      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
527      *        Empty means don't match.
528      * @param buf The byte array of UTF-8 string to be updated.
529      * @param buflen The buf size in bytes.
530      * @param attrs The attribute list for preedit string.
531      * @param caret The caret position in preedit string.
532      */
533     void update_preedit_string  (int                 ic,
534                                  const String       &ic_uuid,
535                                  const char         *buf,
536                                  int                 buflen,
537                                  const AttributeList &attrs,
538                                  int                 caret) const;
539
540     /**
541      * @brief Update a new WideString and caret for preedit.
542      *
543      * @param ic The handle of the client Input Context to receive the WideString.
544      *        -1 means the currently focused Input Context.
545      * @param ic_uuid The UUID of the IMEngine used by the Input Context.
546      *        Empty means don't match.
547      * @param preedit The WideString to be updated.
548      * @param commit The WideString to be commited on reset.
549      * @param attrs The attribute list for preedit string.
550      * @param caret The caret position in preedit string.
551      *
552      * The commit string can be used to replace the preedit string on reset
553      * for example on unfocus.
554      */
555
556     void update_preedit_string (int                  ic,
557                                             const String        &ic_uuid,
558                                             const WideString    &preedit,
559                                             const WideString    &commit,
560                                             const AttributeList &attrs,
561                                             int                  caret) const;
562
563     /**
564      * @brief Update a new string for aux.
565      *
566      * @param str The string to be updated.
567      * @param attrs The attribute list for aux string.
568      */
569     void update_aux_string      (const String       &str,
570                                  const AttributeList &attrs) const;
571
572     /**
573      * @brief Request to update candidate.
574      *
575      * @param table The lookup table for candidate.
576      */
577     void update_candidate_string (const LookupTable &table) const;
578
579     /**
580      * @brief Request to update associate.
581      *
582      * @param table The lookup table for associate.
583      */
584     void update_associate_string (const LookupTable &table) const;
585
586     /**
587      * @brief When the input context of ISE is changed,
588      *         ISE can call this function to notify application
589      *
590      * @param type  type of event.
591      * @param value value of event.
592      */
593     void update_input_context     (uint32                       type,
594                                    uint32                       value) const;
595
596     /**
597      * @brief Request to get surrounding text asynchronously.
598      *
599      * @param uuid The helper ISE UUID.
600      * @param maxlen_before The max length of before.
601      * @param maxlen_after The max length of after.
602      */
603     void get_surrounding_text     (const String                &uuid,
604                                    int                          maxlen_before,
605                                    int                          maxlen_after) const;
606
607     /**
608      * @brief Request to get surrounding text synchronously.
609      *
610      * @param maxlen_before The max length of before.
611      * @param maxlen_after The max length of after.
612      * @param text The surounding text.
613      * @param cursor The cursor position.
614      */
615     void get_surrounding_text (int maxlen_before, int maxlen_after, String &text, int &cursor);
616
617     /**
618      * @brief Request to delete surrounding text.
619      *
620      * @param offset The offset for cursor position.
621      * @param len The length for delete text.
622      */
623     void delete_surrounding_text  (int                          offset,
624                                    int                          len) const;
625
626     /**
627      * @brief Request to get selection.
628      *
629      * @param uuid The helper ISE UUID.
630      */
631     void get_selection       (const String                &uuid) const;
632
633     /**
634      * @brief Request to get selection text synchronously.
635      *
636      * @param text The selection text.
637      */
638     void get_selection_text       (String                      &text);
639
640     /**
641      * @brief Request to selected text.
642      *
643      * @param start The start position in text.
644      * @param end The end position in text.
645      */
646     void set_selection       (int                          start,
647                               int                          end) const;
648
649     /**
650      * @brief Set candidate position in screen.
651      *
652      * @param left The x position in screen.
653      * @param top The y position in screen.
654      */
655     void set_candidate_position   (int                          left,
656                                    int                          top) const;
657
658     /**
659      * @brief Request to hide candidate window.
660      */
661     void candidate_hide           (void) const;
662
663     /**
664      * @brief Request to get candidate window size and position.
665      *
666      * @param uuid The helper ISE UUID.
667      */
668     void get_candidate_window_geometry (const String           &uuid) const;
669
670     /**
671      * @brief Set current keyboard ISE.
672      *
673      * @param uuid The keyboard ISE UUID.
674      */
675     void set_keyboard_ise_by_uuid (const String                &uuid) const;
676
677     /**
678      * @brief Request to get current keyboard ISE information.
679      *
680      * @param uuid The helper ISE UUID.
681      */
682     void get_keyboard_ise         (const String                &uuid) const;
683
684     /**
685      * @brief Request to get uuid list of all keyboard ISEs.
686      *
687      * @param uuid The helper ISE UUID.
688      */
689     void get_keyboard_ise_list    (const String                &uuid) const;
690
691     /**
692      * @brief Update ISE window geometry.
693      *
694      * @param x      The x position in screen.
695      * @param y      The y position in screen.
696      * @param width  The ISE window width.
697      * @param height The ISE window height.
698      */
699     void update_geometry          (int                          x,
700                                    int                          y,
701                                    int                          width,
702                                    int                          height) const;
703
704     /**
705      * @brief Request to expand candidate window.
706      */
707     void expand_candidate         (void) const;
708
709     /**
710      * @brief Request to contract candidate window.
711      */
712     void contract_candidate       (void) const;
713
714     /**
715      * @brief Send selected candidate string index number.
716      */
717     void select_candidate         (int index) const;
718
719     /**
720      * @brief Update ise exit status
721      */
722     void update_ise_exit          (void) const;
723
724     /**
725      * @brief Update the preedit caret position in the preedit string.
726      *
727      * @param caret - the new position of the preedit caret.
728      */
729     void update_preedit_caret     (int                          caret) const;
730
731     /**
732      * @brief Set candidate style.
733      *
734      * @param portrait_line - the displayed line number for portrait.
735      * @param mode          - candidate window mode.
736      */
737     void set_candidate_style      (ISF_CANDIDATE_PORTRAIT_LINE_T portrait_line = ONE_LINE_CANDIDATE,
738                                    ISF_CANDIDATE_MODE_T          mode = SOFT_CANDIDATE_WINDOW) const;
739
740     /**
741      * @brief Request to reset keyboard ISE.
742      */
743     void reset_keyboard_ise       (void) const;
744
745     /**
746      * @brief Request to flush keyboard ISE.
747      */
748     void flush_keyboard_ise       (void) const;
749
750     /**
751      * @brief Send a private command to an application
752      *
753      * @param command The private command sent from IME.
754      */
755     void send_private_command     (const String                &command) const;
756
757     /**
758      * @brief Commit content to an application
759      *
760      * @param content The content sent from IME.
761      */
762     void commit_content           (const String                &content,
763                                    const String                &description,
764                                    const String                &mime_types) const;
765
766     /**
767      * @brief Request panel to hide ISE, since in some cases ISE cannot hide itself (e.g. WAYLAND)
768      */
769     void request_ise_hide         (void) const;
770
771     void recapture_string         (int                  ic,
772                                    const String        &ic_uuid,
773                                    int                  offset,
774                                    int                  len,
775                                    const WideString    &preedit_str,
776                                    const WideString    &commit_str,
777                                    const AttributeList &attrs) const;
778
779 public:
780     /**
781      * @brief Connect a slot to Helper exit signal.
782      *
783      * This signal is used to let the Helper exit.
784      *
785      * The prototype of the slot is:
786      *
787      * void exit (const HelperAgent *agent, int ic, const String &ic_uuid);
788      *
789      * Parameters:
790      * - agent    The pointer to the HelperAgent object which emits this signal.
791      * - ic       An opaque handle of the currently focused input context.
792      * - ic_uuid  The UUID of the IMEngineInstance associated with the focused input context.
793      */
794     Connection signal_connect_exit                   (HelperAgentSlotVoid        *slot);
795
796     /**
797      * @brief Connect a slot to Helper attach input context signal.
798      *
799      * This signal is used to attach an input context to this helper.
800      *
801      * When an input context requst to start this helper, then this
802      * signal will be emitted as soon as the helper is started.
803      *
804      * When an input context want to start an already started helper,
805      * this signal will also be emitted.
806      *
807      * Helper can send some events back to the IMEngineInstance in this
808      * signal-slot, to inform that it has been started sccessfully.
809      *
810      * The prototype of the slot is:
811      *
812      * void attach_input_context (const HelperAgent *agent, int ic, const String &ic_uuid);
813      */
814     Connection signal_connect_attach_input_context   (HelperAgentSlotVoid        *slot);
815
816     /**
817      * @brief Connect a slot to Helper detach input context signal.
818      *
819      * This signal is used to detach an input context from this helper.
820      *
821      * When an input context requst to stop this helper, then this
822      * signal will be emitted.
823      *
824      * Helper shouldn't send any event back to the IMEngineInstance, because
825      * the IMEngineInstance attached to the ic should have been destroyed.
826      *
827      * The prototype of the slot is:
828      *
829      * void detach_input_context (const HelperAgent *agent, int ic, const String &ic_uuid);
830      */
831     Connection signal_connect_detach_input_context   (HelperAgentSlotVoid        *slot);
832
833     /**
834      * @brief Connect a slot to Helper reload config signal.
835      *
836      * This signal is used to let the Helper reload configuration.
837      *
838      * The prototype of the slot is:
839      *
840      * void reload_config (const HelperAgent *agent, int ic, const String &ic_uuid);
841      */
842     Connection signal_connect_reload_config          (HelperAgentSlotVoid        *slot);
843
844     /**
845      * @brief Connect a slot to Helper update screen signal.
846      *
847      * This signal is used to let the Helper move its GUI to another screen.
848      * It can only be emitted when SCIM_HELPER_NEED_SCREEN_INFO is set in HelperInfo.option.
849      *
850      * The prototype of the slot is:
851      *
852      * void update_screen (const HelperAgent *agent, int ic, const String &ic_uuid, int screen_number);
853      */
854     Connection signal_connect_update_screen          (HelperAgentSlotInt         *slot);
855
856     /**
857      * @brief Connect a slot to Helper update spot location signal.
858      *
859      * This signal is used to let the Helper move its GUI according to the current spot location.
860      * It can only be emitted when SCIM_HELPER_NEED_SPOT_LOCATION_INFO is set in HelperInfo.option.
861      *
862      * The prototype of the slot is:
863      * void update_spot_location (const HelperAgent *agent, int ic, const String &ic_uuid, int x, int y);
864      */
865     Connection signal_connect_update_spot_location   (HelperAgentSlotIntInt      *slot);
866
867     /**
868      * @brief Connect a slot to Helper update cursor position signal.
869      *
870      * This signal is used to let the Helper get the cursor position information.
871      *
872      * The prototype of the slot is:
873      * void update_cursor_position (const HelperAgent *agent, int ic, const String &ic_uuid, int cursor_pos);
874      */
875     Connection signal_connect_update_cursor_position (HelperAgentSlotInt         *slot);
876
877     /**
878      * @brief Connect a slot to Helper update surrounding text signal.
879      *
880      * This signal is used to let the Helper get the surrounding text.
881      *
882      * The prototype of the slot is:
883      * void update_surrounding_text (const HelperAgent *agent, int ic, const String &text, int cursor);
884      */
885     Connection signal_connect_update_surrounding_text (HelperAgentSlotInt        *slot);
886
887     /**
888      * @brief Connect a slot to Helper update selection signal.
889      *
890      * This signal is used to let the Helper get the selection.
891      *
892      * The prototype of the slot is:
893      * void update_selection (const HelperAgent *agent, int ic, const String &text);
894      */
895     Connection signal_connect_update_selection (HelperAgentSlotVoid        *slot);
896
897     /**
898      * @brief Connect a slot to Helper trigger property signal.
899      *
900      * This signal is used to trigger a property registered by this Helper.
901      * A property will be triggered when user clicks on it.
902      *
903      * The prototype of the slot is:
904      * void trigger_property (const HelperAgent *agent, int ic, const String &ic_uuid, const String &property);
905      */
906     Connection signal_connect_trigger_property       (HelperAgentSlotString      *slot);
907
908     /**
909      * @brief Connect a slot to Helper process imengine event signal.
910      *
911      * This signal is used to deliver the events sent from IMEngine to Helper.
912      *
913      * The prototype of the slot is:
914      * void process_imengine_event (const HelperAgent *agent, int ic, const String &ic_uuid, const Transaction &transaction);
915      */
916     Connection signal_connect_process_imengine_event (HelperAgentSlotTransaction *slot);
917
918     /**
919      * @brief Connect a slot to Helper focus out signal.
920      *
921      * This signal is used to do something when input context is focus out.
922      *
923      * The prototype of the slot is:
924      * void focus_out (const HelperAgent *agent, int ic, const String &ic_uuid);
925      */
926     Connection signal_connect_focus_out                         (HelperAgentSlotVoid                *slot);
927
928     /**
929      * @brief Connect a slot to Helper focus in signal.
930      *
931      * This signal is used to do something when input context is focus in.
932      *
933      * The prototype of the slot is:
934      * void focus_in (const HelperAgent *agent, int ic, const String &ic_uuid);
935      */
936     Connection signal_connect_focus_in                          (HelperAgentSlotVoid                *slot);
937
938     /**
939      * @brief Connect a slot to Helper show signal.
940      *
941      * This signal is used to show Helper ISE window.
942      *
943      * The prototype of the slot is:
944      * void ise_show (const HelperAgent *agent, int ic, char *buf, size_t &len);
945      */
946     Connection signal_connect_ise_show                          (HelperAgentSlotIntRawVoid          *slot);
947
948     /**
949      * @brief Connect a slot to Helper hide signal.
950      *
951      * This signal is used to hide Helper ISE window.
952      *
953      * The prototype of the slot is:
954      * void ise_hide (const HelperAgent *agent, int ic, const String &ic_uuid);
955      */
956     Connection signal_connect_ise_hide                          (HelperAgentSlotVoid                *slot);
957
958     /**
959      * @brief Connect a slot to Helper get ISE window geometry signal.
960      *
961      * This signal is used to get Helper ISE window size and position.
962      *
963      * The prototype of the slot is:
964      * void get_geometry (const HelperAgent *agent, struct rectinfo &info);
965      */
966     Connection signal_connect_get_geometry                      (HelperAgentSlotSize                *slot);
967
968     /**
969      * @brief Connect a slot to Helper set mode signal.
970      *
971      * This signal is used to set Helper ISE mode.
972      *
973      * The prototype of the slot is:
974      * void set_mode (const HelperAgent *agent, uint32 &mode);
975      */
976     Connection signal_connect_set_mode                          (HelperAgentSlotUintVoid            *slot);
977
978     /**
979      * @brief Connect a slot to Helper set language signal.
980      *
981      * This signal is used to set Helper ISE language.
982      *
983      * The prototype of the slot is:
984      * void set_language (const HelperAgent *agent, uint32 &language);
985      */
986     Connection signal_connect_set_language                      (HelperAgentSlotUintVoid            *slot);
987
988     /**
989      * @brief Connect a slot to Helper set im data signal.
990      *
991      * This signal is used to send im data to Helper ISE.
992      *
993      * The prototype of the slot is:
994      * void set_imdata (const HelperAgent *agent, char *buf, size_t &len);
995      */
996     Connection signal_connect_set_imdata                        (HelperAgentSlotRawVoid             *slot);
997
998     /**
999      * @brief Connect a slot to Helper get im data signal.
1000      *
1001      * This signal is used to get im data from Helper ISE.
1002      *
1003      * The prototype of the slot is:
1004      * void get_imdata (const HelperAgent *, char **buf, size_t &len);
1005      */
1006     Connection signal_connect_get_imdata                        (HelperAgentSlotGetRawVoid          *slot);
1007
1008     /**
1009      * @brief Connect a slot to Helper get language locale.
1010      *
1011      * This signal is used to get language locale from Helper ISE.
1012      *
1013      * The prototype of the slot is:
1014      * void get_language_locale (const HelperAgent *, int ic, char **locale);
1015      */
1016     Connection signal_connect_get_language_locale               (HelperAgentSlotIntGetStringVoid    *slot);
1017
1018     /**
1019      * @brief Connect a slot to Helper set return key type signal.
1020      *
1021      * This signal is used to set return key type to Helper ISE.
1022      *
1023      * The prototype of the slot is:
1024      * void set_return_key_type (const HelperAgent *agent, uint32 &type);
1025      */
1026     Connection signal_connect_set_return_key_type               (HelperAgentSlotUintVoid            *slot);
1027
1028     /**
1029      * @brief Connect a slot to Helper get return key type signal.
1030      *
1031      * This signal is used to get return key type from Helper ISE.
1032      *
1033      * The prototype of the slot is:
1034      * void get_return_key_type (const HelperAgent *agent, uint32 &type);
1035      */
1036     Connection signal_connect_get_return_key_type               (HelperAgentSlotUintVoid            *slot);
1037
1038     /**
1039      * @brief Connect a slot to Helper set return key disable signal.
1040      *
1041      * This signal is used to set return key disable to Helper ISE.
1042      *
1043      * The prototype of the slot is:
1044      * void set_return_key_disable (const HelperAgent *agent, uint32 &disabled);
1045      */
1046     Connection signal_connect_set_return_key_disable            (HelperAgentSlotUintVoid            *slot);
1047
1048     /**
1049      * @brief Connect a slot to Helper get return key disable signal.
1050      *
1051      * This signal is used to get return key disable from Helper ISE.
1052      *
1053      * The prototype of the slot is:
1054      * void get_return_key_disable (const HelperAgent *agent, uint32 &disabled);
1055      */
1056     Connection signal_connect_get_return_key_disable            (HelperAgentSlotUintVoid            *slot);
1057
1058     /**
1059      * @brief Connect a slot to Helper get layout signal.
1060      *
1061      * This signal is used to get Helper ISE layout.
1062      *
1063      * The prototype of the slot is:
1064      * void get_layout (const HelperAgent *agent, uint32 &layout);
1065      */
1066     Connection signal_connect_get_layout                        (HelperAgentSlotUintVoid            *slot);
1067
1068     /**
1069      * @brief Connect a slot to Helper set layout signal.
1070      *
1071      * This signal is used to set Helper ISE layout.
1072      *
1073      * The prototype of the slot is:
1074      * void set_layout (const HelperAgent *agent, uint32 &layout);
1075      */
1076     Connection signal_connect_set_layout                        (HelperAgentSlotUintVoid            *slot);
1077
1078     /**
1079      * @brief Connect a slot to Helper set shift mode signal.
1080      *
1081      * This signal is used to set Helper shift mode.
1082      *
1083      * The prototype of the slot is:
1084      * void set_caps_mode (const HelperAgent *agent, uint32 &mode);
1085      */
1086     Connection signal_connect_set_caps_mode                     (HelperAgentSlotUintVoid            *slot);
1087
1088     /**
1089      * @brief Connect a slot to Helper reset input context signal.
1090      *
1091      * This signal is used to reset Helper ISE input context.
1092      *
1093      * The prototype of the slot is:
1094      * void reset_input_context (const HelperAgent *agent, int ic, const String &uuid);
1095      */
1096     Connection signal_connect_reset_input_context               (HelperAgentSlotVoid                *slot);
1097
1098     /**
1099      * @brief Connect a slot to Helper update candidate window geometry signal.
1100      *
1101      * This signal is used to get candidate window size and position.
1102      *
1103      * The prototype of the slot is:
1104      * void update_candidate_geometry (const HelperAgent *agent, int ic, const String &uuid, const rectinfo &info);
1105      */
1106     Connection signal_connect_update_candidate_geometry         (HelperAgentSlotRect                *slot);
1107
1108     /**
1109      * @brief Connect a slot to Helper update keyboard ISE signal.
1110      *
1111      * This signal is used to get current keyboard ISE name and uuid.
1112      *
1113      * The prototype of the slot is:
1114      * void update_keyboard_ise (const HelperAgent *agent, int ic, const String &uuid,
1115      *                           const String &ise_name, const String &ise_uuid);
1116      */
1117     Connection signal_connect_update_keyboard_ise               (HelperAgentSlotString2             *slot);
1118
1119     /**
1120      * @brief Connect a slot to Helper update keyboard ISE list signal.
1121      *
1122      * This signal is used to get uuid list of all keyboard ISEs.
1123      *
1124      * The prototype of the slot is:
1125      * void update_keyboard_ise_list (const HelperAgent *agent, int ic, const String &uuid,
1126      *                                const std::vector<String> &ise_list);
1127      */
1128     Connection signal_connect_update_keyboard_ise_list          (HelperAgentSlotStringVector        *slot);
1129
1130     /**
1131      * @brief Connect a slot to Helper candidate more window show signal.
1132      *
1133      * This signal is used to do someting when candidate more window is showed.
1134      *
1135      * The prototype of the slot is:
1136      * void candidate_more_window_show (const HelperAgent *agent, int ic, const String &uuid);
1137      */
1138     Connection signal_connect_candidate_more_window_show        (HelperAgentSlotVoid                *slot);
1139
1140     /**
1141      * @brief Connect a slot to Helper candidate more window hide signal.
1142      *
1143      * This signal is used to do someting when candidate more window is hidden.
1144      *
1145      * The prototype of the slot is:
1146      * void candidate_more_window_hide (const HelperAgent *agent, int ic, const String &uuid);
1147      */
1148     Connection signal_connect_candidate_more_window_hide        (HelperAgentSlotVoid                *slot);
1149
1150     /**
1151      * @brief Connect a slot to Helper candidate show signal.
1152      *
1153      * This signal is used to do candidate show.
1154      *
1155      * The prototype of the slot is:
1156      * void candidate_show (const HelperAgent *agent, int ic, const String &uuid);
1157      */
1158     Connection signal_connect_candidate_show                    (HelperAgentSlotVoid                *slot);
1159
1160     /**
1161      * @brief Connect a slot to Helper candidate hide signal.
1162      *
1163      * This signal is used to do candidate hide.
1164      *
1165      * The prototype of the slot is:
1166      * void candidate_hide (const HelperAgent *agent,int ic, const String &uuid);
1167      */
1168     Connection signal_connect_candidate_hide                    (HelperAgentSlotVoid                *slot);
1169
1170     /**
1171      * @brief Connect a slot to Helper update lookup table signal.
1172      *
1173      * This signal is used to do someting when update lookup table.
1174      *
1175      * The prototype of the slot is:
1176      * void update_lookup_table (const HelperAgent *agent, int ic, const String &uuid, LookupTable &Table);
1177      */
1178     Connection signal_connect_update_lookup_table               (HelperAgentSlotLookupTable          *slot);
1179
1180     /**
1181      * @brief Connect a slot to Helper select aux signal.
1182      *
1183      * This signal is used to do something when aux is selected.
1184      *
1185      * The prototype of the slot is:
1186      * void select_aux (const HelperAgent *agent, int ic, const String &uuid, int index);
1187      */
1188     Connection signal_connect_select_aux                        (HelperAgentSlotInt                 *slot);
1189
1190     /**
1191      * @brief Connect a slot to Helper select candidate signal.
1192      *
1193      * This signal is used to do something when candidate is selected.
1194      *
1195      * The prototype of the slot is:
1196      * void select_candidate (const HelperAgent *agent, int ic, const String &uuid, int index);
1197      */
1198     Connection signal_connect_select_candidate                  (HelperAgentSlotInt                 *slot);
1199
1200     /**
1201      * @brief Connect a slot to Helper candidate table page up signal.
1202      *
1203      * This signal is used to do something when candidate table is paged up.
1204      *
1205      * The prototype of the slot is:
1206      * void candidate_table_page_up (const HelperAgent *agent, int ic, const String &uuid);
1207      */
1208     Connection signal_connect_candidate_table_page_up           (HelperAgentSlotVoid                *slot);
1209
1210     /**
1211      * @brief Connect a slot to Helper candidate table page down signal.
1212      *
1213      * This signal is used to do something when candidate table is paged down.
1214      *
1215      * The prototype of the slot is:
1216      * void candidate_table_page_down (const HelperAgent *agent, int ic, const String &uuid);
1217      */
1218     Connection signal_connect_candidate_table_page_down         (HelperAgentSlotVoid                *slot);
1219
1220     /**
1221      * @brief Connect a slot to Helper update candidate table page size signal.
1222      *
1223      * This signal is used to do something when candidate table page size is changed.
1224      *
1225      * The prototype of the slot is:
1226      * void update_candidate_table_page_size (const HelperAgent *, int ic, const String &uuid, int page_size);
1227      */
1228     Connection signal_connect_update_candidate_table_page_size  (HelperAgentSlotInt                 *slot);
1229
1230     /**
1231      * @brief Connect a slot to Helper select associate signal.
1232      *
1233      * This signal is used to do something when associate is selected.
1234      *
1235      * The prototype of the slot is:
1236      * void select_associate (const HelperAgent *agent, int ic, const String &uuid, int index);
1237      */
1238     Connection signal_connect_select_associate                  (HelperAgentSlotInt                 *slot);
1239
1240     /**
1241      * @brief Connect a slot to Helper associate table page up signal.
1242      *
1243      * This signal is used to do something when associate table is paged up.
1244      *
1245      * The prototype of the slot is:
1246      * void associate_table_page_up (const HelperAgent *agent, int ic, const String &uuid);
1247      */
1248     Connection signal_connect_associate_table_page_up           (HelperAgentSlotVoid                *slot);
1249
1250     /**
1251      * @brief Connect a slot to Helper associate table page down signal.
1252      *
1253      * This signal is used to do something when associate table is paged down.
1254      *
1255      * The prototype of the slot is:
1256      * void associate_table_page_down (const HelperAgent *agent, int ic, const String &uuid);
1257      */
1258     Connection signal_connect_associate_table_page_down         (HelperAgentSlotVoid                *slot);
1259
1260     /**
1261      * @brief Connect a slot to Helper update associate table page size signal.
1262      *
1263      * This signal is used to do something when associate table page size is changed.
1264      *
1265      * The prototype of the slot is:
1266      * void update_associate_table_page_size (const HelperAgent *, int ic, const String &uuid, int page_size);
1267      */
1268     Connection signal_connect_update_associate_table_page_size  (HelperAgentSlotInt                 *slot);
1269
1270     /**
1271      * @brief Connect a slot to Helper turn on log signal.
1272      *
1273      * This signal is used to turn on Helper ISE debug information.
1274      *
1275      * The prototype of the slot is:
1276      * void turn_on_log (const HelperAgent *agent, uint32 &on);
1277      */
1278     Connection signal_connect_turn_on_log                       (HelperAgentSlotUintVoid            *slot);
1279
1280     /**
1281      * @brief Connect a slot to Helper update displayed candidate number signal.
1282      *
1283      * This signal is used to inform helper ISE displayed candidate number.
1284      *
1285      * The prototype of the slot is:
1286      * void update_displayed_candidate_number (const HelperAgent *, int ic, const String &uuid, int number);
1287      */
1288     Connection signal_connect_update_displayed_candidate_number (HelperAgentSlotInt                 *slot);
1289
1290     /**
1291      * @brief Connect a slot to Helper longpress candidate signal.
1292      *
1293      * This signal is used to do something when candidate is longpress.
1294      *
1295      * The prototype of the slot is:
1296      * void longpress_candidate (const HelperAgent *agent, int ic, const String &uuid, int index);
1297      */
1298     Connection signal_connect_longpress_candidate               (HelperAgentSlotInt                 *slot);
1299
1300     /**
1301      * @brief Connect a slot to Helper update candidate item layout signal.
1302      *
1303      * The prototype of the slot is:
1304      * void update_candidate_item_layout (const HelperAgent *, const std::vector<uint32> &row_items);
1305      */
1306     Connection signal_connect_update_candidate_item_layout      (HelperAgentSlotUintVector          *slot);
1307
1308      /**
1309      * @brief Connect a slot to Helper process key event signal.
1310      *
1311      * The prototype of the slot is:
1312      * void process_key_event (const HelperAgent *, KeyEvent &key, uint32 &ret);
1313      */
1314     Connection signal_connect_process_key_event (HelperAgentSlotKeyEventUint *slot);
1315
1316     /**
1317      * @brief Connect a slot to Helper process key event with keycode signal.
1318      *
1319      * The prototype of the slot is:
1320      * void process_key_event_with_keycode (const HelperAgent *, KeyEvent &key, uint32 &ret, uint32 keycode);
1321      */
1322     Connection signal_connect_process_key_event_with_keycode (HelperAgentSlotKeyEventUintUint *slot);
1323
1324     /**
1325      * @brief Connect a slot to Helper set input mode signal.
1326      *
1327      * This signal is used to set Helper ISE input mode.
1328      *
1329      * The prototype of the slot is:
1330      * void set_input_mode (const HelperAgent *agent, uint32 &input_mode);
1331      */
1332     Connection signal_connect_set_input_mode                        (HelperAgentSlotUintVoid            *slot);
1333
1334     /**
1335      * @brief Connect a slot to Helper set input hint signal.
1336      *
1337      * This signal is used to set Helper ISE input hint.
1338      *
1339      * The prototype of the slot is:
1340      * void set_input_hint (const HelperAgent *agent, uint32 &input_hint);
1341      */
1342     Connection signal_connect_set_input_hint                        (HelperAgentSlotUintVoid            *slot);
1343
1344     /**
1345      * @brief Connect a slot to Helper update bidi direction signal.
1346      *
1347      * This signal is used to update Helper ISE bidi direction.
1348      *
1349      * The prototype of the slot is:
1350      * void update_bidi_direction (const HelperAgent *agent, uint32 &bidi_direction);
1351      */
1352     Connection signal_connect_update_bidi_direction                 (HelperAgentSlotUintVoid            *slot);
1353
1354     /**
1355      * @brief Connect a slot to Helper show option window.
1356      *
1357      * This signal is used to do request the ISE to show option window.
1358      *
1359      * The prototype of the slot is:
1360      * void show_option_window (const HelperAgent *agent, int ic, const String &uuid);
1361      */
1362     Connection signal_connect_show_option_window                    (HelperAgentSlotVoid                *slot);
1363
1364     /**
1365      * @brief Connect a slot to Helper resume option window.
1366      *
1367      * This signal is used to do request the ISE to resume option window.
1368      *
1369      * The prototype of the slot is:
1370      * void resume_option_window (const HelperAgent *agent, int ic, const String &uuid);
1371      */
1372     Connection signal_connect_resume_option_window                    (HelperAgentSlotVoid                *slot);
1373
1374     /**
1375      * @brief Connect a slot to Helper check if the option is available.
1376      *
1377      * This signal is used to request ISE to reply if the option (setting) is available.
1378      *
1379      * The prototype of the slot is:
1380      * void check_option_window (const HelperAgent *agent, uint32 &avail);
1381      */
1382     Connection signal_connect_check_option_window                   (HelperAgentSlotUintVoid            *slot);
1383
1384     /**
1385     * @brief Connect a slot to Helper process unconventional input device event signal.
1386     *
1387     * The prototype of the slot is:
1388     * void process_input_device_event (const HelperAgent *, uint32 &type, char *data, size_t &size, uint32 &ret);
1389     */
1390     Connection signal_connect_process_input_device_event            (HelperAgentSlotUintCharSizeUint *slot);
1391
1392     /**
1393      * @brief Connect a slot to Helper set prediction hint signal.
1394      *
1395      * This signal is used to send prediction hint to Helper ISE.
1396      *
1397      * The prototype of the slot is:
1398      * void set_prediction_hint (const HelperAgent *agent, char *prediction_hint);
1399      */
1400     Connection signal_connect_set_prediction_hint                   (HelperAgentSlotStringVoid          *slot);
1401
1402     /**
1403      * @brief Connect a slot to Helper set mime type signal.
1404      *
1405      * This signal is used to send mime type to Helper ISE.
1406      *
1407      * The prototype of the slot is:
1408      * void set_mime_type (const HelperAgent *agent, char *mime_type);
1409      */
1410     Connection signal_connect_set_mime_type                         (HelperAgentSlotStringVoid          *slot);
1411
1412     /**
1413      * @brief Connect a slot to Helper set prediction hint data signal.
1414      *
1415      * This signal is used to send prediction hint data to Helper ISE.
1416      *
1417      * The prototype of the slot is:
1418      * void set_prediction_hint_data (const HelperAgent *agent, char *key, char *value);
1419      */
1420     Connection signal_connect_set_prediction_hint_data              (HelperAgentSlotString              *slot);
1421
1422     /**
1423      * @brief Connect a slot to Helper set optimization hint signal.
1424      *
1425      * This signal is used to send optimization hint to Helper ISE.
1426      *
1427      * The prototype of the slot is:
1428      * void set_optimization_hint (const HelperAgent *agent, uint32 &hint);
1429      */
1430     Connection signal_connect_set_optimization_hint                 (HelperAgentSlotUintVoid            *slot);
1431 };
1432
1433 /**  @} */
1434
1435 } /* namespace scim */
1436
1437 struct ArgInfo
1438 {
1439     char **argv;
1440     int    argc;
1441 };
1442
1443 #endif /* __SCIM_HELPER_H */
1444
1445 /*
1446 vi:ts=4:nowrap:ai:expandtab
1447 */
1448