librime 1.2
Rime Input Method Engine, the core library
context.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-04-24 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_CONTEXT_H_
8#define RIME_CONTEXT_H_
9
10#include <rime/common.h>
11#include <rime/commit_history.h>
12#include <rime/composition.h>
13
14namespace rime {
15
16class Candidate;
17class KeyEvent;
18
20 public:
21 using Notifier = signal<void(Context* ctx)>;
22 using OptionUpdateNotifier = signal<void(Context* ctx, const string& option)>;
24 signal<void(Context* ctx, const string& property)>;
26 signal<void(Context* ctx, const KeyEvent& key_event)>;
27
28 Context() = default;
29 ~Context() = default;
30
31 bool Commit();
32 string GetCommitText() const;
33 string GetScriptText() const;
34 Preedit GetPreedit() const;
35 bool IsComposing() const;
36 bool HasMenu() const;
38
39 bool PushInput(char ch);
40 bool PushInput(const string& str);
41 bool PopInput(size_t len = 1);
42 bool DeleteInput(size_t len = 1);
43 void Clear();
44 // Clear and notify abort
45 void AbortComposition();
46
47 // return false if there is no candidate at index
48 bool Select(size_t index);
49 // return false if the selected index has not changed
50 bool Highlight(size_t index);
51 bool DeleteCandidate(size_t index);
52 // return false if there's no candidate for current segment
55 void BeginEditing();
56 bool ConfirmPreviousSelection(); // deprecated
62
63 void set_input(const string& value);
64 const string& input() const { return input_; }
65
66 void set_caret_pos(size_t caret_pos);
67 size_t caret_pos() const { return caret_pos_; }
68
69 void set_composition(Composition&& comp);
70 Composition& composition() { return composition_; }
71 const Composition& composition() const { return composition_; }
72 CommitHistory& commit_history() { return commit_history_; }
73 const CommitHistory& commit_history() const { return commit_history_; }
74
75 void set_option(const string& name, bool value);
76 bool get_option(const string& name) const;
77 void set_property(const string& name, const string& value);
78 string get_property(const string& name) const;
79 const map<string, bool>& options() const { return options_; }
80 const map<string, string>& properties() const { return properties_; }
81 // options and properties starting with '_' are local to schema;
82 // others are session scoped.
83 void ClearTransientOptions();
84
85 Notifier& commit_notifier() { return commit_notifier_; }
86 Notifier& select_notifier() { return select_notifier_; }
87 Notifier& update_notifier() { return update_notifier_; }
88 Notifier& delete_notifier() { return delete_notifier_; }
89 Notifier& abort_notifier() { return abort_notifier_; }
91 return option_update_notifier_;
92 }
94 return property_update_notifier_;
95 }
96 KeyEventNotifier& unhandled_key_notifier() { return unhandled_key_notifier_; }
97
98 private:
99 string GetSoftCursor() const;
100
101 string input_;
102 size_t caret_pos_ = 0;
103 Composition composition_;
104 CommitHistory commit_history_;
105 map<string, bool> options_;
106 map<string, string> properties_;
107
108 Notifier commit_notifier_;
109 Notifier select_notifier_;
110 Notifier update_notifier_;
111 Notifier delete_notifier_;
112 Notifier abort_notifier_;
113 OptionUpdateNotifier option_update_notifier_;
114 PropertyUpdateNotifier property_update_notifier_;
115 KeyEventNotifier unhandled_key_notifier_;
116};
117
118} // namespace rime
119
120#endif // RIME_CONTEXT_H_
#define RIME_DLL
Definition rime_api.h:33
Definition algebra.cc:12
std::shared_ptr< T > an
Definition common.h:60
Definition candidate.h:14
Definition commit_history.h:25
Definition composition.h:14
Definition composition.h:21
bool PushInput(char ch)
Definition context.cc:65
~Context()=default
bool ConfirmPreviousSelection()
Definition context.cc:199
OptionUpdateNotifier & option_update_notifier()
Definition context.h:90
size_t caret_pos() const
Definition context.h:67
bool ConfirmCurrentSelection()
Definition context.cc:168
signal< void(Context *ctx)> Notifier
Definition context.h:21
bool DeleteCandidate(size_t index)
Definition context.cc:151
const map< string, bool > & options() const
Definition context.h:79
const string & input() const
Definition context.h:64
string GetCommitText() const
Definition context.cc:28
Notifier & commit_notifier()
Definition context.h:85
bool RefreshNonConfirmedComposition()
Definition context.cc:260
void Clear()
Definition context.cc:106
bool HasMenu() const
Definition context.cc:52
Notifier & select_notifier()
Definition context.h:86
Notifier & abort_notifier()
Definition context.h:89
Context()=default
bool DeleteInput(size_t len=1)
Definition context.cc:98
bool ReopenPreviousSegment()
Definition context.cc:204
bool Highlight(size_t index)
Definition context.cc:132
an< Candidate > GetSelectedCandidate() const
Definition context.cc:59
bool ReopenPreviousSelection()
Definition context.cc:226
bool DeleteCurrentSelection()
Definition context.cc:161
PropertyUpdateNotifier & property_update_notifier()
Definition context.h:93
Composition & composition()
Definition context.h:70
Notifier & update_notifier()
Definition context.h:87
CommitHistory & commit_history()
Definition context.h:72
bool PopInput(size_t len=1)
Definition context.cc:89
signal< void(Context *ctx, const string &option)> OptionUpdateNotifier
Definition context.h:22
const Composition & composition() const
Definition context.h:71
signal< void(Context *ctx, const KeyEvent &key_event)> KeyEventNotifier
Definition context.h:25
Preedit GetPreedit() const
Definition context.cc:44
void BeginEditing()
Definition context.cc:187
KeyEventNotifier & unhandled_key_notifier()
Definition context.h:96
void set_input(const string &value)
Definition context.cc:280
void AbortComposition()
Definition context.cc:113
bool ClearNonConfirmedComposition()
Definition context.cc:246
Notifier & delete_notifier()
Definition context.h:88
string GetScriptText() const
Definition context.cc:34
bool Select(size_t index)
Definition context.cc:118
bool Commit()
Definition context.cc:18
const map< string, string > & properties() const
Definition context.h:80
const CommitHistory & commit_history() const
Definition context.h:73
bool IsComposing() const
Definition context.cc:48
bool ClearPreviousSegment()
Definition context.cc:216
signal< void(Context *ctx, const string &property)> PropertyUpdateNotifier
Definition context.h:23
Definition key_event.h:17