SessionCtl // Add candidatePairRightClicked().
This commit is contained in:
parent
dd964b3c40
commit
1d593b490f
|
@ -11,6 +11,7 @@ import Cocoa
|
||||||
public protocol CtlCandidateDelegate {
|
public protocol CtlCandidateDelegate {
|
||||||
func candidatePairs(conv: Bool) -> [(String, String)]
|
func candidatePairs(conv: Bool) -> [(String, String)]
|
||||||
func candidatePairSelected(at index: Int)
|
func candidatePairSelected(at index: Int)
|
||||||
|
func candidatePairRightClicked(at index: Int, action: CandidateContextMenuAction)
|
||||||
func candidates(_ sender: Any!) -> [Any]!
|
func candidates(_ sender: Any!) -> [Any]!
|
||||||
@discardableResult func reverseLookup(for value: String) -> [String]
|
@discardableResult func reverseLookup(for value: String) -> [String]
|
||||||
var selectionKeys: String { get }
|
var selectionKeys: String { get }
|
||||||
|
@ -44,3 +45,9 @@ public protocol CtlCandidateProtocol {
|
||||||
func candidateIndexAtKeyLabelIndex(_: Int) -> Int
|
func candidateIndexAtKeyLabelIndex(_: Int) -> Int
|
||||||
func set(windowTopLeftPoint: NSPoint, bottomOutOfScreenAdjustmentHeight height: Double, useGCD: Bool)
|
func set(windowTopLeftPoint: NSPoint, bottomOutOfScreenAdjustmentHeight height: Double, useGCD: Bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum CandidateContextMenuAction {
|
||||||
|
case toBoost
|
||||||
|
case toNerf
|
||||||
|
case toFilter
|
||||||
|
}
|
||||||
|
|
|
@ -154,4 +154,55 @@ extension SessionCtl: CtlCandidateDelegate {
|
||||||
switchState(IMEState.ofEmpty())
|
switchState(IMEState.ofEmpty())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func candidatePairRightClicked(at index: Int, action: CandidateContextMenuAction) {
|
||||||
|
guard isCandidateContextMenuEnabled else { return }
|
||||||
|
var succeeded = true
|
||||||
|
|
||||||
|
let rawPair = state.candidates[index]
|
||||||
|
let valueCurrent = rawPair.1
|
||||||
|
let valueReversed = ChineseConverter.crossConvert(rawPair.1)
|
||||||
|
let nerfedScore = (action == .toNerf) ? " -114.514" : ""
|
||||||
|
let convertedMark = "#𝙃𝙪𝙢𝙖𝙣𝘾𝙝𝙚𝙘𝙠𝙍𝙚𝙦𝙪𝙞𝙧𝙚𝙙"
|
||||||
|
|
||||||
|
let userPhraseDumped = "\(valueCurrent) \(rawPair.0)\(nerfedScore)"
|
||||||
|
let userPhraseDumpedConverted = "\(valueReversed) \(rawPair.0)\(nerfedScore)\t\(convertedMark)"
|
||||||
|
|
||||||
|
if !LMMgr.writeUserPhrase(
|
||||||
|
userPhraseDumped, inputMode: inputMode,
|
||||||
|
areWeDuplicating: action != .toFilter,
|
||||||
|
areWeDeleting: action == .toFilter
|
||||||
|
)
|
||||||
|
|| !LMMgr.writeUserPhrase(
|
||||||
|
userPhraseDumpedConverted, inputMode: inputMode.reversed,
|
||||||
|
areWeDuplicating: action != .toFilter,
|
||||||
|
areWeDeleting: action == .toFilter
|
||||||
|
)
|
||||||
|
{
|
||||||
|
succeeded = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 開始針對使用者半衰模組的清詞處理
|
||||||
|
LMMgr.bleachSpecifiedSuggestions(targets: [valueCurrent], mode: IMEApp.currentInputMode)
|
||||||
|
LMMgr.bleachSpecifiedSuggestions(targets: [valueReversed], mode: IMEApp.currentInputMode.reversed)
|
||||||
|
// 清詞完畢
|
||||||
|
|
||||||
|
var newState = IMEState.ofCommitting(textToCommit: state.displayedText)
|
||||||
|
newState.tooltipDuration = 1.85
|
||||||
|
var tooltipMessage = ""
|
||||||
|
switch action {
|
||||||
|
case .toBoost:
|
||||||
|
newState.data.tooltipColorState = .normal
|
||||||
|
tooltipMessage = succeeded ? "+ Succeeded in boosting a candidate." : "⚠︎ Failed from boosting a candidate."
|
||||||
|
case .toNerf:
|
||||||
|
newState.data.tooltipColorState = .succeeded
|
||||||
|
tooltipMessage = succeeded ? "- Succeeded in nerfing a candidate." : "⚠︎ Failed from nerfing a candidate."
|
||||||
|
case .toFilter:
|
||||||
|
newState.data.tooltipColorState = .warning
|
||||||
|
tooltipMessage = succeeded ? "! Succeeded in filtering a candidate." : "⚠︎ Failed from filtering a candidate."
|
||||||
|
}
|
||||||
|
if !succeeded { newState.data.tooltipColorState = .redAlert }
|
||||||
|
newState.tooltip = NSLocalizedString(tooltipMessage, comment: "") + " "
|
||||||
|
switchState(newState)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
"vChewing" = "vChewing";
|
"vChewing" = "vChewing";
|
||||||
|
"⚠︎ Failed from boosting a candidate." = "⚠︎ Failed from boosting a candidate.";
|
||||||
|
"⚠︎ Failed from nerfing a candidate." = "⚠︎ Failed from nerfing a candidate.";
|
||||||
|
"⚠︎ Failed from filtering a candidate." = "⚠︎ Failed from filtering a candidate.";
|
||||||
|
"+ Succeeded in boosting a candidate." = "+ Succeeded in boosting a candidate.";
|
||||||
|
"- Succeeded in nerfing a candidate." = "- Succeeded in nerfing a candidate.";
|
||||||
|
"! Succeeded in filtering a candidate." = "! Succeeded in filtering a candidate.";
|
||||||
"! Succeeded in filtering a user phrase." = "! Succeeded in filtering a user phrase.";
|
"! Succeeded in filtering a user phrase." = "! Succeeded in filtering a user phrase.";
|
||||||
"- Succeeded in nerfing a user phrase." = "- Succeeded in nerfing a user phrase.";
|
"- Succeeded in nerfing a user phrase." = "- Succeeded in nerfing a user phrase.";
|
||||||
"+ Succeeded in adding / boosting a user phrase." = "+ Succeeded in adding / boosting a user phrase.";
|
"+ Succeeded in adding / boosting a user phrase." = "+ Succeeded in adding / boosting a user phrase.";
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
"vChewing" = "vChewing";
|
"vChewing" = "vChewing";
|
||||||
|
"⚠︎ Failed from boosting a candidate." = "⚠︎ Failed from boosting a candidate.";
|
||||||
|
"⚠︎ Failed from nerfing a candidate." = "⚠︎ Failed from nerfing a candidate.";
|
||||||
|
"⚠︎ Failed from filtering a candidate." = "⚠︎ Failed from filtering a candidate.";
|
||||||
|
"+ Succeeded in boosting a candidate." = "+ Succeeded in boosting a candidate.";
|
||||||
|
"- Succeeded in nerfing a candidate." = "- Succeeded in nerfing a candidate.";
|
||||||
|
"! Succeeded in filtering a candidate." = "! Succeeded in filtering a candidate.";
|
||||||
"! Succeeded in filtering a user phrase." = "! Succeeded in filtering a user phrase.";
|
"! Succeeded in filtering a user phrase." = "! Succeeded in filtering a user phrase.";
|
||||||
"- Succeeded in nerfing a user phrase." = "- Succeeded in nerfing a user phrase.";
|
"- Succeeded in nerfing a user phrase." = "- Succeeded in nerfing a user phrase.";
|
||||||
"+ Succeeded in adding / boosting a user phrase." = "+ Succeeded in adding / boosting a user phrase.";
|
"+ Succeeded in adding / boosting a user phrase." = "+ Succeeded in adding / boosting a user phrase.";
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
"vChewing" = "威注音入力アプリ";
|
"vChewing" = "威注音入力アプリ";
|
||||||
|
"⚠︎ Failed from boosting a candidate." = "⚠︎ 指定された文字候補の順位は最優先にできませんでした。";
|
||||||
|
"⚠︎ Failed from nerfing a candidate." = "⚠︎ 指定された文字候補の優先順位を下げることに失敗ししました。";
|
||||||
|
"⚠︎ Failed from filtering a candidate." = "⚠︎ 指定された文字候補は排除表に登録できませんでした。";
|
||||||
|
"+ Succeeded in boosting a candidate." = "+ 指定された文字候補の順位は最優先にしました。";
|
||||||
|
"- Succeeded in nerfing a candidate." = "- 指定された文字候補の優先順位を下げました。";
|
||||||
|
"! Succeeded in filtering a candidate." = "! 指定された文字候補は排除表に登録しました。";
|
||||||
"! Succeeded in filtering a user phrase." = "! この語彙は排除表に登録完了。";
|
"! Succeeded in filtering a user phrase." = "! この語彙は排除表に登録完了。";
|
||||||
"- Succeeded in nerfing a user phrase." = "- この語彙の(候補としての)優先順位を下げました。";
|
"- Succeeded in nerfing a user phrase." = "- この語彙の(候補としての)優先順位を下げました。";
|
||||||
"+ Succeeded in adding / boosting a user phrase." = "+ 新しいユーザー候補を登録完了、\n或いはその既存候補の順位を最優先にしました。";
|
"+ Succeeded in adding / boosting a user phrase." = "+ 新しいユーザー候補を登録完了、\n或いはその既存候補の順位を最優先にしました。";
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
"vChewing" = "威注音输入法";
|
"vChewing" = "威注音输入法";
|
||||||
|
"⚠︎ Failed from boosting a candidate." = "⚠︎ 候选字词提权失败。";
|
||||||
|
"⚠︎ Failed from nerfing a candidate." = "⚠︎ 候选字词降权失败。";
|
||||||
|
"⚠︎ Failed from filtering a candidate." = "⚠︎ 候选字词滤除失败。";
|
||||||
|
"+ Succeeded in boosting a candidate." = "+ 候选字词提权成功。";
|
||||||
|
"- Succeeded in nerfing a candidate." = "- 候选字词降权成功。";
|
||||||
|
"! Succeeded in filtering a candidate." = "! 候选字词滤除成功。";
|
||||||
"! Succeeded in filtering a user phrase." = "! 成功滤除该词音配对。";
|
"! Succeeded in filtering a user phrase." = "! 成功滤除该词音配对。";
|
||||||
"- Succeeded in nerfing a user phrase." = "- 成功将该词音配对降权处理。";
|
"- Succeeded in nerfing a user phrase." = "- 成功将该词音配对降权处理。";
|
||||||
"+ Succeeded in adding / boosting a user phrase." = "+ 成功添入使用者语汇(或使其升权)。";
|
"+ Succeeded in adding / boosting a user phrase." = "+ 成功添入使用者语汇(或使其升权)。";
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
"vChewing" = "威注音輸入法";
|
"vChewing" = "威注音輸入法";
|
||||||
|
"⚠︎ Failed from boosting a candidate." = "⚠︎ 候選字詞提權失敗。";
|
||||||
|
"⚠︎ Failed from nerfing a candidate." = "⚠︎ 候選字詞降權失敗。";
|
||||||
|
"⚠︎ Failed from filtering a candidate." = "⚠︎ 候選字詞濾除失敗。";
|
||||||
|
"+ Succeeded in boosting a candidate." = "+ 候選字詞提權成功。";
|
||||||
|
"- Succeeded in nerfing a candidate." = "- 候選字詞降權成功。";
|
||||||
|
"! Succeeded in filtering a candidate." = "! 候選字詞濾除成功。";
|
||||||
"! Succeeded in filtering a user phrase." = "! 成功濾除該詞音配對。";
|
"! Succeeded in filtering a user phrase." = "! 成功濾除該詞音配對。";
|
||||||
"- Succeeded in nerfing a user phrase." = "- 成功將該詞音配對降權處理。";
|
"- Succeeded in nerfing a user phrase." = "- 成功將該詞音配對降權處理。";
|
||||||
"+ Succeeded in adding / boosting a user phrase." = "+ 成功添入使用者語彙(或使其升權)。";
|
"+ Succeeded in adding / boosting a user phrase." = "+ 成功添入使用者語彙(或使其升權)。";
|
||||||
|
|
Loading…
Reference in New Issue