PrefUI // Use PrefUITabs enum if possible.
This commit is contained in:
parent
44cfc078e4
commit
3ac259471a
|
@ -10,81 +10,9 @@ import SSPreferences
|
||||||
import SwiftExtension
|
import SwiftExtension
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
extension NSImage {
|
@available(macOS 10.15, *)
|
||||||
static var tabImageGeneral: NSImage! {
|
extension PrefUITabs {
|
||||||
if #unavailable(macOS 11.0) {
|
var ssPaneIdentifier: SSPreferences.PaneIdentifier { .init(rawValue: rawValue) }
|
||||||
return NSImage(named: "PrefToolbar-General")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "wrench.and.screwdriver.fill", accessibilityDescription: "General Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImageExperience: NSImage! {
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-Experience")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "person.fill.questionmark", accessibilityDescription: "Experience Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImageDictionary: NSImage! {
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-Dictionary")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "character.book.closed.fill", accessibilityDescription: "Dictionary Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImagePhrases: NSImage! {
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-Phrases")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "tablecells.badge.ellipsis", accessibilityDescription: "Phrases Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImageCassette: NSImage! {
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-Cassette")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "externaldrive.fill.badge.plus", accessibilityDescription: "Cassette Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImageKeyboard: NSImage! {
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-Keyboard")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "keyboard.macwindow", accessibilityDescription: "Keyboard Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static var tabImageDevZone: NSImage! {
|
|
||||||
if #available(macOS 12.0, *) {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "hand.raised.circle", accessibilityDescription: "DevZone Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if #unavailable(macOS 11.0) {
|
|
||||||
return NSImage(named: "PrefToolbar-DevZone")
|
|
||||||
} else {
|
|
||||||
return NSImage(
|
|
||||||
systemSymbolName: "pc", accessibilityDescription: "DevZone Preferences"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 10.15, *)
|
@available(macOS 10.15, *)
|
||||||
|
@ -92,75 +20,57 @@ class CtlPrefUI {
|
||||||
var controller = PreferencesWindowController(
|
var controller = PreferencesWindowController(
|
||||||
panes: [
|
panes: [
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "General"),
|
identifier: PrefUITabs.tabGeneral.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("General", comment: ""),
|
title: PrefUITabs.tabGeneral.i18nTitle,
|
||||||
toolbarIcon: .tabImageGeneral
|
toolbarIcon: PrefUITabs.tabGeneral.icon
|
||||||
) {
|
) { VwrPrefPaneGeneral() },
|
||||||
VwrPrefPaneGeneral()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "Experience"),
|
identifier: PrefUITabs.tabCandidates.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("Experience", comment: ""),
|
title: PrefUITabs.tabCandidates.i18nTitle,
|
||||||
toolbarIcon: .tabImageExperience
|
toolbarIcon: PrefUITabs.tabCandidates.icon
|
||||||
) {
|
) { VwrPrefPaneExperience() },
|
||||||
VwrPrefPaneExperience()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "Dictionary"),
|
identifier: PrefUITabs.tabBehavior.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("Dictionary", comment: ""),
|
title: PrefUITabs.tabBehavior.i18nTitle,
|
||||||
toolbarIcon: .tabImageDictionary
|
toolbarIcon: PrefUITabs.tabBehavior.icon
|
||||||
) {
|
) { VwrPrefPaneExperience() },
|
||||||
VwrPrefPaneDictionary()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "Phrases"),
|
identifier: PrefUITabs.tabOutput.ssPaneIdentifier,
|
||||||
title: CtlPrefWindow.locPhrasesTabTitle,
|
title: PrefUITabs.tabOutput.i18nTitle,
|
||||||
toolbarIcon: .tabImagePhrases
|
toolbarIcon: PrefUITabs.tabOutput.icon
|
||||||
) {
|
) { VwrPrefPaneExperience() },
|
||||||
VwrPrefPanePhrases()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "Cassette"),
|
identifier: PrefUITabs.tabDictionary.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("Cassette", comment: ""),
|
title: PrefUITabs.tabDictionary.i18nTitle,
|
||||||
toolbarIcon: .tabImageCassette
|
toolbarIcon: PrefUITabs.tabDictionary.icon
|
||||||
) {
|
) { VwrPrefPaneDictionary() },
|
||||||
VwrPrefPaneCassette()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "Keyboard"),
|
identifier: PrefUITabs.tabPhrases.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("Keyboard", comment: ""),
|
title: PrefUITabs.tabPhrases.i18nTitle,
|
||||||
toolbarIcon: .tabImageKeyboard
|
toolbarIcon: PrefUITabs.tabPhrases.icon
|
||||||
) {
|
) { VwrPrefPanePhrases() },
|
||||||
VwrPrefPaneKeyboard()
|
|
||||||
},
|
|
||||||
SSPreferences.Pane(
|
SSPreferences.Pane(
|
||||||
identifier: SSPreferences.PaneIdentifier(rawValue: "DevZone"),
|
identifier: PrefUITabs.tabCassette.ssPaneIdentifier,
|
||||||
title: NSLocalizedString("DevZone", comment: ""),
|
title: PrefUITabs.tabCassette.i18nTitle,
|
||||||
toolbarIcon: .tabImageDevZone
|
toolbarIcon: PrefUITabs.tabCassette.icon
|
||||||
) {
|
) { VwrPrefPaneCassette() },
|
||||||
VwrPrefPaneDevZone()
|
SSPreferences.Pane(
|
||||||
},
|
identifier: PrefUITabs.tabKeyboard.ssPaneIdentifier,
|
||||||
|
title: PrefUITabs.tabKeyboard.i18nTitle,
|
||||||
|
toolbarIcon: PrefUITabs.tabKeyboard.icon
|
||||||
|
) { VwrPrefPaneKeyboard() },
|
||||||
|
SSPreferences.Pane(
|
||||||
|
identifier: PrefUITabs.tabDevZone.ssPaneIdentifier,
|
||||||
|
title: PrefUITabs.tabDevZone.i18nTitle,
|
||||||
|
toolbarIcon: PrefUITabs.tabDevZone.icon
|
||||||
|
) { VwrPrefPaneDevZone() },
|
||||||
|
SSPreferences.Pane(
|
||||||
|
identifier: PrefUITabs.tabExperience.ssPaneIdentifier,
|
||||||
|
title: PrefUITabs.tabExperience.i18nTitle,
|
||||||
|
toolbarIcon: PrefUITabs.tabExperience.icon
|
||||||
|
) { VwrPrefPaneExperience() },
|
||||||
],
|
],
|
||||||
style: .toolbarItems
|
style: .toolbarItems
|
||||||
)
|
)
|
||||||
static let shared = CtlPrefUI()
|
static let shared = CtlPrefUI()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Localization-Related Contents.
|
|
||||||
|
|
||||||
extension CtlPrefWindow {
|
|
||||||
/// 由於用於頁籤標題的某些用語放在 localizable 資源內管理的話容易混亂,所以這裡單獨處理。
|
|
||||||
static var locPhrasesTabTitle: String {
|
|
||||||
switch PrefMgr.shared.appleLanguages[0] {
|
|
||||||
case "ja":
|
|
||||||
return "辞書編集"
|
|
||||||
default:
|
|
||||||
if PrefMgr.shared.appleLanguages[0].contains("zh-Hans") {
|
|
||||||
return "语汇编辑"
|
|
||||||
} else if PrefMgr.shared.appleLanguages[0].contains("zh-Hant") {
|
|
||||||
return "語彙編輯"
|
|
||||||
}
|
|
||||||
return "Phrases"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue