Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: chrome/browser/chromeos/input_method/ibus_ui_connection.h

Issue 7108038: Rename ibus_ui_connection.* to ibus_ui_controller.*. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/ibus_ui_connection.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // The header files provides APIs for monitoring and controlling input
6 // method UI status. The APIs encapsulate the APIs of IBus, the underlying
7 // input method framework.
8
9 #ifndef CHROMEOS_INPUT_METHOD_UI_H_
10 #define CHROMEOS_INPUT_METHOD_UI_H_
11
12 #include <base/basictypes.h>
13
14 #include <sstream>
15 #include <string>
16 #include <vector>
17
18 namespace chromeos {
19
20 // A key for attaching the |ibus_service_panel_| object to |ibus_|.
21 const char kPanelObjectKey[] = "panel-object";
22
23 // The struct represents the input method lookup table (list of candidates).
24 // Used for InputMethodUpdateLookupTableMonitorFunction.
25 struct InputMethodLookupTable {
26 enum Orientation {
27 kVertical,
28 kHorizontal,
29 };
30
31 InputMethodLookupTable()
32 : visible(false),
33 cursor_absolute_index(0),
34 page_size(0),
35 orientation(kHorizontal) {
36 }
37
38 // Returns a string representation of the class. Used for debugging.
39 // The function has to be defined here rather than in the .cc file. If
40 // it's defined in the .cc file, the code will be part of libcros.so,
41 // which cannot be accessed from clients directly. libcros.so is loaded
42 // by dlopen() so all functions are unbound unless explicitly bound by
43 // dlsym().
44 std::string ToString() const {
45 std::stringstream stream;
46 stream << "visible: " << visible << "\n";
47 stream << "cursor_absolute_index: " << cursor_absolute_index << "\n";
48 stream << "page_size: " << page_size << "\n";
49 stream << "orientation: " << orientation << "\n";
50 stream << "candidates:";
51 for (size_t i = 0; i < candidates.size(); ++i) {
52 stream << " [" << candidates[i] << "]";
53 }
54 stream << "\nlabels:";
55 for (size_t i = 0; i < labels.size(); ++i) {
56 stream << " [" << labels[i] << "]";
57 }
58 return stream.str();
59 }
60
61 // True if the lookup table is visible.
62 bool visible;
63
64 // Zero-origin index of the current cursor position in the all
65 // candidates. If the cursor is pointing to the third candidate in the
66 // second page when the page size is 10, the value will be 12 as it's
67 // 13th candidate.
68 int cursor_absolute_index;
69
70 // Page size is the max number of candidates shown in a page. Usually
71 // it's about 10, depending on the backend conversion engine.
72 int page_size;
73
74 // Candidate strings in UTF-8.
75 std::vector<std::string> candidates;
76
77 // The orientation of the candidates in the candidate window.
78 Orientation orientation;
79
80 // Label strings in UTF-8 (ex. "1", "2", "3", ...).
81 std::vector<std::string> labels;
82
83 // Annotation strings in UTF-8 (ex. "Hankaku Katakana").
84 std::vector<std::string> annotations;
85 };
86
87 // Callback function type for handling IBus's |HideAuxiliaryText| signal.
88 typedef void (*InputMethodHideAuxiliaryTextMonitorFunction)(
89 void* input_method_library);
90
91 // Callback function type for handling IBus's |HideLookupTable| signal.
92 typedef void (*InputMethodHideLookupTableMonitorFunction)(
93 void* input_method_library);
94
95 // Callback function type for handling IBus's |SetCandidateText| signal.
96 typedef void (*InputMethodSetCursorLocationMonitorFunction)(
97 void* input_method_library,
98 int x, int y, int width, int height);
99
100 // Callback function type for handling IBus's |UpdateAuxiliaryText| signal.
101 typedef void (*InputMethodUpdateAuxiliaryTextMonitorFunction)(
102 void* input_method_library,
103 const std::string& text,
104 bool visible);
105
106 // Callback function type for handling IBus's |UpdateLookupTable| signal.
107 typedef void (*InputMethodUpdateLookupTableMonitorFunction)(
108 void* input_method_library,
109 const InputMethodLookupTable& table);
110
111 // A monitor function which is called when ibus connects or disconnects.
112 typedef void(*InputMethodConnectionChangeMonitorFunction)(
113 void* input_method_library, bool connected);
114
115 // A set of function pointers used for monitoring the input method UI status.
116 struct InputMethodUiStatusMonitorFunctions {
117 InputMethodUiStatusMonitorFunctions()
118 : hide_auxiliary_text(NULL),
119 hide_lookup_table(NULL),
120 set_cursor_location(NULL),
121 update_auxiliary_text(NULL),
122 update_lookup_table(NULL) {
123 }
124
125 InputMethodHideAuxiliaryTextMonitorFunction hide_auxiliary_text;
126 InputMethodHideLookupTableMonitorFunction hide_lookup_table;
127 InputMethodSetCursorLocationMonitorFunction set_cursor_location;
128 InputMethodUpdateAuxiliaryTextMonitorFunction update_auxiliary_text;
129 InputMethodUpdateLookupTableMonitorFunction update_lookup_table;
130 };
131
132 // Establishes IBus connection to the ibus-daemon.
133 //
134 // Returns an InputMethodUiStatusConnection object that is used for
135 // maintaining and monitoring an IBus connection. The implementation
136 // details of InputMethodUiStatusConnection is not exposed.
137 //
138 // Function pointers in |monitor_functions| are registered in the returned
139 // InputMethodUiStatusConnection object. These functions will be called,
140 // unless the pointers are NULL, when certain signals are received from
141 // ibus-daemon.
142 //
143 // The client can pass a pointer to an abitrary object as
144 // |input_method_library|. The pointer passed as |input_method_library|
145 // will be passed to the registered callback functions as the first
146 // parameter.
147 class InputMethodUiStatusConnection;
148 extern InputMethodUiStatusConnection* (*MonitorInputMethodUiStatus)(
149 const InputMethodUiStatusMonitorFunctions& monitor_functions,
150 void* input_method_library);
151
152 // Disconnects the input method UI status connection, as well as the
153 // underlying IBus connection.
154 extern void (*DisconnectInputMethodUiStatus)(
155 InputMethodUiStatusConnection* connection);
156
157 // Notifies that a candidate is clicked. |CandidateClicked| signal will be
158 // sent to the ibus-daemon.
159 //
160 // - |index| Index in the Lookup table. The semantics is same with
161 // |cursor_absolute_index|.
162 // - |button| GdkEventButton::button (1: left button, etc.)
163 // - |state| GdkEventButton::state (key modifier flags)
164 extern void (*NotifyCandidateClicked)(
165 InputMethodUiStatusConnection* connection,
166 int index, int button, int flags);
167
168 // Notifies that the cursor up button is clicked. |CursorUp| signal will be
169 // sent to the ibus-daemon
170 extern void (*NotifyCursorUp)(
171 InputMethodUiStatusConnection* connection);
172
173 // Notifies that the cursor down button is clicked. |CursorDown| signal will be
174 // sent to the ibus-daemon
175 extern void (*NotifyCursorDown)(
176 InputMethodUiStatusConnection* connection);
177
178 // Notifies that the page up button is clicked. |PageUp| signal will be
179 // sent to the ibus-daemon
180 extern void (*NotifyPageUp)(
181 InputMethodUiStatusConnection* connection);
182
183 // Notifies that the page down button is clicked. |PageDown| signal will be
184 // sent to the ibus-daemon
185 extern void (*NotifyPageDown)(
186 InputMethodUiStatusConnection* connection);
187
188 // Set a notification function for changes to an ibus connection.
189 extern void (*MonitorInputMethodConnection)(
190 InputMethodUiStatusConnection* connection,
191 InputMethodConnectionChangeMonitorFunction connection_change_handler);
192
193 } // namespace chromeos
194
195 #endif // CHROMEOS_INPUT_METHOD_UI_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/input_method/ibus_ui_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698