~ubuntu-branches/ubuntu/maverick/ibus-sunpinyin/maverick

« back to all changes in this revision

Viewing changes to wrapper/ibus/src/imi_ibus_win.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Zhengpeng Hou
  • Date: 2010-09-06 12:27:14 UTC
  • Revision ID: james.westby@ubuntu.com-20100906122714-mmdcj0n6qsv84svj
Tags: upstream-2.0.2
ImportĀ upstreamĀ versionĀ 2.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
3
 *
 
4
 * Copyright (c) 2007, 2009 Kov Chai <tchaikov@gmail.com>
 
5
 *
 
6
 * The contents of this file are subject to the terms of either the GNU Lesser
 
7
 * General Public License Version 2.1 only ("LGPL") or the Common Development and
 
8
 * Distribution License ("CDDL")(collectively, the "License"). You may not use this
 
9
 * file except in compliance with the License. You can obtain a copy of the CDDL at
 
10
 * http://www.opensource.org/licenses/cddl1.php and a copy of the LGPLv2.1 at
 
11
 * http://www.opensource.org/licenses/lgpl-license.php. See the License for the 
 
12
 * specific language governing permissions and limitations under the License. When
 
13
 * distributing the software, include this License Header Notice in each file and
 
14
 * include the full text of the License in the License file as well as the
 
15
 * following notice:
 
16
 * 
 
17
 * NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
 
18
 * (CDDL)
 
19
 * For Covered Software in this distribution, this License shall be governed by the
 
20
 * laws of the State of California (excluding conflict-of-law provisions).
 
21
 * Any litigation relating to this License shall be subject to the jurisdiction of
 
22
 * the Federal Courts of the Northern District of California and the state courts
 
23
 * of the State of California, with venue lying in Santa Clara County, California.
 
24
 * 
 
25
 * Contributor(s):
 
26
 * 
 
27
 * If you wish your version of this file to be governed by only the CDDL or only
 
28
 * the LGPL Version 2.1, indicate your decision by adding "[Contributor]" elects to
 
29
 * include this software in this distribution under the [CDDL or LGPL Version 2.1]
 
30
 * license." If you don't indicate a single choice of license, a recipient has the
 
31
 * option to distribute your version of this file under either the CDDL or the LGPL
 
32
 * Version 2.1, or to extend the choice of license to its licensees as provided
 
33
 * above. However, if you add LGPL Version 2.1 code and therefore, elected the LGPL
 
34
 * Version 2 license, then the option applies only if the new code is made subject
 
35
 * to such option by the copyright holder. 
 
36
 */
 
37
#include <string>
 
38
#include <algorithm>
 
39
#include <ime-core/imi_uiobjects.h>
 
40
 
 
41
#include "sunpinyin_engine.h"
 
42
#include "imi_ibus_win.h"
 
43
 
 
44
 
 
45
 
 
46
CIBusWinHandler::CIBusWinHandler(SunPinyinEngine* engine)
 
47
  : CIMIWinHandler(), m_engine(engine)
 
48
{
 
49
    //
 
50
}
 
51
 
 
52
CIBusWinHandler::~CIBusWinHandler()
 
53
{
 
54
}
 
55
 
 
56
void
 
57
CIBusWinHandler::commit(const TWCHAR* wstr)
 
58
{
 
59
    if (wstr) {
 
60
        std::wstring str;
 
61
        copy(wstr, wstr+WCSLEN(wstr)+1, back_inserter(str));
 
62
        m_engine->commit_string(str);
 
63
    }
 
64
}
 
65
 
 
66
void
 
67
CIBusWinHandler::updatePreedit(const IPreeditString* ppd)
 
68
{
 
69
    if (ppd)
 
70
        m_engine->update_preedit_string(*ppd);
 
71
}
 
72
 
 
73
void
 
74
CIBusWinHandler::updateCandidates(const ICandidateList* pcl)
 
75
{
 
76
    if (pcl)
 
77
        m_engine->update_candidates(*pcl);
 
78
}
 
79
 
 
80
void
 
81
CIBusWinHandler::throwBackKey(unsigned keycode, unsigned keyvalue, unsigned modifier)
 
82
{
 
83
    if (keyvalue > 0x0 && keyvalue < 0x7f) {
 
84
        printf("%c", keyvalue);
 
85
        fflush(stdout);
 
86
    }
 
87
}
 
88
 
 
89
void
 
90
CIBusWinHandler::updateStatus(int key, int value)
 
91
{
 
92
    switch (key) {
 
93
    case STATUS_ID_CN:
 
94
        m_engine->update_status_property(value != 0);
 
95
        break;
 
96
    case STATUS_ID_FULLPUNC:
 
97
        m_engine->update_punct_property(value != 0);
 
98
        break;
 
99
    case STATUS_ID_FULLSYMBOL:
 
100
        m_engine->update_letter_property(value != 0);
 
101
        break;
 
102
    default:
 
103
        break;
 
104
    }
 
105
}