From 99cf3eb47b018a3ab7fbf12d8cd829189915d239 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 11:50:14 +0800 Subject: [PATCH 01/12] Proj // Nomenclature update : front & rear. - After -> in front of. - Before -> at the rear of. --- Source/Modules/ControllerModules/KeyHandler.h | 6 ++-- .../Modules/ControllerModules/KeyHandler.mm | 32 +++++++++---------- .../ControllerModules/KeyHandler_Misc.swift | 4 +-- .../ControllerModules/KeyHandler_States.swift | 16 +++++----- Source/Modules/IMEModules/mgrPrefs.swift | 10 +++--- .../LanguageParsers/Gramambular/Grid.h | 16 +++++----- .../Resources/Base.lproj/Localizable.strings | 10 +++--- Source/Resources/en.lproj/Localizable.strings | 10 +++--- Source/Resources/ja.lproj/Localizable.strings | 10 +++--- .../zh-Hans.lproj/Localizable.strings | 10 +++--- .../zh-Hant.lproj/Localizable.strings | 10 +++--- Source/UI/PrefUI/suiPrefPaneExperience.swift | 10 +++--- .../WindowNIBs/Base.lproj/frmPrefWindow.xib | 11 +++---- .../WindowNIBs/en.lproj/frmPrefWindow.strings | 12 +++---- .../WindowNIBs/ja.lproj/frmPrefWindow.strings | 6 ++-- .../zh-Hans.lproj/frmPrefWindow.strings | 6 ++-- .../zh-Hant.lproj/frmPrefWindow.strings | 6 ++-- 17 files changed, 92 insertions(+), 93 deletions(-) diff --git a/Source/Modules/ControllerModules/KeyHandler.h b/Source/Modules/ControllerModules/KeyHandler.h index 1c40ce61..dd45b041 100644 --- a/Source/Modules/ControllerModules/KeyHandler.h +++ b/Source/Modules/ControllerModules/KeyHandler.h @@ -40,8 +40,8 @@ struct BufferStatePackage { NSString *composedText; NSInteger cursorIndex; - NSString *resultOfBefore; - NSString *resultOfAfter; + NSString *resultOfRear; + NSString *resultOfFront; }; @class KeyHandler; @@ -79,7 +79,7 @@ struct BufferStatePackage - (NSInteger)getPackagedCursorIndex; - (NSString *)getComposedText; - (NSString *)getCompositionFromPhoneticReadingBuffer; -- (NSString *)getStrLocationResult:(BOOL)isAfter NS_SWIFT_NAME(getStrLocationResult(isAfter:)); +- (NSString *)getStrLocationResult:(BOOL)isFront NS_SWIFT_NAME(getStrLocationResult(isFront:)); - (NSString *)getSyllableCompositionFromPhoneticReadingBuffer; - (void)clearPhoneticReadingBuffer; - (void)combinePhoneticReadingBufferKey:(UniChar)charCode; diff --git a/Source/Modules/ControllerModules/KeyHandler.mm b/Source/Modules/ControllerModules/KeyHandler.mm index 88d8a974..701d763e 100644 --- a/Source/Modules/ControllerModules/KeyHandler.mm +++ b/Source/Modules/ControllerModules/KeyHandler.mm @@ -46,8 +46,8 @@ static const double kEpsilon = 0.000001; NSString *packagedComposedText; NSInteger packagedCursorIndex; -NSString *packagedResultOfBefore; -NSString *packagedResultOfAfter; +NSString *packagedResultOfRear; +NSString *packagedResultOfFront; // NON-SWIFTIFIABLE static double FindHighestScore(const std::vector &nodes, double epsilon) @@ -233,8 +233,8 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; size_t readingCursorIndex = 0; size_t builderCursorIndex = [self getBuilderCursorIndex]; - NSString *resultOfBefore = @""; - NSString *resultOfAfter = @""; + NSString *resultOfRear = @""; + NSString *resultOfFront = @""; for (std::vector::iterator wi = _walkedNodes.begin(), we = _walkedNodes.end(); wi != we; ++wi) @@ -282,19 +282,19 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; } if (builderCursorIndex == 0) { - resultOfBefore = + resultOfRear = [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; } else if (builderCursorIndex >= _builder->readings().size()) { - resultOfAfter = [NSString + resultOfFront = [NSString stringWithUTF8String:_builder->readings()[_builder->readings().size() - 1].c_str()]; } else { - resultOfBefore = + resultOfRear = [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; - resultOfAfter = + resultOfFront = [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex - 1].c_str()]; } } @@ -314,17 +314,17 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; packagedComposedText = composedText; packagedCursorIndex = cursorIndex; - packagedResultOfBefore = resultOfBefore; - packagedResultOfAfter = resultOfAfter; + packagedResultOfRear = resultOfRear; + packagedResultOfFront = resultOfFront; } // NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE. -- (NSString *)getStrLocationResult:(BOOL)isAfter +- (NSString *)getStrLocationResult:(BOOL)isFront { - if (isAfter) - return packagedResultOfAfter; + if (isFront) + return packagedResultOfFront; else - return packagedResultOfBefore; + return packagedResultOfRear; } // NON-SWIFTIFIABLE DUE TO VARIABLE AVAILABLE ACCESSIBILITY RANGE. @@ -556,7 +556,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; - (void)dealWithOverrideModelSuggestions { // 讓 grid 知道目前的游標候選字判定是前置還是後置 - _builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate); + _builder->grid().setRearCursorModeEnabled(mgrPrefs.setRearCursorMode); // 這一整段都太 C++ 且只出現一次,就整個端過來了。 // 拆開封裝的話,只會把問題搞得更麻煩而已。 std::string overrideValue = (mgrPrefs.useSCPCTypingMode) @@ -602,7 +602,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; - (NSArray *)getCandidatesArray { // 讓 grid 知道目前的游標候選字判定是前置還是後置 - _builder->grid().setHaninInputEnabled(!mgrPrefs.selectPhraseAfterCursorAsCandidate); + _builder->grid().setRearCursorModeEnabled(mgrPrefs.setRearCursorMode); NSMutableArray *candidatesArray = [[NSMutableArray alloc] init]; diff --git a/Source/Modules/ControllerModules/KeyHandler_Misc.swift b/Source/Modules/ControllerModules/KeyHandler_Misc.swift index 9228d065..b215d86b 100644 --- a/Source/Modules/ControllerModules/KeyHandler_Misc.swift +++ b/Source/Modules/ControllerModules/KeyHandler_Misc.swift @@ -35,9 +35,9 @@ import Cocoa func getActualCandidateCursorIndex() -> Int { var cursorIndex = getBuilderCursorIndex() - // MS Phonetics IME style, phrase is *after* the cursor. + // MS Phonetics IME style, phrase is *at the rear of* the cursor. // (i.e. the cursor is always *before* the phrase.) - if (mgrPrefs.selectPhraseAfterCursorAsCandidate + if (mgrPrefs.setRearCursorMode && (cursorIndex < getBuilderLength())) || cursorIndex == 0 { diff --git a/Source/Modules/ControllerModules/KeyHandler_States.swift b/Source/Modules/ControllerModules/KeyHandler_States.swift index 06258158..ecdf9b0a 100644 --- a/Source/Modules/ControllerModules/KeyHandler_States.swift +++ b/Source/Modules/ControllerModules/KeyHandler_States.swift @@ -37,24 +37,24 @@ import Cocoa // 獲取封裝好的資料 let composedText = getComposedText() let packagedCursorIndex = UInt(getPackagedCursorIndex()) - let resultOfBefore = getStrLocationResult(isAfter: false) - let resultOfAfter = getStrLocationResult(isAfter: true) + let resultOfRear = getStrLocationResult(isFront: false) + let resultOfFront = getStrLocationResult(isFront: true) // 初期化狀態 let newState = InputState.Inputting(composingBuffer: composedText, cursorIndex: packagedCursorIndex) // 組建提示文本 var tooltip = "" - if resultOfBefore == "", resultOfAfter != "" { - tooltip = String(format: NSLocalizedString("Cursor is after \"%@\".", comment: ""), resultOfAfter) + if resultOfRear == "", resultOfFront != "" { + tooltip = String(format: NSLocalizedString("Cursor is in front of \"%@\".", comment: ""), resultOfFront) } - if resultOfBefore != "", resultOfAfter == "" { - tooltip = String(format: NSLocalizedString("Cursor is before \"%@\".", comment: ""), resultOfBefore) + if resultOfRear != "", resultOfFront == "" { + tooltip = String(format: NSLocalizedString("Cursor is at the rear of \"%@\".", comment: ""), resultOfRear) } - if resultOfBefore != "", resultOfAfter != "" { + if resultOfRear != "", resultOfFront != "" { tooltip = String( format: NSLocalizedString("Cursor is between \"%@\" and \"%@\".", comment: ""), - resultOfAfter, resultOfBefore + resultOfFront, resultOfRear ) } diff --git a/Source/Modules/IMEModules/mgrPrefs.swift b/Source/Modules/IMEModules/mgrPrefs.swift index f3c602dc..6c75b4b6 100644 --- a/Source/Modules/IMEModules/mgrPrefs.swift +++ b/Source/Modules/IMEModules/mgrPrefs.swift @@ -37,7 +37,7 @@ struct UserDef { static let kCandidateListTextSize = "CandidateListTextSize" static let kAppleLanguages = "AppleLanguages" static let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles" - static let kSelectPhraseAfterCursorAsCandidate = "SelectPhraseAfterCursorAsCandidate" + static let kSetRearCursorMode = "SetRearCursorMode" static let kUseHorizontalCandidateList = "UseHorizontalCandidateList" static let kComposingBufferSize = "ComposingBufferSize" static let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace" @@ -210,7 +210,7 @@ public class mgrPrefs: NSObject { UserDef.kCandidateListTextSize, UserDef.kAppleLanguages, UserDef.kShouldAutoReloadUserDataFiles, - UserDef.kSelectPhraseAfterCursorAsCandidate, + UserDef.kSetRearCursorMode, UserDef.kUseHorizontalCandidateList, UserDef.kComposingBufferSize, UserDef.kChooseCandidateUsingSpace, @@ -258,7 +258,7 @@ public class mgrPrefs: NSObject { UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode) UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled) UserDefaults.standard.setDefault( - mgrPrefs.selectPhraseAfterCursorAsCandidate, forKey: UserDef.kSelectPhraseAfterCursorAsCandidate + mgrPrefs.setRearCursorMode, forKey: UserDef.kSetRearCursorMode ) UserDefaults.standard.setDefault( mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate @@ -322,8 +322,8 @@ public class mgrPrefs: NSObject { @UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles, defaultValue: true) @objc static var shouldAutoReloadUserDataFiles: Bool - @UserDefault(key: UserDef.kSelectPhraseAfterCursorAsCandidate, defaultValue: false) - @objc static var selectPhraseAfterCursorAsCandidate: Bool + @UserDefault(key: UserDef.kSetRearCursorMode, defaultValue: false) + @objc static var setRearCursorMode: Bool @UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate, defaultValue: true) @objc static var moveCursorAfterSelectingCandidate: Bool diff --git a/Source/Modules/LanguageParsers/Gramambular/Grid.h b/Source/Modules/LanguageParsers/Gramambular/Grid.h index 52b3e7da..6ec59211 100644 --- a/Source/Modules/LanguageParsers/Gramambular/Grid.h +++ b/Source/Modules/LanguageParsers/Gramambular/Grid.h @@ -44,8 +44,8 @@ class Grid void insertNode(const Node &node, size_t location, size_t spanningLength); bool hasNodeAtLocationSpanningLengthMatchingKey(size_t location, size_t spanningLength, const std::string &key); - void setHaninInputEnabled(bool enabled); - bool HaninInputEnabled(); + void setRearCursorModeEnabled(bool enabled); + bool RearCursorModeEnabled(); void expandGridByOneAtLocation(size_t location); void shrinkGridByOneAtLocation(size_t location); @@ -119,17 +119,17 @@ class Grid protected: std::vector m_spans; - bool m_bolHaninEnabled; + bool m_rearCursorMode; }; -inline void Grid::setHaninInputEnabled(bool enabled) +inline void Grid::setRearCursorModeEnabled(bool enabled) { - m_bolHaninEnabled = enabled; + m_rearCursorMode = enabled; } -inline bool Grid::HaninInputEnabled() +inline bool Grid::RearCursorModeEnabled() { - return m_bolHaninEnabled; + return m_rearCursorMode; } inline void Grid::clear() @@ -250,7 +250,7 @@ inline std::vector Grid::nodesCrossingOrEndingAt(size_t location) { // 左半是漢音模式,已經自威注音 1.5.2 版開始解決了可以在詞中間叫出候選字的問題。 // TODO: 右半是微軟新注音模式,仍有可以在詞中間叫出候選字的問題。 - if (((i + j != location) && m_bolHaninEnabled) || ((i + j < location) && !m_bolHaninEnabled)) + if (((i + j != location) && !m_rearCursorMode) || ((i + j < location) && m_rearCursorMode)) { continue; } diff --git a/Source/Resources/Base.lproj/Localizable.strings b/Source/Resources/Base.lproj/Localizable.strings index dc635a2f..68b518dd 100644 --- a/Source/Resources/Base.lproj/Localizable.strings +++ b/Source/Resources/Base.lproj/Localizable.strings @@ -56,8 +56,8 @@ "Symbol & Emoji Input" = "Symbol & Emoji Input"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Choose your desired user data folder." = "Choose your desired user data folder."; -"Cursor is after \"%@\"." = "Cursor is after \"%@\"."; -"Cursor is before \"%@\"." = "Cursor is before \"%@\"."; +"Cursor is in front of \"%@\"." = "Cursor is in front of \"%@\"."; +"Cursor is at the rear of \"%@\"." = "Cursor is at the rear of \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; // The followings are the category names used in the Symbol menu. @@ -129,7 +129,7 @@ "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only."; "Output Settings:" = "Output Settings:"; "Phonetic Parser:" = "Phonetic Parser:"; -"Push the cursor to the front of the phrase after selection" = "Push the cursor to the front of the phrase after selection"; +"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection"; "Selection Keys:" = "Selection Keys:"; "Show page buttons in candidate window" = "Show page buttons in candidate window"; "Simplified Chinese" = "Simplified Chinese"; @@ -137,8 +137,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; -"to the front of the phrase (like Matsushita Hanin IME)" = "to the front of the phrase (like Matsushita Hanin IME)"; -"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)"; +"in front of the phrase (like Matsushita Hanin IME)" = "in front of the phrase (like Matsushita Hanin IME)"; +"at the rear of the phrase (like MS New-Phonetic IME)" = "at the rear of the phrase (like MS New-Phonetic IME)"; "Traditional Chinese" = "Traditional Chinese"; "Typing Style:" = "Typing Style:"; "UI Language:" = "UI Language:"; diff --git a/Source/Resources/en.lproj/Localizable.strings b/Source/Resources/en.lproj/Localizable.strings index dc635a2f..68b518dd 100644 --- a/Source/Resources/en.lproj/Localizable.strings +++ b/Source/Resources/en.lproj/Localizable.strings @@ -56,8 +56,8 @@ "Symbol & Emoji Input" = "Symbol & Emoji Input"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Choose your desired user data folder." = "Choose your desired user data folder."; -"Cursor is after \"%@\"." = "Cursor is after \"%@\"."; -"Cursor is before \"%@\"." = "Cursor is before \"%@\"."; +"Cursor is in front of \"%@\"." = "Cursor is in front of \"%@\"."; +"Cursor is at the rear of \"%@\"." = "Cursor is at the rear of \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; // The followings are the category names used in the Symbol menu. @@ -129,7 +129,7 @@ "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only."; "Output Settings:" = "Output Settings:"; "Phonetic Parser:" = "Phonetic Parser:"; -"Push the cursor to the front of the phrase after selection" = "Push the cursor to the front of the phrase after selection"; +"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection"; "Selection Keys:" = "Selection Keys:"; "Show page buttons in candidate window" = "Show page buttons in candidate window"; "Simplified Chinese" = "Simplified Chinese"; @@ -137,8 +137,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; -"to the front of the phrase (like Matsushita Hanin IME)" = "to the front of the phrase (like Matsushita Hanin IME)"; -"to the rear of the phrase (like MS New-Phonetic IME)" = "to the rear of the phrase (like MS New-Phonetic IME)"; +"in front of the phrase (like Matsushita Hanin IME)" = "in front of the phrase (like Matsushita Hanin IME)"; +"at the rear of the phrase (like MS New-Phonetic IME)" = "at the rear of the phrase (like MS New-Phonetic IME)"; "Traditional Chinese" = "Traditional Chinese"; "Typing Style:" = "Typing Style:"; "UI Language:" = "UI Language:"; diff --git a/Source/Resources/ja.lproj/Localizable.strings b/Source/Resources/ja.lproj/Localizable.strings index 89663856..18b4d7ea 100644 --- a/Source/Resources/ja.lproj/Localizable.strings +++ b/Source/Resources/ja.lproj/Localizable.strings @@ -56,8 +56,8 @@ "Symbol & Emoji Input" = "符号&絵文字入力"; "Edit User Symbol & Emoji Data…" = "ユーザー符号&絵文字辞書を編集…"; "Choose your desired user data folder." = "欲しがるユーザー辞書フォルダをお選びください。"; -"Cursor is after \"%@\"." = "カーソルは「%@」の後に。"; -"Cursor is before \"%@\"." = "カーソル「%@」の前に。"; +"Cursor is in front of \"%@\"." = "カーソルは「%@」の後に。"; +"Cursor is at the rear of \"%@\"." = "カーソル「%@」の前に。"; "Cursor is between \"%@\" and \"%@\"." = "カーソルは「%@」と「%@」に間れ。"; // The followings are the category names used in the Symbol menu. @@ -129,7 +129,7 @@ "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外の英数キーボードは漢語弁音以外の配列に不適用。"; "Output Settings:" = "出力設定:"; "Phonetic Parser:" = "注音配列:"; -"Push the cursor to the front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める"; +"Push the cursor in front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める"; "Selection Keys:" = "言選り用キー:"; "Show page buttons in candidate window" = "入力候補陳列の側にページボタンを表示"; "Simplified Chinese" = "簡体中国語"; @@ -137,8 +137,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+Space で次のページ、Space で次の候補文字を"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space で次のページ、Shift+Space で次の候補文字を"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "マナーモード // 外すと入力間違った時に変な声が出る"; -"to the front of the phrase (like Matsushita Hanin IME)" = "単語の前で // パナソニック漢音のやり方"; -"to the rear of the phrase (like MS New-Phonetic IME)" = "単語の後で // Microsoft 新注音のやり方"; +"in front of the phrase (like Matsushita Hanin IME)" = "単語の前で // パナソニック漢音のやり方"; +"at the rear of the phrase (like MS New-Phonetic IME)" = "単語の後で // Microsoft 新注音のやり方"; "Traditional Chinese" = "繁体中国語"; "Typing Style:" = "入力習慣:"; "UI Language:" = "表示用言語:"; diff --git a/Source/Resources/zh-Hans.lproj/Localizable.strings b/Source/Resources/zh-Hans.lproj/Localizable.strings index dc745a2d..a6e56b70 100644 --- a/Source/Resources/zh-Hans.lproj/Localizable.strings +++ b/Source/Resources/zh-Hans.lproj/Localizable.strings @@ -56,8 +56,8 @@ "Symbol & Emoji Input" = "符号&绘文字输入"; "Edit User Symbol & Emoji Data…" = "编辑自订符号&绘文字资料…"; "Choose your desired user data folder." = "请选择您想指定的使用者语汇档案目录。"; -"Cursor is after \"%@\"." = "游标在「%@」之后。"; -"Cursor is before \"%@\"." = "游标在「%@」之前。"; +"Cursor is in front of \"%@\"." = "游标在「%@」之后。"; +"Cursor is at the rear of \"%@\"." = "游标在「%@」之前。"; "Cursor is between \"%@\" and \"%@\"." = "游标介于「%@」与「%@」之间。"; // The followings are the category names used in the Symbol menu. @@ -129,7 +129,7 @@ "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英数布局是为了汉语拼音排列使用者而准备的。"; "Output Settings:" = "输出设定:"; "Phonetic Parser:" = "注音排列:"; -"Push the cursor to the front of the phrase after selection" = "在选字后将游标置于该字词的前方"; +"Push the cursor in front of the phrase after selection" = "在选字后将游标置于该字词的前方"; "Selection Keys:" = "选字键:"; "Show page buttons in candidate window" = "在选字窗内显示翻页按钮"; "Simplified Chinese" = "简体中文"; @@ -137,8 +137,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格键 换下一页,空格键 换选下一个后选字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格键 换下一页,Shift+空格键 换选下一个后选字"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉耻模式 // 取消勾选的话,敲错字时会有异音"; -"to the front of the phrase (like Matsushita Hanin IME)" = "将游标置于词语前方 // 松下汉音风格"; -"to the rear of the phrase (like MS New-Phonetic IME)" = "将游标置于词语后方 // 微软新注音风格"; +"in front of the phrase (like Matsushita Hanin IME)" = "将游标置于词语前方 // 松下汉音风格"; +"at the rear of the phrase (like MS New-Phonetic IME)" = "将游标置于词语后方 // 微软新注音风格"; "Traditional Chinese" = "繁体中文"; "Typing Style:" = "输入风格:"; "UI Language:" = "介面语言:"; diff --git a/Source/Resources/zh-Hant.lproj/Localizable.strings b/Source/Resources/zh-Hant.lproj/Localizable.strings index 42073f9d..2e9d83a7 100644 --- a/Source/Resources/zh-Hant.lproj/Localizable.strings +++ b/Source/Resources/zh-Hant.lproj/Localizable.strings @@ -56,8 +56,8 @@ "Symbol & Emoji Input" = "符號&繪文字輸入"; "Edit User Symbol & Emoji Data…" = "編輯自訂符號&繪文字資料…"; "Choose your desired user data folder." = "請選擇您想指定的使用者語彙檔案目錄。"; -"Cursor is after \"%@\"." = "游標在「%@」之後。"; -"Cursor is before \"%@\"." = "游標在「%@」之前。"; +"Cursor is in front of \"%@\"." = "游標在「%@」之後。"; +"Cursor is at the rear of \"%@\"." = "游標在「%@」之前。"; "Cursor is between \"%@\" and \"%@\"." = "游標介於「%@」與「%@」之間。"; // The followings are the category names used in the Symbol menu. @@ -129,7 +129,7 @@ "Non-QWERTY alphanumeral keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英數佈局是為了漢語拼音排列使用者而準備的。"; "Output Settings:" = "輸出設定:"; "Phonetic Parser:" = "注音排列:"; -"Push the cursor to the front of the phrase after selection" = "在選字後將游標置於該字詞的前方"; +"Push the cursor in front of the phrase after selection" = "在選字後將游標置於該字詞的前方"; "Selection Keys:" = "選字鍵:"; "Show page buttons in candidate window" = "在選字窗內顯示翻頁按鈕"; "Simplified Chinese" = "簡體中文"; @@ -137,8 +137,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格鍵 換下一頁,空格鍵 換選下一個後選字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格鍵 換下一頁,Shift+空格鍵 換選下一個後選字"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音"; -"to the front of the phrase (like Matsushita Hanin IME)" = "將游標置於詞語前方 // 松下漢音風格"; -"to the rear of the phrase (like MS New-Phonetic IME)" = "將游標置於詞語後方 // 微軟新注音風格"; +"in front of the phrase (like Matsushita Hanin IME)" = "將游標置於詞語前方 // 松下漢音風格"; +"at the rear of the phrase (like MS New-Phonetic IME)" = "將游標置於詞語後方 // 微軟新注音風格"; "Traditional Chinese" = "繁體中文"; "Typing Style:" = "輸入風格:"; "UI Language:" = "介面語言:"; diff --git a/Source/UI/PrefUI/suiPrefPaneExperience.swift b/Source/UI/PrefUI/suiPrefPaneExperience.swift index 8113b549..628c950a 100644 --- a/Source/UI/PrefUI/suiPrefPaneExperience.swift +++ b/Source/UI/PrefUI/suiPrefPaneExperience.swift @@ -32,7 +32,7 @@ struct suiPrefPaneExperience: View { (UserDefaults.standard.string(forKey: UserDef.kCandidateKeys) ?? mgrPrefs.defaultCandidateKeys) as String @State private var selCursorPosition = UserDefaults.standard.bool( - forKey: UserDef.kSelectPhraseAfterCursorAsCandidate) ? 1 : 0 + forKey: UserDef.kSetRearCursorMode) ? 1 : 0 @State private var selPushCursorAfterSelection = UserDefaults.standard.bool( forKey: UserDef.kMoveCursorAfterSelectingCandidate) @State private var selKeyBehaviorShiftTab = @@ -90,17 +90,17 @@ struct suiPrefPaneExperience: View { } Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Cursor Selection:")) }) { Picker("", selection: $selCursorPosition) { - Text(LocalizedStringKey("to the front of the phrase (like Matsushita Hanin IME)")).tag(0) - Text(LocalizedStringKey("to the rear of the phrase (like MS New-Phonetic IME)")).tag(1) + Text(LocalizedStringKey("in front of the phrase (like Matsushita Hanin IME)")).tag(0) + Text(LocalizedStringKey("at the rear of the phrase (like MS New-Phonetic IME)")).tag(1) }.onChange(of: selCursorPosition) { value in - mgrPrefs.selectPhraseAfterCursorAsCandidate = (value == 1) ? true : false + mgrPrefs.setRearCursorMode = (value == 1) ? true : false } .labelsHidden() .pickerStyle(RadioGroupPickerStyle()) Text(LocalizedStringKey("Choose the cursor position where you want to list possible candidates.")) .preferenceDescription() Toggle( - LocalizedStringKey("Push the cursor to the front of the phrase after selection"), + LocalizedStringKey("Push the cursor in front of the phrase after selection"), isOn: $selPushCursorAfterSelection ).onChange(of: selPushCursorAfterSelection) { value in mgrPrefs.moveCursorAfterSelectingCandidate = value diff --git a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib index 7c56403c..707fb911 100644 --- a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib +++ b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib @@ -1,8 +1,7 @@ - + - - + @@ -379,11 +378,11 @@ - + - + @@ -398,7 +397,7 @@ - + diff --git a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings b/Source/WindowNIBs/en.lproj/frmPrefWindow.strings index 4e07de6c..ee7a39bf 100644 --- a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/en.lproj/frmPrefWindow.strings @@ -29,11 +29,11 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "Choose the cursor position where you want to list possible candidates."; -/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ -"16.title" = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ +"16.title" = "Cursor in front of the phrase (like Matsushita Hanin IME)"; -/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ -"17.title" = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; +/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ +"17.title" = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ "18.title" = "Radio"; @@ -143,8 +143,8 @@ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ "RQ6-MS-m4C.title" = "Choose your preferred keyboard layout and phonetic parser."; -/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ -"RUG-ls-KyA.title" = "Push the cursor to the front of the phrase after selection"; +/* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ +"RUG-ls-KyA.title" = "Push the cursor in front of the phrase after selection"; /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ "TXr-FF-ehw.title" = "Traditional Chinese"; diff --git a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings b/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings index bb3f1699..fd3d21ba 100644 --- a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings @@ -29,10 +29,10 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:"; -/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ "16.title" = "単語の前で // パナソニック漢音の入力スタイル"; -/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ +/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ "17.title" = "単語の後で // Microsoft 新注音の入力スタイル"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ @@ -143,7 +143,7 @@ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ "RQ6-MS-m4C.title" = "お好きなるキーボードとそれに相応しい注音配列をお選びください。"; -/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ +/* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ "RUG-ls-KyA.title" = "候補選択の直後、すぐカーソルを単語の向こうに推す"; /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ diff --git a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings index ba660e97..14c5b6b7 100644 --- a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings @@ -29,10 +29,10 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "用以触发选字的光标相对位置:"; -/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ "16.title" = "光标置于词语前方 // 松下汉音风格"; -/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ +/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ "17.title" = "光标置于词语后方 // 微软新注音风格"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ @@ -143,7 +143,7 @@ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ "RQ6-MS-m4C.title" = "选择您所偏好的系统键盘布局与注音分析器排列。"; -/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ +/* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ "RUG-ls-KyA.title" = "在选字后将光标置于该字词的前方"; /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ diff --git a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings index c1174921..ca997768 100644 --- a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings @@ -29,10 +29,10 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "用以觸發選字的游標相對位置:"; -/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ "16.title" = "游標置於詞語前方 // 松下漢音風格"; -/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ +/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ "17.title" = "游標置於詞語後方 // 微軟新注音風格"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ @@ -143,7 +143,7 @@ /* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout and phonetic parser."; ObjectID = "RQ6-MS-m4C"; */ "RQ6-MS-m4C.title" = "選擇您所偏好的系統鍵盤佈局與注音分析器排列。"; -/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ +/* Class = "NSButtonCell"; title = "Push the cursor in front of the phrase after selection"; ObjectID = "RUG-ls-KyA"; */ "RUG-ls-KyA.title" = "在選字後將游標置於該字詞的前方"; /* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */ From fd2074b44e2d6bd52044b6f6865aba9c978d448a Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 12:42:45 +0800 Subject: [PATCH 02/12] KeyHandler // Tweak the tooltip of buildInputtingState(). - I can't figure out the meaning of "before and after" in this context, hence the necessity of simplifying the processing model here. Plus, this tooltip won't be presented to the end user anymore since this IME already has NSStringUtils for handling Emojis well. --- Source/Modules/ControllerModules/KeyHandler.mm | 8 ++++---- .../Modules/ControllerModules/KeyHandler_States.swift | 11 +++-------- Source/Resources/Base.lproj/Localizable.strings | 2 -- Source/Resources/en.lproj/Localizable.strings | 2 -- Source/Resources/ja.lproj/Localizable.strings | 2 -- Source/Resources/zh-Hans.lproj/Localizable.strings | 2 -- Source/Resources/zh-Hant.lproj/Localizable.strings | 2 -- 7 files changed, 7 insertions(+), 22 deletions(-) diff --git a/Source/Modules/ControllerModules/KeyHandler.mm b/Source/Modules/ControllerModules/KeyHandler.mm index 701d763e..c9be6c67 100644 --- a/Source/Modules/ControllerModules/KeyHandler.mm +++ b/Source/Modules/ControllerModules/KeyHandler.mm @@ -282,19 +282,19 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; } if (builderCursorIndex == 0) { - resultOfRear = + resultOfFront = [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; } else if (builderCursorIndex >= _builder->readings().size()) { - resultOfFront = [NSString + resultOfRear = [NSString stringWithUTF8String:_builder->readings()[_builder->readings().size() - 1].c_str()]; } else { - resultOfRear = - [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; resultOfFront = + [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex].c_str()]; + resultOfRear = [NSString stringWithUTF8String:_builder->readings()[builderCursorIndex - 1].c_str()]; } } diff --git a/Source/Modules/ControllerModules/KeyHandler_States.swift b/Source/Modules/ControllerModules/KeyHandler_States.swift index ecdf9b0a..a19dc440 100644 --- a/Source/Modules/ControllerModules/KeyHandler_States.swift +++ b/Source/Modules/ControllerModules/KeyHandler_States.swift @@ -45,20 +45,15 @@ import Cocoa // 組建提示文本 var tooltip = "" - if resultOfRear == "", resultOfFront != "" { - tooltip = String(format: NSLocalizedString("Cursor is in front of \"%@\".", comment: ""), resultOfFront) - } - if resultOfRear != "", resultOfFront == "" { - tooltip = String(format: NSLocalizedString("Cursor is at the rear of \"%@\".", comment: ""), resultOfRear) - } - if resultOfRear != "", resultOfFront != "" { + // 備註:因為目前的輸入法已經有了 NSString Emoji 支援,所以這個工具提示可能不會出現了。 + // 姑且留下來用作萬一時的偵錯用途。 + if resultOfRear != "" || resultOfFront != "" { tooltip = String( format: NSLocalizedString("Cursor is between \"%@\" and \"%@\".", comment: ""), resultOfFront, resultOfRear ) } - // 給新狀態安插配置好的提示文本、且送出新狀態 newState.tooltip = tooltip return newState } diff --git a/Source/Resources/Base.lproj/Localizable.strings b/Source/Resources/Base.lproj/Localizable.strings index 68b518dd..d4acd329 100644 --- a/Source/Resources/Base.lproj/Localizable.strings +++ b/Source/Resources/Base.lproj/Localizable.strings @@ -56,8 +56,6 @@ "Symbol & Emoji Input" = "Symbol & Emoji Input"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Choose your desired user data folder." = "Choose your desired user data folder."; -"Cursor is in front of \"%@\"." = "Cursor is in front of \"%@\"."; -"Cursor is at the rear of \"%@\"." = "Cursor is at the rear of \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; // The followings are the category names used in the Symbol menu. diff --git a/Source/Resources/en.lproj/Localizable.strings b/Source/Resources/en.lproj/Localizable.strings index 68b518dd..d4acd329 100644 --- a/Source/Resources/en.lproj/Localizable.strings +++ b/Source/Resources/en.lproj/Localizable.strings @@ -56,8 +56,6 @@ "Symbol & Emoji Input" = "Symbol & Emoji Input"; "Edit User Symbol & Emoji Data…" = "Edit User Symbol & Emoji Data…"; "Choose your desired user data folder." = "Choose your desired user data folder."; -"Cursor is in front of \"%@\"." = "Cursor is in front of \"%@\"."; -"Cursor is at the rear of \"%@\"." = "Cursor is at the rear of \"%@\"."; "Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\"."; // The followings are the category names used in the Symbol menu. diff --git a/Source/Resources/ja.lproj/Localizable.strings b/Source/Resources/ja.lproj/Localizable.strings index 18b4d7ea..b9a43b81 100644 --- a/Source/Resources/ja.lproj/Localizable.strings +++ b/Source/Resources/ja.lproj/Localizable.strings @@ -56,8 +56,6 @@ "Symbol & Emoji Input" = "符号&絵文字入力"; "Edit User Symbol & Emoji Data…" = "ユーザー符号&絵文字辞書を編集…"; "Choose your desired user data folder." = "欲しがるユーザー辞書フォルダをお選びください。"; -"Cursor is in front of \"%@\"." = "カーソルは「%@」の後に。"; -"Cursor is at the rear of \"%@\"." = "カーソル「%@」の前に。"; "Cursor is between \"%@\" and \"%@\"." = "カーソルは「%@」と「%@」に間れ。"; // The followings are the category names used in the Symbol menu. diff --git a/Source/Resources/zh-Hans.lproj/Localizable.strings b/Source/Resources/zh-Hans.lproj/Localizable.strings index a6e56b70..9e4106b0 100644 --- a/Source/Resources/zh-Hans.lproj/Localizable.strings +++ b/Source/Resources/zh-Hans.lproj/Localizable.strings @@ -56,8 +56,6 @@ "Symbol & Emoji Input" = "符号&绘文字输入"; "Edit User Symbol & Emoji Data…" = "编辑自订符号&绘文字资料…"; "Choose your desired user data folder." = "请选择您想指定的使用者语汇档案目录。"; -"Cursor is in front of \"%@\"." = "游标在「%@」之后。"; -"Cursor is at the rear of \"%@\"." = "游标在「%@」之前。"; "Cursor is between \"%@\" and \"%@\"." = "游标介于「%@」与「%@」之间。"; // The followings are the category names used in the Symbol menu. diff --git a/Source/Resources/zh-Hant.lproj/Localizable.strings b/Source/Resources/zh-Hant.lproj/Localizable.strings index 2e9d83a7..af198887 100644 --- a/Source/Resources/zh-Hant.lproj/Localizable.strings +++ b/Source/Resources/zh-Hant.lproj/Localizable.strings @@ -56,8 +56,6 @@ "Symbol & Emoji Input" = "符號&繪文字輸入"; "Edit User Symbol & Emoji Data…" = "編輯自訂符號&繪文字資料…"; "Choose your desired user data folder." = "請選擇您想指定的使用者語彙檔案目錄。"; -"Cursor is in front of \"%@\"." = "游標在「%@」之後。"; -"Cursor is at the rear of \"%@\"." = "游標在「%@」之前。"; "Cursor is between \"%@\" and \"%@\"." = "游標介於「%@」與「%@」之間。"; // The followings are the category names used in the Symbol menu. From a240da5297960dd7a6797e2b144f77d8418a0a0b Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 15:49:17 +0800 Subject: [PATCH 03/12] KeyHandler // Let Front-Cursor mode select phrase when index == 0. --- Source/Modules/ControllerModules/KeyHandler.h | 1 + Source/Modules/ControllerModules/KeyHandler.mm | 5 +++++ Source/Modules/ControllerModules/KeyHandler_Misc.swift | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/Modules/ControllerModules/KeyHandler.h b/Source/Modules/ControllerModules/KeyHandler.h index dd45b041..020bad09 100644 --- a/Source/Modules/ControllerModules/KeyHandler.h +++ b/Source/Modules/ControllerModules/KeyHandler.h @@ -74,6 +74,7 @@ struct BufferStatePackage - (BOOL)isPrintable:(UniChar)charCode; - (NSArray *)buildAssociatePhraseArrayWithKey:(NSString *)key; - (NSArray *)getCandidatesArray; +- (NSInteger)getKeyLengthAtIndexZero; - (NSInteger)getBuilderCursorIndex; - (NSInteger)getBuilderLength; - (NSInteger)getPackagedCursorIndex; diff --git a/Source/Modules/ControllerModules/KeyHandler.mm b/Source/Modules/ControllerModules/KeyHandler.mm index c9be6c67..97eb3053 100644 --- a/Source/Modules/ControllerModules/KeyHandler.mm +++ b/Source/Modules/ControllerModules/KeyHandler.mm @@ -623,6 +623,11 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; return candidatesArray; } +- (NSInteger)getKeyLengthAtIndexZero +{ + return [NSString stringWithUTF8String:_walkedNodes[0].node->currentKeyValue().value.c_str()].length; +} + #pragma mark - 威注音認為有必要單獨拿出來處理的部分,交給 Swift 則有些困難。 - (BOOL)isPrintable:(UniChar)charCode diff --git a/Source/Modules/ControllerModules/KeyHandler_Misc.swift b/Source/Modules/ControllerModules/KeyHandler_Misc.swift index b215d86b..0421a562 100644 --- a/Source/Modules/ControllerModules/KeyHandler_Misc.swift +++ b/Source/Modules/ControllerModules/KeyHandler_Misc.swift @@ -41,7 +41,11 @@ import Cocoa && (cursorIndex < getBuilderLength())) || cursorIndex == 0 { - cursorIndex += 1 + if cursorIndex == 0 && !mgrPrefs.setRearCursorMode { + cursorIndex += getKeyLengthAtIndexZero() + } else { + cursorIndex += 1 + } } return cursorIndex } From 716cea7403082d21da398f58b0f6efe880d1a2bb Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 17:23:25 +0800 Subject: [PATCH 04/12] Gramambular // Revert the state of "Grid.h" to vanilla. - We found an existing function called "nodeEndingAt(location)", hence the lack of needs of edits introduced since vChewing 1.5.1. - The problem is that Gramambular has lack of a new function called "nodeBeginningAt(location)" which will be addressed later. --- .../LanguageParsers/Gramambular/Grid.h | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/Source/Modules/LanguageParsers/Gramambular/Grid.h b/Source/Modules/LanguageParsers/Gramambular/Grid.h index 6ec59211..5a39fe7a 100644 --- a/Source/Modules/LanguageParsers/Gramambular/Grid.h +++ b/Source/Modules/LanguageParsers/Gramambular/Grid.h @@ -44,9 +44,6 @@ class Grid void insertNode(const Node &node, size_t location, size_t spanningLength); bool hasNodeAtLocationSpanningLengthMatchingKey(size_t location, size_t spanningLength, const std::string &key); - void setRearCursorModeEnabled(bool enabled); - bool RearCursorModeEnabled(); - void expandGridByOneAtLocation(size_t location); void shrinkGridByOneAtLocation(size_t location); @@ -119,19 +116,8 @@ class Grid protected: std::vector m_spans; - bool m_rearCursorMode; }; -inline void Grid::setRearCursorModeEnabled(bool enabled) -{ - m_rearCursorMode = enabled; -} - -inline bool Grid::RearCursorModeEnabled() -{ - return m_rearCursorMode; -} - inline void Grid::clear() { m_spans.clear(); @@ -206,6 +192,7 @@ inline size_t Grid::width() const return m_spans.size(); } +// macOS 10.6 開始的內建注音的游標前置選字風格 inline std::vector Grid::nodesEndingAt(size_t location) { std::vector result; @@ -234,6 +221,8 @@ inline std::vector Grid::nodesEndingAt(size_t location) return result; } +// Windows 版奇摩注音輸入法的游標後置的選字風格。 +// 與微軟新注音相異的是,這個風格允許在詞的中間叫出候選字窗。 inline std::vector Grid::nodesCrossingOrEndingAt(size_t location) { std::vector result; @@ -248,9 +237,7 @@ inline std::vector Grid::nodesCrossingOrEndingAt(size_t location) { for (size_t j = 1, m = span.maximumLength(); j <= m; j++) { - // 左半是漢音模式,已經自威注音 1.5.2 版開始解決了可以在詞中間叫出候選字的問題。 - // TODO: 右半是微軟新注音模式,仍有可以在詞中間叫出候選字的問題。 - if (((i + j != location) && !m_rearCursorMode) || ((i + j < location) && m_rearCursorMode)) + if (i + j < location) { continue; } From 00cc9ebbc860aa367f800f89e97d9d533d6b1d2b Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 17:27:57 +0800 Subject: [PATCH 05/12] KeyHandler // Use upstream nodesEndingAt() instead. --- Source/Modules/ControllerModules/KeyHandler.mm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Source/Modules/ControllerModules/KeyHandler.mm b/Source/Modules/ControllerModules/KeyHandler.mm index 97eb3053..256d4168 100644 --- a/Source/Modules/ControllerModules/KeyHandler.mm +++ b/Source/Modules/ControllerModules/KeyHandler.mm @@ -555,8 +555,6 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; - (void)dealWithOverrideModelSuggestions { - // 讓 grid 知道目前的游標候選字判定是前置還是後置 - _builder->grid().setRearCursorModeEnabled(mgrPrefs.setRearCursorMode); // 這一整段都太 C++ 且只出現一次,就整個端過來了。 // 拆開封裝的話,只會把問題搞得更麻煩而已。 std::string overrideValue = (mgrPrefs.useSCPCTypingMode) @@ -567,7 +565,9 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; if (!overrideValue.empty()) { NSInteger cursorIndex = [self getActualCandidateCursorIndex]; - std::vector nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex); + std::vector nodes = mgrPrefs.setRearCursorMode + ? _builder->grid().nodesCrossingOrEndingAt(cursorIndex) + : _builder->grid().nodesEndingAt(cursorIndex); double highestScore = FindHighestScore(nodes, kEpsilon); _builder->grid().overrideNodeScoreForSelectedCandidate(cursorIndex, overrideValue, static_cast(highestScore)); @@ -601,13 +601,12 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot"; - (NSArray *)getCandidatesArray { - // 讓 grid 知道目前的游標候選字判定是前置還是後置 - _builder->grid().setRearCursorModeEnabled(mgrPrefs.setRearCursorMode); - NSMutableArray *candidatesArray = [[NSMutableArray alloc] init]; NSInteger cursorIndex = [self getActualCandidateCursorIndex]; - std::vector nodes = _builder->grid().nodesCrossingOrEndingAt(cursorIndex); + std::vector nodes = mgrPrefs.setRearCursorMode + ? _builder->grid().nodesCrossingOrEndingAt(cursorIndex) + : _builder->grid().nodesEndingAt(cursorIndex); // sort the nodes, so that longer nodes (representing longer phrases) are placed at the top of the candidate list stable_sort(nodes.begin(), nodes.end(), NodeAnchorDescendingSorter()); From 3a47a0c869b46d00700091a7377d27095ae3a5e0 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 21 Apr 2022 17:49:41 +0800 Subject: [PATCH 06/12] i18n // Term fix (for now) regarding input styles. - Matsushita Hanin -> macOS built-in Zhuyin IME. - MS New Phonetic IME -> Windows Yahoo KeyKey. --- Source/Modules/ControllerModules/KeyHandler_Misc.swift | 4 +++- Source/Resources/Base.lproj/Localizable.strings | 4 ++-- Source/Resources/en.lproj/Localizable.strings | 4 ++-- Source/Resources/ja.lproj/Localizable.strings | 4 ++-- Source/Resources/zh-Hans.lproj/Localizable.strings | 4 ++-- Source/Resources/zh-Hant.lproj/Localizable.strings | 4 ++-- Source/UI/PrefUI/suiPrefPaneExperience.swift | 4 ++-- Source/WindowNIBs/Base.lproj/frmPrefWindow.xib | 4 ++-- Source/WindowNIBs/en.lproj/frmPrefWindow.strings | 8 ++++---- Source/WindowNIBs/ja.lproj/frmPrefWindow.strings | 8 ++++---- Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings | 8 ++++---- Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings | 8 ++++---- 12 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Source/Modules/ControllerModules/KeyHandler_Misc.swift b/Source/Modules/ControllerModules/KeyHandler_Misc.swift index 0421a562..5b79ed19 100644 --- a/Source/Modules/ControllerModules/KeyHandler_Misc.swift +++ b/Source/Modules/ControllerModules/KeyHandler_Misc.swift @@ -35,8 +35,10 @@ import Cocoa func getActualCandidateCursorIndex() -> Int { var cursorIndex = getBuilderCursorIndex() - // MS Phonetics IME style, phrase is *at the rear of* the cursor. + // Windows Yahoo Kimo IME style, phrase is *at the rear of* the cursor. // (i.e. the cursor is always *before* the phrase.) + // This is different from MS Phonetics IME style ... + // ... since Windows Yahoo Kimo allows "node crossing". if (mgrPrefs.setRearCursorMode && (cursorIndex < getBuilderLength())) || cursorIndex == 0 diff --git a/Source/Resources/Base.lproj/Localizable.strings b/Source/Resources/Base.lproj/Localizable.strings index d4acd329..7120c36d 100644 --- a/Source/Resources/Base.lproj/Localizable.strings +++ b/Source/Resources/Base.lproj/Localizable.strings @@ -135,8 +135,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; -"in front of the phrase (like Matsushita Hanin IME)" = "in front of the phrase (like Matsushita Hanin IME)"; -"at the rear of the phrase (like MS New-Phonetic IME)" = "at the rear of the phrase (like MS New-Phonetic IME)"; +"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)"; +"at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)"; "Traditional Chinese" = "Traditional Chinese"; "Typing Style:" = "Typing Style:"; "UI Language:" = "UI Language:"; diff --git a/Source/Resources/en.lproj/Localizable.strings b/Source/Resources/en.lproj/Localizable.strings index d4acd329..7120c36d 100644 --- a/Source/Resources/en.lproj/Localizable.strings +++ b/Source/Resources/en.lproj/Localizable.strings @@ -135,8 +135,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Space to +cycle candidates, Shift+Space to +cycle pages"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space to +cycle pages, Shift+Space to +cycle candidates"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "Stop farting (when typed phonetic combination is invalid, etc.)"; -"in front of the phrase (like Matsushita Hanin IME)" = "in front of the phrase (like Matsushita Hanin IME)"; -"at the rear of the phrase (like MS New-Phonetic IME)" = "at the rear of the phrase (like MS New-Phonetic IME)"; +"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)"; +"at anyplace else (like Windows Yahoo KeyKey)" = "at anyplace else (like Windows Yahoo KeyKey)"; "Traditional Chinese" = "Traditional Chinese"; "Typing Style:" = "Typing Style:"; "UI Language:" = "UI Language:"; diff --git a/Source/Resources/ja.lproj/Localizable.strings b/Source/Resources/ja.lproj/Localizable.strings index b9a43b81..52dffbbc 100644 --- a/Source/Resources/ja.lproj/Localizable.strings +++ b/Source/Resources/ja.lproj/Localizable.strings @@ -135,8 +135,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+Space で次のページ、Space で次の候補文字を"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "Space で次のページ、Shift+Space で次の候補文字を"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "マナーモード // 外すと入力間違った時に変な声が出る"; -"in front of the phrase (like Matsushita Hanin IME)" = "単語の前で // パナソニック漢音のやり方"; -"at the rear of the phrase (like MS New-Phonetic IME)" = "単語の後で // Microsoft 新注音のやり方"; +"in front of the phrase (like macOS built-in Zhuyin IME)" = "単語の前で // macOS 内蔵注音入力のやり方"; +"at anyplace else (like Windows Yahoo KeyKey)" = "単語の中・後で // Windows Yahoo KeyKey のやり方"; "Traditional Chinese" = "繁体中国語"; "Typing Style:" = "入力習慣:"; "UI Language:" = "表示用言語:"; diff --git a/Source/Resources/zh-Hans.lproj/Localizable.strings b/Source/Resources/zh-Hans.lproj/Localizable.strings index 9e4106b0..03388fda 100644 --- a/Source/Resources/zh-Hans.lproj/Localizable.strings +++ b/Source/Resources/zh-Hans.lproj/Localizable.strings @@ -135,8 +135,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格键 换下一页,空格键 换选下一个后选字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格键 换下一页,Shift+空格键 换选下一个后选字"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉耻模式 // 取消勾选的话,敲错字时会有异音"; -"in front of the phrase (like Matsushita Hanin IME)" = "将游标置于词语前方 // 松下汉音风格"; -"at the rear of the phrase (like MS New-Phonetic IME)" = "将游标置于词语后方 // 微软新注音风格"; +"in front of the phrase (like macOS built-in Zhuyin IME)" = "将游标置于词语前方 // macOS 内建注音风格"; +"at anyplace else (like Windows Yahoo KeyKey)" = "将游标置于词语中后方 // Windows 奇摩注音风格"; "Traditional Chinese" = "繁体中文"; "Typing Style:" = "输入风格:"; "UI Language:" = "介面语言:"; diff --git a/Source/Resources/zh-Hant.lproj/Localizable.strings b/Source/Resources/zh-Hant.lproj/Localizable.strings index af198887..17d91f75 100644 --- a/Source/Resources/zh-Hant.lproj/Localizable.strings +++ b/Source/Resources/zh-Hant.lproj/Localizable.strings @@ -135,8 +135,8 @@ "Space to +cycle candidates, Shift+Space to +cycle pages" = "Shift+空格鍵 換下一頁,空格鍵 換選下一個後選字"; "Space to +cycle pages, Shift+Space to +cycle candidates" = "空格鍵 換下一頁,Shift+空格鍵 換選下一個後選字"; "Stop farting (when typed phonetic combination is invalid, etc.)" = "廉恥模式 // 取消勾選的話,敲錯字時會有異音"; -"in front of the phrase (like Matsushita Hanin IME)" = "將游標置於詞語前方 // 松下漢音風格"; -"at the rear of the phrase (like MS New-Phonetic IME)" = "將游標置於詞語後方 // 微軟新注音風格"; +"in front of the phrase (like macOS built-in Zhuyin IME)" = "將游標置於詞語前方 // macOS 內建注音風格"; +"at anyplace else (like Windows Yahoo KeyKey)" = "將游標置於詞語中後方 // Windows 奇摩注音風格"; "Traditional Chinese" = "繁體中文"; "Typing Style:" = "輸入風格:"; "UI Language:" = "介面語言:"; diff --git a/Source/UI/PrefUI/suiPrefPaneExperience.swift b/Source/UI/PrefUI/suiPrefPaneExperience.swift index 628c950a..02a495fb 100644 --- a/Source/UI/PrefUI/suiPrefPaneExperience.swift +++ b/Source/UI/PrefUI/suiPrefPaneExperience.swift @@ -90,8 +90,8 @@ struct suiPrefPaneExperience: View { } Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Cursor Selection:")) }) { Picker("", selection: $selCursorPosition) { - Text(LocalizedStringKey("in front of the phrase (like Matsushita Hanin IME)")).tag(0) - Text(LocalizedStringKey("at the rear of the phrase (like MS New-Phonetic IME)")).tag(1) + Text(LocalizedStringKey("in front of the phrase (like macOS built-in Zhuyin IME)")).tag(0) + Text(LocalizedStringKey("at anyplace else (like Windows Yahoo KeyKey)")).tag(1) }.onChange(of: selCursorPosition) { value in mgrPrefs.setRearCursorMode = (value == 1) ? true : false } diff --git a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib index 707fb911..54548cc0 100644 --- a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib +++ b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib @@ -378,11 +378,11 @@ - + - + diff --git a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings b/Source/WindowNIBs/en.lproj/frmPrefWindow.strings index ee7a39bf..cdb7a9f6 100644 --- a/Source/WindowNIBs/en.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/en.lproj/frmPrefWindow.strings @@ -29,11 +29,11 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "Choose the cursor position where you want to list possible candidates."; -/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ -"16.title" = "Cursor in front of the phrase (like Matsushita Hanin IME)"; +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */ +"16.title" = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; -/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ -"17.title" = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; +/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */ +"17.title" = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ "18.title" = "Radio"; diff --git a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings b/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings index fd3d21ba..44fb5fb7 100644 --- a/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/ja.lproj/frmPrefWindow.strings @@ -29,11 +29,11 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "カーソルはどこで入力候補を呼び出すかとご選択ください:"; -/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ -"16.title" = "単語の前で // パナソニック漢音の入力スタイル"; +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */ +"16.title" = "単語の前で // macOS 内蔵注音入力の入力スタイル"; -/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ -"17.title" = "単語の後で // Microsoft 新注音の入力スタイル"; +/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */ +"17.title" = "単語の中・後で // Windows Yahoo KeyKey の入力スタイル"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ "18.title" = "Radio"; diff --git a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings index 14c5b6b7..dcacae51 100644 --- a/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/zh-Hans.lproj/frmPrefWindow.strings @@ -29,11 +29,11 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "用以触发选字的光标相对位置:"; -/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ -"16.title" = "光标置于词语前方 // 松下汉音风格"; +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */ +"16.title" = "光标置于词语前方 // macOS 内建注音风格"; -/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ -"17.title" = "光标置于词语后方 // 微软新注音风格"; +/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */ +"17.title" = "光标置于词语中后方 // Windows 奇摩注音风格"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ "18.title" = "Radio"; diff --git a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings b/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings index ca997768..7f33d2f9 100644 --- a/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings +++ b/Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings @@ -29,11 +29,11 @@ /* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */ "14.title" = "用以觸發選字的游標相對位置:"; -/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */ -"16.title" = "游標置於詞語前方 // 松下漢音風格"; +/* Class = "NSButtonCell"; title = "Cursor in front of the phrase (like macOS built-in Zhuyin IME)"; ObjectID = "16"; */ +"16.title" = "游標置於詞語前方 // macOS 內建注音風格"; -/* Class = "NSButtonCell"; title = "Cursor at the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */ -"17.title" = "游標置於詞語後方 // 微軟新注音風格"; +/* Class = "NSButtonCell"; title = "Cursor at anyplace else (like Windows Yahoo KeyKey)"; ObjectID = "17"; */ +"17.title" = "游標置於詞語中後方 // Windows 奇摩注音風格"; /* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */ "18.title" = "Radio"; From 18f408655c25595242657c6abff298f08ce9524a Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 12:11:54 +0800 Subject: [PATCH 07/12] Xcode // Sort file entry lists. --- vChewing.xcodeproj/project.pbxproj | 42 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index aa061f9f..00642041 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -389,9 +389,9 @@ 5B4D47B627C9186900220DDC /* InstantiatedModels */ = { isa = PBXGroup; children = ( + 5B62A32B27AE78B000A19448 /* CNSLM.h */, 5B8F43ED27C9BC220069AC27 /* SymbolLM.h */, 5B7111C727DEF9FF00444310 /* UserSymbolLM.h */, - 5B62A32B27AE78B000A19448 /* CNSLM.h */, ); path = InstantiatedModels; sourceTree = ""; @@ -399,10 +399,10 @@ 5B62A30127AE732800A19448 /* 3rdParty */ = { isa = PBXGroup; children = ( - 5BA9FD8C28006BA7002DE248 /* VDKComboBox */, 5B707CE627D9F43E0099EF99 /* OpenCCBridge */, 5B62A30227AE733500A19448 /* OVMandarin */, 5BA9FCEA27FED652002DE248 /* SindreSorhus */, + 5BA9FD8C28006BA7002DE248 /* VDKComboBox */, ); path = 3rdParty; sourceTree = ""; @@ -428,14 +428,14 @@ isa = PBXGroup; children = ( 5B11328827B94CFB00E58451 /* AppleKeyboardConverter.swift */, - D461B791279DAC010070E734 /* InputState.swift */, D456576D279E4F7B00DF6BC9 /* InputHandler.swift */, - D4E569DA27A34CC100AC2CEF /* KeyHandler.h */, - D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */, - 5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */, + D461B791279DAC010070E734 /* InputState.swift */, 5B782EC3280C243C007276DE /* KeyHandler_HandleCandidate.swift */, + 5B7F225C2808501000DDD3CB /* KeyHandler_HandleInput.swift */, 5B61B0C9280BEFD4002E3CFA /* KeyHandler_Misc.swift */, 5B3133BE280B229700A4A505 /* KeyHandler_States.swift */, + D4E569DA27A34CC100AC2CEF /* KeyHandler.h */, + D4E569DB27A34CC100AC2CEF /* KeyHandler.mm */, 6ACC3D3E27914F2400F1B140 /* KeyValueBlobReader.cpp */, 6ACC3D3C27914AAB00F1B140 /* KeyValueBlobReader.h */, 5B62A33727AE79CD00A19448 /* NSStringUtils.swift */, @@ -447,8 +447,8 @@ 5B62A32027AE752000A19448 /* Headers */ = { isa = PBXGroup; children = ( - 6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */, D427A9BF25ED28CC005D43E0 /* vChewing-Bridging-Header.h */, + 6A0D4EF615FC0DA600ABF4B3 /* vChewing-Prefix.pch */, ); path = Headers; sourceTree = ""; @@ -467,8 +467,8 @@ isa = PBXGroup; children = ( 5BDC1CF927FDF1310052C2B9 /* apiUpdate.swift */, - D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */, 5BB802D927FABA8300CF1C19 /* ctlInputMethod_Menu.swift */, + D4A13D5927A59D5C003BE359 /* ctlInputMethod.swift */, 5B5E535127EF261400C6AA1E /* IME.swift */, 5B62A33127AE792F00A19448 /* InputSourceHelper.swift */, 5B62A33527AE795800A19448 /* mgrPrefs.swift */, @@ -487,13 +487,13 @@ 5B62A32427AE757300A19448 /* LangModelRelated */ = { isa = PBXGroup; children = ( - D41355D9278E6D17005E5CBD /* LMInstantiator.mm */, + 5B62A32527AE758000A19448 /* SubLanguageModels */, D41355DA278E6D17005E5CBD /* LMInstantiator.h */, - D41355D6278D7409005E5CBD /* mgrLangModel.h */, + D41355D9278E6D17005E5CBD /* LMInstantiator.mm */, D495583A27A5C6C4006ADE1C /* mgrLangModel_Privates.h */, + D41355D6278D7409005E5CBD /* mgrLangModel.h */, D41355D7278D7409005E5CBD /* mgrLangModel.mm */, 5BAEFACF28012565001F42C9 /* mgrLangModel.swift */, - 5B62A32527AE758000A19448 /* SubLanguageModels */, ); path = LangModelRelated; sourceTree = ""; @@ -502,20 +502,20 @@ isa = PBXGroup; children = ( 5B4D47B627C9186900220DDC /* InstantiatedModels */, + D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */, + D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */, 5B62A32C27AE78B000A19448 /* CoreLM.h */, 5B62A32D27AE78B000A19448 /* CoreLM.mm */, - D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */, - D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */, 6ACC3D422793701600F1B140 /* ParselessLM.cpp */, 6ACC3D432793701600F1B140 /* ParselessLM.h */, 6ACC3D402793701600F1B140 /* ParselessPhraseDB.cpp */, 6ACC3D412793701600F1B140 /* ParselessPhraseDB.h */, - D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */, D44FB74C2792189A003C80A6 /* PhraseReplacementMap.h */, + D44FB74B2792189A003C80A6 /* PhraseReplacementMap.mm */, D47F7DD2278C1263002F9DD7 /* UserOverrideModel.cpp */, D47F7DD1278C1263002F9DD7 /* UserOverrideModel.h */, - D47D73AA27A6CAE600255A50 /* AssociatedPhrases.mm */, - D47D73AB27A6CAE600255A50 /* AssociatedPhrases.h */, + D41355DD278EA3ED005E5CBD /* UserPhrasesLM.h */, + D41355DC278EA3ED005E5CBD /* UserPhrasesLM.mm */, ); path = SubLanguageModels; sourceTree = ""; @@ -537,9 +537,9 @@ isa = PBXGroup; children = ( 5B62A33E27AE7CD900A19448 /* CandidateUI */, + 5B62A34427AE7CD900A19448 /* NotifierUI */, 5BA9FD0927FED9F3002DE248 /* PrefUI */, 5B62A34227AE7CD900A19448 /* TooltipUI */, - 5B62A34427AE7CD900A19448 /* NotifierUI */, ); path = UI; sourceTree = ""; @@ -681,10 +681,10 @@ 5BBBB76E27AED70B0023B93A /* MenuIcons */ = { isa = PBXGroup; children = ( - 5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */, - 5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */, 5BBBB77127AED70B0023B93A /* MenuIcon-SCVIM.png */, + 5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */, 5BBBB77227AED70B0023B93A /* MenuIcon-TCVIM.png */, + 5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */, ); name = MenuIcons; path = Source/Resources/MenuIcons; @@ -825,13 +825,13 @@ 5BBBB77827AEDB330023B93A /* Resources */, D4F0BBE0279AF8B30071253C /* AppDelegate.swift */, D4F0BBDE279AF1AF0071253C /* ArchiveUtil.swift */, + D4F0BBE2279B08900071253C /* Chronosphere.h */, + D4F0BBE3279B08900071253C /* Chronosphere.m */, 6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */, 6ACA41F315FC1D9000935EF6 /* Installer-Prefix.pch */, 5BC0AACA27F58472002D33E9 /* pkgPostInstall.sh */, 5BC0AAC927F58472002D33E9 /* pkgPreInstall.sh */, 6A93050C279877FF00D370DA /* vChewingInstaller-Bridging-Header.h */, - D4F0BBE2279B08900071253C /* Chronosphere.h */, - D4F0BBE3279B08900071253C /* Chronosphere.m */, ); path = Installer; sourceTree = ""; From 4ecba7e6abee383b7a14c3c91214a9aeedf4e59e Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 11:48:18 +0800 Subject: [PATCH 08/12] PrefUI // Sync JIS / KangXI toggle behavior from PrefWindow. --- Source/UI/PrefUI/suiPrefPaneGeneral.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Source/UI/PrefUI/suiPrefPaneGeneral.swift b/Source/UI/PrefUI/suiPrefPaneGeneral.swift index 822cf8e2..2615d8a3 100644 --- a/Source/UI/PrefUI/suiPrefPaneGeneral.swift +++ b/Source/UI/PrefUI/suiPrefPaneGeneral.swift @@ -130,12 +130,22 @@ struct suiPrefPaneGeneral: View { isOn: $selEnableKanjiConvToKangXi ).onChange(of: selEnableKanjiConvToKangXi) { value in mgrPrefs.chineseConversionEnabled = value + selEnableKanjiConvToKangXi = value + if value { + mgrPrefs.shiftJISShinjitaiOutputEnabled = !value + selEnableKanjiConvToJIS = !value + } } Toggle( LocalizedStringKey("Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"), isOn: $selEnableKanjiConvToJIS ).onChange(of: selEnableKanjiConvToJIS) { value in mgrPrefs.shiftJISShinjitaiOutputEnabled = value + selEnableKanjiConvToJIS = value + if value { + mgrPrefs.chineseConversionEnabled = !value + selEnableKanjiConvToKangXi = !value + } } Toggle( LocalizedStringKey("Stop farting (when typed phonetic combination is invalid, etc.)"), From 75eb053165630cf390bb3259d30a75c22bb26b40 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 11:51:59 +0800 Subject: [PATCH 09/12] KeyHandler // Tooltip for JIS / KangXi mode (not ready yet). --- .../ControllerModules/KeyHandler_States.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Source/Modules/ControllerModules/KeyHandler_States.swift b/Source/Modules/ControllerModules/KeyHandler_States.swift index a19dc440..d531b770 100644 --- a/Source/Modules/ControllerModules/KeyHandler_States.swift +++ b/Source/Modules/ControllerModules/KeyHandler_States.swift @@ -45,6 +45,21 @@ import Cocoa // 組建提示文本 var tooltip = "" + + // 如果在用特定的模式的話,則始終顯示對應的提示。 + // TODO: 該功能無法正常運作,暫時註釋掉。 + // if ctlInputMethod.currentKeyHandler.inputMode == InputMode.imeModeCHT { + // if mgrPrefs.chineseConversionEnabled && !mgrPrefs.shiftJISShinjitaiOutputEnabled { + // tooltip = String( + // format: "%@%@%@", NSLocalizedString("Force KangXi Writing", comment: ""), "\n", + // NSLocalizedString("NotificationSwitchON", comment: "")) + // } else if mgrPrefs.shiftJISShinjitaiOutputEnabled { + // tooltip = String( + // format: "%@%@%@", NSLocalizedString("JIS Shinjitai Output", comment: ""), "\n", + // NSLocalizedString("NotificationSwitchON", comment: "")) + // } + // } + // 備註:因為目前的輸入法已經有了 NSString Emoji 支援,所以這個工具提示可能不會出現了。 // 姑且留下來用作萬一時的偵錯用途。 if resultOfRear != "" || resultOfFront != "" { From dd08b767092c299d660612bd6430a7435c7ed36c Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 12:22:10 +0800 Subject: [PATCH 10/12] InputState // Use line-break in tooltips when necessary. --- Source/Modules/ControllerModules/InputState.swift | 4 ++-- Source/Resources/Base.lproj/Localizable.strings | 4 ++-- Source/Resources/en.lproj/Localizable.strings | 4 ++-- Source/Resources/ja.lproj/Localizable.strings | 4 ++-- Source/Resources/zh-Hans.lproj/Localizable.strings | 4 ++-- Source/Resources/zh-Hant.lproj/Localizable.strings | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Source/Modules/ControllerModules/InputState.swift b/Source/Modules/ControllerModules/InputState.swift index 02a58250..25a9de19 100644 --- a/Source/Modules/ControllerModules/InputState.swift +++ b/Source/Modules/ControllerModules/InputState.swift @@ -237,7 +237,7 @@ class InputState: NSObject { ) return String( format: NSLocalizedString( - "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude.", comment: "" + "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude.", comment: "" ), text ) } @@ -246,7 +246,7 @@ class InputState: NSObject { ) TooltipController.textColor = NSColor.white return String( - format: NSLocalizedString("\"%@\" selected. ↩ to add user phrase.", comment: ""), + format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""), text ) } diff --git a/Source/Resources/Base.lproj/Localizable.strings b/Source/Resources/Base.lproj/Localizable.strings index 7120c36d..f7f17571 100644 --- a/Source/Resources/Base.lproj/Localizable.strings +++ b/Source/Resources/Base.lproj/Localizable.strings @@ -26,8 +26,8 @@ "Half-Width Punctuation Mode" = "Half-Width Punctuation Mode"; "\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase."; -"\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase."; -"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude."; +"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; +"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude."; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Use Phrase Replacement" = "Use Phrase Replacement"; "Candidates keys cannot be empty." = "Candidates keys cannot be empty."; diff --git a/Source/Resources/en.lproj/Localizable.strings b/Source/Resources/en.lproj/Localizable.strings index 7120c36d..f7f17571 100644 --- a/Source/Resources/en.lproj/Localizable.strings +++ b/Source/Resources/en.lproj/Localizable.strings @@ -26,8 +26,8 @@ "Half-Width Punctuation Mode" = "Half-Width Punctuation Mode"; "\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase."; -"\"%@\" selected. ↩ to add user phrase." = "\"%@\" selected. ↩ to add user phrase."; -"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude."; +"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; +"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude."; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Use Phrase Replacement" = "Use Phrase Replacement"; "Candidates keys cannot be empty." = "Candidates keys cannot be empty."; diff --git a/Source/Resources/ja.lproj/Localizable.strings b/Source/Resources/ja.lproj/Localizable.strings index 52dffbbc..1f515508 100644 --- a/Source/Resources/ja.lproj/Localizable.strings +++ b/Source/Resources/ja.lproj/Localizable.strings @@ -26,8 +26,8 @@ "Half-Width Punctuation Mode" = "半角句読モード"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。"; -"\"%@\" selected. ↩ to add user phrase." = "「%@」を ↩ で辞書に登録。"; -"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」は既存語彙:↩ で最優先にし;⇧⌘↩ で排除。"; +"\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。"; +"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」は既存語彙:ENTER で最優先にし;\n SHIFT+CMD+ENTER で排除。"; "Edit Phrase Replacement Table…" = "言葉置換表を編集…"; "Use Phrase Replacement" = "言葉置換機能"; "Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。"; diff --git a/Source/Resources/zh-Hans.lproj/Localizable.strings b/Source/Resources/zh-Hans.lproj/Localizable.strings index 03388fda..a83c8d68 100644 --- a/Source/Resources/zh-Hans.lproj/Localizable.strings +++ b/Source/Resources/zh-Hans.lproj/Localizable.strings @@ -26,8 +26,8 @@ "Half-Width Punctuation Mode" = "半角标点模式"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。"; -"\"%@\" selected. ↩ to add user phrase." = "「%@」敲 Enter 添入自订语汇。"; -"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升权;敲 ⇧⌘↩ 以排除。"; +"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。"; +"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升权;\n 敲 Shift+CMD+Enter 以排除。"; "Edit Phrase Replacement Table…" = "编辑语汇置换表…"; "Use Phrase Replacement" = "使用语汇置换"; "Candidates keys cannot be empty." = "您必须指定选字键。"; diff --git a/Source/Resources/zh-Hant.lproj/Localizable.strings b/Source/Resources/zh-Hant.lproj/Localizable.strings index 17d91f75..f300f1ee 100644 --- a/Source/Resources/zh-Hant.lproj/Localizable.strings +++ b/Source/Resources/zh-Hant.lproj/Localizable.strings @@ -26,8 +26,8 @@ "Half-Width Punctuation Mode" = "半形標點模式"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。"; -"\"%@\" selected. ↩ to add user phrase." = "「%@」敲 Enter 添入自訂語彙。"; -"\"%@\" already exists: ↩ to boost, ⇧⌘↩ to exclude." = "「%@」已存在:敲 ↩ 以升權;敲 ⇧⌘↩ 以排除。"; +"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。"; +"\"%@\" already exists: ENTER to boost, \n SHIFT+CMD+ENTER to exclude." = "「%@」已存在:敲 Enter 以升權;\n 敲 Shift+CMD+Enter 以排除。"; "Edit Phrase Replacement Table…" = "編輯語彙置換表…"; "Use Phrase Replacement" = "使用語彙置換"; "Candidates keys cannot be empty." = "您必須指定選字鍵。"; From 39454471534d7e47f86d1aa5e47b77aaa1058e94 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 01:48:06 +0800 Subject: [PATCH 11/12] Update Data - 20220422 --- Source/Data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Data b/Source/Data index 2d0c040a..8199254d 160000 --- a/Source/Data +++ b/Source/Data @@ -1 +1 @@ -Subproject commit 2d0c040a95621f382a13664667fa5d1c43d172ee +Subproject commit 8199254d3abbf63e3b7535bbc975f8519a2d6834 From 94202282a0e05d2bb27e9850a64af1d2224f61b7 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 22 Apr 2022 01:49:26 +0800 Subject: [PATCH 12/12] Bump version to 1.5.3 Build 1953. --- Update-Info.plist | 4 ++-- vChewing.pkgproj | 2 +- vChewing.xcodeproj/project.pbxproj | 24 ++++++++++++------------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Update-Info.plist b/Update-Info.plist index 03971dfc..e6ac22a9 100644 --- a/Update-Info.plist +++ b/Update-Info.plist @@ -3,9 +3,9 @@ CFBundleShortVersionString - 1.5.2 + 1.5.3 CFBundleVersion - 1952 + 1953 UpdateInfoEndpoint https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist UpdateInfoSite diff --git a/vChewing.pkgproj b/vChewing.pkgproj index 26725464..8bb06404 100644 --- a/vChewing.pkgproj +++ b/vChewing.pkgproj @@ -726,7 +726,7 @@ USE_HFS+_COMPRESSION VERSION - 1.5.2 + 1.5.3 TYPE 0 diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 00642041..f97b5b51 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -1324,7 +1324,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEBUG_INFORMATION_FORMAT = dwarf; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; @@ -1347,7 +1347,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; @@ -1380,7 +1380,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -1399,7 +1399,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; @@ -1513,7 +1513,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = ""; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1548,7 +1548,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1580,7 +1580,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = ""; @@ -1610,7 +1610,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1693,7 +1693,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEVELOPMENT_TEAM = ""; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; @@ -1718,7 +1718,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1745,7 +1745,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1952; + CURRENT_PROJECT_VERSION = 1953; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1765,7 +1765,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.11.5; - MARKETING_VERSION = 1.5.2; + MARKETING_VERSION = 1.5.3; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "";