librime 1.2
Rime Input Method Engine, the core library
navigator.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-11-20 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_NAVIGATOR_H_
8#define RIME_NAVIGATOR_H_
9
10#include <rime/common.h>
11#include <rime/component.h>
12#include <rime/processor.h>
15
16namespace rime {
17
18class Navigator : public Processor, public KeyBindingProcessor<Navigator, 2> {
19 public:
23 };
27 };
28
29 explicit Navigator(const Ticket& ticket);
30 virtual ~Navigator();
31
32 ProcessResult ProcessKeyEvent(const KeyEvent& key_event) override;
33
46
47 private:
48 void BeginMove(Context* ctx);
49 bool JumpLeft(Context* ctx, size_t start_pos = 0, bool loop = false);
50 bool JumpRight(Context* ctx, size_t start_pos = 0, bool loop = false);
51 bool MoveLeft(Context* ctx);
52 bool MoveRight(Context* ctx);
53 bool GoHome(Context* ctx);
54 bool GoToEnd(Context* ctx);
55 void OnSelect(Context*);
56
57 string input_;
58 Spans spans_;
59
60 connection select_connection_;
61
62 private:
63 string delimiters_;
64 SyllableJumpPosition syllable_jump_position_ = AfterDelimiter;
65 size_t ToSpanStart(size_t pos);
66 size_t ToSpanEnd(size_t pos);
67 size_t ToSyllableStart(size_t pos);
68 size_t ToSyllableEnd(size_t pos);
69 size_t SkipDelimiterBackward(size_t pos);
70 size_t SkipDelimiterForward(size_t pos);
71};
72
73} // namespace rime
74
75#endif // RIME_NAVIGATOR_H_
Definition algebra.cc:12
ProcessResult
Definition processor.h:18
Definition context.h:19
KeyBindingProcessor(ActionDef *action_definitions)
Definition key_binding_processor.h:36
bool Handler(Context *ctx)
Definition key_binding_processor.h:19
Definition navigator.h:18
Handler RightByChar
Definition navigator.h:37
Handler RightBySyllableNoLoop
Definition navigator.h:45
Navigator(const Ticket &ticket)
Definition navigator.cc:36
Handler RightByCharNoLoop
Definition navigator.h:43
Handler RightBySyllable
Definition navigator.h:39
Handler End
Definition navigator.h:41
Handler LeftByChar
Definition navigator.h:36
Handler Home
Definition navigator.h:40
Handler LeftBySyllable
Definition navigator.h:38
SyllableJumpPosition
Definition navigator.h:24
@ BeforeDelimiter
Definition navigator.h:26
@ AfterDelimiter
Definition navigator.h:25
TextOrientation
Definition navigator.h:20
@ Vertical
Definition navigator.h:22
@ Horizontal
Definition navigator.h:21
Handler LeftByCharNoLoop
Definition navigator.h:42
ProcessResult ProcessKeyEvent(const KeyEvent &key_event) override
Definition navigator.cc:88
Handler Forward
Definition navigator.h:35
Handler Rewind
Definition navigator.h:34
Handler LeftBySyllableNoLoop
Definition navigator.h:44
Definition translator_commons.h:30
Definition key_event.h:17
Processor(const Ticket &ticket)
Definition processor.h:26
Definition ticket.h:17