diff options
-rw-r--r-- | data/com.github.libpinyin.ibus-libpinyin.gschema.xml | 4 | ||||
-rw-r--r-- | src/PYConfig.cc | 1 | ||||
-rw-r--r-- | src/PYConfig.h | 2 | ||||
-rw-r--r-- | src/PYPConfig.cc | 5 | ||||
-rw-r--r-- | src/PYPPhoneticEditor.cc | 2 | ||||
-rw-r--r-- | src/PYPSuggestionEditor.cc | 2 | ||||
-rw-r--r-- | src/PYPTradCandidates.cc | 5 | ||||
-rw-r--r-- | src/PYPTradCandidates.h | 5 | ||||
-rw-r--r-- | src/PYSimpTradConverter.cc | 6 | ||||
-rw-r--r-- | src/PYSimpTradConverter.h | 6 |
10 files changed, 28 insertions, 10 deletions
diff --git a/data/com.github.libpinyin.ibus-libpinyin.gschema.xml b/data/com.github.libpinyin.ibus-libpinyin.gschema.xml index aa2526b..df5e432 100644 --- a/data/com.github.libpinyin.ibus-libpinyin.gschema.xml +++ b/data/com.github.libpinyin.ibus-libpinyin.gschema.xml @@ -185,6 +185,10 @@ <default>false</default> <summary>Show Suggestions</summary> </key> + <key name="opencc-config" type="s"> + <default>'s2t.json'</default> + <summary>The config file which should be used by OpenCC for traditional input. Please consult the OpenCC documentation for more information</summary> + </key> </schema> <schema path="/com/github/libpinyin/ibus-libpinyin/libbopomofo/" id="com.github.libpinyin.ibus-libpinyin.libbopomofo"> <key name="auxiliary-select-key-f" type="i"> diff --git a/src/PYConfig.cc b/src/PYConfig.cc index b07ad54..37b173a 100644 --- a/src/PYConfig.cc +++ b/src/PYConfig.cc @@ -61,6 +61,7 @@ Config::initDefaultValues (void) m_dictionaries = ""; m_lua_converter = ""; + m_opencc_config = "s2t.json"; m_main_switch = "<Shift>"; m_letter_switch = ""; diff --git a/src/PYConfig.h b/src/PYConfig.h index 3a01762..213d6c0 100644 --- a/src/PYConfig.h +++ b/src/PYConfig.h @@ -69,6 +69,7 @@ public: std::string letterSwitch (void) const { return m_letter_switch; } std::string punctSwitch (void) const { return m_punct_switch; } std::string tradSwitch (void) const { return m_trad_switch; } + std::string openccConfig (void) const { return m_opencc_config; } protected: bool read (const gchar * name, bool defval); @@ -90,6 +91,7 @@ protected: std::string m_schema_id; std::string m_dictionaries; std::string m_lua_converter; + std::string m_opencc_config; pinyin_option_t m_option; pinyin_option_t m_option_mask; diff --git a/src/PYPConfig.cc b/src/PYPConfig.cc index a0f2d76..e7165e1 100644 --- a/src/PYPConfig.cc +++ b/src/PYPConfig.cc @@ -48,6 +48,7 @@ const gchar * const CONFIG_INIT_FULL_PUNCT = "init-full-punct"; const gchar * const CONFIG_INIT_SIMP_CHINESE = "init-simplified-chinese"; const gchar * const CONFIG_DICTIONARIES = "dictionaries"; const gchar * const CONFIG_LUA_CONVERTER = "lua-converter"; +const gchar * const CONFIG_OPENCC_CONFIG = "opencc-config"; const gchar * const CONFIG_BOPOMOFO_KEYBOARD_MAPPING = "bopomofo-keyboard-mapping"; const gchar * const CONFIG_SELECT_KEYS = "select-keys"; const gchar * const CONFIG_GUIDE_KEY = "guide-key"; @@ -118,6 +119,7 @@ LibPinyinConfig::initDefaultValues (void) m_dictionaries = ""; m_lua_converter = ""; + m_opencc_config = "s2t.json"; m_main_switch = "<Shift>"; m_letter_switch = ""; @@ -400,6 +402,7 @@ PinyinConfig::readDefaultValues (void) m_minus_equal_page = read (CONFIG_MINUS_EQUAL_PAGE, true); m_comma_period_page = read (CONFIG_COMMA_PERIOD_PAGE, true); m_auto_commit = read (CONFIG_AUTO_COMMIT, false); + m_opencc_config = read (CONFIG_OPENCC_CONFIG, "s2t.json"); /* lua */ m_lua_converter = read (CONFIG_LUA_CONVERTER, ""); @@ -464,6 +467,8 @@ PinyinConfig::valueChanged (const std::string &schema_id, m_comma_period_page = normalizeGVariant (value, true); else if (CONFIG_LUA_CONVERTER == name) m_lua_converter = normalizeGVariant (value, std::string ("")); + else if (CONFIG_OPENCC_CONFIG == name) + m_opencc_config = normalizeGVariant (value, std::string ("")); else if (CONFIG_AUTO_COMMIT == name) m_auto_commit = normalizeGVariant (value, false); else if (CONFIG_IMPORT_DICTIONARY == name) { diff --git a/src/PYPPhoneticEditor.cc b/src/PYPPhoneticEditor.cc index e39b6ba..9755e77 100644 --- a/src/PYPPhoneticEditor.cc +++ b/src/PYPPhoneticEditor.cc @@ -38,7 +38,7 @@ PhoneticEditor::PhoneticEditor (PinyinProperties &props, m_lua_converter_candidates (this), #endif m_emoji_candidates (this), - m_traditional_candidates (this) + m_traditional_candidates (this, config) { } diff --git a/src/PYPSuggestionEditor.cc b/src/PYPSuggestionEditor.cc index 8dbda4c..3f543b2 100644 --- a/src/PYPSuggestionEditor.cc +++ b/src/PYPSuggestionEditor.cc @@ -35,7 +35,7 @@ SuggestionEditor::SuggestionEditor (PinyinProperties &props, m_lua_trigger_candidates (this), m_lua_converter_candidates (this), #endif - m_traditional_candidates (this) + m_traditional_candidates (this, config) { /* use m_text to store the prefix string. */ m_text = ""; diff --git a/src/PYPTradCandidates.cc b/src/PYPTradCandidates.cc index d625164..c16b669 100644 --- a/src/PYPTradCandidates.cc +++ b/src/PYPTradCandidates.cc @@ -23,7 +23,6 @@ #include <assert.h> #include "PYString.h" #include "PYPPhoneticEditor.h" -#include "PYSimpTradConverter.h" using namespace PY; @@ -42,7 +41,7 @@ TraditionalCandidates::processCandidates (std::vector<EnhancedCandidate> & candi enhanced.m_candidate_id = i; trad.truncate (0); - SimpTradConverter::simpToTrad (enhanced.m_display_string.c_str (), trad); + m_converter.simpToTrad (enhanced.m_display_string.c_str (), trad); enhanced.m_display_string = trad; } @@ -62,7 +61,7 @@ TraditionalCandidates::selectCandidate (EnhancedCandidate & enhanced) if (action & SELECT_CANDIDATE_MODIFY_IN_PLACE) { String trad; - SimpTradConverter::simpToTrad + m_converter.simpToTrad (m_candidates[id].m_display_string.c_str (), trad); enhanced.m_display_string = trad; } diff --git a/src/PYPTradCandidates.h b/src/PYPTradCandidates.h index f3e1a56..377206c 100644 --- a/src/PYPTradCandidates.h +++ b/src/PYPTradCandidates.h @@ -24,6 +24,8 @@ #include <vector> #include "PYPEnhancedCandidates.h" +#include "PYConfig.h" +#include "PYSimpTradConverter.h" namespace PY { @@ -31,7 +33,7 @@ class Editor; class TraditionalCandidates : public EnhancedCandidates<Editor> { public: - TraditionalCandidates (Editor *editor) { + TraditionalCandidates (Editor *editor, Config & config) : m_converter(config) { m_editor = editor; } @@ -42,6 +44,7 @@ public: protected: std::vector<EnhancedCandidate> m_candidates; + SimpTradConverter m_converter; }; }; diff --git a/src/PYSimpTradConverter.cc b/src/PYSimpTradConverter.cc index db20666..8f0d790 100644 --- a/src/PYSimpTradConverter.cc +++ b/src/PYSimpTradConverter.cc @@ -41,9 +41,9 @@ namespace PY { class opencc { public: - opencc (void) + opencc (const char* configFileName) { - m_cc = opencc_open (OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD); + m_cc = opencc_open (configFileName); g_assert (m_cc != NULL); } @@ -66,7 +66,7 @@ private: void SimpTradConverter::simpToTrad (const gchar *in, String &out) { - static opencc opencc; + static opencc opencc(m_config.openccConfig().c_str()); opencc.convert (in, out); } diff --git a/src/PYSimpTradConverter.h b/src/PYSimpTradConverter.h index 0fe5c2a..aa26c3e 100644 --- a/src/PYSimpTradConverter.h +++ b/src/PYSimpTradConverter.h @@ -22,6 +22,7 @@ #define __PY_SIMP_TRAD_CONVERTER_H_ #include <glib.h> +#include "PYConfig.h" namespace PY { @@ -29,7 +30,10 @@ class String; class SimpTradConverter { public: - static void simpToTrad (const gchar *in, String &out); + SimpTradConverter(Config & config) : m_config(config) {} + void simpToTrad (const gchar *in, String &out); +private: + Config & m_config; }; }; |