1 /** @file scim_panel_client.cpp
2 * @brief Implementation of class PanelClient.
5 /* ISF is based on SCIM 1.4.7 and extended for supporting more mobile fitable. */
8 * Smart Common Input Method
10 * Copyright (c) 2005 James Su <suzhe@tsinghua.org.cn>
13 * This library is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU Lesser General Public
15 * License as published by the Free Software Foundation; either
16 * version 2 of the License, or (at your option) any later version.
18 * This library is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License for more details.
23 * You should have received a copy of the GNU Lesser General Public
24 * License along with this program; if not, write to the
25 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
26 * Boston, MA 02111-1307 USA
28 * $Id: scim_panel_client.cpp,v 1.6 2005/06/26 16:35:33 suzhe Exp $
32 #define Uses_SCIM_TRANSACTION
33 #define Uses_SCIM_TRANS_COMMANDS
34 #define Uses_SCIM_PANEL_CLIENT
35 #define Uses_SCIM_SOCKET
36 #define Uses_SCIM_EVENT
38 #include "scim_private.h"
43 typedef Signal1<void, int>
44 PanelClientSignalVoid;
46 typedef Signal2<void, int, int>
49 typedef Signal2<void, int, const String &>
50 PanelClientSignalString;
52 typedef Signal2<void, int, const WideString &>
53 PanelClientSignalWideString;
55 typedef Signal4<void, int, const String &, const String &, const Transaction &>
56 PanelClientSignalStringStringTransaction;
58 typedef Signal2<void, int, const KeyEvent &>
59 PanelClientSignalKeyEvent;
61 typedef Signal3<void, int, const WideString &, const AttributeList &>
62 PanelClientSignalStringAttrs;
64 class PanelClient::PanelClientImpl
66 SocketClient m_socket;
68 uint32 m_socket_magic_key;
69 Transaction m_send_trans;
73 PanelClientSignalVoid m_signal_reload_config;
74 PanelClientSignalVoid m_signal_exit;
75 PanelClientSignalInt m_signal_update_lookup_table_page_size;
76 PanelClientSignalVoid m_signal_lookup_table_page_up;
77 PanelClientSignalVoid m_signal_lookup_table_page_down;
78 PanelClientSignalVoid m_signal_reset_option;
79 PanelClientSignalString m_signal_trigger_property;
80 PanelClientSignalStringStringTransaction m_signal_process_helper_event;
81 PanelClientSignalInt m_signal_move_preedit_caret;
82 PanelClientSignalInt m_signal_select_aux;
83 PanelClientSignalInt m_signal_select_candidate;
84 PanelClientSignalKeyEvent m_signal_process_key_event;
85 PanelClientSignalWideString m_signal_commit_string;
86 PanelClientSignalKeyEvent m_signal_forward_key_event;
87 PanelClientSignalVoid m_signal_request_help;
88 PanelClientSignalVoid m_signal_request_factory_menu;
89 PanelClientSignalString m_signal_change_factory;
90 PanelClientSignalVoid m_signal_reset_keyboard_ise;
91 PanelClientSignalVoid m_signal_update_keyboard_ise;
92 PanelClientSignalVoid m_signal_show_preedit_string;
93 PanelClientSignalVoid m_signal_hide_preedit_string;
94 PanelClientSignalStringAttrs m_signal_update_preedit_string;
98 : m_socket_timeout (scim_get_default_socket_timeout ()),
99 m_socket_magic_key (0),
105 int open_connection (const String &config, const String &display)
107 String panel_address = scim_get_default_panel_socket_address (display);
108 SocketAddress addr (panel_address);
110 if (m_socket.is_connected ()) close_connection ();
115 /* Try three times. */
117 ret = m_socket.connect (addr);
119 scim_usleep (100000);
120 launch_panel (config, display);
121 std::cerr << " Re-connecting to PanelAgent server.";
122 ISF_SYSLOG (" Re-connecting to PanelAgent server.\n");
123 for (i = 0; i < 200; ++i) {
124 if (m_socket.connect (addr)) {
129 scim_usleep (200000);
131 std::cerr << " Connected :" << i << "\n";
132 ISF_SYSLOG (" Connected :%d\n", i);
133 if (m_socket.connect (addr) == false && count >= 2)
137 if (ret && scim_socket_open_connection (m_socket_magic_key, String ("FrontEnd"), String ("Panel"), m_socket, m_socket_timeout)) {
138 ISF_SYSLOG (" PID=%d connect to PanelAgent (%s), connected:%d.\n", getpid (), panel_address.c_str (), count);
141 std::cerr << " PID=" << getpid () << " cannot connect to PanelAgent (" << panel_address << "), connected:" << count << ".\n";
142 ISF_SYSLOG (" PID=%d cannot connect to PanelAgent (%s), connected:%d.\n", getpid (), panel_address.c_str (), count);
147 if (count++ >= 400) break;
149 scim_usleep (300000);
152 return m_socket.get_id ();
155 void close_connection ()
158 m_socket_magic_key = 0;
161 int get_connection_number () const
163 return m_socket.get_id ();
166 bool is_connected () const
168 return m_socket.is_connected ();
171 bool has_pending_event () const
173 return m_socket.is_connected () && m_socket.wait_for_data (0) > 0;
180 if (!m_socket.is_connected () || !recv.read_from_socket (m_socket, m_socket_timeout))
184 uint32 context = (uint32)(-1);
186 if (!recv.get_command (cmd) || cmd != SCIM_TRANS_CMD_REPLY)
189 /* No context id available, so there will be some global command. */
190 if (recv.get_data_type () == SCIM_TRANS_DATA_COMMAND) {
191 while (recv.get_command (cmd)) {
193 case SCIM_TRANS_CMD_RELOAD_CONFIG:
194 m_signal_reload_config ((int)context);
196 case SCIM_TRANS_CMD_EXIT:
197 m_signal_exit ((int)context);
206 /* Now for context related command. */
207 if (!recv.get_data (context))
210 while (recv.get_command (cmd)) {
212 case SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE_PAGE_SIZE:
215 if (recv.get_data (size))
216 m_signal_update_lookup_table_page_size ((int) context, (int) size);
219 case SCIM_TRANS_CMD_LOOKUP_TABLE_PAGE_UP:
221 m_signal_lookup_table_page_up ((int) context);
224 case SCIM_TRANS_CMD_LOOKUP_TABLE_PAGE_DOWN:
226 m_signal_lookup_table_page_down ((int) context);
229 case ISM_TRANS_CMD_RESET_ISE_OPTION:
231 m_signal_reset_option ((int) context);
234 case SCIM_TRANS_CMD_TRIGGER_PROPERTY:
237 if (recv.get_data (property))
238 m_signal_trigger_property ((int) context, property);
241 case SCIM_TRANS_CMD_PROCESS_HELPER_EVENT:
246 if (recv.get_data (target_uuid) && recv.get_data (helper_uuid) && recv.get_data (trans))
247 m_signal_process_helper_event ((int) context, target_uuid, helper_uuid, trans);
250 case SCIM_TRANS_CMD_MOVE_PREEDIT_CARET:
253 if (recv.get_data (caret))
254 m_signal_move_preedit_caret ((int) context, (int) caret);
257 case ISM_TRANS_CMD_SELECT_AUX:
260 if (recv.get_data (item))
261 m_signal_select_aux ((int) context, (int) item);
264 case SCIM_TRANS_CMD_SELECT_CANDIDATE:
267 if (recv.get_data (item))
268 m_signal_select_candidate ((int) context, (int) item);
271 case SCIM_TRANS_CMD_PROCESS_KEY_EVENT:
274 if (recv.get_data (key))
275 m_signal_process_key_event ((int) context, key);
278 case SCIM_TRANS_CMD_COMMIT_STRING:
281 if (recv.get_data (wstr))
282 m_signal_commit_string ((int) context, wstr);
285 case SCIM_TRANS_CMD_FORWARD_KEY_EVENT:
288 if (recv.get_data (key))
289 m_signal_forward_key_event ((int) context, key);
292 case SCIM_TRANS_CMD_PANEL_REQUEST_HELP:
294 m_signal_request_help ((int) context);
297 case SCIM_TRANS_CMD_PANEL_REQUEST_FACTORY_MENU:
299 m_signal_request_factory_menu ((int) context);
302 case SCIM_TRANS_CMD_PANEL_CHANGE_FACTORY:
305 if (recv.get_data (sfid))
306 m_signal_change_factory ((int) context, sfid);
309 case ISM_TRANS_CMD_PANEL_REQUEST_RESET_ISE:
311 m_signal_reset_keyboard_ise ((int) context);
314 case ISM_TRANS_CMD_PANEL_UPDATE_KEYBOARD_ISE:
316 m_signal_update_keyboard_ise ((int) context);
319 case SCIM_TRANS_CMD_SHOW_PREEDIT_STRING:
321 m_signal_show_preedit_string ((int) context);
324 case SCIM_TRANS_CMD_HIDE_PREEDIT_STRING:
326 m_signal_hide_preedit_string ((int) context);
329 case SCIM_TRANS_CMD_UPDATE_PREEDIT_STRING:
333 if (recv.get_data (wstr) && recv.get_data (attrs))
334 m_signal_update_preedit_string ((int) context, wstr, attrs);
337 case ISM_TRANS_CMD_TURN_ON_LOG:
339 printf ("<%s:%d>receive ISM_TRANS_CMD_TURN_ON_LOG\n", __FUNCTION__, __LINE__);
341 if (recv.get_data (isOn)) {
343 printf ("<%s:%d>turn on log\n", __FUNCTION__, __LINE__);
344 DebugOutput::enable_debug (SCIM_DEBUG_AllMask);
345 DebugOutput::set_verbose_level (7);
347 printf ("<%s:%d>turn off log\n", __FUNCTION__, __LINE__);
348 DebugOutput::disable_debug (SCIM_DEBUG_AllMask);
349 DebugOutput::set_verbose_level (0);
361 bool prepare (int icid)
363 if (!m_socket.is_connected ()) return false;
368 if (m_send_refcount <= 0) {
369 m_current_icid = icid;
370 m_send_trans.clear ();
371 m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
372 m_send_trans.put_data (m_socket_magic_key);
373 m_send_trans.put_data ((uint32) icid);
375 if (m_send_trans.get_command (cmd) &&
376 m_send_trans.get_data (data) &&
377 m_send_trans.get_data (data))
383 if (m_current_icid == icid) {
392 if (!m_socket.is_connected ()) return false;
394 if (m_send_refcount <= 0) return false;
398 if (m_send_refcount > 0) return false;
400 if (m_send_trans.get_data_type () != SCIM_TRANS_DATA_UNKNOWN)
401 return m_send_trans.write_to_socket (m_socket, 0x4d494353);
407 void turn_on (int icid)
409 if (m_send_refcount > 0 && m_current_icid == icid)
410 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_TURN_ON);
412 void turn_off (int icid)
414 if (m_send_refcount > 0 && m_current_icid == icid)
415 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_TURN_OFF);
417 void update_screen (int icid, int screen)
419 if (m_send_refcount > 0 && m_current_icid == icid) {
420 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_SCREEN);
421 m_send_trans.put_data ((uint32) screen);
424 void show_help (int icid, const String &help)
426 if (m_send_refcount > 0 && m_current_icid == icid) {
427 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_SHOW_HELP);
428 m_send_trans.put_data (help);
431 void show_factory_menu (int icid, const std::vector <PanelFactoryInfo> &menu)
433 if (m_send_refcount > 0 && m_current_icid == icid) {
434 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_SHOW_FACTORY_MENU);
435 for (size_t i = 0; i < menu.size (); ++ i) {
436 m_send_trans.put_data (menu [i].uuid);
437 m_send_trans.put_data (menu [i].name);
438 m_send_trans.put_data (menu [i].lang);
439 m_send_trans.put_data (menu [i].icon);
443 void focus_in (int icid, const String &uuid)
445 if (m_send_refcount > 0 && m_current_icid == icid) {
446 m_send_trans.put_command (SCIM_TRANS_CMD_FOCUS_IN);
447 m_send_trans.put_data (uuid);
450 void focus_out (int icid)
452 if (m_send_refcount > 0 && m_current_icid == icid)
453 m_send_trans.put_command (SCIM_TRANS_CMD_FOCUS_OUT);
455 void update_factory_info (int icid, const PanelFactoryInfo &info)
457 if (m_send_refcount > 0 && m_current_icid == icid) {
458 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_UPDATE_FACTORY_INFO);
459 m_send_trans.put_data (info.uuid);
460 m_send_trans.put_data (info.name);
461 m_send_trans.put_data (info.lang);
462 m_send_trans.put_data (info.icon);
465 void update_spot_location (int icid, int x, int y, int top_y)
467 if (m_send_refcount > 0 && m_current_icid == icid) {
468 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_SPOT_LOCATION);
469 m_send_trans.put_data ((uint32) x);
470 m_send_trans.put_data ((uint32) y);
471 m_send_trans.put_data ((uint32) top_y);
474 void update_cursor_position (int icid, int cursor_pos)
476 if (m_send_refcount > 0 && m_current_icid == icid) {
477 m_send_trans.put_command (ISM_TRANS_CMD_UPDATE_CURSOR_POSITION);
478 m_send_trans.put_data ((uint32) cursor_pos);
481 void show_preedit_string (int icid)
483 if (m_send_refcount > 0 && m_current_icid == icid)
484 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_PREEDIT_STRING);
486 void show_aux_string (int icid)
488 if (m_send_refcount > 0 && m_current_icid == icid)
489 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_AUX_STRING);
491 void show_lookup_table (int icid)
493 if (m_send_refcount > 0 && m_current_icid == icid)
494 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_LOOKUP_TABLE);
496 void hide_preedit_string (int icid)
498 if (m_send_refcount > 0 && m_current_icid == icid)
499 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_PREEDIT_STRING);
501 void hide_aux_string (int icid)
503 if (m_send_refcount > 0 && m_current_icid == icid)
504 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_AUX_STRING);
506 void hide_lookup_table (int icid)
508 if (m_send_refcount > 0 && m_current_icid == icid)
509 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_LOOKUP_TABLE);
511 void update_preedit_string (int icid, const WideString &str, const AttributeList &attrs)
513 if (m_send_refcount > 0 && m_current_icid == icid) {
514 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PREEDIT_STRING);
515 m_send_trans.put_data (utf8_wcstombs (str));
516 m_send_trans.put_data (attrs);
519 void update_preedit_caret (int icid, int caret)
521 if (m_send_refcount > 0 && m_current_icid == icid) {
522 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PREEDIT_CARET);
523 m_send_trans.put_data ((uint32) caret);
526 void update_aux_string (int icid, const WideString &str, const AttributeList &attrs)
528 if (m_send_refcount > 0 && m_current_icid == icid) {
529 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_AUX_STRING);
530 m_send_trans.put_data (utf8_wcstombs (str));
531 m_send_trans.put_data (attrs);
534 void update_lookup_table (int icid, const LookupTable &table)
536 if (m_send_refcount > 0 && m_current_icid == icid) {
537 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE);
538 m_send_trans.put_data (table);
541 void register_properties (int icid, const PropertyList &properties)
543 if (m_send_refcount > 0 && m_current_icid == icid) {
544 m_send_trans.put_command (SCIM_TRANS_CMD_REGISTER_PROPERTIES);
545 m_send_trans.put_data (properties);
548 void update_property (int icid, const Property &property)
550 if (m_send_refcount > 0 && m_current_icid == icid) {
551 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PROPERTY);
552 m_send_trans.put_data (property);
555 void start_default_ise (int icid)
557 if (m_send_refcount > 0 && m_current_icid == icid) {
558 m_send_trans.put_command (ISM_TRANS_CMD_PANEL_START_DEFAULT_ISE);
561 void start_helper (int icid, const String &helper_uuid)
563 if (m_send_refcount > 0 && m_current_icid == icid) {
564 m_send_trans.put_command (SCIM_TRANS_CMD_START_HELPER);
565 m_send_trans.put_data (helper_uuid);
569 void stop_helper (int icid, const String &helper_uuid)
571 if (m_send_refcount > 0 && m_current_icid == icid) {
572 m_send_trans.put_command (SCIM_TRANS_CMD_STOP_HELPER);
573 m_send_trans.put_data (helper_uuid);
576 void send_helper_event (int icid, const String &helper_uuid, const Transaction &trans)
578 if (m_send_refcount > 0 && m_current_icid == icid) {
579 m_send_trans.put_command (SCIM_TRANS_CMD_SEND_HELPER_EVENT);
580 m_send_trans.put_data (helper_uuid);
581 m_send_trans.put_data (trans);
584 void register_input_context (int icid, const String &uuid)
586 if (m_send_refcount > 0 && m_current_icid == icid) {
587 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_REGISTER_INPUT_CONTEXT);
588 m_send_trans.put_data (uuid);
591 void remove_input_context (int icid)
593 if (m_send_refcount > 0 && m_current_icid == icid)
594 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_REMOVE_INPUT_CONTEXT);
596 void reset_input_context (int icid)
598 if (m_send_refcount > 0 && m_current_icid == icid)
599 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_RESET_INPUT_CONTEXT);
601 void turn_on_log (int icid, uint32 isOn)
603 m_send_trans.put_command (ISM_TRANS_CMD_TURN_ON_LOG);
604 m_send_trans.put_data (isOn);
608 void reset_signal_handler (void)
610 m_signal_reload_config.reset();
611 m_signal_exit.reset();
612 m_signal_update_lookup_table_page_size.reset();
613 m_signal_lookup_table_page_up.reset();
614 m_signal_lookup_table_page_down.reset();
615 m_signal_reset_option.reset();
616 m_signal_trigger_property.reset();
617 m_signal_process_helper_event.reset();
618 m_signal_move_preedit_caret.reset();
619 m_signal_select_aux.reset();
620 m_signal_select_candidate.reset();
621 m_signal_process_key_event.reset();
622 m_signal_commit_string.reset();
623 m_signal_forward_key_event.reset();
624 m_signal_request_help.reset();
625 m_signal_request_factory_menu.reset();
626 m_signal_change_factory.reset();
627 m_signal_reset_keyboard_ise.reset();
628 m_signal_update_keyboard_ise.reset();
629 m_signal_show_preedit_string.reset();
630 m_signal_hide_preedit_string.reset();
631 m_signal_update_preedit_string.reset();
634 Connection signal_connect_reload_config (PanelClientSlotVoid *slot)
636 return m_signal_reload_config.connect (slot);
638 Connection signal_connect_exit (PanelClientSlotVoid *slot)
640 return m_signal_exit.connect (slot);
642 Connection signal_connect_update_lookup_table_page_size (PanelClientSlotInt *slot)
644 return m_signal_update_lookup_table_page_size.connect (slot);
646 Connection signal_connect_lookup_table_page_up (PanelClientSlotVoid *slot)
648 return m_signal_lookup_table_page_up.connect (slot);
650 Connection signal_connect_lookup_table_page_down (PanelClientSlotVoid *slot)
652 return m_signal_lookup_table_page_down.connect (slot);
654 Connection signal_connect_reset_option (PanelClientSlotVoid *slot)
656 return m_signal_reset_option.connect (slot);
658 Connection signal_connect_trigger_property (PanelClientSlotString *slot)
660 return m_signal_trigger_property.connect (slot);
662 Connection signal_connect_process_helper_event (PanelClientSlotStringStringTransaction *slot)
664 return m_signal_process_helper_event.connect (slot);
666 Connection signal_connect_move_preedit_caret (PanelClientSlotInt *slot)
668 return m_signal_move_preedit_caret.connect (slot);
670 Connection signal_connect_select_aux (PanelClientSlotInt *slot)
672 return m_signal_select_aux.connect (slot);
674 Connection signal_connect_select_candidate (PanelClientSlotInt *slot)
676 return m_signal_select_candidate.connect (slot);
678 Connection signal_connect_process_key_event (PanelClientSlotKeyEvent *slot)
680 return m_signal_process_key_event.connect (slot);
682 Connection signal_connect_commit_string (PanelClientSlotWideString *slot)
684 return m_signal_commit_string.connect (slot);
686 Connection signal_connect_forward_key_event (PanelClientSlotKeyEvent *slot)
688 return m_signal_forward_key_event.connect (slot);
690 Connection signal_connect_request_help (PanelClientSlotVoid *slot)
692 return m_signal_request_help.connect (slot);
694 Connection signal_connect_request_factory_menu (PanelClientSlotVoid *slot)
696 return m_signal_request_factory_menu.connect (slot);
698 Connection signal_connect_change_factory (PanelClientSlotString *slot)
700 return m_signal_change_factory.connect (slot);
703 Connection signal_connect_reset_keyboard_ise (PanelClientSlotVoid *slot)
705 return m_signal_reset_keyboard_ise.connect (slot);
708 Connection signal_connect_update_keyboard_ise (PanelClientSlotVoid *slot)
710 return m_signal_update_keyboard_ise.connect (slot);
713 Connection signal_connect_show_preedit_string (PanelClientSlotVoid *slot)
715 return m_signal_show_preedit_string.connect (slot);
718 Connection signal_connect_hide_preedit_string (PanelClientSlotVoid *slot)
720 return m_signal_hide_preedit_string.connect (slot);
723 Connection signal_connect_update_preedit_string (PanelClientSlotStringAttrs *slot)
725 return m_signal_update_preedit_string.connect (slot);
728 void launch_panel (const String &config, const String &display) const
730 scim_launch_panel (true, config, display, NULL);
734 PanelClient::PanelClient ()
735 : m_impl (new PanelClientImpl ())
739 PanelClient::~PanelClient ()
745 PanelClient::open_connection (const String &config, const String &display)
747 return m_impl->open_connection (config, display);
751 PanelClient::close_connection ()
753 m_impl->close_connection ();
757 PanelClient::get_connection_number () const
759 return m_impl->get_connection_number ();
763 PanelClient::is_connected () const
765 return m_impl->is_connected ();
769 PanelClient::has_pending_event () const
771 return m_impl->has_pending_event ();
775 PanelClient::filter_event ()
777 return m_impl->filter_event ();
781 PanelClient::prepare (int icid)
783 return m_impl->prepare (icid);
789 return m_impl->send ();
793 PanelClient::turn_on (int icid)
795 m_impl->turn_on (icid);
798 PanelClient::turn_off (int icid)
800 m_impl->turn_off (icid);
803 PanelClient::update_screen (int icid, int screen)
805 m_impl->update_screen (icid, screen);
808 PanelClient::show_help (int icid, const String &help)
810 m_impl->show_help (icid, help);
813 PanelClient::show_factory_menu (int icid, const std::vector <PanelFactoryInfo> &menu)
815 m_impl->show_factory_menu (icid, menu);
818 PanelClient::focus_in (int icid, const String &uuid)
820 m_impl->focus_in (icid, uuid);
823 PanelClient::focus_out (int icid)
825 m_impl->focus_out (icid);
828 PanelClient::update_factory_info (int icid, const PanelFactoryInfo &info)
830 m_impl->update_factory_info (icid, info);
833 PanelClient::update_spot_location (int icid, int x, int y, int top_y)
835 m_impl->update_spot_location (icid, x, y, top_y);
838 PanelClient::update_cursor_position (int icid, int cursor_pos)
840 m_impl->update_cursor_position (icid, cursor_pos);
843 PanelClient::show_preedit_string (int icid)
845 m_impl->show_preedit_string (icid);
848 PanelClient::show_aux_string (int icid)
850 m_impl->show_aux_string (icid);
853 PanelClient::show_lookup_table (int icid)
855 m_impl->show_lookup_table (icid);
858 PanelClient::hide_preedit_string (int icid)
860 m_impl->hide_preedit_string (icid);
863 PanelClient::hide_aux_string (int icid)
865 m_impl->hide_aux_string (icid);
868 PanelClient::hide_lookup_table (int icid)
870 m_impl->hide_lookup_table (icid);
873 PanelClient::update_preedit_string (int icid, const WideString &str, const AttributeList &attrs)
875 m_impl->update_preedit_string (icid, str, attrs);
878 PanelClient::update_preedit_caret (int icid, int caret)
880 m_impl->update_preedit_caret (icid, caret);
883 PanelClient::update_aux_string (int icid, const WideString &str, const AttributeList &attrs)
885 m_impl->update_aux_string (icid, str, attrs);
888 PanelClient::update_lookup_table (int icid, const LookupTable &table)
890 m_impl->update_lookup_table (icid, table);
893 PanelClient::register_properties (int icid, const PropertyList &properties)
895 m_impl->register_properties (icid, properties);
898 PanelClient::update_property (int icid, const Property &property)
900 m_impl->update_property (icid, property);
903 PanelClient::start_default_ise (int icid)
905 m_impl->start_default_ise (icid);
908 PanelClient::start_helper (int icid, const String &helper_uuid)
910 m_impl->start_helper (icid, helper_uuid);
914 PanelClient::stop_helper (int icid, const String &helper_uuid)
916 m_impl->stop_helper (icid, helper_uuid);
919 PanelClient::send_helper_event (int icid, const String &helper_uuid, const Transaction &trans)
921 m_impl->send_helper_event (icid, helper_uuid, trans);
924 PanelClient::register_input_context (int icid, const String &uuid)
926 m_impl->register_input_context (icid, uuid);
929 PanelClient::remove_input_context (int icid)
931 m_impl->remove_input_context (icid);
934 PanelClient::reset_input_context (int icid)
936 m_impl->reset_input_context (icid);
940 PanelClient::turn_on_log (int icid, uint32 isOn)
942 m_impl->turn_on_log (icid, isOn);
946 PanelClient::reset_signal_handler (void)
948 m_impl->reset_signal_handler ();
952 PanelClient::signal_connect_reload_config (PanelClientSlotVoid *slot)
954 return m_impl->signal_connect_reload_config (slot);
957 PanelClient::signal_connect_exit (PanelClientSlotVoid *slot)
959 return m_impl->signal_connect_exit (slot);
962 PanelClient::signal_connect_update_lookup_table_page_size (PanelClientSlotInt *slot)
964 return m_impl->signal_connect_update_lookup_table_page_size (slot);
967 PanelClient::signal_connect_lookup_table_page_up (PanelClientSlotVoid *slot)
969 return m_impl->signal_connect_lookup_table_page_up (slot);
972 PanelClient::signal_connect_lookup_table_page_down (PanelClientSlotVoid *slot)
974 return m_impl->signal_connect_lookup_table_page_down (slot);
977 PanelClient::signal_connect_reset_option (PanelClientSlotVoid *slot)
979 return m_impl->signal_connect_reset_option (slot);
982 PanelClient::signal_connect_trigger_property (PanelClientSlotString *slot)
984 return m_impl->signal_connect_trigger_property (slot);
987 PanelClient::signal_connect_process_helper_event (PanelClientSlotStringStringTransaction *slot)
989 return m_impl->signal_connect_process_helper_event (slot);
992 PanelClient::signal_connect_move_preedit_caret (PanelClientSlotInt *slot)
994 return m_impl->signal_connect_move_preedit_caret (slot);
997 PanelClient::signal_connect_select_aux (PanelClientSlotInt *slot)
999 return m_impl->signal_connect_select_aux (slot);
1002 PanelClient::signal_connect_select_candidate (PanelClientSlotInt *slot)
1004 return m_impl->signal_connect_select_candidate (slot);
1007 PanelClient::signal_connect_process_key_event (PanelClientSlotKeyEvent *slot)
1009 return m_impl->signal_connect_process_key_event (slot);
1012 PanelClient::signal_connect_commit_string (PanelClientSlotWideString *slot)
1014 return m_impl->signal_connect_commit_string (slot);
1017 PanelClient::signal_connect_forward_key_event (PanelClientSlotKeyEvent *slot)
1019 return m_impl->signal_connect_forward_key_event (slot);
1022 PanelClient::signal_connect_request_help (PanelClientSlotVoid *slot)
1024 return m_impl->signal_connect_request_help (slot);
1027 PanelClient::signal_connect_request_factory_menu (PanelClientSlotVoid *slot)
1029 return m_impl->signal_connect_request_factory_menu (slot);
1032 PanelClient::signal_connect_change_factory (PanelClientSlotString *slot)
1034 return m_impl->signal_connect_change_factory (slot);
1038 PanelClient::signal_connect_reset_keyboard_ise (PanelClientSlotVoid *slot)
1040 return m_impl->signal_connect_reset_keyboard_ise (slot);
1044 PanelClient::signal_connect_update_keyboard_ise (PanelClientSlotVoid *slot)
1046 return m_impl->signal_connect_update_keyboard_ise (slot);
1050 PanelClient::signal_connect_show_preedit_string (PanelClientSlotVoid *slot)
1052 return m_impl->signal_connect_show_preedit_string (slot);
1056 PanelClient::signal_connect_hide_preedit_string (PanelClientSlotVoid *slot)
1058 return m_impl->signal_connect_hide_preedit_string (slot);
1062 PanelClient::signal_connect_update_preedit_string (PanelClientSlotStringAttrs *slot)
1064 return m_impl->signal_connect_update_preedit_string (slot);
1068 } /* namespace scim */
1071 vi:ts=4:nowrap:ai:expandtab