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