feat: use searchable themed translation language picker
This commit is contained in:
@@ -220,23 +220,15 @@ final class TranslationController: NSViewController {
|
||||
}
|
||||
|
||||
private func chooseLanguage(source: Bool) {
|
||||
let menu = NSMenu(title: source ? "Source language" : "Target language")
|
||||
for code in Self.languages {
|
||||
let item = NSMenuItem(title: languageName(code), action: #selector(languageSelected(_:)), keyEquivalent: "")
|
||||
item.target = self
|
||||
item.representedObject = code
|
||||
item.tag = source ? 0 : 1
|
||||
item.state = code == (source ? sourceLanguage : targetLanguage) ? .on : .off
|
||||
menu.addItem(item)
|
||||
actions.selectLanguage = { [weak self] code in
|
||||
guard let self else { return }
|
||||
self.setLanguages(source: source ? code : self.sourceLanguage,
|
||||
target: source ? self.targetLanguage : code)
|
||||
}
|
||||
menu.popUp(positioning: menu.items.first { $0.state == .on },
|
||||
at: NSPoint(x: 0, y: languageButton.bounds.maxY), in: languageButton)
|
||||
}
|
||||
|
||||
@objc private func languageSelected(_ item: NSMenuItem) {
|
||||
guard let code = item.representedObject as? String else { return }
|
||||
setLanguages(source: item.tag == 0 ? code : sourceLanguage,
|
||||
target: item.tag == 1 ? code : targetLanguage)
|
||||
actions.showLanguages(Self.languages.map { (code: $0, name: languageName($0)) },
|
||||
selected: source ? sourceLanguage : targetLanguage,
|
||||
source: source, relativeTo: actionsButton)
|
||||
translateButton.keyEquivalent = actions.isShown ? "" : "\r"
|
||||
}
|
||||
|
||||
func setLanguages(source: String, target: String) {
|
||||
|
||||
Reference in New Issue
Block a user