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 Signal3<void, int, int, int>
50 PanelClientSignalIntInt;
52 typedef Signal2<void, int, const String &>
53 PanelClientSignalString;
55 typedef Signal2<void, int, const WideString &>
56 PanelClientSignalWideString;
58 typedef Signal4<void, int, const String &, const String &, const Transaction &>
59 PanelClientSignalStringStringTransaction;
61 typedef Signal2<void, int, const KeyEvent &>
62 PanelClientSignalKeyEvent;
64 typedef Signal3<void, int, const WideString &, const AttributeList &>
65 PanelClientSignalStringAttrs;
67 class PanelClient::PanelClientImpl
69 SocketClient m_socket;
71 uint32 m_socket_magic_key;
72 Transaction m_send_trans;
76 PanelClientSignalVoid m_signal_reload_config;
77 PanelClientSignalVoid m_signal_exit;
78 PanelClientSignalInt m_signal_update_lookup_table_page_size;
79 PanelClientSignalVoid m_signal_lookup_table_page_up;
80 PanelClientSignalVoid m_signal_lookup_table_page_down;
81 PanelClientSignalVoid m_signal_reset_option;
82 PanelClientSignalString m_signal_trigger_property;
83 PanelClientSignalStringStringTransaction m_signal_process_helper_event;
84 PanelClientSignalInt m_signal_move_preedit_caret;
85 PanelClientSignalInt m_signal_select_aux;
86 PanelClientSignalInt m_signal_select_candidate;
87 PanelClientSignalKeyEvent m_signal_process_key_event;
88 PanelClientSignalWideString m_signal_commit_string;
89 PanelClientSignalKeyEvent m_signal_forward_key_event;
90 PanelClientSignalVoid m_signal_request_help;
91 PanelClientSignalVoid m_signal_request_factory_menu;
92 PanelClientSignalString m_signal_change_factory;
93 PanelClientSignalVoid m_signal_reset_keyboard_ise;
94 PanelClientSignalVoid m_signal_update_keyboard_ise;
95 PanelClientSignalVoid m_signal_show_preedit_string;
96 PanelClientSignalVoid m_signal_hide_preedit_string;
97 PanelClientSignalStringAttrs m_signal_update_preedit_string;
98 PanelClientSignalIntInt m_signal_get_surrounding_text;
99 PanelClientSignalIntInt m_signal_delete_surrounding_text;
103 : m_socket_timeout (scim_get_default_socket_timeout ()),
104 m_socket_magic_key (0),
110 int open_connection (const String &config, const String &display)
112 String panel_address = scim_get_default_panel_socket_address (display);
113 SocketAddress addr (panel_address);
115 if (m_socket.is_connected ()) close_connection ();
120 /* Try three times. */
122 ret = m_socket.connect (addr);
124 scim_usleep (100000);
125 launch_panel (config, display);
126 std::cerr << " Re-connecting to PanelAgent server.";
127 ISF_SYSLOG (" Re-connecting to PanelAgent server.\n");
128 for (i = 0; i < 200; ++i) {
129 if (m_socket.connect (addr)) {
134 scim_usleep (200000);
136 std::cerr << " Connected :" << i << "\n";
137 ISF_SYSLOG (" Connected :%d\n", i);
138 if (m_socket.connect (addr) == false && count >= 2)
142 if (ret && scim_socket_open_connection (m_socket_magic_key, String ("FrontEnd"), String ("Panel"), m_socket, m_socket_timeout)) {
143 ISF_SYSLOG (" PID=%d connect to PanelAgent (%s), connected:%d.\n", getpid (), panel_address.c_str (), count);
146 std::cerr << " PID=" << getpid () << " cannot connect to PanelAgent (" << panel_address << "), connected:" << count << ".\n";
147 ISF_SYSLOG (" PID=%d cannot connect to PanelAgent (%s), connected:%d.\n", getpid (), panel_address.c_str (), count);
152 if (count++ >= 400) break;
154 scim_usleep (300000);
157 return m_socket.get_id ();
160 void close_connection ()
163 m_socket_magic_key = 0;
166 int get_connection_number () const
168 return m_socket.get_id ();
171 bool is_connected () const
173 return m_socket.is_connected ();
176 bool has_pending_event () const
178 return m_socket.is_connected () && m_socket.wait_for_data (0) > 0;
185 if (!m_socket.is_connected () || !recv.read_from_socket (m_socket, m_socket_timeout))
189 uint32 context = (uint32)(-1);
191 if (!recv.get_command (cmd) || cmd != SCIM_TRANS_CMD_REPLY)
194 /* No context id available, so there will be some global command. */
195 if (recv.get_data_type () == SCIM_TRANS_DATA_COMMAND) {
196 while (recv.get_command (cmd)) {
198 case SCIM_TRANS_CMD_RELOAD_CONFIG:
199 m_signal_reload_config ((int)context);
201 case SCIM_TRANS_CMD_EXIT:
202 m_signal_exit ((int)context);
211 /* Now for context related command. */
212 if (!recv.get_data (context))
215 while (recv.get_command (cmd)) {
217 case SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE_PAGE_SIZE:
220 if (recv.get_data (size))
221 m_signal_update_lookup_table_page_size ((int) context, (int) size);
224 case SCIM_TRANS_CMD_LOOKUP_TABLE_PAGE_UP:
226 m_signal_lookup_table_page_up ((int) context);
229 case SCIM_TRANS_CMD_LOOKUP_TABLE_PAGE_DOWN:
231 m_signal_lookup_table_page_down ((int) context);
234 case ISM_TRANS_CMD_RESET_ISE_OPTION:
236 m_signal_reset_option ((int) context);
239 case SCIM_TRANS_CMD_TRIGGER_PROPERTY:
242 if (recv.get_data (property))
243 m_signal_trigger_property ((int) context, property);
246 case SCIM_TRANS_CMD_PROCESS_HELPER_EVENT:
251 if (recv.get_data (target_uuid) && recv.get_data (helper_uuid) && recv.get_data (trans))
252 m_signal_process_helper_event ((int) context, target_uuid, helper_uuid, trans);
255 case SCIM_TRANS_CMD_MOVE_PREEDIT_CARET:
258 if (recv.get_data (caret))
259 m_signal_move_preedit_caret ((int) context, (int) caret);
262 case ISM_TRANS_CMD_SELECT_AUX:
265 if (recv.get_data (item))
266 m_signal_select_aux ((int) context, (int) item);
269 case SCIM_TRANS_CMD_SELECT_CANDIDATE:
272 if (recv.get_data (item))
273 m_signal_select_candidate ((int) context, (int) item);
276 case SCIM_TRANS_CMD_PROCESS_KEY_EVENT:
279 if (recv.get_data (key))
280 m_signal_process_key_event ((int) context, key);
283 case SCIM_TRANS_CMD_COMMIT_STRING:
286 if (recv.get_data (wstr))
287 m_signal_commit_string ((int) context, wstr);
290 case SCIM_TRANS_CMD_FORWARD_KEY_EVENT:
293 if (recv.get_data (key))
294 m_signal_forward_key_event ((int) context, key);
297 case SCIM_TRANS_CMD_PANEL_REQUEST_HELP:
299 m_signal_request_help ((int) context);
302 case SCIM_TRANS_CMD_PANEL_REQUEST_FACTORY_MENU:
304 m_signal_request_factory_menu ((int) context);
307 case SCIM_TRANS_CMD_PANEL_CHANGE_FACTORY:
310 if (recv.get_data (sfid))
311 m_signal_change_factory ((int) context, sfid);
314 case ISM_TRANS_CMD_PANEL_REQUEST_RESET_ISE:
316 m_signal_reset_keyboard_ise ((int) context);
319 case ISM_TRANS_CMD_PANEL_UPDATE_KEYBOARD_ISE:
321 m_signal_update_keyboard_ise ((int) context);
324 case SCIM_TRANS_CMD_SHOW_PREEDIT_STRING:
326 m_signal_show_preedit_string ((int) context);
329 case SCIM_TRANS_CMD_HIDE_PREEDIT_STRING:
331 m_signal_hide_preedit_string ((int) context);
334 case SCIM_TRANS_CMD_UPDATE_PREEDIT_STRING:
338 if (recv.get_data (wstr) && recv.get_data (attrs))
339 m_signal_update_preedit_string ((int) context, wstr, attrs);
342 case ISM_TRANS_CMD_TURN_ON_LOG:
344 printf ("<%s:%d>receive ISM_TRANS_CMD_TURN_ON_LOG\n", __FUNCTION__, __LINE__);
346 if (recv.get_data (isOn)) {
348 printf ("<%s:%d>turn on log\n", __FUNCTION__, __LINE__);
349 DebugOutput::enable_debug (SCIM_DEBUG_AllMask);
350 DebugOutput::set_verbose_level (7);
352 printf ("<%s:%d>turn off log\n", __FUNCTION__, __LINE__);
353 DebugOutput::disable_debug (SCIM_DEBUG_AllMask);
354 DebugOutput::set_verbose_level (0);
359 case SCIM_TRANS_CMD_GET_SURROUNDING_TEXT:
361 uint32 maxlen_before;
363 if (recv.get_data (maxlen_before) && recv.get_data (maxlen_after))
364 m_signal_get_surrounding_text ((int) context, (int)maxlen_before, (int)maxlen_after);
367 case SCIM_TRANS_CMD_DELETE_SURROUNDING_TEXT:
371 if (recv.get_data (offset) && recv.get_data (len))
372 m_signal_delete_surrounding_text ((int) context, (int)offset, (int)len);
382 bool prepare (int icid)
384 if (!m_socket.is_connected ()) return false;
389 if (m_send_refcount <= 0) {
390 m_current_icid = icid;
391 m_send_trans.clear ();
392 m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
393 m_send_trans.put_data (m_socket_magic_key);
394 m_send_trans.put_data ((uint32) icid);
396 if (m_send_trans.get_command (cmd) &&
397 m_send_trans.get_data (data) &&
398 m_send_trans.get_data (data))
404 if (m_current_icid == icid) {
413 if (!m_socket.is_connected ()) return false;
415 if (m_send_refcount <= 0) return false;
419 if (m_send_refcount > 0) return false;
421 if (m_send_trans.get_data_type () != SCIM_TRANS_DATA_UNKNOWN)
422 return m_send_trans.write_to_socket (m_socket, 0x4d494353);
428 void turn_on (int icid)
430 if (m_send_refcount > 0 && m_current_icid == icid)
431 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_TURN_ON);
433 void turn_off (int icid)
435 if (m_send_refcount > 0 && m_current_icid == icid)
436 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_TURN_OFF);
438 void update_screen (int icid, int screen)
440 if (m_send_refcount > 0 && m_current_icid == icid) {
441 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_SCREEN);
442 m_send_trans.put_data ((uint32) screen);
445 void show_help (int icid, const String &help)
447 if (m_send_refcount > 0 && m_current_icid == icid) {
448 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_SHOW_HELP);
449 m_send_trans.put_data (help);
452 void show_factory_menu (int icid, const std::vector <PanelFactoryInfo> &menu)
454 if (m_send_refcount > 0 && m_current_icid == icid) {
455 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_SHOW_FACTORY_MENU);
456 for (size_t i = 0; i < menu.size (); ++ i) {
457 m_send_trans.put_data (menu [i].uuid);
458 m_send_trans.put_data (menu [i].name);
459 m_send_trans.put_data (menu [i].lang);
460 m_send_trans.put_data (menu [i].icon);
464 void focus_in (int icid, const String &uuid)
466 if (m_send_refcount > 0 && m_current_icid == icid) {
467 m_send_trans.put_command (SCIM_TRANS_CMD_FOCUS_IN);
468 m_send_trans.put_data (uuid);
471 void focus_out (int icid)
473 if (m_send_refcount > 0 && m_current_icid == icid)
474 m_send_trans.put_command (SCIM_TRANS_CMD_FOCUS_OUT);
476 void update_factory_info (int icid, const PanelFactoryInfo &info)
478 if (m_send_refcount > 0 && m_current_icid == icid) {
479 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_UPDATE_FACTORY_INFO);
480 m_send_trans.put_data (info.uuid);
481 m_send_trans.put_data (info.name);
482 m_send_trans.put_data (info.lang);
483 m_send_trans.put_data (info.icon);
486 void update_spot_location (int icid, int x, int y, int top_y)
488 if (m_send_refcount > 0 && m_current_icid == icid) {
489 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_SPOT_LOCATION);
490 m_send_trans.put_data ((uint32) x);
491 m_send_trans.put_data ((uint32) y);
492 m_send_trans.put_data ((uint32) top_y);
495 void update_cursor_position (int icid, int cursor_pos)
497 if (m_send_refcount > 0 && m_current_icid == icid) {
498 m_send_trans.put_command (ISM_TRANS_CMD_UPDATE_CURSOR_POSITION);
499 m_send_trans.put_data ((uint32) cursor_pos);
502 void update_surrounding_text (int icid, const WideString &str, int cursor)
504 if (m_send_refcount > 0 && m_current_icid == icid) {
505 m_send_trans.put_command (ISM_TRANS_CMD_UPDATE_SURROUNDING_TEXT);
506 m_send_trans.put_data (utf8_wcstombs (str));
507 m_send_trans.put_data ((uint32) cursor);
510 void show_preedit_string (int icid)
512 if (m_send_refcount > 0 && m_current_icid == icid)
513 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_PREEDIT_STRING);
515 void show_aux_string (int icid)
517 if (m_send_refcount > 0 && m_current_icid == icid)
518 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_AUX_STRING);
520 void show_lookup_table (int icid)
522 if (m_send_refcount > 0 && m_current_icid == icid)
523 m_send_trans.put_command (SCIM_TRANS_CMD_SHOW_LOOKUP_TABLE);
525 void hide_preedit_string (int icid)
527 if (m_send_refcount > 0 && m_current_icid == icid)
528 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_PREEDIT_STRING);
530 void hide_aux_string (int icid)
532 if (m_send_refcount > 0 && m_current_icid == icid)
533 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_AUX_STRING);
535 void hide_lookup_table (int icid)
537 if (m_send_refcount > 0 && m_current_icid == icid)
538 m_send_trans.put_command (SCIM_TRANS_CMD_HIDE_LOOKUP_TABLE);
540 void update_preedit_string (int icid, const WideString &str, const AttributeList &attrs)
542 if (m_send_refcount > 0 && m_current_icid == icid) {
543 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PREEDIT_STRING);
544 m_send_trans.put_data (utf8_wcstombs (str));
545 m_send_trans.put_data (attrs);
548 void update_preedit_caret (int icid, int caret)
550 if (m_send_refcount > 0 && m_current_icid == icid) {
551 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PREEDIT_CARET);
552 m_send_trans.put_data ((uint32) caret);
555 void update_aux_string (int icid, const WideString &str, const AttributeList &attrs)
557 if (m_send_refcount > 0 && m_current_icid == icid) {
558 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_AUX_STRING);
559 m_send_trans.put_data (utf8_wcstombs (str));
560 m_send_trans.put_data (attrs);
563 void update_lookup_table (int icid, const LookupTable &table)
565 if (m_send_refcount > 0 && m_current_icid == icid) {
566 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE);
567 m_send_trans.put_data (table);
570 void register_properties (int icid, const PropertyList &properties)
572 if (m_send_refcount > 0 && m_current_icid == icid) {
573 m_send_trans.put_command (SCIM_TRANS_CMD_REGISTER_PROPERTIES);
574 m_send_trans.put_data (properties);
577 void update_property (int icid, const Property &property)
579 if (m_send_refcount > 0 && m_current_icid == icid) {
580 m_send_trans.put_command (SCIM_TRANS_CMD_UPDATE_PROPERTY);
581 m_send_trans.put_data (property);
584 void start_default_ise (int icid)
586 if (m_send_refcount > 0 && m_current_icid == icid) {
587 m_send_trans.put_command (ISM_TRANS_CMD_PANEL_START_DEFAULT_ISE);
590 void start_helper (int icid, const String &helper_uuid)
592 if (m_send_refcount > 0 && m_current_icid == icid) {
593 m_send_trans.put_command (SCIM_TRANS_CMD_START_HELPER);
594 m_send_trans.put_data (helper_uuid);
598 void stop_helper (int icid, const String &helper_uuid)
600 if (m_send_refcount > 0 && m_current_icid == icid) {
601 m_send_trans.put_command (SCIM_TRANS_CMD_STOP_HELPER);
602 m_send_trans.put_data (helper_uuid);
605 void send_helper_event (int icid, const String &helper_uuid, const Transaction &trans)
607 if (m_send_refcount > 0 && m_current_icid == icid) {
608 m_send_trans.put_command (SCIM_TRANS_CMD_SEND_HELPER_EVENT);
609 m_send_trans.put_data (helper_uuid);
610 m_send_trans.put_data (trans);
613 void register_input_context (int icid, const String &uuid)
615 if (m_send_refcount > 0 && m_current_icid == icid) {
616 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_REGISTER_INPUT_CONTEXT);
617 m_send_trans.put_data (uuid);
620 void remove_input_context (int icid)
622 if (m_send_refcount > 0 && m_current_icid == icid)
623 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_REMOVE_INPUT_CONTEXT);
625 void reset_input_context (int icid)
627 if (m_send_refcount > 0 && m_current_icid == icid)
628 m_send_trans.put_command (SCIM_TRANS_CMD_PANEL_RESET_INPUT_CONTEXT);
630 void turn_on_log (int icid, uint32 isOn)
632 m_send_trans.put_command (ISM_TRANS_CMD_TURN_ON_LOG);
633 m_send_trans.put_data (isOn);
637 void reset_signal_handler (void)
639 m_signal_reload_config.reset();
640 m_signal_exit.reset();
641 m_signal_update_lookup_table_page_size.reset();
642 m_signal_lookup_table_page_up.reset();
643 m_signal_lookup_table_page_down.reset();
644 m_signal_reset_option.reset();
645 m_signal_trigger_property.reset();
646 m_signal_process_helper_event.reset();
647 m_signal_move_preedit_caret.reset();
648 m_signal_select_aux.reset();
649 m_signal_select_candidate.reset();
650 m_signal_process_key_event.reset();
651 m_signal_commit_string.reset();
652 m_signal_forward_key_event.reset();
653 m_signal_request_help.reset();
654 m_signal_request_factory_menu.reset();
655 m_signal_change_factory.reset();
656 m_signal_reset_keyboard_ise.reset();
657 m_signal_update_keyboard_ise.reset();
658 m_signal_show_preedit_string.reset();
659 m_signal_hide_preedit_string.reset();
660 m_signal_update_preedit_string.reset();
661 m_signal_get_surrounding_text.reset();
662 m_signal_delete_surrounding_text.reset();
665 Connection signal_connect_reload_config (PanelClientSlotVoid *slot)
667 return m_signal_reload_config.connect (slot);
669 Connection signal_connect_exit (PanelClientSlotVoid *slot)
671 return m_signal_exit.connect (slot);
673 Connection signal_connect_update_lookup_table_page_size (PanelClientSlotInt *slot)
675 return m_signal_update_lookup_table_page_size.connect (slot);
677 Connection signal_connect_lookup_table_page_up (PanelClientSlotVoid *slot)
679 return m_signal_lookup_table_page_up.connect (slot);
681 Connection signal_connect_lookup_table_page_down (PanelClientSlotVoid *slot)
683 return m_signal_lookup_table_page_down.connect (slot);
685 Connection signal_connect_reset_option (PanelClientSlotVoid *slot)
687 return m_signal_reset_option.connect (slot);
689 Connection signal_connect_trigger_property (PanelClientSlotString *slot)
691 return m_signal_trigger_property.connect (slot);
693 Connection signal_connect_process_helper_event (PanelClientSlotStringStringTransaction *slot)
695 return m_signal_process_helper_event.connect (slot);
697 Connection signal_connect_move_preedit_caret (PanelClientSlotInt *slot)
699 return m_signal_move_preedit_caret.connect (slot);
701 Connection signal_connect_select_aux (PanelClientSlotInt *slot)
703 return m_signal_select_aux.connect (slot);
705 Connection signal_connect_select_candidate (PanelClientSlotInt *slot)
707 return m_signal_select_candidate.connect (slot);
709 Connection signal_connect_process_key_event (PanelClientSlotKeyEvent *slot)
711 return m_signal_process_key_event.connect (slot);
713 Connection signal_connect_commit_string (PanelClientSlotWideString *slot)
715 return m_signal_commit_string.connect (slot);
717 Connection signal_connect_forward_key_event (PanelClientSlotKeyEvent *slot)
719 return m_signal_forward_key_event.connect (slot);
721 Connection signal_connect_request_help (PanelClientSlotVoid *slot)
723 return m_signal_request_help.connect (slot);
725 Connection signal_connect_request_factory_menu (PanelClientSlotVoid *slot)
727 return m_signal_request_factory_menu.connect (slot);
729 Connection signal_connect_change_factory (PanelClientSlotString *slot)
731 return m_signal_change_factory.connect (slot);
734 Connection signal_connect_reset_keyboard_ise (PanelClientSlotVoid *slot)
736 return m_signal_reset_keyboard_ise.connect (slot);
739 Connection signal_connect_update_keyboard_ise (PanelClientSlotVoid *slot)
741 return m_signal_update_keyboard_ise.connect (slot);
744 Connection signal_connect_show_preedit_string (PanelClientSlotVoid *slot)
746 return m_signal_show_preedit_string.connect (slot);
749 Connection signal_connect_hide_preedit_string (PanelClientSlotVoid *slot)
751 return m_signal_hide_preedit_string.connect (slot);
754 Connection signal_connect_update_preedit_string (PanelClientSlotStringAttrs *slot)
756 return m_signal_update_preedit_string.connect (slot);
759 Connection signal_connect_get_surrounding_text (PanelClientSlotIntInt *slot)
761 return m_signal_get_surrounding_text.connect (slot);
764 Connection signal_connect_delete_surrounding_text (PanelClientSlotIntInt *slot)
766 return m_signal_delete_surrounding_text.connect (slot);
770 void launch_panel (const String &config, const String &display) const
772 scim_launch_panel (true, config, display, NULL);
776 PanelClient::PanelClient ()
777 : m_impl (new PanelClientImpl ())
781 PanelClient::~PanelClient ()
787 PanelClient::open_connection (const String &config, const String &display)
789 return m_impl->open_connection (config, display);
793 PanelClient::close_connection ()
795 m_impl->close_connection ();
799 PanelClient::get_connection_number () const
801 return m_impl->get_connection_number ();
805 PanelClient::is_connected () const
807 return m_impl->is_connected ();
811 PanelClient::has_pending_event () const
813 return m_impl->has_pending_event ();
817 PanelClient::filter_event ()
819 return m_impl->filter_event ();
823 PanelClient::prepare (int icid)
825 return m_impl->prepare (icid);
831 return m_impl->send ();
835 PanelClient::turn_on (int icid)
837 m_impl->turn_on (icid);
840 PanelClient::turn_off (int icid)
842 m_impl->turn_off (icid);
845 PanelClient::update_screen (int icid, int screen)
847 m_impl->update_screen (icid, screen);
850 PanelClient::show_help (int icid, const String &help)
852 m_impl->show_help (icid, help);
855 PanelClient::show_factory_menu (int icid, const std::vector <PanelFactoryInfo> &menu)
857 m_impl->show_factory_menu (icid, menu);
860 PanelClient::focus_in (int icid, const String &uuid)
862 m_impl->focus_in (icid, uuid);
865 PanelClient::focus_out (int icid)
867 m_impl->focus_out (icid);
870 PanelClient::update_factory_info (int icid, const PanelFactoryInfo &info)
872 m_impl->update_factory_info (icid, info);
875 PanelClient::update_spot_location (int icid, int x, int y, int top_y)
877 m_impl->update_spot_location (icid, x, y, top_y);
880 PanelClient::update_cursor_position (int icid, int cursor_pos)
882 m_impl->update_cursor_position (icid, cursor_pos);
885 PanelClient::update_surrounding_text (int icid, const WideString &str, int cursor)
887 m_impl->update_surrounding_text (icid, str, cursor);
890 PanelClient::show_preedit_string (int icid)
892 m_impl->show_preedit_string (icid);
895 PanelClient::show_aux_string (int icid)
897 m_impl->show_aux_string (icid);
900 PanelClient::show_lookup_table (int icid)
902 m_impl->show_lookup_table (icid);
905 PanelClient::hide_preedit_string (int icid)
907 m_impl->hide_preedit_string (icid);
910 PanelClient::hide_aux_string (int icid)
912 m_impl->hide_aux_string (icid);
915 PanelClient::hide_lookup_table (int icid)
917 m_impl->hide_lookup_table (icid);
920 PanelClient::update_preedit_string (int icid, const WideString &str, const AttributeList &attrs)
922 m_impl->update_preedit_string (icid, str, attrs);
925 PanelClient::update_preedit_caret (int icid, int caret)
927 m_impl->update_preedit_caret (icid, caret);
930 PanelClient::update_aux_string (int icid, const WideString &str, const AttributeList &attrs)
932 m_impl->update_aux_string (icid, str, attrs);
935 PanelClient::update_lookup_table (int icid, const LookupTable &table)
937 m_impl->update_lookup_table (icid, table);
940 PanelClient::register_properties (int icid, const PropertyList &properties)
942 m_impl->register_properties (icid, properties);
945 PanelClient::update_property (int icid, const Property &property)
947 m_impl->update_property (icid, property);
950 PanelClient::start_default_ise (int icid)
952 m_impl->start_default_ise (icid);
955 PanelClient::start_helper (int icid, const String &helper_uuid)
957 m_impl->start_helper (icid, helper_uuid);
961 PanelClient::stop_helper (int icid, const String &helper_uuid)
963 m_impl->stop_helper (icid, helper_uuid);
966 PanelClient::send_helper_event (int icid, const String &helper_uuid, const Transaction &trans)
968 m_impl->send_helper_event (icid, helper_uuid, trans);
971 PanelClient::register_input_context (int icid, const String &uuid)
973 m_impl->register_input_context (icid, uuid);
976 PanelClient::remove_input_context (int icid)
978 m_impl->remove_input_context (icid);
981 PanelClient::reset_input_context (int icid)
983 m_impl->reset_input_context (icid);
987 PanelClient::turn_on_log (int icid, uint32 isOn)
989 m_impl->turn_on_log (icid, isOn);
993 PanelClient::reset_signal_handler (void)
995 m_impl->reset_signal_handler ();
999 PanelClient::signal_connect_reload_config (PanelClientSlotVoid *slot)
1001 return m_impl->signal_connect_reload_config (slot);
1004 PanelClient::signal_connect_exit (PanelClientSlotVoid *slot)
1006 return m_impl->signal_connect_exit (slot);
1009 PanelClient::signal_connect_update_lookup_table_page_size (PanelClientSlotInt *slot)
1011 return m_impl->signal_connect_update_lookup_table_page_size (slot);
1014 PanelClient::signal_connect_lookup_table_page_up (PanelClientSlotVoid *slot)
1016 return m_impl->signal_connect_lookup_table_page_up (slot);
1019 PanelClient::signal_connect_lookup_table_page_down (PanelClientSlotVoid *slot)
1021 return m_impl->signal_connect_lookup_table_page_down (slot);
1024 PanelClient::signal_connect_reset_option (PanelClientSlotVoid *slot)
1026 return m_impl->signal_connect_reset_option (slot);
1029 PanelClient::signal_connect_trigger_property (PanelClientSlotString *slot)
1031 return m_impl->signal_connect_trigger_property (slot);
1034 PanelClient::signal_connect_process_helper_event (PanelClientSlotStringStringTransaction *slot)
1036 return m_impl->signal_connect_process_helper_event (slot);
1039 PanelClient::signal_connect_move_preedit_caret (PanelClientSlotInt *slot)
1041 return m_impl->signal_connect_move_preedit_caret (slot);
1044 PanelClient::signal_connect_select_aux (PanelClientSlotInt *slot)
1046 return m_impl->signal_connect_select_aux (slot);
1049 PanelClient::signal_connect_select_candidate (PanelClientSlotInt *slot)
1051 return m_impl->signal_connect_select_candidate (slot);
1054 PanelClient::signal_connect_process_key_event (PanelClientSlotKeyEvent *slot)
1056 return m_impl->signal_connect_process_key_event (slot);
1059 PanelClient::signal_connect_commit_string (PanelClientSlotWideString *slot)
1061 return m_impl->signal_connect_commit_string (slot);
1064 PanelClient::signal_connect_forward_key_event (PanelClientSlotKeyEvent *slot)
1066 return m_impl->signal_connect_forward_key_event (slot);
1069 PanelClient::signal_connect_request_help (PanelClientSlotVoid *slot)
1071 return m_impl->signal_connect_request_help (slot);
1074 PanelClient::signal_connect_request_factory_menu (PanelClientSlotVoid *slot)
1076 return m_impl->signal_connect_request_factory_menu (slot);
1079 PanelClient::signal_connect_change_factory (PanelClientSlotString *slot)
1081 return m_impl->signal_connect_change_factory (slot);
1085 PanelClient::signal_connect_reset_keyboard_ise (PanelClientSlotVoid *slot)
1087 return m_impl->signal_connect_reset_keyboard_ise (slot);
1091 PanelClient::signal_connect_update_keyboard_ise (PanelClientSlotVoid *slot)
1093 return m_impl->signal_connect_update_keyboard_ise (slot);
1097 PanelClient::signal_connect_show_preedit_string (PanelClientSlotVoid *slot)
1099 return m_impl->signal_connect_show_preedit_string (slot);
1103 PanelClient::signal_connect_hide_preedit_string (PanelClientSlotVoid *slot)
1105 return m_impl->signal_connect_hide_preedit_string (slot);
1109 PanelClient::signal_connect_update_preedit_string (PanelClientSlotStringAttrs *slot)
1111 return m_impl->signal_connect_update_preedit_string (slot);
1115 PanelClient::signal_connect_get_surrounding_text (PanelClientSlotIntInt *slot)
1117 return m_impl->signal_connect_get_surrounding_text (slot);
1121 PanelClient::signal_connect_delete_surrounding_text (PanelClientSlotIntInt *slot)
1123 return m_impl->signal_connect_delete_surrounding_text (slot);
1126 } /* namespace scim */
1129 vi:ts=4:nowrap:ai:expandtab