Merge branch 'upd/1.3.5' into 'main'

v1.3.5 // Key Behaviors, Debug Mode, etc.

See merge request vChewing/vChewing-macOS!1
This commit is contained in:
Shiki Suen 2022-02-23 15:24:56 +00:00
commit a19b399ced
31 changed files with 289 additions and 296 deletions

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "Source/Data"] [submodule "Source/Data"]
path = Source/Data path = Source/Data
url = https://gitee.com/vchewing/libvchewing-data url = https://jihulab.com/vChewing/libvchewing-data.git

View File

@ -1,4 +1,4 @@
vChewing macOS: 3-Clause BSD License MITライセンス vChewing macOS: MIT商標不許可ライセンス (MIT-NTL License)
© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project. © 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.
小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。 小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。

View File

@ -1,8 +1,14 @@
因不可控的网络条件原因,该仓库只能保证在 Gitee 有最新的内容可用https://gitee.com/vchewing/vChewing-macOS 因不可控原因,该仓库只能保证在 GitLab China 有最新的内容可用:
- 下载https://jihulab.com/vChewing/vChewing-macOS/-/releases
- 程式码仓库https://jihulab.com/vChewing/vChewing-macOS
# vChewing 威注音输入法 # vChewing 威注音输入法
威注音输入法由小麦注音分支而来(且词库内已经移除任何可以妨碍该输入法在世界上任何地方传播的内容),是原生简体中文注音输入法:相比中州韵(鼠须管)而言,威注音能够做到真正的大千声韵并击。 威注音输入法基于小麦注音二次开发,是原生简体中文注音输入法:
- 威注音的原厂词库内不存在任何可以妨碍该输入法在世界上任何地方传播的内容。
- 相比中州韵(鼠须管)而言,威注音能够做到真正的大千声韵并击。
>威注音有很多特色功能。在此仅列举部分: >威注音有很多特色功能。在此仅列举部分:
>- 支援 macOS 荧幕模拟键盘(仅传统大千与传统倚天布局)。 >- 支援 macOS 荧幕模拟键盘(仅传统大千与传统倚天布局)。
@ -56,7 +62,7 @@
要注意的是 macOS 可能会限制同一次 login session 能终结同一个输入法的执行进程的次数(安装程式透过 kill input method process 来让新版的输入法生效)。如果安装若干次后,发现程式修改的结果并没有出现、或甚至输入法已无法再选用,只需要登出目前的 macOS 系统帐号、再重新登入即可。 要注意的是 macOS 可能会限制同一次 login session 能终结同一个输入法的执行进程的次数(安装程式透过 kill input method process 来让新版的输入法生效)。如果安装若干次后,发现程式修改的结果并没有出现、或甚至输入法已无法再选用,只需要登出目前的 macOS 系统帐号、再重新登入即可。
补记: 该输入法是在 2021 年 11 月初「28ae7deb4092f067539cff600397292e66a5dd56」这一版小麦注音建置的基础上完成的。因为在清洗词库的时候清洗了全部的 git commit 历史,所以无法自动从小麦注音官方仓库上游继承任何改动,只能手动同步任何在此之后的程式修正。最近一次同步參照是 zonble 的分支「5cb6819e132a02bbcba77dbf083ada418750dab7」。 补记: 该输入法是在 2021 年 11 月初「28ae7deb4092f067539cff600397292e66a5dd56」这一版小麦注音建置的基础上完成的。因为在清洗词库的时候清洗了全部的 git commit 历史,所以无法自动从小麦注音官方仓库上游继承任何改动,只能手动同步任何在此之后的程式修正。最近一次同步參照是上游主仓库的 2.2.2 版、以及 zonble 的分支「5cb6819e132a02bbcba77dbf083ada418750dab7」。
## 应用授权 ## 应用授权

@ -1 +1 @@
Subproject commit 6dc73cd3edd47c85089db8f58e92f0c821e67ed6 Subproject commit e4238c5193173d82397a5dd96c91b6e50c7641b0

View File

@ -184,7 +184,7 @@ class InputState: NSObject {
let joined = selectedReadings.joined(separator: "-") let joined = selectedReadings.joined(separator: "-")
let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined) let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined)
if exist { if exist {
return String(format: NSLocalizedString("\"%@\" already exists, ENTER to boost its priority.", comment: ""), text) return String(format: NSLocalizedString("\"%@\" already exists, ENTER to override its priority.", comment: ""), text)
} }
return String(format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""), text) return String(format: NSLocalizedString("\"%@\" selected. ENTER to add user phrase.", comment: ""), text)

View File

@ -39,6 +39,7 @@ extern InputMode imeModeNULL;
@interface KeyHandler : NSObject @interface KeyHandler : NSObject
- (BOOL)isBuilderEmpty;
- (BOOL)handleInput:(KeyHandlerInput *)input - (BOOL)handleInput:(KeyHandlerInput *)input
state:(InputState *)state state:(InputState *)state
stateCallback:(void (^)(InputState *))stateCallback stateCallback:(void (^)(InputState *))stateCallback

View File

@ -87,6 +87,14 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return _inputMode; return _inputMode;
} }
- (BOOL)isBuilderEmpty {
if (_builder->grid().width() == 0) {
return YES;
} else {
return NO;
}
}
- (void)setInputMode:(NSString *)value - (void)setInputMode:(NSString *)value
{ {
NSString *newInputMode; NSString *newInputMode;
@ -255,7 +263,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
// Caps Lock processing : if Caps Lock is on, temporarily disable bopomofo. // Caps Lock processing : if Caps Lock is on, temporarily disable bopomofo.
if ([input isBackSpace] || [input isEnterCharCode] || [input isEnter] || [input isAbsorbedArrowKey] || [input isExtraChooseCandidateKey] || [input isExtraChooseCandidateKeyReverse] || [input isCursorForward] || [input isCursorBackward]) { if ([input isBackSpace] || [input isEnter] || [input isAbsorbedArrowKey] || [input isExtraChooseCandidateKey] || [input isExtraChooseCandidateKeyReverse] || [input isCursorForward] || [input isCursorBackward]) {
// do nothing if backspace is pressed -- we ignore the key // do nothing if backspace is pressed -- we ignore the key
} else if ([input isCapsLockOn]) { } else if ([input isCapsLockOn]) {
// process all possible combination, we hope. // process all possible combination, we hope.
@ -339,13 +347,14 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
// see if we have composition if Enter/Space is hit and buffer is not empty // see if we have composition if Enter/Space is hit and buffer is not empty
// this is bit-OR'ed so that the tone marker key is also taken into account // this is bit-OR'ed so that the tone marker key is also taken into account
composeReading |= (!_bpmfReadingBuffer->isEmpty() && ([input isSpace] || [input isEnterCharCode] || [input isEnter])); composeReading |= (!_bpmfReadingBuffer->isEmpty() && ([input isSpace] || [input isEnter]));
if (composeReading) { if (composeReading) {
// combine the reading // combine the reading
std::string reading = _bpmfReadingBuffer->syllable().composedString(); std::string reading = _bpmfReadingBuffer->syllable().composedString();
// see if we have a unigram for this // see if we have a unigram for this
if (!_languageModel->hasUnigramsForKey(reading)) { if (!_languageModel->hasUnigramsForKey(reading)) {
[self errorCallbackConsolePrint:@"B49C0979"];
errorCallback(); errorCallback();
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
@ -410,7 +419,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if (_bpmfReadingBuffer->isEmpty() && if (_bpmfReadingBuffer->isEmpty() &&
[state isKindOfClass:[InputStateNotEmpty class]] && [state isKindOfClass:[InputStateNotEmpty class]] &&
([input isExtraChooseCandidateKey] || [input isExtraChooseCandidateKeyReverse] ([input isExtraChooseCandidateKey] || [input isExtraChooseCandidateKeyReverse]
|| [input isSpace] || [input isPageDown] || [input isPageUp] || [input isSpace] || [input isPageDown] || [input isPageUp] || [input isTab]
|| (input.useVerticalMode && ([input isVerticalModeOnlyChooseCandidateKey])))) { || (input.useVerticalMode && ([input isVerticalModeOnlyChooseCandidateKey])))) {
if ([input isSpace]) { if ([input isSpace]) {
// if the spacebar is NOT set to be a selection key // if the spacebar is NOT set to be a selection key
@ -497,7 +506,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
// MARK: Enter // MARK: Enter
if ([input isEnter] || [input isEnterCharCode]) { if ([input isEnter]) {
if ([input isControlHold]) { if ([input isControlHold]) {
if (ctlInputMethod.areWeUsingOurOwnPhraseEditor) { if (ctlInputMethod.areWeUsingOurOwnPhraseEditor) {
return [self _handleCtrlEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback]; return [self _handleCtrlEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback];
@ -508,8 +517,10 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
// MARK: Punctuation list // MARK: Punctuation list
if ([input isSymbolMenuKey]) { if ([input isSymbolMenuKey]) {
InputStateEmpty *empty = [[InputStateEmpty alloc] init];
stateCallback(empty); // 得在這裡先 commit buffer不然會導致「在摁 ESC 離開符號選單時會重複輸入上一次的組字區的內容」的不當行為。
// 於是這裡用「模擬一次 Enter 鍵的操作」使其代為執行這個 commit buffer 的動作。
[self _handleEnterWithState:state stateCallback:stateCallback errorCallback:errorCallback];
SymbolNode *root = [SymbolNode root]; SymbolNode *root = [SymbolNode root];
InputStateSymbolTable *symbolState = [[InputStateSymbolTable alloc] initWithNode:root useVerticalMode:input.useVerticalMode]; InputStateSymbolTable *symbolState = [[InputStateSymbolTable alloc] initWithNode:root useVerticalMode:input.useVerticalMode];
@ -567,6 +578,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
// strange behavior if we don't do this, "thinking" the key is not // strange behavior if we don't do this, "thinking" the key is not
// actually consumed) // actually consumed)
if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) { if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"A9BFF20E"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -617,6 +629,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (!_bpmfReadingBuffer->isEmpty()) { if (!_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"6ED95318"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -632,6 +645,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
marking.tooltipForInputting = currentState.tooltip; marking.tooltipForInputting = currentState.tooltip;
stateCallback(marking); stateCallback(marking);
} else { } else {
[self errorCallbackConsolePrint:@"D326DEA3"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -641,6 +655,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
} else { } else {
[self errorCallbackConsolePrint:@"7045E6F3"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -655,6 +670,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (!_bpmfReadingBuffer->isEmpty()) { if (!_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"B3BA5257"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -670,6 +686,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
marking.tooltipForInputting = currentState.tooltip; marking.tooltipForInputting = currentState.tooltip;
stateCallback(marking); stateCallback(marking);
} else { } else {
[self errorCallbackConsolePrint:@"BB7F6DB9"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -679,6 +696,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
} else { } else {
[self errorCallbackConsolePrint:@"A96AAD58"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -694,6 +712,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (!_bpmfReadingBuffer->isEmpty()) { if (!_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"ABC44080"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -704,6 +723,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
} else { } else {
[self errorCallbackConsolePrint:@"66D97F90"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -718,6 +738,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (!_bpmfReadingBuffer->isEmpty()) { if (!_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"9B69908D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -728,6 +749,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
} else { } else {
[self errorCallbackConsolePrint:@"9B69908E"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -742,6 +764,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
if (!_bpmfReadingBuffer->isEmpty()) { if (!_bpmfReadingBuffer->isEmpty()) {
[self errorCallbackConsolePrint:@"9B6F908D"];
errorCallback(); errorCallback();
} }
stateCallback(state); stateCallback(state);
@ -759,6 +782,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
_builder->deleteReadingBeforeCursor(); _builder->deleteReadingBeforeCursor();
[self _walk]; [self _walk];
} else { } else {
[self errorCallbackConsolePrint:@"9D69908D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -795,10 +819,12 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
stateCallback(inputting); stateCallback(inputting);
} }
} else { } else {
[self errorCallbackConsolePrint:@"9B69938D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
} else { } else {
[self errorCallbackConsolePrint:@"9C69908D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -852,6 +878,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
_builder->insertReadingAtCursor(customPunctuation); _builder->insertReadingAtCursor(customPunctuation);
poppedText = [self _popOverflowComposingTextAndWalk]; poppedText = [self _popOverflowComposingTextAndWalk];
} else { // If there is still unfinished bpmf reading, ignore the punctuation } else { // If there is still unfinished bpmf reading, ignore the punctuation
[self errorCallbackConsolePrint:@"A9B69908D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
return YES; return YES;
@ -891,8 +918,9 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
// Enter // Enter
if ([input isEnter] || [input isEnterCharCode]) { if ([input isEnter]) {
if (![self.delegate keyHandler:self didRequestWriteUserPhraseWithState:state]) { if (![self.delegate keyHandler:self didRequestWriteUserPhraseWithState:state]) {
[self errorCallbackConsolePrint:@"5B69CC8D"];
errorCallback(); errorCallback();
return YES; return YES;
} }
@ -917,6 +945,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
stateCallback(marking); stateCallback(marking);
} }
} else { } else {
[self errorCallbackConsolePrint:@"1149908D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -938,6 +967,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
stateCallback(marking); stateCallback(marking);
} }
} else { } else {
[self errorCallbackConsolePrint:@"9B51408D"];
errorCallback(); errorCallback();
stateCallback(state); stateCallback(state);
} }
@ -970,6 +1000,12 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
[self clear]; [self clear];
InputStateEmptyIgnoringPreviousState *empty = [[InputStateEmptyIgnoringPreviousState alloc] init]; InputStateEmptyIgnoringPreviousState *empty = [[InputStateEmptyIgnoringPreviousState alloc] init];
stateCallback(empty); stateCallback(empty);
} else if ([self isBuilderEmpty]) {
// 如果此時發現當前組字緩衝區為真空的情況的話,就將當前的組字緩衝區析構處理、強制重設輸入狀態。
// 不然的話,一個本不該出現的真空組字緩衝區會使前後方向鍵與 BackSpace 鍵失靈。
[self clear];
InputStateEmptyIgnoringPreviousState *empty = [[InputStateEmptyIgnoringPreviousState alloc] init];
stateCallback(empty);
} else { } else {
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState]; InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
stateCallback(inputting); stateCallback(inputting);
@ -977,7 +1013,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return YES; return YES;
} }
if ([input isEnterCharCode] || [input isEnter]) { if ([input isEnter]) {
if ([state isKindOfClass: [InputStateAssociatedPhrases class]]) { if ([state isKindOfClass: [InputStateAssociatedPhrases class]]) {
[self clear]; [self clear];
InputStateEmptyIgnoringPreviousState *empty = [[InputStateEmptyIgnoringPreviousState alloc] init]; InputStateEmptyIgnoringPreviousState *empty = [[InputStateEmptyIgnoringPreviousState alloc] init];
@ -988,9 +1024,24 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return YES; return YES;
} }
if ([input isTab]) {
BOOL updated =
Preferences.specifyTabKeyBehavior?
([input isShiftHold] ? [gCurrentCandidateController showPreviousPage] : [gCurrentCandidateController showNextPage])
:
([input isShiftHold] ? [gCurrentCandidateController highlightPreviousCandidate] : [gCurrentCandidateController highlightNextCandidate])
;
if (!updated) {
[self errorCallbackConsolePrint:@"9B691919"];
errorCallback();
}
return YES;
}
if ([input isSpace] || [input isPageDown] || input.emacsKey == vChewingEmacsKeyNextPage) { if ([input isSpace] || [input isPageDown] || input.emacsKey == vChewingEmacsKeyNextPage) {
BOOL updated = [gCurrentCandidateController showNextPage]; BOOL updated = [gCurrentCandidateController showNextPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9B691919"];
errorCallback(); errorCallback();
} }
return YES; return YES;
@ -999,6 +1050,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([input isPageUp]) { if ([input isPageUp]) {
BOOL updated = [gCurrentCandidateController showPreviousPage]; BOOL updated = [gCurrentCandidateController showPreviousPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9569955D"];
errorCallback(); errorCallback();
} }
return YES; return YES;
@ -1008,11 +1060,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) { if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) {
BOOL updated = [gCurrentCandidateController highlightPreviousCandidate]; BOOL updated = [gCurrentCandidateController highlightPreviousCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"1145148D"];
errorCallback(); errorCallback();
} }
} else { } else {
BOOL updated = [gCurrentCandidateController showPreviousPage]; BOOL updated = [gCurrentCandidateController showPreviousPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"1919810D"];
errorCallback(); errorCallback();
} }
} }
@ -1022,6 +1076,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if (input.emacsKey == vChewingEmacsKeyBackward) { if (input.emacsKey == vChewingEmacsKeyBackward) {
BOOL updated = [gCurrentCandidateController highlightPreviousCandidate]; BOOL updated = [gCurrentCandidateController highlightPreviousCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9B89308D"];
errorCallback(); errorCallback();
} }
return YES; return YES;
@ -1031,11 +1086,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) { if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) {
BOOL updated = [gCurrentCandidateController highlightNextCandidate]; BOOL updated = [gCurrentCandidateController highlightNextCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9B65138D"];
errorCallback(); errorCallback();
} }
} else { } else {
BOOL updated = [gCurrentCandidateController showNextPage]; BOOL updated = [gCurrentCandidateController showNextPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9244908D"];
errorCallback(); errorCallback();
} }
} }
@ -1045,6 +1102,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if (input.emacsKey == vChewingEmacsKeyForward) { if (input.emacsKey == vChewingEmacsKeyForward) {
BOOL updated = [gCurrentCandidateController highlightNextCandidate]; BOOL updated = [gCurrentCandidateController highlightNextCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9B2428D"];
errorCallback(); errorCallback();
} }
return YES; return YES;
@ -1054,11 +1112,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) { if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) {
BOOL updated = [gCurrentCandidateController showPreviousPage]; BOOL updated = [gCurrentCandidateController showPreviousPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"9B614524"];
errorCallback(); errorCallback();
} }
} else { } else {
BOOL updated = [gCurrentCandidateController highlightPreviousCandidate]; BOOL updated = [gCurrentCandidateController highlightPreviousCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"ASD9908D"];
errorCallback(); errorCallback();
} }
} }
@ -1069,11 +1129,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) { if ([gCurrentCandidateController isKindOfClass:[VTHorizontalCandidateController class]]) {
BOOL updated = [gCurrentCandidateController showNextPage]; BOOL updated = [gCurrentCandidateController showNextPage];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"92B990DD"];
errorCallback(); errorCallback();
} }
} else { } else {
BOOL updated = [gCurrentCandidateController highlightNextCandidate]; BOOL updated = [gCurrentCandidateController highlightNextCandidate];
if (!updated) { if (!updated) {
[self errorCallbackConsolePrint:@"6B99908D"];
errorCallback(); errorCallback();
} }
} }
@ -1082,6 +1144,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if ([input isHome] || input.emacsKey == vChewingEmacsKeyHome) { if ([input isHome] || input.emacsKey == vChewingEmacsKeyHome) {
if (gCurrentCandidateController.selectedCandidateIndex == 0) { if (gCurrentCandidateController.selectedCandidateIndex == 0) {
[self errorCallbackConsolePrint:@"9B6EDE8D"];
errorCallback(); errorCallback();
} else { } else {
gCurrentCandidateController.selectedCandidateIndex = 0; gCurrentCandidateController.selectedCandidateIndex = 0;
@ -1104,6 +1167,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
if (([input isEnd] || input.emacsKey == vChewingEmacsKeyEnd) && candidates.count > 0) { if (([input isEnd] || input.emacsKey == vChewingEmacsKeyEnd) && candidates.count > 0) {
if (gCurrentCandidateController.selectedCandidateIndex == candidates.count - 1) { if (gCurrentCandidateController.selectedCandidateIndex == candidates.count - 1) {
[self errorCallbackConsolePrint:@"9B69AAAD"];
errorCallback(); errorCallback();
} else { } else {
gCurrentCandidateController.selectedCandidateIndex = candidates.count - 1; gCurrentCandidateController.selectedCandidateIndex = candidates.count - 1;
@ -1181,6 +1245,7 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
} }
} }
[self errorCallbackConsolePrint:@"172A0F81"];
errorCallback(); errorCallback();
return YES; return YES;
} }
@ -1378,4 +1443,11 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
return nil; return nil;
} }
-(void)errorCallbackConsolePrint:(NSString *)strPrint
{
if (Preferences.isDebugModeEnabled) {
NSLog(@"vChewingErrorCallback: %@", strPrint);
}
}
@end @end

View File

@ -19,8 +19,11 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
import Cocoa import Cocoa
// KeyCodes: https://eastmanreference.com/complete-list-of-applescript-key-codes
enum KeyCode: UInt16 { enum KeyCode: UInt16 {
case none = 0 case none = 0
case esc = 53
case tab = 48
case enter = 76 case enter = 76
case up = 126 case up = 126
case down = 125 case down = 125
@ -33,6 +36,7 @@ enum KeyCode: UInt16 {
case delete = 117 case delete = 117
} }
// CharCodes: https://theasciicode.com.ar/ascii-control-characters/horizontal-tab-ascii-code-9.html
enum CharCode: UInt16 { enum CharCode: UInt16 {
case space = 32 case space = 32
case backSpace = 8 case backSpace = 8
@ -141,12 +145,12 @@ class KeyHandlerInput: NSObject {
return code.rawValue != KeyCode.none.rawValue return code.rawValue != KeyCode.none.rawValue
} }
@objc var isEnter: Bool { @objc var isTab: Bool {
KeyCode(rawValue: keyCode) == KeyCode.enter KeyCode(rawValue: keyCode) == KeyCode.tab
} }
@objc var isEnterCharCode: Bool { @objc var isEnter: Bool {
CharCode(rawValue: charCode) == CharCode.enter (CharCode(rawValue: charCode) == CharCode.enter) || (KeyCode(rawValue: keyCode) == KeyCode.enter)
} }
@objc var isUp: Bool { @objc var isUp: Bool {
@ -182,7 +186,7 @@ class KeyHandlerInput: NSObject {
} }
@objc var isESC: Bool { @objc var isESC: Bool {
CharCode(rawValue: charCode) == CharCode.esc (CharCode(rawValue: charCode) == CharCode.esc) || (KeyCode(rawValue: keyCode) == KeyCode.esc)
} }
@objc var isHome: Bool { @objc var isHome: Bool {

View File

@ -37,7 +37,7 @@ class LMConsolidator
public: public:
static bool CheckPragma(const char *path); static bool CheckPragma(const char *path);
static bool FixEOF(const char *path); static bool FixEOF(const char *path);
static bool ConsolidateContent(const char *path, bool shouldsort, bool shouldCheckPragma); static bool ConsolidateContent(const char *path, bool shouldCheckPragma);
}; };
} // namespace vChewing } // namespace vChewing

View File

@ -71,8 +71,8 @@ bool LMConsolidator::FixEOF(const char *path)
} // END: EOF FIXER. } // END: EOF FIXER.
// CONTENT CONSOLIDATOR. CREDIT: Shiki Suen. // CONTENT CONSOLIDATOR. CREDIT: Shiki Suen.
bool LMConsolidator::ConsolidateContent(const char *path, bool shouldsort, bool shouldCheckPragma) { bool LMConsolidator::ConsolidateContent(const char *path, bool shouldCheckPragma) {
if (LMConsolidator::CheckPragma(path) && !shouldsort && shouldCheckPragma){ if (LMConsolidator::CheckPragma(path) && shouldCheckPragma){
return true; return true;
} }
@ -97,8 +97,7 @@ bool LMConsolidator::ConsolidateContent(const char *path, bool shouldsort, bool
vecEntry[i] = regex_replace(vecEntry[i], sedTrailingSpace, "").c_str(); // 去掉行尾空格。 vecEntry[i] = regex_replace(vecEntry[i], sedTrailingSpace, "").c_str(); // 去掉行尾空格。
} }
} }
// 在第二遍 for 運算之前,針對 vecEntry 排序+去除重複條目。 // 在第二遍 for 運算之前,針對 vecEntry 去除重複條目。
if (shouldsort) {sort(vecEntry.begin(), vecEntry.end());} // 要不要排序,得做成開關。
vecEntry.erase(unique(vecEntry.begin(), vecEntry.end()), vecEntry.end()); // 去重複。 vecEntry.erase(unique(vecEntry.begin(), vecEntry.end()), vecEntry.end()); // 去重複。
// 統整完畢。開始將統整過的內容寫入檔案。 // 統整完畢。開始將統整過的內容寫入檔案。
ofstream zfdContentConsolidatorOutput(path); // 這裡是要從頭開始重寫檔案內容,所以不需要「 ios_base::app 」。 ofstream zfdContentConsolidatorOutput(path); // 這裡是要從頭開始重寫檔案內容,所以不需要「 ios_base::app 」。

View File

@ -19,6 +19,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
import Cocoa import Cocoa
private let kIsDebugModeEnabled = "_DebugMode"
private let kCheckUpdateAutomatically = "CheckUpdateAutomatically" private let kCheckUpdateAutomatically = "CheckUpdateAutomatically"
private let kKeyboardLayoutPreference = "KeyboardLayout" private let kKeyboardLayoutPreference = "KeyboardLayout"
private let kBasisKeyboardLayoutPreference = "BasisKeyboardLayout" private let kBasisKeyboardLayoutPreference = "BasisKeyboardLayout"
@ -27,9 +28,6 @@ private let kFunctionKeyKeyboardLayoutOverrideIncludeShift = "FunctionKeyKeyboar
private let kCandidateListTextSize = "CandidateListTextSize" private let kCandidateListTextSize = "CandidateListTextSize"
private let kAppleLanguagesPreferences = "AppleLanguages" private let kAppleLanguagesPreferences = "AppleLanguages"
private let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles" private let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles"
private let kShouldAutoSortUserPhrasesAndExclListOnLoad = "ShouldAutoSortUserPhrasesAndExclListOnLoad"
private let kShouldAutoSortPhraseReplacementMapOnLoad = "ShouldAutoSortPhraseReplacementMapOnLoad"
private let kShouldAutoSortAssociatedPhrasesOnLoad = "ShouldAutoSortAssociatedPhrasesOnLoad"
private let kSelectPhraseAfterCursorAsCandidatePreference = "SelectPhraseAfterCursorAsCandidate" private let kSelectPhraseAfterCursorAsCandidatePreference = "SelectPhraseAfterCursorAsCandidate"
private let kUseHorizontalCandidateListPreference = "UseHorizontalCandidateList" private let kUseHorizontalCandidateListPreference = "UseHorizontalCandidateList"
private let kComposingBufferSizePreference = "ComposingBufferSize" private let kComposingBufferSizePreference = "ComposingBufferSize"
@ -40,6 +38,7 @@ private let kShiftJISShinjitaiOutputEnabled = "ShiftJISShinjitaiOutputEnabled"
private let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable" private let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable"
private let kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate" private let kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate"
private let kEscToCleanInputBuffer = "EscToCleanInputBuffer" private let kEscToCleanInputBuffer = "EscToCleanInputBuffer"
private let kSpecifyTabKeyBehavior = "SpecifyTabKeyBehavior"
private let kUseSCPCTypingMode = "UseSCPCTypingMode" private let kUseSCPCTypingMode = "UseSCPCTypingMode"
private let kMaxCandidateLength = "MaxCandidateLength" private let kMaxCandidateLength = "MaxCandidateLength"
private let kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep" private let kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep"
@ -213,16 +212,14 @@ struct ComposingBufferSize {
// MARK: - // MARK: -
@objc public class Preferences: NSObject { @objc public class Preferences: NSObject {
static var allKeys:[String] { static var allKeys:[String] {
[kKeyboardLayoutPreference, [kIsDebugModeEnabled,
kKeyboardLayoutPreference,
kBasisKeyboardLayoutPreference, kBasisKeyboardLayoutPreference,
kFunctionKeyKeyboardLayoutPreference, kFunctionKeyKeyboardLayoutPreference,
kFunctionKeyKeyboardLayoutOverrideIncludeShift, kFunctionKeyKeyboardLayoutOverrideIncludeShift,
kCandidateListTextSize, kCandidateListTextSize,
kAppleLanguagesPreferences, kAppleLanguagesPreferences,
kShouldAutoReloadUserDataFiles, kShouldAutoReloadUserDataFiles,
kShouldAutoSortUserPhrasesAndExclListOnLoad,
kShouldAutoSortPhraseReplacementMapOnLoad,
kShouldAutoSortAssociatedPhrasesOnLoad,
kSelectPhraseAfterCursorAsCandidatePreference, kSelectPhraseAfterCursorAsCandidatePreference,
kUseHorizontalCandidateListPreference, kUseHorizontalCandidateListPreference,
kComposingBufferSizePreference, kComposingBufferSizePreference,
@ -231,6 +228,7 @@ struct ComposingBufferSize {
kChineseConversionEnabled, kChineseConversionEnabled,
kShiftJISShinjitaiOutputEnabled, kShiftJISShinjitaiOutputEnabled,
kHalfWidthPunctuationEnabled, kHalfWidthPunctuationEnabled,
kSpecifyTabKeyBehavior,
kEscToCleanInputBuffer, kEscToCleanInputBuffer,
kCandidateTextFontName, kCandidateTextFontName,
kCandidateKeyLabelFontName, kCandidateKeyLabelFontName,
@ -248,11 +246,16 @@ struct ComposingBufferSize {
@objc public static func setMissingDefaults () { @objc public static func setMissingDefaults () {
// Preferences Module plist private // Preferences Module plist private
//
if UserDefaults.standard.object(forKey: kIsDebugModeEnabled) == nil {
UserDefaults.standard.set(Preferences.isDebugModeEnabled, forKey: kIsDebugModeEnabled)
}
// //
if UserDefaults.standard.object(forKey: kCheckUpdateAutomatically) == nil { if UserDefaults.standard.object(forKey: kCheckUpdateAutomatically) == nil {
UserDefaults.standard.set(false, forKey: kCheckUpdateAutomatically) UserDefaults.standard.set(false, forKey: kCheckUpdateAutomatically)
} }
// 18 // 18
if UserDefaults.standard.object(forKey: kCandidateListTextSize) == nil { if UserDefaults.standard.object(forKey: kCandidateListTextSize) == nil {
UserDefaults.standard.set(Preferences.candidateListTextSize, forKey: kCandidateListTextSize) UserDefaults.standard.set(Preferences.candidateListTextSize, forKey: kCandidateListTextSize)
@ -263,24 +266,14 @@ struct ComposingBufferSize {
UserDefaults.standard.set(Preferences.chooseCandidateUsingSpace, forKey: kChooseCandidateUsingSpace) UserDefaults.standard.set(Preferences.chooseCandidateUsingSpace, forKey: kChooseCandidateUsingSpace)
} }
// 使 // 使
if UserDefaults.standard.object(forKey: kShouldAutoReloadUserDataFiles) == nil { if UserDefaults.standard.object(forKey: kShouldAutoReloadUserDataFiles) == nil {
UserDefaults.standard.set(Preferences.shouldAutoReloadUserDataFiles, forKey: kShouldAutoReloadUserDataFiles) UserDefaults.standard.set(Preferences.shouldAutoReloadUserDataFiles, forKey: kShouldAutoReloadUserDataFiles)
} }
// // Tab
if UserDefaults.standard.object(forKey: kShouldAutoSortUserPhrasesAndExclListOnLoad) == nil { if UserDefaults.standard.object(forKey: kSpecifyTabKeyBehavior) == nil {
UserDefaults.standard.set(Preferences.shouldAutoSortUserPhrasesAndExclListOnLoad, forKey: kShouldAutoSortUserPhrasesAndExclListOnLoad) UserDefaults.standard.set(Preferences.specifyTabKeyBehavior, forKey: kSpecifyTabKeyBehavior)
}
//
if UserDefaults.standard.object(forKey: kShouldAutoSortAssociatedPhrasesOnLoad) == nil {
UserDefaults.standard.set(Preferences.shouldAutoSortAssociatedPhrasesOnLoad, forKey: kShouldAutoSortAssociatedPhrasesOnLoad)
}
// 使
if UserDefaults.standard.object(forKey: kShouldAutoSortPhraseReplacementMapOnLoad) == nil {
UserDefaults.standard.set(Preferences.shouldAutoSortPhraseReplacementMapOnLoad, forKey: kShouldAutoSortPhraseReplacementMapOnLoad)
} }
// false // false
@ -336,6 +329,9 @@ struct ComposingBufferSize {
UserDefaults.standard.synchronize() UserDefaults.standard.synchronize()
} }
@UserDefault(key: kIsDebugModeEnabled, defaultValue: false)
@objc static var isDebugModeEnabled: Bool
@UserDefault(key: kAppleLanguagesPreferences, defaultValue: []) @UserDefault(key: kAppleLanguagesPreferences, defaultValue: [])
@objc static var appleLanguages: Array<String> @objc static var appleLanguages: Array<String>
@ -361,15 +357,6 @@ struct ComposingBufferSize {
@UserDefault(key: kShouldAutoReloadUserDataFiles, defaultValue: true) @UserDefault(key: kShouldAutoReloadUserDataFiles, defaultValue: true)
@objc static var shouldAutoReloadUserDataFiles: Bool @objc static var shouldAutoReloadUserDataFiles: Bool
@UserDefault(key: kShouldAutoSortUserPhrasesAndExclListOnLoad, defaultValue: false)
@objc static var shouldAutoSortUserPhrasesAndExclListOnLoad: Bool
@UserDefault(key: kShouldAutoSortPhraseReplacementMapOnLoad, defaultValue: false)
@objc static var shouldAutoSortPhraseReplacementMapOnLoad: Bool
@UserDefault(key: kShouldAutoSortAssociatedPhrasesOnLoad, defaultValue: false)
@objc static var shouldAutoSortAssociatedPhrasesOnLoad: Bool
@UserDefault(key: kSelectPhraseAfterCursorAsCandidatePreference, defaultValue: true) @UserDefault(key: kSelectPhraseAfterCursorAsCandidatePreference, defaultValue: true)
@objc static var selectPhraseAfterCursorAsCandidate: Bool @objc static var selectPhraseAfterCursorAsCandidate: Bool
@ -448,7 +435,10 @@ struct ComposingBufferSize {
@UserDefault(key: kEscToCleanInputBuffer, defaultValue: true) @UserDefault(key: kEscToCleanInputBuffer, defaultValue: true)
@objc static var escToCleanInputBuffer: Bool @objc static var escToCleanInputBuffer: Bool
// MARK: Optional settings @UserDefault(key: kSpecifyTabKeyBehavior, defaultValue: false)
@objc static var specifyTabKeyBehavior: Bool
// MARK: - Optional settings
@UserDefault(key: kCandidateTextFontName, defaultValue: nil) @UserDefault(key: kCandidateTextFontName, defaultValue: nil)
@objc static var candidateTextFontName: String? @objc static var candidateTextFontName: String?

View File

@ -115,7 +115,9 @@ class ctlInputMethod: IMKInputController {
menu.addItem(NSMenuItem.separator()) // --------------------- menu.addItem(NSMenuItem.separator()) // ---------------------
menu.addItem(withTitle: NSLocalizedString("vChewing Preferences…", comment: ""), action: #selector(showPreferences(_:)), keyEquivalent: "") menu.addItem(withTitle: NSLocalizedString("vChewing Preferences…", comment: ""), action: #selector(showPreferences(_:)), keyEquivalent: "")
menu.addItem(withTitle: NSLocalizedString("Check for Updates…", comment: ""), action: #selector(checkForUpdate(_:)), keyEquivalent: "") if !optionKeyPressed {
menu.addItem(withTitle: NSLocalizedString("Check for Updates…", comment: ""), action: #selector(checkForUpdate(_:)), keyEquivalent: "")
}
menu.addItem(withTitle: NSLocalizedString("About vChewing…", comment: ""), action: #selector(showAbout(_:)), keyEquivalent: "") menu.addItem(withTitle: NSLocalizedString("About vChewing…", comment: ""), action: #selector(showAbout(_:)), keyEquivalent: "")
if optionKeyPressed { if optionKeyPressed {
menu.addItem(withTitle: NSLocalizedString("Reboot vChewing…", comment: ""), action: #selector(selfTerminate(_:)), keyEquivalent: "") menu.addItem(withTitle: NSLocalizedString("Reboot vChewing…", comment: ""), action: #selector(selfTerminate(_:)), keyEquivalent: "")

View File

@ -59,7 +59,7 @@ bool AssociatedPhrases::open(const char *path)
} }
LMConsolidator::FixEOF(path); LMConsolidator::FixEOF(path);
LMConsolidator::ConsolidateContent(path, Preferences.shouldAutoSortAssociatedPhrasesOnLoad, true); LMConsolidator::ConsolidateContent(path, true);
fd = ::open(path, O_RDONLY); fd = ::open(path, O_RDONLY);
if (fd == -1) { if (fd == -1) {

View File

@ -54,7 +54,7 @@ bool PhraseReplacementMap::open(const char *path)
} }
LMConsolidator::FixEOF(path); LMConsolidator::FixEOF(path);
LMConsolidator::ConsolidateContent(path, Preferences.shouldAutoSortPhraseReplacementMapOnLoad, true); LMConsolidator::ConsolidateContent(path, true);
fd = ::open(path, O_RDONLY); fd = ::open(path, O_RDONLY);
if (fd == -1) { if (fd == -1) {

View File

@ -60,7 +60,7 @@ bool UserPhrasesLM::open(const char *path)
} }
LMConsolidator::FixEOF(path); LMConsolidator::FixEOF(path);
LMConsolidator::ConsolidateContent(path, Preferences.shouldAutoSortUserPhrasesAndExclListOnLoad, true); LMConsolidator::ConsolidateContent(path, true);
fd = ::open(path, O_RDONLY); fd = ::open(path, O_RDONLY);
if (fd == -1) { if (fd == -1) {

View File

@ -266,7 +266,7 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, vChewing
[writeFile closeFile]; [writeFile closeFile];
// We enforce the format consolidation here, since the pragma header will let the UserPhraseLM bypasses the consolidating process on load. // We enforce the format consolidation here, since the pragma header will let the UserPhraseLM bypasses the consolidating process on load.
vChewing::LMConsolidator::ConsolidateContent([path UTF8String], Preferences.shouldAutoSortUserPhrasesAndExclListOnLoad, false); vChewing::LMConsolidator::ConsolidateContent([path UTF8String], false);
// We use FSEventStream to monitor the change of the user phrase folder, // We use FSEventStream to monitor the change of the user phrase folder,
// so we don't have to load data here unless FSEventStream is disabled by user. // so we don't have to load data here unless FSEventStream is disabled by user.

View File

@ -24,7 +24,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" 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."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; "\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists, ENTER to boost its priority." = "\"%@\" already exists, ENTER to boost its priority."; "\"%@\" already exists, ENTER to override its priority." = "\"%@\" already exists, ENTER to override its priority.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement"; "Use Phrase Replacement" = "Use Phrase Replacement";
"Candidates keys cannot be empty." = "Candidates keys cannot be empty."; "Candidates keys cannot be empty." = "Candidates keys cannot be empty.";

View File

@ -124,9 +124,9 @@
<key>TISParticipatesInTouchBar</key> <key>TISParticipatesInTouchBar</key>
<false/> <false/>
<key>UpdateInfoEndpoint</key> <key>UpdateInfoEndpoint</key>
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string> <string>https://jihulab.com/vChewing/vChewing-macOS/-/raw/main/Update-Info.plist</string>
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>
<string>https://gitee.com/vchewing/vChewing-macOS</string> <string>https://jihulab.com/vChewing/vChewing-macOS</string>
<key>tsInputMethodCharacterRepertoireKey</key> <key>tsInputMethodCharacterRepertoireKey</key>
<array> <array>
<string>Hans</string> <string>Hans</string>

View File

@ -24,7 +24,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase."; "\"%@\" 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."; "\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase."; "\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists, ENTER to boost its priority." = "\"%@\" already exists, ENTER to boost its priority."; "\"%@\" already exists, ENTER to override its priority." = "\"%@\" already exists, ENTER to override its priority.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…"; "Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement"; "Use Phrase Replacement" = "Use Phrase Replacement";
"Candidates keys cannot be empty." = "Candidates keys cannot be empty."; "Candidates keys cannot be empty." = "Candidates keys cannot be empty.";

View File

@ -24,7 +24,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」は既存語彙であり、ENTER で最優先にする。"; "\"%@\" already exists, ENTER to override its priority." = "「%@」は既存語彙であり、ENTER で優先順位を再調整。";
"Edit Phrase Replacement Table…" = "言葉置換表を編集…"; "Edit Phrase Replacement Table…" = "言葉置換表を編集…";
"Use Phrase Replacement" = "言葉置換機能"; "Use Phrase Replacement" = "言葉置換機能";
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。"; "Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";

View File

@ -24,7 +24,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」已存在,敲 ENTER 以提升其权重。"; "\"%@\" already exists, ENTER to override its priority." = "「%@」已存在,敲 ENTER 以覆写其权重。";
"Edit Phrase Replacement Table…" = "编辑语汇置换表…"; "Edit Phrase Replacement Table…" = "编辑语汇置换表…";
"Use Phrase Replacement" = "使用语汇置换"; "Use Phrase Replacement" = "使用语汇置换";
"Candidates keys cannot be empty." = "您必须指定选字键。"; "Candidates keys cannot be empty." = "您必须指定选字键。";

View File

@ -24,7 +24,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。"; "\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。"; "\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。"; "\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
"\"%@\" already exists, ENTER to boost its priority." = "「%@」已存在,敲 ENTER 以提升其權重。"; "\"%@\" already exists, ENTER to override its priority." = "「%@」已存在,敲 ENTER 以覆寫其權重。";
"Edit Phrase Replacement Table…" = "編輯語彙置換表…"; "Edit Phrase Replacement Table…" = "編輯語彙置換表…";
"Use Phrase Replacement" = "使用語彙置換"; "Use Phrase Replacement" = "使用語彙置換";
"Candidates keys cannot be empty." = "您必須指定選字鍵。"; "Candidates keys cannot be empty." = "您必須指定選字鍵。";

View File

@ -255,61 +255,32 @@ public class HorizontalCandidateController: CandidateController {
} }
public override func showNextPage() -> Bool { public override func showNextPage() -> Bool {
guard delegate != nil else { guard delegate != nil else {return false}
return false if pageCount == 1 {return highlightNextCandidate()}
} currentPage = (currentPage + 1 >= pageCount) ? 0 : currentPage + 1
if currentPage + 1 >= pageCount {
currentPage = 0
} else {
currentPage += 1
}
candidateView.highlightedIndex = 0 candidateView.highlightedIndex = 0
layoutCandidateView() layoutCandidateView()
return true return true
} }
public override func showPreviousPage() -> Bool { public override func showPreviousPage() -> Bool {
guard delegate != nil else { guard delegate != nil else {return false}
return false if pageCount == 1 {return highlightPreviousCandidate()}
} currentPage = (currentPage == 0) ? pageCount - 1 : currentPage - 1
if currentPage == 0 {
currentPage = pageCount - 1
} else {
currentPage -= 1
}
candidateView.highlightedIndex = 0 candidateView.highlightedIndex = 0
layoutCandidateView() layoutCandidateView()
return true return true
} }
public override func highlightNextCandidate() -> Bool { public override func highlightNextCandidate() -> Bool {
guard let delegate = delegate else { guard let delegate = delegate else {return false}
return false selectedCandidateIndex = (selectedCandidateIndex + 1 >= delegate.candidateCountForController(self)) ? 0 : selectedCandidateIndex + 1
}
let currentIndex = selectedCandidateIndex
if currentIndex + 1 >= delegate.candidateCountForController(self) {
return false
}
selectedCandidateIndex = currentIndex + 1
return true return true
} }
public override func highlightPreviousCandidate() -> Bool { public override func highlightPreviousCandidate() -> Bool {
guard delegate != nil else { guard let delegate = delegate else {return false}
return false selectedCandidateIndex = (selectedCandidateIndex == 0) ? delegate.candidateCountForController(self) - 1 : selectedCandidateIndex - 1
}
let currentIndex = selectedCandidateIndex
if currentIndex == 0 {
return false
}
selectedCandidateIndex = currentIndex - 1
return true return true
} }

View File

@ -261,61 +261,32 @@ public class VerticalCandidateController: CandidateController {
} }
public override func showNextPage() -> Bool { public override func showNextPage() -> Bool {
guard delegate != nil else { guard delegate != nil else {return false}
return false if pageCount == 1 {return highlightNextCandidate()}
} currentPage = (currentPage + 1 >= pageCount) ? 0 : currentPage + 1
if currentPage + 1 >= pageCount {
currentPage = 0
} else {
currentPage += 1
}
candidateView.highlightedIndex = 0 candidateView.highlightedIndex = 0
layoutCandidateView() layoutCandidateView()
return true return true
} }
public override func showPreviousPage() -> Bool { public override func showPreviousPage() -> Bool {
guard delegate != nil else { guard delegate != nil else {return false}
return false if pageCount == 1 {return highlightPreviousCandidate()}
} currentPage = (currentPage == 0) ? pageCount - 1 : currentPage - 1
if currentPage == 0 {
currentPage = pageCount - 1
} else {
currentPage -= 1
}
candidateView.highlightedIndex = 0 candidateView.highlightedIndex = 0
layoutCandidateView() layoutCandidateView()
return true return true
} }
public override func highlightNextCandidate() -> Bool { public override func highlightNextCandidate() -> Bool {
guard let delegate = delegate else { guard let delegate = delegate else {return false}
return false selectedCandidateIndex = (selectedCandidateIndex + 1 >= delegate.candidateCountForController(self)) ? 0 : selectedCandidateIndex + 1
}
let currentIndex = selectedCandidateIndex
if currentIndex + 1 >= delegate.candidateCountForController(self) {
return false
}
selectedCandidateIndex = currentIndex + 1
return true return true
} }
public override func highlightPreviousCandidate() -> Bool { public override func highlightPreviousCandidate() -> Bool {
guard delegate != nil else { guard let delegate = delegate else {return false}
return false selectedCandidateIndex = (selectedCandidateIndex == 0) ? delegate.candidateCountForController(self) - 1 : selectedCandidateIndex - 1
}
let currentIndex = selectedCandidateIndex
if currentIndex == 0 {
return false
}
selectedCandidateIndex = currentIndex - 1
return true return true
} }

View File

@ -300,15 +300,29 @@
</constraints> </constraints>
</view> </view>
</box> </box>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mwD-Yz-AU9">
<rect key="frame" x="346" y="12.5" width="94" height="17"/>
<buttonCell key="cell" type="check" title="Debug Mode" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="sZx-18-8dO">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<binding destination="32" name="value" keyPath="values._DebugMode" id="RsM-TR-7Lf"/>
</connections>
</button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="mwD-Yz-AU9" firstAttribute="baseline" secondItem="Fc2-qh-r1H" secondAttribute="baseline" id="0JL-hQ-6wv"/>
<constraint firstItem="2Y6-Am-WM1" firstAttribute="leading" secondItem="Uyz-xL-TVN" secondAttribute="leading" id="37f-ZR-zcC"/> <constraint firstItem="2Y6-Am-WM1" firstAttribute="leading" secondItem="Uyz-xL-TVN" secondAttribute="leading" id="37f-ZR-zcC"/>
<constraint firstItem="mwD-Yz-AU9" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Fc2-qh-r1H" secondAttribute="trailing" constant="8" symbolic="YES" id="46T-tt-c7b"/>
<constraint firstItem="Fc2-qh-r1H" firstAttribute="leading" secondItem="9TJ-dn-iXU" secondAttribute="leading" constant="27" id="BGq-cN-jpR"/> <constraint firstItem="Fc2-qh-r1H" firstAttribute="leading" secondItem="9TJ-dn-iXU" secondAttribute="leading" constant="27" id="BGq-cN-jpR"/>
<constraint firstAttribute="bottom" secondItem="Fc2-qh-r1H" secondAttribute="bottom" constant="13" id="DF3-YG-9e5"/> <constraint firstAttribute="bottom" secondItem="Fc2-qh-r1H" secondAttribute="bottom" constant="13" id="DF3-YG-9e5"/>
<constraint firstAttribute="trailing" secondItem="mwD-Yz-AU9" secondAttribute="trailing" constant="23" id="Vwp-g8-y63"/>
<constraint firstAttribute="trailing" secondItem="2Y6-Am-WM1" secondAttribute="trailing" constant="9" id="ZPe-b1-SbT"/> <constraint firstAttribute="trailing" secondItem="2Y6-Am-WM1" secondAttribute="trailing" constant="9" id="ZPe-b1-SbT"/>
<constraint firstItem="2Y6-Am-WM1" firstAttribute="top" secondItem="9TJ-dn-iXU" secondAttribute="top" constant="5" id="bJ6-j1-t07"/> <constraint firstItem="2Y6-Am-WM1" firstAttribute="top" secondItem="9TJ-dn-iXU" secondAttribute="top" constant="5" id="bJ6-j1-t07"/>
<constraint firstItem="2Y6-Am-WM1" firstAttribute="trailing" secondItem="Uyz-xL-TVN" secondAttribute="trailing" id="ewc-fS-Lds"/> <constraint firstItem="2Y6-Am-WM1" firstAttribute="trailing" secondItem="Uyz-xL-TVN" secondAttribute="trailing" id="ewc-fS-Lds"/>
<constraint firstItem="Uyz-xL-TVN" firstAttribute="top" secondItem="9TJ-dn-iXU" secondAttribute="top" constant="239" id="hBw-kZ-RWt"/> <constraint firstItem="Uyz-xL-TVN" firstAttribute="top" secondItem="9TJ-dn-iXU" secondAttribute="top" constant="239" id="hBw-kZ-RWt"/>
<constraint firstItem="mwD-Yz-AU9" firstAttribute="firstBaseline" secondItem="Fc2-qh-r1H" secondAttribute="firstBaseline" id="jda-kZ-9OZ"/>
<constraint firstItem="Fc2-qh-r1H" firstAttribute="top" secondItem="Uyz-xL-TVN" secondAttribute="bottom" constant="8" symbolic="YES" id="m8Q-6u-Xbr"/> <constraint firstItem="Fc2-qh-r1H" firstAttribute="top" secondItem="Uyz-xL-TVN" secondAttribute="bottom" constant="8" symbolic="YES" id="m8Q-6u-Xbr"/>
<constraint firstItem="2Y6-Am-WM1" firstAttribute="leading" secondItem="9TJ-dn-iXU" secondAttribute="leading" constant="9" id="pSQ-3h-nNK"/> <constraint firstItem="2Y6-Am-WM1" firstAttribute="leading" secondItem="9TJ-dn-iXU" secondAttribute="leading" constant="9" id="pSQ-3h-nNK"/>
<constraint firstItem="Uyz-xL-TVN" firstAttribute="top" secondItem="2Y6-Am-WM1" secondAttribute="bottom" constant="8" symbolic="YES" id="raC-bi-5o9"/> <constraint firstItem="Uyz-xL-TVN" firstAttribute="top" secondItem="2Y6-Am-WM1" secondAttribute="bottom" constant="8" symbolic="YES" id="raC-bi-5o9"/>
@ -318,17 +332,17 @@
</tabViewItem> </tabViewItem>
<tabViewItem label="Advanced" identifier="" id="xrE-8T-WKO"> <tabViewItem label="Advanced" identifier="" id="xrE-8T-WKO">
<view key="view" id="bZr-iP-F6T"> <view key="view" id="bZr-iP-F6T">
<rect key="frame" x="10" y="33" width="463" height="424"/> <rect key="frame" x="10" y="33" width="464" height="424"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<box title="Advanced Settings" translatesAutoresizingMaskIntoConstraints="NO" id="E1l-m8-xgb"> <box title="Advanced Settings" translatesAutoresizingMaskIntoConstraints="NO" id="E1l-m8-xgb">
<rect key="frame" x="6" y="179" width="451" height="240"/> <rect key="frame" x="6" y="117" width="452" height="302"/>
<view key="contentView" id="Zaa-dP-WdF"> <view key="contentView" id="Zaa-dP-WdF">
<rect key="frame" x="3" y="3" width="445" height="222"/> <rect key="frame" x="3" y="3" width="446" height="284"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField autoresizesSubviews="NO" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IpX-f7-rTL"> <textField autoresizesSubviews="NO" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IpX-f7-rTL">
<rect key="frame" x="18" y="191" width="410" height="16"/> <rect key="frame" x="18" y="253" width="410" height="16"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="16" id="AH9-nI-ozD"/> <constraint firstAttribute="height" constant="16" id="AH9-nI-ozD"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="406" id="xMo-mW-3aW"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="406" id="xMo-mW-3aW"/>
@ -340,7 +354,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uHU-aL-du7"> <comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uHU-aL-du7">
<rect key="frame" x="128" y="160" width="150" height="25"/> <rect key="frame" x="128" y="222" width="150" height="25"/>
<constraints> <constraints>
<constraint firstAttribute="width" constant="147" id="aJi-ff-WnC"/> <constraint firstAttribute="width" constant="147" id="aJi-ff-WnC"/>
</constraints> </constraints>
@ -359,7 +373,7 @@
</connections> </connections>
</comboBox> </comboBox>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ETa-09-qWI"> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ETa-09-qWI">
<rect key="frame" x="31" y="165" width="91" height="15"/> <rect key="frame" x="31" y="227" width="91" height="15"/>
<textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Selection Keys:" id="FnD-oH-El5"> <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Selection Keys:" id="FnD-oH-El5">
<font key="font" metaFont="cellTitle"/> <font key="font" metaFont="cellTitle"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -367,7 +381,7 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13"> <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
<rect key="frame" x="18" y="141" width="403" height="15"/> <rect key="frame" x="18" y="203" width="403" height="15"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="371" id="lJN-Yf-Fka"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="371" id="lJN-Yf-Fka"/>
</constraints> </constraints>
@ -378,9 +392,9 @@
</textFieldCell> </textFieldCell>
</textField> </textField>
<matrix verticalHuggingPriority="751" tag="1" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="15"> <matrix verticalHuggingPriority="751" tag="1" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="15">
<rect key="frame" x="33" y="93" width="402" height="40"/> <rect key="frame" x="33" y="157" width="402" height="38"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="402" height="19"/> <size key="cellSize" width="402" height="18"/>
<size key="intercellSpacing" width="4" height="2"/> <size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="18"> <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="18">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -402,25 +416,10 @@
<binding destination="32" name="selectedTag" keyPath="values.SelectPhraseAfterCursorAsCandidate" id="104"/> <binding destination="32" name="selectedTag" keyPath="values.SelectPhraseAfterCursorAsCandidate" id="104"/>
</connections> </connections>
</matrix> </matrix>
<button translatesAutoresizingMaskIntoConstraints="NO" id="109">
<rect key="frame" x="19" y="68.5" width="289" height="17"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="288" id="DZZ-LM-h2m"/>
<constraint firstAttribute="height" constant="16" id="lZq-1x-koI"/>
</constraints>
<buttonCell key="cell" type="check" title="Enable SPACE key for calling candidate window" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="110">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<binding destination="32" name="value" keyPath="values.ChooseCandidateUsingSpace" id="NU1-DG-vUz"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bE0-Lq-Pj7"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bE0-Lq-Pj7">
<rect key="frame" x="19" y="46.5" width="266" height="17"/> <rect key="frame" x="19" y="43.5" width="266" height="17"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="PX9-9G-dZz"/> <constraint firstAttribute="height" constant="16" id="2BB-Tu-KPL"/>
<constraint firstAttribute="height" constant="16" id="VKi-k7-llg"/>
</constraints> </constraints>
<buttonCell key="cell" type="check" title="Use ESC key to clear the entire input buffer" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="f2j-xD-4xK"> <buttonCell key="cell" type="check" title="Use ESC key to clear the entire input buffer" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="f2j-xD-4xK">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -431,10 +430,9 @@
</connections> </connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7z2-DD-c58"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7z2-DD-c58">
<rect key="frame" x="19" y="25.5" width="407" height="17"/> <rect key="frame" x="19" y="22.5" width="407" height="17"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="ZIc-th-1VJ"/> <constraint firstAttribute="height" constant="16" id="SEv-bA-Zgb"/>
<constraint firstAttribute="height" constant="16" id="ZUJ-yT-gaw"/>
</constraints> </constraints>
<buttonCell key="cell" type="check" title="Push the cursor to the front of the phrase after candidate selection" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="RUG-ls-KyA"> <buttonCell key="cell" type="check" title="Push the cursor to the front of the phrase after candidate selection" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="RUG-ls-KyA">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -444,81 +442,93 @@
<binding destination="32" name="value" keyPath="values.MoveCursorAfterSelectingCandidate" id="BbO-T6-zh3"/> <binding destination="32" name="value" keyPath="values.MoveCursorAfterSelectingCandidate" id="BbO-T6-zh3"/>
</connections> </connections>
</button> </button>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n7q-ew-DYu">
<rect key="frame" x="33" y="89" width="386" height="38"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="386" height="18"/>
<size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="6Hs-cH-sbg">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="Cycling Candidates" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="FVC-br-H57">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<buttonCell type="radio" title="Cycling Pages" imagePosition="left" alignment="left" controlSize="small" tag="1" inset="2" id="s7u-Fm-dVg">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
</column>
</cells>
<connections>
<binding destination="32" name="selectedTag" keyPath="values.SpecifyTabKeyBehavior" id="ZDp-6s-2lR"/>
</connections>
</matrix>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TMn-LX-3Ub">
<rect key="frame" x="18" y="134" width="376" height="15"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="Choose the behavior of (Shift+)Tab key in the candidate window." id="ueU-Rz-a1C">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="109">
<rect key="frame" x="19" y="65.5" width="288" height="17"/>
<buttonCell key="cell" type="check" title="Enable SPACE key for calling candidate window" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="110">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<binding destination="32" name="value" keyPath="values.ChooseCandidateUsingSpace" id="NU1-DG-vUz"/>
</connections>
</button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstItem="n7q-ew-DYu" firstAttribute="trailing" secondItem="13" secondAttribute="trailing" id="0h0-j4-7cc"/>
<constraint firstItem="7z2-DD-c58" firstAttribute="top" secondItem="bE0-Lq-Pj7" secondAttribute="bottom" constant="5" id="2qc-vg-IJ1"/>
<constraint firstItem="uHU-aL-du7" firstAttribute="leading" secondItem="ETa-09-qWI" secondAttribute="trailing" constant="8" symbolic="YES" id="3KF-Tb-0Tz"/> <constraint firstItem="uHU-aL-du7" firstAttribute="leading" secondItem="ETa-09-qWI" secondAttribute="trailing" constant="8" symbolic="YES" id="3KF-Tb-0Tz"/>
<constraint firstItem="7z2-DD-c58" firstAttribute="leading" secondItem="bE0-Lq-Pj7" secondAttribute="leading" id="3bj-ct-oCo"/> <constraint firstItem="15" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" symbolic="YES" id="3fd-BG-6Jx"/>
<constraint firstItem="15" firstAttribute="leading" secondItem="n7q-ew-DYu" secondAttribute="leading" id="5Dm-qA-qLH"/>
<constraint firstAttribute="trailing" secondItem="TMn-LX-3Ub" secondAttribute="trailing" constant="54" id="5Tp-rD-xca"/>
<constraint firstItem="15" firstAttribute="leading" secondItem="ETa-09-qWI" secondAttribute="leading" id="5k7-2k-aLK"/>
<constraint firstItem="bE0-Lq-Pj7" firstAttribute="leading" secondItem="7z2-DD-c58" secondAttribute="leading" id="8pc-8H-bgi"/>
<constraint firstItem="TMn-LX-3Ub" firstAttribute="leading" secondItem="Zaa-dP-WdF" secondAttribute="leading" constant="20" symbolic="YES" id="9ed-h6-bOl"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="13" secondAttribute="trailing" constant="71" id="D0Q-CG-6LS"/> <constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="13" secondAttribute="trailing" constant="71" id="D0Q-CG-6LS"/>
<constraint firstItem="uHU-aL-du7" firstAttribute="top" secondItem="IpX-f7-rTL" secondAttribute="bottom" constant="8" id="Di9-bm-CIq"/> <constraint firstItem="uHU-aL-du7" firstAttribute="top" secondItem="IpX-f7-rTL" secondAttribute="bottom" constant="8" id="Di9-bm-CIq"/>
<constraint firstItem="TMn-LX-3Ub" firstAttribute="leading" secondItem="13" secondAttribute="leading" id="DnS-Aj-hOl"/>
<constraint firstItem="7z2-DD-c58" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IpX-f7-rTL" secondAttribute="trailing" id="Eer-u6-4rD"/>
<constraint firstItem="ETa-09-qWI" firstAttribute="centerY" secondItem="uHU-aL-du7" secondAttribute="centerY" constant="1" id="FHZ-PV-14v"/> <constraint firstItem="ETa-09-qWI" firstAttribute="centerY" secondItem="uHU-aL-du7" secondAttribute="centerY" constant="1" id="FHZ-PV-14v"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="bE0-Lq-Pj7" secondAttribute="trailing" constant="208" id="FhD-OS-9RF"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="109" secondAttribute="trailing" constant="154" id="LMr-eu-xAG"/>
<constraint firstItem="ETa-09-qWI" firstAttribute="firstBaseline" secondItem="uHU-aL-du7" secondAttribute="firstBaseline" constant="1" id="OnR-PS-PDx"/> <constraint firstItem="ETa-09-qWI" firstAttribute="firstBaseline" secondItem="uHU-aL-du7" secondAttribute="firstBaseline" constant="1" id="OnR-PS-PDx"/>
<constraint firstItem="13" firstAttribute="top" secondItem="uHU-aL-du7" secondAttribute="bottom" constant="8" id="Oq3-TL-cYE"/> <constraint firstItem="13" firstAttribute="top" secondItem="uHU-aL-du7" secondAttribute="bottom" constant="8" id="Oq3-TL-cYE"/>
<constraint firstItem="IpX-f7-rTL" firstAttribute="top" secondItem="Zaa-dP-WdF" secondAttribute="top" constant="15" id="QXa-JH-WOl"/> <constraint firstItem="IpX-f7-rTL" firstAttribute="top" secondItem="Zaa-dP-WdF" secondAttribute="top" constant="15" id="QXa-JH-WOl"/>
<constraint firstItem="ETa-09-qWI" firstAttribute="baseline" secondItem="uHU-aL-du7" secondAttribute="firstBaseline" constant="1" id="QzY-qa-SJw"/> <constraint firstItem="ETa-09-qWI" firstAttribute="baseline" secondItem="uHU-aL-du7" secondAttribute="firstBaseline" constant="1" id="QzY-qa-SJw"/>
<constraint firstItem="bE0-Lq-Pj7" firstAttribute="top" secondItem="109" secondAttribute="bottom" constant="6" symbolic="YES" id="cT2-FV-Or9"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="109" secondAttribute="trailing" constant="20" symbolic="YES" id="YLS-EG-Wz9"/>
<constraint firstItem="109" firstAttribute="leading" secondItem="bE0-Lq-Pj7" secondAttribute="leading" id="cvg-BI-hdw"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bE0-Lq-Pj7" secondAttribute="trailing" constant="20" symbolic="YES" id="dBh-2u-jwE"/>
<constraint firstItem="7z2-DD-c58" firstAttribute="centerX" secondItem="Zaa-dP-WdF" secondAttribute="centerX" id="dQE-Aq-dEH"/>
<constraint firstItem="IpX-f7-rTL" firstAttribute="leading" secondItem="13" secondAttribute="leading" id="dXS-M3-fDf"/> <constraint firstItem="IpX-f7-rTL" firstAttribute="leading" secondItem="13" secondAttribute="leading" id="dXS-M3-fDf"/>
<constraint firstItem="109" firstAttribute="leading" secondItem="bE0-Lq-Pj7" secondAttribute="leading" id="ePO-mn-wZM"/> <constraint firstItem="TMn-LX-3Ub" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" symbolic="YES" id="e1i-5L-zYg"/>
<constraint firstAttribute="trailing" secondItem="7z2-DD-c58" secondAttribute="trailing" constant="19" id="gu0-F2-6CK"/> <constraint firstItem="bE0-Lq-Pj7" firstAttribute="top" secondItem="109" secondAttribute="bottom" constant="6" symbolic="YES" id="e3r-jQ-JVU"/>
<constraint firstItem="7z2-DD-c58" firstAttribute="top" secondItem="bE0-Lq-Pj7" secondAttribute="bottom" constant="5" id="h6e-x2-Tqk"/> <constraint firstItem="n7q-ew-DYu" firstAttribute="top" secondItem="TMn-LX-3Ub" secondAttribute="bottom" constant="7" id="hsj-M1-mVj"/>
<constraint firstItem="ETa-09-qWI" firstAttribute="leading" secondItem="Zaa-dP-WdF" secondAttribute="leading" constant="33" id="jMc-w0-nTn"/> <constraint firstItem="ETa-09-qWI" firstAttribute="leading" secondItem="Zaa-dP-WdF" secondAttribute="leading" constant="33" id="jMc-w0-nTn"/>
<constraint firstItem="109" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="8" id="jW8-k4-5sl"/> <constraint firstItem="TMn-LX-3Ub" firstAttribute="leading" secondItem="109" secondAttribute="leading" id="nMh-aU-qa9"/>
<constraint firstItem="15" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" id="mY6-fM-KSH"/>
<constraint firstItem="15" firstAttribute="leading" secondItem="ETa-09-qWI" secondAttribute="leading" id="o4v-uI-Y3a"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="IpX-f7-rTL" secondAttribute="trailing" constant="36" id="pqa-tx-4pg"/> <constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="IpX-f7-rTL" secondAttribute="trailing" constant="36" id="pqa-tx-4pg"/>
<constraint firstItem="109" firstAttribute="leading" secondItem="Zaa-dP-WdF" secondAttribute="leading" constant="20" symbolic="YES" id="tRQ-NF-XQS"/> <constraint firstAttribute="bottom" secondItem="7z2-DD-c58" secondAttribute="bottom" constant="22.5" id="qMh-n9-Sex"/>
<constraint firstItem="109" firstAttribute="leading" secondItem="IpX-f7-rTL" secondAttribute="leading" id="yea-b7-cDv"/> <constraint firstItem="109" firstAttribute="top" secondItem="n7q-ew-DYu" secondAttribute="bottom" constant="7" id="rfz-Dp-TPC"/>
</constraints> </constraints>
</view> </view>
</box> </box>
<box title="Dictionary Settings" translatesAutoresizingMaskIntoConstraints="NO" id="s4r-ji-vbr"> <box title="Dictionary Settings" translatesAutoresizingMaskIntoConstraints="NO" id="s4r-ji-vbr">
<rect key="frame" x="6" y="10" width="451" height="165"/> <rect key="frame" x="6" y="10" width="452" height="103"/>
<view key="contentView" id="rWB-y8-q94"> <view key="contentView" id="rWB-y8-q94">
<rect key="frame" x="3" y="3" width="445" height="147"/> <rect key="frame" x="3" y="3" width="446" height="85"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dnE-Vw-KrP">
<rect key="frame" x="18" y="117" width="323" height="15"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="231" id="MzY-w8-DKW"/>
</constraints>
<textFieldCell key="cell" lineBreakMode="clipping" title="Define your preferred action when user data files reload." id="j48-5a-cEs">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="1hA-Po-5li">
<rect key="frame" x="19" y="94.5" width="401" height="17"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="288" id="0mm-CA-Mxs"/>
<constraint firstAttribute="height" constant="16" id="c3e-cU-pEw"/>
</constraints>
<buttonCell key="cell" type="check" title="Sort entries when reloading user phrases and excluded phrases list" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="Li3-Yg-SOC">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<binding destination="32" name="value" keyPath="values.ShouldAutoSortUserPhrasesAndExclListOnLoad" id="k4w-CX-EfE"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nnT-wS-mZo">
<rect key="frame" x="19" y="72.5" width="342" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="16" id="IBn-Xf-uEw"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="srn-3X-kPi"/>
</constraints>
<buttonCell key="cell" type="check" title="Sort entries when reloading the phrase replacement map" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="o60-vW-i1B">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="cellTitle"/>
</buttonCell>
<connections>
<binding destination="32" name="value" keyPath="values.ShouldAutoSortPhraseReplacementMapOnLoad" id="Xn2-So-Dp3"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="p7V-IN-OTr"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="p7V-IN-OTr">
<rect key="frame" x="19" y="51.5" width="336" height="17"/> <rect key="frame" x="19" y="55.5" width="336" height="17"/>
<constraints> <constraints>
<constraint firstAttribute="height" constant="16" id="8eX-Tw-Erk"/> <constraint firstAttribute="height" constant="16" id="8eX-Tw-Erk"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="yhP-XF-CQj"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="yhP-XF-CQj"/>
@ -533,22 +543,13 @@
</button> </button>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="dnE-Vw-KrP" secondAttribute="trailing" constant="214" id="3wA-Rn-cTn"/> <constraint firstItem="p7V-IN-OTr" firstAttribute="leading" secondItem="rWB-y8-q94" secondAttribute="leading" constant="20" symbolic="YES" id="Hv7-uF-IXh"/>
<constraint firstItem="nnT-wS-mZo" firstAttribute="leading" secondItem="p7V-IN-OTr" secondAttribute="leading" id="4di-W1-ufn"/>
<constraint firstItem="1hA-Po-5li" firstAttribute="leading" secondItem="nnT-wS-mZo" secondAttribute="leading" id="Cfb-2F-MRg"/>
<constraint firstItem="1hA-Po-5li" firstAttribute="leading" secondItem="dnE-Vw-KrP" secondAttribute="leading" id="Exw-iA-Unz"/>
<constraint firstItem="1hA-Po-5li" firstAttribute="top" secondItem="dnE-Vw-KrP" secondAttribute="bottom" constant="6.5" id="HrQ-4q-l78"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="p7V-IN-OTr" secondAttribute="trailing" constant="20" symbolic="YES" id="MFR-05-QJN"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="p7V-IN-OTr" secondAttribute="trailing" constant="20" symbolic="YES" id="MFR-05-QJN"/>
<constraint firstItem="dnE-Vw-KrP" firstAttribute="leading" secondItem="rWB-y8-q94" secondAttribute="leading" constant="20" id="QQJ-7P-HAG"/> <constraint firstItem="p7V-IN-OTr" firstAttribute="top" secondItem="rWB-y8-q94" secondAttribute="top" constant="13.5" id="MTI-N4-JSK"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="nnT-wS-mZo" secondAttribute="trailing" constant="101" id="QsT-xW-prJ"/>
<constraint firstItem="dnE-Vw-KrP" firstAttribute="top" secondItem="rWB-y8-q94" secondAttribute="top" constant="15" id="Vzj-xd-Q2W"/>
<constraint firstItem="p7V-IN-OTr" firstAttribute="top" secondItem="nnT-wS-mZo" secondAttribute="bottom" constant="5" id="gRe-fD-67h"/>
<constraint firstAttribute="trailing" relation="lessThanOrEqual" secondItem="1hA-Po-5li" secondAttribute="trailing" constant="39" id="quD-Rd-uwL"/>
<constraint firstItem="nnT-wS-mZo" firstAttribute="top" secondItem="1hA-Po-5li" secondAttribute="bottom" constant="6" symbolic="YES" id="zxn-Pa-o6f"/>
</constraints> </constraints>
</view> </view>
<constraints> <constraints>
<constraint firstAttribute="height" constant="161" id="mfq-di-Kby"/> <constraint firstAttribute="height" constant="99" id="mfq-di-Kby"/>
</constraints> </constraints>
</box> </box>
</subviews> </subviews>

View File

@ -2,6 +2,9 @@
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */ /* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
"1.title" = "vChewing Preferences"; "1.title" = "vChewing Preferences";
/* Class = "NSButtonCell"; title = "Debug Mode"; ObjectID = "sZx-18-8dO"; */
"sZx-18-8dO.title" = "Debug Mode";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
"5.title" = "OtherViews"; "5.title" = "OtherViews";
@ -131,9 +134,6 @@
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */ /* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
"GlJ-Ns-9eE.title" = "Auto-Select"; "GlJ-Ns-9eE.title" = "Auto-Select";
/* Class = "NSButtonCell"; title = "Sort entries when reloading user phrases and excluded phrases list"; ObjectID = "Li3-Yg-SOC"; */
"Li3-Yg-SOC.title" = "Sort entries when reloading user phrases and excluded phrases list";
/* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */ /* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */
"QUQ-oY-4Hc.label" = "General"; "QUQ-oY-4Hc.label" = "General";
@ -173,9 +173,6 @@
/* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */ /* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */
"iRg-wx-Nx2.title" = "Change UI font size of candidate window for a better visual clarity."; "iRg-wx-Nx2.title" = "Change UI font size of candidate window for a better visual clarity.";
/* Class = "NSTextFieldCell"; title = "Define your preferred action when user data files reload."; ObjectID = "j48-5a-cEs"; */
"j48-5a-cEs.title" = "Define your preferred action when user data files reload.";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; "jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
@ -185,9 +182,6 @@
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; "jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
/* Class = "NSButtonCell"; title = "Sort entries when reloading the phrase replacement map"; ObjectID = "o60-vW-i1B"; */
"o60-vW-i1B.title" = "Sort entries when reloading the phrase replacement map";
/* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */ /* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */
"rVQ-Hx-cGi.title" = "Japanese"; "rVQ-Hx-cGi.title" = "Japanese";

View File

@ -2,6 +2,9 @@
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */ /* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
"1.title" = "威注音アプリ機能設定"; "1.title" = "威注音アプリ機能設定";
/* Class = "NSButtonCell"; title = "Debug Mode"; ObjectID = "sZx-18-8dO"; */
"sZx-18-8dO.title" = "欠陥辿着モード";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
"5.title" = "OtherViews"; "5.title" = "OtherViews";
@ -131,9 +134,6 @@
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */ /* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
"GlJ-Ns-9eE.title" = "システム設定に準ずる"; "GlJ-Ns-9eE.title" = "システム設定に準ずる";
/* Class = "NSButtonCell"; title = "Sort entries when reloading user phrases and excluded phrases list"; ObjectID = "Li3-Yg-SOC"; */
"Li3-Yg-SOC.title" = "ユーザー辞書と条目排除表を読み込むときに、内容の順番を整う";
/* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */ /* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */
"QUQ-oY-4Hc.label" = "全般"; "QUQ-oY-4Hc.label" = "全般";
@ -173,9 +173,6 @@
/* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */ /* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */
"iRg-wx-Nx2.title" = "入力候補陣列の候補文字の字号をご指定ください。"; "iRg-wx-Nx2.title" = "入力候補陣列の候補文字の字号をご指定ください。";
/* Class = "NSTextFieldCell"; title = "Define your preferred action when user data files reload."; ObjectID = "j48-5a-cEs"; */
"j48-5a-cEs.title" = "ユーザー辞書データの読み込む時のやることをご指示ください。";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; "jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
@ -185,9 +182,6 @@
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; "jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
/* Class = "NSButtonCell"; title = "Sort entries when reloading the phrase replacement map"; ObjectID = "o60-vW-i1B"; */
"o60-vW-i1B.title" = "言葉置換表を読み込むときに、内容の順番を整う";
/* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */ /* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */
"rVQ-Hx-cGi.title" = "和語"; "rVQ-Hx-cGi.title" = "和語";

View File

@ -2,6 +2,9 @@
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */ /* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
"1.title" = "威注音偏好设定"; "1.title" = "威注音偏好设定";
/* Class = "NSButtonCell"; title = "Debug Mode"; ObjectID = "sZx-18-8dO"; */
"sZx-18-8dO.title" = "侦错模式";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
"5.title" = "OtherViews"; "5.title" = "OtherViews";
@ -131,9 +134,6 @@
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */ /* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
"GlJ-Ns-9eE.title" = "自动选择"; "GlJ-Ns-9eE.title" = "自动选择";
/* Class = "NSButtonCell"; title = "Sort entries when reloading user phrases and excluded phrases list"; ObjectID = "Li3-Yg-SOC"; */
"Li3-Yg-SOC.title" = "在重新加载自订语汇与滤除语汇时,统整档案内容排序";
/* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */ /* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */
"QUQ-oY-4Hc.label" = "一般"; "QUQ-oY-4Hc.label" = "一般";
@ -173,9 +173,6 @@
/* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */ /* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */
"iRg-wx-Nx2.title" = "变更候选字窗的字型大小。"; "iRg-wx-Nx2.title" = "变更候选字窗的字型大小。";
/* Class = "NSTextFieldCell"; title = "Define your preferred action when user data files reload."; ObjectID = "j48-5a-cEs"; */
"j48-5a-cEs.title" = "请指定在使用者资料重载时要启用的功能。";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; "jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
@ -185,9 +182,6 @@
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; "jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
/* Class = "NSButtonCell"; title = "Sort entries when reloading the phrase replacement map"; ObjectID = "o60-vW-i1B"; */
"o60-vW-i1B.title" = "在重新加载语汇滤除表时,统整档案内容排序";
/* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */ /* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */
"rVQ-Hx-cGi.title" = "和语"; "rVQ-Hx-cGi.title" = "和语";

View File

@ -2,6 +2,9 @@
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */ /* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
"1.title" = "威注音偏好設定"; "1.title" = "威注音偏好設定";
/* Class = "NSButtonCell"; title = "Debug Mode"; ObjectID = "sZx-18-8dO"; */
"sZx-18-8dO.title" = "偵錯模式";
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */ /* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
"5.title" = "OtherViews"; "5.title" = "OtherViews";
@ -131,9 +134,6 @@
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */ /* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
"GlJ-Ns-9eE.title" = "自動選擇"; "GlJ-Ns-9eE.title" = "自動選擇";
/* Class = "NSButtonCell"; title = "Sort entries when reloading user phrases and excluded phrases list"; ObjectID = "Li3-Yg-SOC"; */
"Li3-Yg-SOC.title" = "在重新載入自訂語彙與濾除語彙時,統整檔案內容排序";
/* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */ /* Class = "NSTabViewItem"; label = "General"; ObjectID = "QUQ-oY-4Hc"; */
"QUQ-oY-4Hc.label" = "一般"; "QUQ-oY-4Hc.label" = "一般";
@ -173,9 +173,6 @@
/* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */ /* Class = "NSTextFieldCell"; title = "Change UI font size of candidate window for a better visual clarity."; ObjectID = "iRg-wx-Nx2"; */
"iRg-wx-Nx2.title" = "變更候選字窗的字型大小。"; "iRg-wx-Nx2.title" = "變更候選字窗的字型大小。";
/* Class = "NSTextFieldCell"; title = "Define your preferred action when user data files reload."; ObjectID = "j48-5a-cEs"; */
"j48-5a-cEs.title" = "請指定在使用者數據重載時要啟用的功能。";
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[0] = "Item 1"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1"; "jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
@ -185,9 +182,6 @@
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */ /* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3"; "jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
/* Class = "NSButtonCell"; title = "Sort entries when reloading the phrase replacement map"; ObjectID = "o60-vW-i1B"; */
"o60-vW-i1B.title" = "在重新載入語彙濾除表時,統整檔案內容排序";
/* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */ /* Class = "NSMenuItem"; title = "Japanese"; ObjectID = "rVQ-Hx-cGi"; */
"rVQ-Hx-cGi.title" = "和語"; "rVQ-Hx-cGi.title" = "和語";

View File

@ -3,9 +3,9 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>UpdateInfoEndpoint</key> <key>UpdateInfoEndpoint</key>
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string> <string>https://jihulab.com/vChewing/vChewing-macOS/-/raw/main/Update-Info.plist</string>
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>
<string>https://gitee.com/vchewing/vChewing-macOS</string> <string>https://jihulab.com/vChewing/vChewing-macOS</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1923</string> <string>1923</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>

View File

@ -1249,7 +1249,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1268,7 +1268,7 @@
INFOPLIST_KEY_NSPrincipalClass = NSApplication; INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1301,7 +1301,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1315,7 +1315,7 @@
INFOPLIST_KEY_NSPrincipalClass = NSApplication; INFOPLIST_KEY_NSPrincipalClass = NSApplication;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1345,7 +1345,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle; DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1364,7 +1364,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = ""; INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 12.1; MACOSX_DEPLOYMENT_TARGET = 12.1;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension;
@ -1396,7 +1396,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle; DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1410,7 +1410,7 @@
INFOPLIST_KEY_NSHumanReadableCopyright = ""; INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 12.1; MACOSX_DEPLOYMENT_TARGET = 12.1;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension;
@ -1526,7 +1526,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1558,7 +1558,7 @@
INFOPLIST_FILE = "Source/Resources/IME-Info.plist"; INFOPLIST_FILE = "Source/Resources/IME-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@ -1591,7 +1591,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
@ -1617,7 +1617,7 @@
INFOPLIST_FILE = "Source/Resources/IME-Info.plist"; INFOPLIST_FILE = "Source/Resources/IME-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1700,7 +1700,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1722,7 +1722,7 @@
INFOPLIST_FILE = "Installer/Installer-Info.plist"; INFOPLIST_FILE = "Installer/Installer-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@ -1750,7 +1750,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1923; CURRENT_PROJECT_VERSION = 1924;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1766,7 +1766,7 @@
INFOPLIST_FILE = "Installer/Installer-Info.plist"; INFOPLIST_FILE = "Installer/Installer-Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.3.4; MARKETING_VERSION = 1.3.5;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";