librime 1.2
Rime Input Method Engine, the core library
switcher.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-12-07 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_SWITCHER_H_
8#define RIME_SWITCHER_H_
9
10#include <rime/common.h>
11#include <rime/engine.h>
12#include <rime/processor.h>
13
14namespace rime {
15
16class Config;
17class Context;
18class Translator;
19
20class Switcher : public Processor, public Engine {
21 public:
22 Switcher(const Ticket& ticket);
23 virtual ~Switcher();
24
25 virtual bool ProcessKey(const KeyEvent& key_event) {
26 return ProcessKeyEvent(key_event) == kAccepted;
27 }
28 virtual ProcessResult ProcessKeyEvent(const KeyEvent& key_event);
29
30 static int ForEachSchemaListEntry(
31 Config* config,
32 function<bool(const string& schema_id)> process_entry);
33
34 void SetActiveSchema(const string& schema_id);
36 void SelectNextSchema();
37 bool IsAutoSave(const string& option) const;
39
40 void RefreshMenu();
41 void Activate();
42 void Deactivate();
43 void DeactivateAndApply(function<void()> apply);
44
45 Engine* attached_engine() const { return engine_; }
46 Config* user_config() const { return user_config_.get(); }
47 bool active() const { return active_; }
48
49 protected:
51 void LoadSettings();
52
54 void OnSelect(Context* ctx);
55
57 string caption_;
58 vector<KeyEvent> hotkeys_;
59 set<string> save_options_;
60 bool fold_options_ = false;
62
63 vector<of<Processor>> processors_;
64 vector<of<Translator>> translators_;
65 bool active_ = false;
66};
67
69 public:
71 virtual void Apply(Switcher* switcher) = 0;
72 const string& keyword() const { return keyword_; }
73
74 protected:
75 string keyword_;
76};
77
78} // namespace rime
79
80#endif // RIME_SWITCHER_H_
Definition algebra.cc:12
std::unique_ptr< T > the
Definition common.h:58
ProcessResult
Definition processor.h:18
@ kAccepted
Definition processor.h:20
Definition config_component.h:21
Definition context.h:19
Engine()
Definition engine.cc:64
Definition key_event.h:17
Processor(const Ticket &ticket)
Definition processor.h:26
Engine * engine_
Definition processor.h:37
Definition schema.h:15
Definition switcher.h:20
static int ForEachSchemaListEntry(Config *config, function< bool(const string &schema_id)> process_entry)
Definition switcher.cc:146
bool active_
Definition switcher.h:65
void DeactivateAndApply(function< void()> apply)
Definition switcher.cc:257
void OnSelect(Context *ctx)
Definition switcher.cc:218
void InitializeComponents()
Definition switcher.cc:293
bool active() const
Definition switcher.h:47
bool fix_schema_list_order_
Definition switcher.h:61
string caption_
Definition switcher.h:57
void LoadSettings()
Definition switcher.cc:264
virtual ProcessResult ProcessKeyEvent(const KeyEvent &key_event)
Definition switcher.cc:51
void RestoreSavedOptions()
Definition switcher.cc:40
void Deactivate()
Definition switcher.cc:251
void HighlightNextSchema()
Definition switcher.cc:83
Config * user_config() const
Definition switcher.h:46
set< string > save_options_
Definition switcher.h:59
virtual bool ProcessKey(const KeyEvent &key_event)
Definition switcher.h:25
vector< of< Translator > > translators_
Definition switcher.h:64
bool fold_options_
Definition switcher.h:60
the< Config > user_config_
Definition switcher.h:56
void RefreshMenu()
Definition switcher.cc:225
void SetActiveSchema(const string &schema_id)
Definition switcher.cc:165
void Activate()
Definition switcher.cc:243
void SelectNextSchema()
Definition switcher.cc:198
Schema * CreateSchema()
Definition switcher.cc:174
bool IsAutoSave(const string &option) const
Definition switcher.cc:214
Engine * attached_engine() const
Definition switcher.h:45
vector< of< Processor > > processors_
Definition switcher.h:63
vector< KeyEvent > hotkeys_
Definition switcher.h:58
Switcher(const Ticket &ticket)
Definition switcher.cc:23
const string & keyword() const
Definition switcher.h:72
SwitcherCommand(const string &keyword)
Definition switcher.h:70
virtual void Apply(Switcher *switcher)=0
string keyword_
Definition switcher.h:75
Definition ticket.h:17
Definition translator.h:22