Reset // Let AboutWindow and PrefWindow work.
This commit is contained in:
parent
3e9f50e567
commit
f22abcad40
|
@ -165,12 +165,20 @@ class AppDelegate: NSObject, NSApplicationDelegate, ctlNonModalAlertWindowDelega
|
|||
}
|
||||
|
||||
@objc func showPreferences() {
|
||||
if ctlPrefWindowInstance == nil {
|
||||
if (ctlPrefWindowInstance == nil) {
|
||||
ctlPrefWindowInstance = ctlPrefWindow.init(windowNibName: "frmPrefWindow")
|
||||
}
|
||||
ctlPrefWindowInstance?.window?.center()
|
||||
ctlPrefWindowInstance?.window?.orderFrontRegardless() // 逼著屬性視窗往最前方顯示
|
||||
}
|
||||
|
||||
// New About Window
|
||||
@objc func showAbout() {
|
||||
if (ctlAboutWindowInstance == nil) {
|
||||
ctlAboutWindowInstance = ctlAboutWindow.init(windowNibName: "frmAboutWindow")
|
||||
}
|
||||
ctlAboutWindowInstance?.window?.center()
|
||||
ctlAboutWindowInstance?.window?.orderFrontRegardless() // 逼著關於視窗往最前方顯示
|
||||
}
|
||||
|
||||
@objc(checkForUpdate)
|
||||
|
@ -244,4 +252,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, ctlNonModalAlertWindowDelega
|
|||
func ctlNonModalAlertWindowDidCancel(_ controller: ctlNonModalAlertWindow) {
|
||||
updateNextStepURL = nil
|
||||
}
|
||||
|
||||
// New About Window
|
||||
@IBAction func about(_ sender: Any) {
|
||||
(NSApp.delegate as? AppDelegate)?.showAbout()
|
||||
NSApplication.shared.activate(ignoringOtherApps: true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ private let kShouldAutoSortPhraseReplacementMapOnLoad = "ShouldAutoSortPhraseRep
|
|||
private let kSelectPhraseAfterCursorAsCandidatePreference = "SelectPhraseAfterCursorAsCandidate"
|
||||
private let kUseHorizontalCandidateListPreference = "UseHorizontalCandidateList"
|
||||
private let kComposingBufferSizePreference = "ComposingBufferSize"
|
||||
private let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpaceKey"
|
||||
private let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
|
||||
private let kCNS11643Enabled = "CNS11643Enabled"
|
||||
private let kChineseConversionEnabled = "ChineseConversionEnabled"
|
||||
private let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable"
|
||||
|
@ -331,7 +331,7 @@ struct ComposingBufferSize {
|
|||
@UserDefault(key: kShouldAutoSortPhraseReplacementMapOnLoad, defaultValue: false)
|
||||
@objc static var shouldAutoSortPhraseReplacementMapOnLoad: Bool
|
||||
|
||||
@UserDefault(key: kSelectPhraseAfterCursorAsCandidatePreference, defaultValue: false)
|
||||
@UserDefault(key: kSelectPhraseAfterCursorAsCandidatePreference, defaultValue: true)
|
||||
@objc static var selectPhraseAfterCursorAsCandidate: Bool
|
||||
|
||||
@UserDefault(key: kMoveCursorAfterSelectingCandidate, defaultValue: false)
|
||||
|
|
|
@ -170,7 +170,8 @@ class ctlInputMethod: IMKInputController {
|
|||
// MARK: - Menu Items
|
||||
|
||||
@objc override func showPreferences(_ sender: Any?) {
|
||||
super.showPreferences(sender)
|
||||
(NSApp.delegate as? AppDelegate)?.showPreferences()
|
||||
NSApp.activate(ignoringOtherApps: true)
|
||||
}
|
||||
|
||||
@objc func toggleChineseConverter(_ sender: Any?) {
|
||||
|
@ -231,7 +232,7 @@ class ctlInputMethod: IMKInputController {
|
|||
}
|
||||
|
||||
@objc func showAbout(_ sender: Any?) {
|
||||
NSApp.orderFrontStandardAboutPanel(sender)
|
||||
(NSApp.delegate as? AppDelegate)?.showAbout()
|
||||
NSApp.activate(ignoringOtherApps: true)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
CFBundleName = "vChewing";
|
||||
CFBundleDisplayName = "vChewing";
|
||||
NSHumanReadableCopyright = "Copyright © 2011-2022 Mengjuei Hsieh et al.\nAll Rights Reserved.";
|
||||
NSHumanReadableCopyright = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
|
||||
"org.atelierInmu.inputmethod.vChewing.IMECHT" = "vChewing-CHT";
|
||||
"org.atelierInmu.inputmethod.vChewing.IMECHS" = "vChewing-CHS";
|
||||
CFEULAContent = "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n";
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
CFBundleName = "vChewing";
|
||||
CFBundleDisplayName = "vChewing";
|
||||
NSHumanReadableCopyright = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
|
||||
"org.atelierInmu.inputmethod.vChewing.IMECHT" = "vChewing-CHT";
|
||||
"org.atelierInmu.inputmethod.vChewing.IMECHS" = "vChewing-CHS";
|
||||
CFEULAContent = "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n";
|
|
@ -0,0 +1,94 @@
|
|||
/* No comment provided by engineer. */
|
||||
"About vChewing…" = "About vChewing…";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"vChewing Preferences" = "vChewing Preferences";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Check for Updates…" = "Check for Updates…";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Update Check Failed" = "Update Check Failed";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"There may be no internet connection or the server failed to respond.\n\nError message: %@" = "There may be no internet connection or the server failed to respond.\n\nError message: %@";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"OK" = "OK";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Dismiss" = "Dismiss";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"New Version Available" = "New Version Available";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Not Now" = "Not Now";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"Visit Website" = "Visit Website";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"You're currently using vChewing %@ (%@), a new version %@ (%@) is now available. Do you want to visit vChewing's website to download the version?%@" = "You're currently using vChewing %@ (%@), a new version %@ (%@) is now available. Do you want to visit vChewing's website to download the version?%@";
|
||||
|
||||
"Chinese Conversion" = "Convert to Simplified Chinese";
|
||||
|
||||
"User Phrases" = "User Phrases";
|
||||
|
||||
"Edit User Phrases" = "Edit User Phrases";
|
||||
|
||||
"Reload User Phrases" = "Reload User Phrases";
|
||||
|
||||
"Unable to create the user phrase file." = "Unable to create the user phrase file.";
|
||||
|
||||
"Please check the permission of at \"%@\"." = "Please check the permission of at \"%@\".";
|
||||
|
||||
"Edit Excluded Phrases" = "Edit Excluded Phrases";
|
||||
|
||||
"Use Half-Width Punctuations" = "Use Half-Width Punctuations";
|
||||
|
||||
"You are now selecting \"%@\". You can add a phrase with two or more characters." = "You are now selecting \"%@\". You can add a phrase with two or more characters.";
|
||||
|
||||
"You are now selecting \"%@\". Press enter to add a new phrase." = "You are now selecting \"%@\". Press enter to add a new phrase.";
|
||||
|
||||
"You are now selecting \"%@\". A phrase cannot be longer than %d characters." = "You are now selecting \"%@\". A phrase cannot be longer than %d characters.";
|
||||
|
||||
"Chinese conversion on" = "Chinese conversion on";
|
||||
|
||||
"Chinese conversion off" = "Chinese conversion off";
|
||||
|
||||
"Edit Phrase Replacement Table" = "Edit Phrase Replacement Table";
|
||||
|
||||
"Use Phrase Replacement" = "Use Phrase Replacement";
|
||||
|
||||
"Candidates keys cannot be empty." = "Candidates keys cannot be empty.";
|
||||
|
||||
"Candidate keys can only contain latin characters and numbers." = "Candidate keys can only contain latin characters and numbers.";
|
||||
|
||||
"Candidate keys cannot contain space." = "Candidate keys cannot contain space.";
|
||||
|
||||
"There should not be duplicated keys." = "There should not be duplicated keys.";
|
||||
|
||||
"The length of your candidate keys can not be less than 4 characters." = "The length of your candidate keys can not be less than 4 characters.";
|
||||
|
||||
"The length of your candidate keys can not be larger than 15 characters." = "The length of your candidate keys can not be larger than 15 characters.";
|
||||
|
||||
"Phrase replacement mode is on. Not suggested to add phrase in the mode." = "Phrase replacement mode is on. Not suggested to add phrase in the mode.";
|
||||
|
||||
"Model based Chinese conversion is on. Not suggested to add phrase in the mode." = "Model based Chinese conversion is on. Not suggested to add phrase in the mode.";
|
||||
|
||||
"Half-width punctuation on" = "Half-width punctuation on";
|
||||
|
||||
"Half-width punctuation off" = "Half-width punctuation off";
|
||||
|
||||
"Associated Phrases" = "Associated Phrases";
|
||||
|
||||
"There are special phrases in your text. We don't support adding new phrases in this case." = "There are special phrases in your text. We don't support adding new phrases in this case.";
|
||||
|
||||
"Cursor is before \"%@\"." = "Cursor is before \"%@\".";
|
||||
|
||||
"Cursor is after \"%@\"." = "Cursor is after \"%@\".";
|
||||
|
||||
"Cursor is between \"%@\" and \"%@\"." = "Cursor is between \"%@\" and \"%@\".";
|
||||
|
||||
"You are now selecting \"%@\". The phrase already exists." = "You are now selecting \"%@\". The phrase already exists.";
|
|
@ -1,16 +1,61 @@
|
|||
/*
|
||||
* ctlPrefWindow.swift
|
||||
*
|
||||
* Copyright 2021-2022 vChewing Project (3-Clause BSD License).
|
||||
* Derived from 2011-2022 OpenVanilla Project (MIT License).
|
||||
* Some rights reserved. See "LICENSE.TXT" for details.
|
||||
*/
|
||||
|
||||
import Cocoa
|
||||
import Carbon
|
||||
|
||||
// Please note that the class should be exposed as "ctlPrefWindow"
|
||||
// Extend the RangeReplaceableCollection to allow it clean duplicated characters.
|
||||
extension RangeReplaceableCollection where Element: Hashable {
|
||||
var charDeDuplicate: Self {
|
||||
var set = Set<Element>()
|
||||
return filter{ set.insert($0).inserted }
|
||||
}
|
||||
}
|
||||
|
||||
// Please note that the class should be exposed using the same class name
|
||||
// in Objective-C in order to let IMK to see the same class name as
|
||||
// the "InputMethodServerctlPrefWindowClass" in Info.plist.
|
||||
// the "InputMethodServerPreferencesWindowControllerClass" in Info.plist.
|
||||
@objc(ctlPrefWindow) class ctlPrefWindow: NSWindowController {
|
||||
@IBOutlet weak var fontSizePopUpButton: NSPopUpButton!
|
||||
@IBOutlet weak var uiLanguageButton: NSPopUpButton!
|
||||
@IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton!
|
||||
@IBOutlet weak var selectionKeyComboBox: NSComboBox!
|
||||
@IBOutlet weak var clickedWhetherIMEShouldNotFartToggle: NSButton!
|
||||
|
||||
var currentLanguageSelectItem: NSMenuItem? = nil
|
||||
|
||||
override func awakeFromNib() {
|
||||
let languages = ["auto", "en", "zh-Hans", "zh-Hant", "ja"]
|
||||
var autoSelectItem: NSMenuItem? = nil
|
||||
var chosenLanguageItem: NSMenuItem? = nil
|
||||
uiLanguageButton.menu?.removeAllItems()
|
||||
|
||||
let appleLanguages = Preferences.appleLanguages
|
||||
for language in languages {
|
||||
let menuItem = NSMenuItem()
|
||||
menuItem.title = NSLocalizedString(language, comment: "")
|
||||
menuItem.representedObject = language
|
||||
|
||||
if language == "auto" {
|
||||
autoSelectItem = menuItem
|
||||
}
|
||||
|
||||
if !appleLanguages.isEmpty {
|
||||
if appleLanguages[0] == language {
|
||||
chosenLanguageItem = menuItem
|
||||
}
|
||||
}
|
||||
uiLanguageButton.menu?.addItem(menuItem)
|
||||
}
|
||||
|
||||
currentLanguageSelectItem = chosenLanguageItem ?? autoSelectItem
|
||||
uiLanguageButton.select(currentLanguageSelectItem)
|
||||
|
||||
let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource]
|
||||
var usKeyboardLayoutItem: NSMenuItem? = nil
|
||||
var chosenItem: NSMenuItem? = nil
|
||||
|
@ -18,6 +63,7 @@ import Carbon
|
|||
basisKeyboardLayoutButton.menu?.removeAllItems()
|
||||
|
||||
let basisKeyboardLayoutID = Preferences.basisKeyboardLayout
|
||||
|
||||
for source in list {
|
||||
|
||||
func getString(_ key: CFString) -> String? {
|
||||
|
@ -67,21 +113,6 @@ import Carbon
|
|||
menuItem.title = localizedName
|
||||
menuItem.representedObject = sourceID
|
||||
|
||||
if let iconPtr = TISGetInputSourceProperty(source, kTISPropertyIconRef) {
|
||||
let icon = IconRef(iconPtr)
|
||||
let image = NSImage(iconRef: icon)
|
||||
|
||||
func resize(_ image: NSImage) -> NSImage {
|
||||
let newImage = NSImage(size: NSSize(width: 16, height: 16))
|
||||
newImage.lockFocus()
|
||||
image.draw(in: NSRect(x: 0, y: 0, width: 16, height: 16))
|
||||
newImage.unlockFocus()
|
||||
return newImage
|
||||
}
|
||||
|
||||
menuItem.image = resize(image)
|
||||
}
|
||||
|
||||
if sourceID == "com.apple.keylayout.US" {
|
||||
usKeyboardLayoutItem = menuItem
|
||||
}
|
||||
|
@ -91,6 +122,11 @@ import Carbon
|
|||
basisKeyboardLayoutButton.menu?.addItem(menuItem)
|
||||
}
|
||||
|
||||
let menuItem = NSMenuItem()
|
||||
menuItem.title = String(format: NSLocalizedString("Apple Zhuyin Bopomofo", comment: ""))
|
||||
menuItem.representedObject = String("com.apple.keylayout.ZhuyinBopomofo")
|
||||
basisKeyboardLayoutButton.menu?.addItem(menuItem)
|
||||
|
||||
basisKeyboardLayoutButton.select(chosenItem ?? usKeyboardLayoutItem)
|
||||
selectionKeyComboBox.usesDataSource = false
|
||||
selectionKeyComboBox.removeAllItems()
|
||||
|
@ -109,27 +145,53 @@ import Carbon
|
|||
Preferences.basisKeyboardLayout = sourceID
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func changeSelectionKeyAction(_ sender: Any) {
|
||||
guard let keys = (sender as AnyObject).stringValue?
|
||||
.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
.lowercased() else {
|
||||
return
|
||||
}
|
||||
do {
|
||||
try Preferences.validate(candidateKeys: keys)
|
||||
Preferences.candidateKeys = keys
|
||||
} catch Preferences.CandidateKeyError.empty {
|
||||
selectionKeyComboBox.stringValue = Preferences.candidateKeys
|
||||
} catch {
|
||||
if let window = window {
|
||||
let alert = NSAlert(error: error)
|
||||
alert.beginSheetModal(for: window) { response in
|
||||
self.selectionKeyComboBox.stringValue = Preferences.candidateKeys
|
||||
}
|
||||
|
||||
@IBAction func updateUiLanguageAction(_ sender: Any) {
|
||||
if let selectItem = uiLanguageButton.selectedItem {
|
||||
if currentLanguageSelectItem == selectItem {
|
||||
return
|
||||
}
|
||||
}
|
||||
if let language = uiLanguageButton.selectedItem?.representedObject as? String {
|
||||
if (language != "auto") {
|
||||
Preferences.appleLanguages = [language]
|
||||
}
|
||||
else {
|
||||
UserDefaults.standard.removeObject(forKey: "AppleLanguages")
|
||||
}
|
||||
|
||||
NSLog("vChewing App self-terminated due to UI language change.")
|
||||
NSApplication.shared.terminate(nil)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@IBAction func clickedWhetherIMEShouldNotFartToggleAction(_ sender: Any) {
|
||||
clsSFX.beep()
|
||||
}
|
||||
|
||||
@IBAction func changeSelectionKeyAction(_ sender: Any) {
|
||||
guard let keys = (sender as AnyObject).stringValue?.trimmingCharacters(in: .whitespacesAndNewlines).charDeDuplicate else {
|
||||
return
|
||||
}
|
||||
do {
|
||||
try Preferences.validate(candidateKeys: keys)
|
||||
Preferences.candidateKeys = keys
|
||||
}
|
||||
catch Preferences.CandidateKeyError.empty {
|
||||
selectionKeyComboBox.stringValue = Preferences.candidateKeys
|
||||
}
|
||||
catch {
|
||||
if let window = window {
|
||||
let alert = NSAlert(error: error)
|
||||
alert.beginSheetModal(for: window) { response in
|
||||
self.selectionKeyComboBox.stringValue = Preferences.candidateKeys
|
||||
}
|
||||
clsSFX.beep()
|
||||
}
|
||||
}
|
||||
|
||||
selectionKeyComboBox.stringValue = keys
|
||||
Preferences.candidateKeys = keys
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="vChewing Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" animationBehavior="default" titlebarAppearsTransparent="YES" id="1" userLabel="Window - Preferences">
|
||||
<window title="vChewing Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" animationBehavior="default" titlebarAppearsTransparent="YES" id="1" userLabel="frmPrefWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="401" y="295" width="501" height="469"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
|
||||
|
@ -252,7 +252,7 @@
|
|||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.UseSCPCInputMode" id="0J8-4V-5zC"/>
|
||||
<binding destination="32" name="value" keyPath="values.UseSCPCTypingMode" id="PbD-wq-OsN"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pYB-E5-4Nv">
|
||||
|
@ -305,13 +305,13 @@
|
|||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<box title="Advanced Settings" translatesAutoresizingMaskIntoConstraints="NO" id="E1l-m8-xgb">
|
||||
<rect key="frame" x="6" y="200" width="451" height="219"/>
|
||||
<rect key="frame" x="6" y="179" width="451" height="240"/>
|
||||
<view key="contentView" id="Zaa-dP-WdF">
|
||||
<rect key="frame" x="3" y="3" width="445" height="201"/>
|
||||
<rect key="frame" x="3" y="3" width="445" height="222"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField autoresizesSubviews="NO" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IpX-f7-rTL">
|
||||
<rect key="frame" x="18" y="170" width="410" height="16"/>
|
||||
<rect key="frame" x="18" y="191" width="410" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="16" id="AH9-nI-ozD"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="406" id="xMo-mW-3aW"/>
|
||||
|
@ -323,7 +323,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uHU-aL-du7">
|
||||
<rect key="frame" x="128" y="139" width="150" height="25"/>
|
||||
<rect key="frame" x="128" y="160" width="150" height="25"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="147" id="aJi-ff-WnC"/>
|
||||
</constraints>
|
||||
|
@ -342,7 +342,7 @@
|
|||
</connections>
|
||||
</comboBox>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ETa-09-qWI">
|
||||
<rect key="frame" x="31" y="144" width="91" height="15"/>
|
||||
<rect key="frame" x="31" y="165" width="91" height="15"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Selection Keys:" id="FnD-oH-El5">
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
|
@ -350,7 +350,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="13">
|
||||
<rect key="frame" x="18" y="120" width="403" height="15"/>
|
||||
<rect key="frame" x="18" y="141" width="403" height="15"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="371" id="lJN-Yf-Fka"/>
|
||||
</constraints>
|
||||
|
@ -361,7 +361,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<matrix verticalHuggingPriority="751" tag="1" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="15">
|
||||
<rect key="frame" x="33" y="72" width="402" height="40"/>
|
||||
<rect key="frame" x="33" y="93" width="402" height="40"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="402" height="19"/>
|
||||
<size key="intercellSpacing" width="4" height="2"/>
|
||||
|
@ -386,7 +386,7 @@
|
|||
</connections>
|
||||
</matrix>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="109">
|
||||
<rect key="frame" x="19" y="47.5" width="289" height="17"/>
|
||||
<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"/>
|
||||
|
@ -396,26 +396,41 @@
|
|||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.ChooseCandidateUsingSpaceKey" id="112"/>
|
||||
<binding destination="32" name="value" keyPath="values.ChooseCandidateUsingSpace" id="NU1-DG-vUz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bE0-Lq-Pj7">
|
||||
<rect key="frame" x="19" y="25.5" width="245" height="17"/>
|
||||
<rect key="frame" x="19" y="46.5" width="266" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="PX9-9G-dZz"/>
|
||||
<constraint firstAttribute="height" constant="16" id="VKi-k7-llg"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="check" title="Use ESC key to clear 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"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.EscToCleanInputBufferKey" id="atP-oI-qLL"/>
|
||||
<binding destination="32" name="value" keyPath="values.EscToCleanInputBuffer" id="aLf-PK-mAS"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7z2-DD-c58">
|
||||
<rect key="frame" x="19" y="25.5" width="407" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="ZIc-th-1VJ"/>
|
||||
<constraint firstAttribute="height" constant="16" id="ZUJ-yT-gaw"/>
|
||||
</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">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="cellTitle"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="32" name="value" keyPath="values.MoveCursorAfterSelectingCandidate" id="BbO-T6-zh3"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<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 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="ETa-09-qWI" firstAttribute="centerY" secondItem="uHU-aL-du7" secondAttribute="centerY" constant="1" id="FHZ-PV-14v"/>
|
||||
|
@ -428,6 +443,8 @@
|
|||
<constraint firstItem="bE0-Lq-Pj7" firstAttribute="top" secondItem="109" secondAttribute="bottom" constant="6" symbolic="YES" id="cT2-FV-Or9"/>
|
||||
<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 firstAttribute="trailing" secondItem="7z2-DD-c58" secondAttribute="trailing" constant="19" id="gu0-F2-6CK"/>
|
||||
<constraint firstItem="7z2-DD-c58" firstAttribute="top" secondItem="bE0-Lq-Pj7" secondAttribute="bottom" constant="5" id="h6e-x2-Tqk"/>
|
||||
<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="15" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" id="mY6-fM-KSH"/>
|
||||
|
@ -439,13 +456,13 @@
|
|||
</view>
|
||||
</box>
|
||||
<box title="Dictionary Settings" translatesAutoresizingMaskIntoConstraints="NO" id="s4r-ji-vbr">
|
||||
<rect key="frame" x="6" y="10" width="451" height="186"/>
|
||||
<rect key="frame" x="6" y="10" width="451" height="165"/>
|
||||
<view key="contentView" id="rWB-y8-q94">
|
||||
<rect key="frame" x="3" y="3" width="445" height="168"/>
|
||||
<rect key="frame" x="3" y="3" width="445" height="147"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dnE-Vw-KrP">
|
||||
<rect key="frame" x="18" y="138" width="323" height="15"/>
|
||||
<rect key="frame" x="18" y="117" width="323" height="15"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="231" id="MzY-w8-DKW"/>
|
||||
</constraints>
|
||||
|
@ -456,7 +473,7 @@
|
|||
</textFieldCell>
|
||||
</textField>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="1hA-Po-5li">
|
||||
<rect key="frame" x="19" y="115.5" width="401" height="17"/>
|
||||
<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"/>
|
||||
|
@ -470,7 +487,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nnT-wS-mZo">
|
||||
<rect key="frame" x="19" y="93.5" width="342" height="17"/>
|
||||
<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"/>
|
||||
|
@ -484,7 +501,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="p7V-IN-OTr">
|
||||
<rect key="frame" x="19" y="72.5" width="336" height="17"/>
|
||||
<rect key="frame" x="19" y="51.5" width="336" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="16" id="8eX-Tw-Erk"/>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="234" id="yhP-XF-CQj"/>
|
||||
|
@ -514,7 +531,7 @@
|
|||
</constraints>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="182" id="mfq-di-Kby"/>
|
||||
<constraint firstAttribute="height" constant="161" id="mfq-di-Kby"/>
|
||||
</constraints>
|
||||
</box>
|
||||
</subviews>
|
|
@ -0,0 +1,192 @@
|
|||
|
||||
/* Class = "NSWindow"; title = "vChewing Preferences"; ObjectID = "1"; */
|
||||
"1.title" = "vChewing Preferences";
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "5"; */
|
||||
"5.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Standard"; ObjectID = "6"; */
|
||||
"6.title" = "Standard";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "ETen"; ObjectID = "7"; */
|
||||
"7.title" = "ETen";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hsu"; ObjectID = "8"; */
|
||||
"8.title" = "Hsu";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "ETen26"; ObjectID = "9"; */
|
||||
"9.title" = "ETen26";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hanyu Pinyin"; ObjectID = "10"; */
|
||||
"10.title" = "Hanyu Pinyin";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Bopomofo:"; ObjectID = "12"; */
|
||||
"12.title" = "Bopomofo:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Choose the cursor position where you want to list possible candidates."; ObjectID = "14"; */
|
||||
"14.title" = "Choose the cursor position where you want to list possible candidates.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the front of the phrase (like Matsushita Hanin IME)"; ObjectID = "16"; */
|
||||
"16.title" = "Cursor to the front of the phrase (like Matsushita Hanin IME)";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Cursor to the rear of the phrase (like MS New-Phonetic IME)"; ObjectID = "17"; */
|
||||
"17.title" = "Cursor to the rear of the phrase (like MS New-Phonetic IME)";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "18"; */
|
||||
"18.title" = "Radio";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Radio"; ObjectID = "20"; */
|
||||
"20.title" = "Radio";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Horizontal"; ObjectID = "21"; */
|
||||
"21.title" = "Horizontal";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Vertical"; ObjectID = "22"; */
|
||||
"22.title" = "Vertical";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Candidate List Layout:"; ObjectID = "24"; */
|
||||
"24.title" = "Candidate List Layout:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Candidate UI font size:"; ObjectID = "29"; */
|
||||
"29.title" = "Candidate UI font size:";
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "92"; */
|
||||
"92.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "12"; ObjectID = "93"; */
|
||||
"93.title" = "12";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "14"; ObjectID = "94"; */
|
||||
"94.title" = "14";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "16"; ObjectID = "95"; */
|
||||
"95.title" = "16";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "18"; ObjectID = "96"; */
|
||||
"96.title" = "18";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "24"; ObjectID = "98"; */
|
||||
"98.title" = "24";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "32"; ObjectID = "99"; */
|
||||
"99.title" = "32";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "64"; ObjectID = "100"; */
|
||||
"100.title" = "64";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "96"; ObjectID = "101"; */
|
||||
"101.title" = "96";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable SPACE key for calling candidate window"; ObjectID = "110"; */
|
||||
"110.title" = "Enable SPACE key for calling candidate window";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Alphanumeric:"; ObjectID = "126"; */
|
||||
"126.title" = "Alphanumeric:";
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "128"; */
|
||||
"128.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "IBM"; ObjectID = "137"; */
|
||||
"137.title" = "IBM";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Keyboard"; ObjectID = "1AW-xf-c2f"; */
|
||||
"1AW-xf-c2f.label" = "Keyboard";
|
||||
|
||||
/* Class = "NSBox"; title = "General Settings"; ObjectID = "2Y6-Am-WM1"; */
|
||||
"2Y6-Am-WM1.title" = "General Settings";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Choose which keys you prefer for selecting candidates."; ObjectID = "2pS-nv-te4"; */
|
||||
"2pS-nv-te4.title" = "Choose which keys you prefer for selecting candidates.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Stop farting (when typed phonetic combination is invalid, etc.)"; ObjectID = "62u-jY-BRh"; */
|
||||
"62u-jY-BRh.title" = "Stop farting (when typed phonetic combination is invalid, etc.)";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "UI language setting:"; ObjectID = "9DS-Rc-TXq"; */
|
||||
"9DS-Rc-TXq.title" = "UI language setting:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Emulating select-candidate-per-character mode"; ObjectID = "ArK-Vk-OoT"; */
|
||||
"ArK-Vk-OoT.title" = "Emulating select-candidate-per-character mode";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Auto-convert traditional Chinese glyphs to KangXi characters"; ObjectID = "BSK-bH-Gct"; */
|
||||
"BSK-bH-Gct.title" = "Auto-convert traditional Chinese glyphs to KangXi characters";
|
||||
|
||||
/* Class = "NSBox"; title = "Advanced Settings"; ObjectID = "E1l-m8-xgb"; */
|
||||
"E1l-m8-xgb.title" = "Advanced Settings";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "English"; ObjectID = "FSG-lN-CJO"; */
|
||||
"FSG-lN-CJO.title" = "English";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Selection Keys:"; ObjectID = "FnD-oH-El5"; */
|
||||
"FnD-oH-El5.title" = "Selection Keys:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Auto-Select"; ObjectID = "GlJ-Ns-9eE"; */
|
||||
"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"; */
|
||||
"QUQ-oY-4Hc.label" = "General";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Choose your preferred keyboard layout."; ObjectID = "RQ6-MS-m4C"; */
|
||||
"RQ6-MS-m4C.title" = "Choose your preferred keyboard layout.";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Push the cursor to the front of the phrase after candidate selection."; ObjectID = "RUG-ls-KyA"; */
|
||||
"RUG-ls-KyA.title" = "Push the cursor to the front of the phrase after candidate selection.";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Traditional Chinese"; ObjectID = "TXr-FF-ehw"; */
|
||||
"TXr-FF-ehw.title" = "Traditional Chinese";
|
||||
|
||||
/* Class = "NSBox"; title = "Output Settings"; ObjectID = "Uyz-xL-TVN"; */
|
||||
"Uyz-xL-TVN.title" = "Output Settings";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Enable CNS11643 Support (2022-01-07)"; ObjectID = "W24-T4-cg0"; */
|
||||
"W24-T4-cg0.title" = "Enable CNS11643 Support (2022-01-07)";
|
||||
|
||||
/* Class = "NSBox"; title = "Keyboard Layout"; ObjectID = "Wvt-HE-LOv"; */
|
||||
"Wvt-HE-LOv.title" = "Keyboard Layout";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Check for updates automatically"; ObjectID = "Z9t-P0-BLF"; */
|
||||
"Z9t-P0-BLF.title" = "Check for updates automatically";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Change user interface language (will reboot the IME)."; ObjectID = "ZEv-Q2-mYL"; */
|
||||
"ZEv-Q2-mYL.title" = "Change user interface language (will reboot the IME).";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Simplified Chinese"; ObjectID = "akC-2g-ybz"; */
|
||||
"akC-2g-ybz.title" = "Simplified Chinese";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Use ESC key to clear the entire input buffer"; ObjectID = "f2j-xD-4xK"; */
|
||||
"f2j-xD-4xK.title" = "Use ESC key to clear the entire input buffer";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Automatically reload user data files if changes detected"; ObjectID = "f8i-69-zxm"; */
|
||||
"f8i-69-zxm.title" = "Automatically reload user data files if changes detected";
|
||||
|
||||
/* 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.";
|
||||
|
||||
/* 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"; */
|
||||
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
||||
|
||||
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[1] = "Item 2"; ObjectID = "jQC-12-UuK"; */
|
||||
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
||||
|
||||
/* Class = "NSComboBoxCell"; jQC-12-UuK.ibShadowedObjectValues[2] = "Item 3"; ObjectID = "jQC-12-UuK"; */
|
||||
"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"; */
|
||||
"rVQ-Hx-cGi.title" = "Japanese";
|
||||
|
||||
/* Class = "NSBox"; title = "Dictionary Settings"; ObjectID = "s4r-ji-vbr"; */
|
||||
"s4r-ji-vbr.title" = "Dictionary Settings";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Choose your preferred layout of the candidate window."; ObjectID = "xC5-yV-1W1"; */
|
||||
"xC5-yV-1W1.title" = "Choose your preferred layout of the candidate window.";
|
||||
|
||||
/* Class = "NSTabViewItem"; label = "Advanced"; ObjectID = "xrE-8T-WKO"; */
|
||||
"xrE-8T-WKO.label" = "Advanced";
|
|
@ -30,10 +30,10 @@
|
|||
5B62A34A27AE7CD900A19448 /* NotifierController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A34527AE7CD900A19448 /* NotifierController.swift */; };
|
||||
5B62A35227AE822400A19448 /* OpenCC in Frameworks */ = {isa = PBXBuildFile; productRef = 5B62A35127AE822400A19448 /* OpenCC */; };
|
||||
5B62A35327AE89C400A19448 /* InputSourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A33127AE792F00A19448 /* InputSourceHelper.swift */; };
|
||||
5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */; };
|
||||
5BBBB75F27AED54C0023B93A /* Beep.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB75D27AED54C0023B93A /* Beep.m4a */; };
|
||||
5BBBB76027AED54C0023B93A /* Fart.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB75E27AED54C0023B93A /* Fart.m4a */; };
|
||||
5BBBB76B27AED5DB0023B93A /* frmNonModalAlertWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB76527AED5DB0023B93A /* frmNonModalAlertWindow.xib */; };
|
||||
5BBBB76C27AED5DB0023B93A /* frmPrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB76727AED5DB0023B93A /* frmPrefWindow.xib */; };
|
||||
5BBBB76D27AED5DB0023B93A /* frmAboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB76927AED5DB0023B93A /* frmAboutWindow.xib */; };
|
||||
5BBBB77327AED70B0023B93A /* MenuIcon-TCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */; };
|
||||
5BBBB77427AED70B0023B93A /* MenuIcon-SCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */; };
|
||||
|
@ -91,6 +91,9 @@
|
|||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
5B05A47B27AFF7CA00437698 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
5B05A47C27AFF7CF00437698 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
5B05A47F27AFF84200437698 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmAboutWindow.strings; sourceTree = "<group>"; };
|
||||
5B0CF37F27AD476E00784B08 /* SwiftyOpenCC */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = SwiftyOpenCC; path = Packages/SwiftyOpenCC; sourceTree = "<group>"; };
|
||||
5B2DB16D27AF6891006D874E /* data-chs.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "data-chs.txt"; path = "Data/data-chs.txt"; sourceTree = "<group>"; };
|
||||
5B2DB16E27AF6891006D874E /* data-cht.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "data-cht.txt"; path = "Data/data-cht.txt"; sourceTree = "<group>"; };
|
||||
|
@ -125,10 +128,11 @@
|
|||
5B62A34127AE7CD900A19448 /* VerticalCandidateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalCandidateController.swift; sourceTree = "<group>"; };
|
||||
5B62A34327AE7CD900A19448 /* TooltipController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TooltipController.swift; sourceTree = "<group>"; };
|
||||
5B62A34527AE7CD900A19448 /* NotifierController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotifierController.swift; sourceTree = "<group>"; };
|
||||
5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Source/WindowNIBs/Base.lproj/frmPrefWindow.xib; sourceTree = "<group>"; };
|
||||
5B7BC4B227AFFC0B00F66C24 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Source/WindowNIBs/en.lproj/frmPrefWindow.strings; sourceTree = "<group>"; };
|
||||
5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = "<group>"; };
|
||||
5BBBB75E27AED54C0023B93A /* Fart.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fart.m4a; sourceTree = "<group>"; };
|
||||
5BBBB76627AED5DB0023B93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmNonModalAlertWindow.xib; sourceTree = "<group>"; };
|
||||
5BBBB76827AED5DB0023B93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmPrefWindow.xib; sourceTree = "<group>"; };
|
||||
5BBBB76A27AED5DB0023B93A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmAboutWindow.xib; sourceTree = "<group>"; };
|
||||
5BBBB76F27AED70B0023B93A /* MenuIcon-TCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-TCVIM@2x.png"; sourceTree = "<group>"; };
|
||||
5BBBB77027AED70B0023B93A /* MenuIcon-SCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM@2x.png"; sourceTree = "<group>"; };
|
||||
|
@ -406,7 +410,7 @@
|
|||
children = (
|
||||
5BBBB76927AED5DB0023B93A /* frmAboutWindow.xib */,
|
||||
5BBBB76527AED5DB0023B93A /* frmNonModalAlertWindow.xib */,
|
||||
5BBBB76727AED5DB0023B93A /* frmPrefWindow.xib */,
|
||||
5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */,
|
||||
6A187E2816004C5900466B2E /* MainMenu.xib */,
|
||||
);
|
||||
path = WindowNIBs;
|
||||
|
@ -694,13 +698,13 @@
|
|||
files = (
|
||||
5BBBB77427AED70B0023B93A /* MenuIcon-SCVIM@2x.png in Resources */,
|
||||
D4E33D8A27A838CF006DB1CF /* Localizable.strings in Resources */,
|
||||
5BBBB76C27AED5DB0023B93A /* frmPrefWindow.xib in Resources */,
|
||||
5BBBB76027AED54C0023B93A /* Fart.m4a in Resources */,
|
||||
6A2E40F6253A69DA00D1AE1D /* Images.xcassets in Resources */,
|
||||
D4E33D8F27A838F0006DB1CF /* InfoPlist.strings in Resources */,
|
||||
5BBBB76B27AED5DB0023B93A /* frmNonModalAlertWindow.xib in Resources */,
|
||||
5BBBB76D27AED5DB0023B93A /* frmAboutWindow.xib in Resources */,
|
||||
5BBBB77527AED70B0023B93A /* MenuIcon-SCVIM.png in Resources */,
|
||||
5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */,
|
||||
5B2DB17027AF6891006D874E /* data-cht.txt in Resources */,
|
||||
5BBBB77327AED70B0023B93A /* MenuIcon-TCVIM@2x.png in Resources */,
|
||||
5BBBB77627AED70B0023B93A /* MenuIcon-TCVIM.png in Resources */,
|
||||
|
@ -818,6 +822,15 @@
|
|||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5B7BC4AF27AFFBE800F66C24 /* Base */,
|
||||
5B7BC4B227AFFC0B00F66C24 /* en */,
|
||||
);
|
||||
name = frmPrefWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5BBBB76527AED5DB0023B93A /* frmNonModalAlertWindow.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
|
@ -826,18 +839,11 @@
|
|||
name = frmNonModalAlertWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5BBBB76727AED5DB0023B93A /* frmPrefWindow.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5BBBB76827AED5DB0023B93A /* Base */,
|
||||
);
|
||||
name = frmPrefWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5BBBB76927AED5DB0023B93A /* frmAboutWindow.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5BBBB76A27AED5DB0023B93A /* Base */,
|
||||
5B05A47F27AFF84200437698 /* en */,
|
||||
);
|
||||
name = frmAboutWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
|
@ -879,6 +885,7 @@
|
|||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
D4E33D8927A838CF006DB1CF /* Base */,
|
||||
5B05A47C27AFF7CF00437698 /* en */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
|
@ -887,6 +894,7 @@
|
|||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
D4E33D8E27A838F0006DB1CF /* Base */,
|
||||
5B05A47B27AFF7CA00437698 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
|
|
Loading…
Reference in New Issue