/usr/include/scim-1.0/scim_lookup_table.h is in libscim-dev 1.4.18-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | /** @file scim_lookup_table.h
* @brief definition of LookupTable classes.
*/
/*
* Smart Common Input Method
*
* Copyright (c) 2002-2005 James Su <suzhe@tsinghua.org.cn>
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* $Id: scim_lookup_table.h,v 1.32 2005/05/13 04:21:29 suzhe Exp $
*/
#ifndef __SCIM_LOOKUP_TABLE_H
#define __SCIM_LOOKUP_TABLE_H
namespace scim {
/**
* @addtogroup Accessories
* @{
*/
#define SCIM_LOOKUP_TABLE_MAX_PAGESIZE 16
/**
* @brief The base class of lookup table.
*
* LookupTable is used to store the candidate phrases, it provides a easy way
* to manage the content of candidates and flip between multiple pages.
*
* It also can manage the attributes for each candidate string.
*
* This is abstract class and cannot store data.
* IMEngine should use its derivation class.
* This class is the interface that uses within FrontEnd class.
*/
class LookupTable
{
class LookupTableImpl;
LookupTableImpl * m_impl;
LookupTable (const LookupTable &);
const LookupTable & operator= (const LookupTable &);
public:
/**
* @brief Constructor
* @param page_size - the maximum page size, can be set by set_page_size() later.
*/
LookupTable (int page_size = 10);
/**
* @brief Virtual destructor.
*/
virtual ~LookupTable ();
/**
* @brief Set the strings to label the candidates in one page.
* @param labels - the strings to label the candidates in one page.
*/
void set_candidate_labels (const std::vector<WideString> &labels);
/**
* @brief Get the label string of a candidate in a page.
* @param page_index - the index in a page, 0 to (max page size - 1).
* @return the corresponding label of the index.
*/
WideString get_candidate_label (int page_index) const;
/**
* @brief Set the maximum page size.
* @param page_size - the max page size of the table.
*/
void set_page_size (int page_size);
/**
* @brief Get the maximum page size.
* @return the max page size of the table.
*/
int get_page_size () const;
/**
* @brief Get current page size,
* @return the page size of current page.It can be less than the max page size.
*/
int get_current_page_size () const;
/**
* @brief Get the start index of current page.
* @return the start item index of current page, starting from 0.
*/
int get_current_page_start () const;
/**
* @brief Check if the cursor is visible.
* @return true if the cursor should be shown.
*/
bool is_cursor_visible () const;
/**
* @brief Check if the page size is fixed, aka. couldn't reduced by FrontEnd.
* @return true if the page size shouldn't be reduced by FrontEnd.
*/
bool is_page_size_fixed () const;
/**
* @brief Get current cursor position.
* @return the cursor position in the table, starting from 0.
*/
int get_cursor_pos () const;
/**
* @brief Get the cursor position in current page.
* @return the cursor position in current page,
* equals to get_cursor_pos () - get_current_page_start ().
*/
int get_cursor_pos_in_current_page () const;
/**
* @brief Flip to the previous page.
* @return true if success, false if it's already in the first page.
*/
bool page_up ();
/**
* @brief Flip to the next page.
* @return true if success, false if it's already in the last page.
*/
bool page_down ();
/**
* @brief Move cursor position to the previous entry.
* @return true if success, false if it's already at the first entry.
*/
bool cursor_up ();
/**
* @brief Move cursor position to the next entry.
* @return true if success. false if it's already at the last entry.
*/
bool cursor_down ();
/**
* @brief Set the cursor visibility.
* @param show - true to show the cursor.
*/
void show_cursor (bool show=true);
/**
* @brief Set the page size to be fixed, aka. prevent from being changed by FrontEnd.
*/
void fix_page_size (bool fixed=true);
/**
* @brief Set the cursor position.
* @param pos - the absolute position of the cursor.
*/
void set_cursor_pos (int pos);
/**
* @brief Set the cursor position in current page.
* @param pos - the relative position of the cursor in current page.
*/
void set_cursor_pos_in_current_page (int pos);
/**
* @brief Get a candidate in current page.
*
* @param page_index - the candidate index in current page.
* @return the content of this candidate.
*
* @sa get_candidate
*/
WideString get_candidate_in_current_page (int page_index) const;
/**
* @brief Get the display attributes of a candidate in current page.
*
* @param page_index - the index in current page.
* @return the AttributeList object holding the attributes of this candidate.
*
* @sa get_attributes
*/
AttributeList get_attributes_in_current_page (int page_index) const;
public:
/**
* @name Pure Virtual functions.
* These functions should be implemented in derivation classes.
*
* @{
*/
/**
* @brief Get a candidate.
* @param index - the candidate index in the lookup table.
* @return the content of this candidate.
*/
virtual WideString get_candidate (int index) const = 0;
/**
* @brief Get the attributes of a candidate.
* @param index - the index in the lookup table.
* @return the AttributeList object holding the attributes of this candidate.
*/
virtual AttributeList get_attributes (int index) const = 0;
/**
* @brief Return the number of candidates in this table.
* @return the number of entries currently in this table.
*/
virtual uint32 number_of_candidates () const = 0;
/**
* @brief Clear the table.
*/
virtual void clear () = 0;
/**
* @}
*/
};
/**
* @brief A common lookup table class.
*
* This class implements the LookupTable interface in a common way.
*
*/
class CommonLookupTable : public LookupTable
{
class CommonLookupTableImpl;
CommonLookupTableImpl *m_impl;
CommonLookupTable (const CommonLookupTable &);
const CommonLookupTable & operator= (const CommonLookupTable &);
public:
CommonLookupTable (int page_size = 10);
/**
* @brief Constructor
*
* @param page_size - the maximum page size, can be set by set_page_size () later.
* @param labels - the strings to label the candidates in one page.
*/
CommonLookupTable (int page_size,
const std::vector<WideString> &labels);
~CommonLookupTable ();
virtual WideString get_candidate (int index) const;
virtual AttributeList get_attributes (int index) const;
virtual uint32 number_of_candidates () const;
virtual void clear ();
public:
/**
* @brief Append a candidate string into the table.
*
* @param cand - a candidate string to be added into the table.
* @param attrs - the attributes to control the display effect of this entry.
* It can be omitted if no attribute.
*
* @return true if success.
*/
bool append_candidate (const WideString &cand,
const AttributeList &attrs = AttributeList ());
/**
* @brief Append a candidate char into the table.
*
* @param cand - a candidate char to be added into the table.
* @param attrs - the attributes to control the display effect of this entry.
* It can be omitted if no attribute.
*
* @return true if success.
*/
bool append_candidate (ucs4_t cand,
const AttributeList &attrs = AttributeList ());
};
/** @} */
} // namespace scim
#endif //__SCIM_LOOKUP_TABLE_H
/*
vi:ts=4:nowrap:ai:expandtab
*/
|