2.0.0 // IMKCandidates. Merge GitHub PR#101 from vChewing/upd/2.0.0
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
為了不讓參與者們浪費各自的熱情,特設此文以說明該專案目前最需要協助的地方。
|
為了不讓參與者們浪費各自的熱情,特設此文以說明該專案目前最需要協助的地方。
|
||||||
|
|
||||||
1. 將選字窗換成 IMK 內建的矩陣選字窗。
|
(暫無)
|
||||||
|
|
||||||
除了上述各項以外的貢獻,除非特邀、或者有足夠的說服理由與吸引力(比如語法錯誤或更好的重構方法等),否則敝專案可能會無視或者拒絕。
|
除了上述各項以外的貢獻,除非特邀、或者有足夠的說服理由與吸引力(比如語法錯誤或更好的重構方法等),否則敝專案可能會無視或者拒絕。
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 430 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 76 KiB |
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21223" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21223"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -125,7 +125,10 @@
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="push" title="I Accept" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="576">
|
<buttonCell key="cell" type="push" title="I Accept" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="576">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma-Bold"/>
|
||||||
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
|
DQ
|
||||||
|
</string>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="agreeAndInstallAction:" target="494" id="708"/>
|
<action selector="agreeAndInstallAction:" target="494" id="708"/>
|
||||||
|
@ -167,17 +170,17 @@
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ir5-sQ-sJc">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ir5-sQ-sJc">
|
||||||
<rect key="frame" x="89" y="442" width="123" height="15"/>
|
<rect key="frame" x="89" y="442" width="130" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="GNc-8S-1VG" userLabel="appNameLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="GNc-8S-1VG" userLabel="appNameLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma-Bold"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bzR-Oa-BZa">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bzR-Oa-BZa">
|
||||||
<rect key="frame" x="89" y="426" width="281" height="15"/>
|
<rect key="frame" x="89" y="426" width="263" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Derived from OpenVanilla McBopopmofo Project." id="QYf-Nf-hoi">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Derived from OpenVanilla McBopopmofo Project." id="QYf-Nf-hoi">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -188,7 +191,7 @@
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="v2b-OK-WGD"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="v2b-OK-WGD"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="eo3-TK-0rB" userLabel="appCopyrightLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="eo3-TK-0rB" userLabel="appCopyrightLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -196,7 +199,7 @@
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XLb-mv-73s">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XLb-mv-73s">
|
||||||
<rect key="frame" x="89" y="387" width="431" height="15"/>
|
<rect key="frame" x="89" y="387" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" selectable="YES" title="Placeholder for detailed credits." id="VW8-s5-Wpn">
|
<textFieldCell key="cell" selectable="YES" title="Placeholder for detailed credits." id="VW8-s5-Wpn">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -207,18 +210,18 @@
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k5O-zZ-gQY">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k5O-zZ-gQY">
|
||||||
<rect key="frame" x="89" y="364" width="431" height="15"/>
|
<rect key="frame" x="89" y="364" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="AVS-ih-FXM">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="AVS-ih-FXM">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="miu-08-dZk">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="miu-08-dZk">
|
||||||
<rect key="frame" x="13" y="26" width="360" height="105"/>
|
<rect key="frame" x="13" y="41" width="360" height="90"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="356" id="pu3-zr-hJy"/>
|
<constraint firstAttribute="width" constant="356" id="pu3-zr-hJy"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" selectable="YES" id="Q9M-ni-kUM">
|
<textFieldCell key="cell" selectable="YES" id="Q9M-ni-kUM">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
@ -232,12 +235,12 @@
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="akk-zO-Abm"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="akk-zO-Abm"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z1m-8k-Z63">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="z1m-8k-Z63">
|
||||||
<rect key="frame" x="211" y="442" width="126" height="15"/>
|
<rect key="frame" x="218" y="442" width="126" height="15"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="yKq-Fv-W1J"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="yKq-Fv-W1J"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="JRP-At-H9q" userLabel="appVersionLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="JRP-At-H9q" userLabel="appVersionLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -245,7 +248,7 @@
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nul-TQ-gOI">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nul-TQ-gOI">
|
||||||
<rect key="frame" x="89" y="148" width="431" height="15"/>
|
<rect key="frame" x="89" y="148" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="By installing the software, you must accept the terms above." id="mf8-6e-z7X">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="By installing the software, you must accept the terms above." id="mf8-6e-z7X">
|
||||||
<font key="font" metaFont="systemBold" size="12"/>
|
<font key="font" size="12" name="Tahoma-Bold"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -254,7 +257,7 @@
|
||||||
<rect key="frame" x="378" y="74" width="147" height="32"/>
|
<rect key="frame" x="378" y="74" width="147" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="593">
|
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="593">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma"/>
|
||||||
<string key="keyEquivalent" base64-UTF8="YES">
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
Gw
|
Gw
|
||||||
</string>
|
</string>
|
||||||
|
@ -338,7 +341,7 @@ Gw
|
||||||
<constraint firstAttribute="height" constant="17" id="MLj-KG-mL8"/>
|
<constraint firstAttribute="height" constant="17" id="MLj-KG-mL8"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Stopping the old version. This may take up to one minute…" id="nTo-dx-qfZ">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Stopping the old version. This may take up to one minute…" id="nTo-dx-qfZ">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
"QYf-Nf-hoi.title" = "該專案由 OpenVanilla 小麥注音專案衍生而來。";
|
"QYf-Nf-hoi.title" = "該專案由 OpenVanilla 小麥注音專案衍生而來。";
|
||||||
|
|
||||||
/* Class = "NSTextFieldCell"; title = "vChewing macOS Development: Shiki Suen, Isaac Xen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */
|
/* Class = "NSTextFieldCell"; title = "vChewing macOS Development: Shiki Suen, Isaac Xen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */
|
||||||
"VW8-s5-Wpn.title" = "威注音 macOS 程式研发:Shiki Suen, Isaac Xen, Hiraku Wang, 等。\n威注音词库维护:Shiki Suen。";
|
"VW8-s5-Wpn.title" = "威注音 macOS 程式研發:Shiki Suen, Isaac Xen, Hiraku Wang, 等。\n威注音詞庫維護:Shiki Suen。";
|
||||||
|
|
||||||
/* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */
|
/* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */
|
||||||
// "eo3-TK-0rB.title" = "Placeholder for showing copyright information.";
|
// "eo3-TK-0rB.title" = "Placeholder for showing copyright information.";
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit e43d8432ef24dc1a01511c0d891717a6406aafe7
|
Subproject commit 8378080fb4d7c0593ed9054132d9ece589bace81
|
|
@ -322,7 +322,7 @@ public enum InputState {
|
||||||
ctlInputMethod.tooltipController.setColor(state: .prompt)
|
ctlInputMethod.tooltipController.setColor(state: .prompt)
|
||||||
return String(
|
return String(
|
||||||
format: NSLocalizedString(
|
format: NSLocalizedString(
|
||||||
"\"%@\" already exists: ENTER to boost, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude.",
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.",
|
||||||
comment: ""
|
comment: ""
|
||||||
) + "\n// " + literalReadingThread, text
|
) + "\n// " + literalReadingThread, text
|
||||||
)
|
)
|
||||||
|
@ -437,6 +437,17 @@ public enum InputState {
|
||||||
override public var type: StateType { .ofChoosingCandidate }
|
override public var type: StateType { .ofChoosingCandidate }
|
||||||
private(set) var candidates: [(String, String)]
|
private(set) var candidates: [(String, String)]
|
||||||
private(set) var isTypingVertical: Bool
|
private(set) var isTypingVertical: Bool
|
||||||
|
// 該變數改為可以隨時更改的內容,不然的話 ctlInputMethod.candidateSelectionChanged() 會上演俄羅斯套娃(崩潰)。
|
||||||
|
public var chosenCandidateString: String = "" {
|
||||||
|
didSet {
|
||||||
|
// 去掉讀音資訊,且最終留存「執行康熙 / JIS 轉換之前」的結果。
|
||||||
|
if chosenCandidateString.contains("\u{17}") {
|
||||||
|
chosenCandidateString = String(chosenCandidateString.split(separator: "\u{17}")[0])
|
||||||
|
}
|
||||||
|
if !chosenCandidateString.contains("\u{1A}") { return }
|
||||||
|
chosenCandidateString = String(chosenCandidateString.split(separator: "\u{1A}").reversed()[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init(
|
init(
|
||||||
composingBuffer: String, cursorIndex: Int, candidates: [(String, String)], isTypingVertical: Bool,
|
composingBuffer: String, cursorIndex: Int, candidates: [(String, String)], isTypingVertical: Bool,
|
||||||
|
@ -447,6 +458,70 @@ public enum InputState {
|
||||||
super.init(composingBuffer: composingBuffer, cursorIndex: cursorIndex, nodeValuesArray: nodeValuesArray)
|
super.init(composingBuffer: composingBuffer, cursorIndex: cursorIndex, nodeValuesArray: nodeValuesArray)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 這個函數尚未經過嚴格的單元測試。請在使用時確保 chosenCandidateString 為空。
|
||||||
|
// 不為空的話,該參數的返回值就會有對應的影響、顯示成類似 macOS 內建注音輸入法那樣子。
|
||||||
|
// 本來想給輸入法拓展這方面的功能的,奈何 ctlInputMethod.candidateSelectionChanged() 這函式太氣人。
|
||||||
|
// 想要講的幹話已經在那邊講完了,感興趣的可以去看看。
|
||||||
|
override var attributedString: NSMutableAttributedString {
|
||||||
|
guard !chosenCandidateString.isEmpty else { return super.attributedString }
|
||||||
|
let bufferTextRear = composingBuffer.utf16SubString(with: 0..<cursorIndex)
|
||||||
|
let bufferTextFront = composingBuffer.utf16SubString(with: cursorIndex..<(composingBuffer.utf16.count))
|
||||||
|
let cursorIndexU8 = bufferTextRear.count - 1
|
||||||
|
// 排除一些不應該出現的情形。
|
||||||
|
if (mgrPrefs.useRearCursorMode && bufferTextFront.count < chosenCandidateString.count)
|
||||||
|
|| (!mgrPrefs.useRearCursorMode && bufferTextRear.count < chosenCandidateString.count)
|
||||||
|
{
|
||||||
|
return super.attributedString
|
||||||
|
}
|
||||||
|
// u16Range 是用來畫線的,因為 NSAttributedString 只認 NSRange。
|
||||||
|
let u16Range: Range<Int> = {
|
||||||
|
switch mgrPrefs.useRearCursorMode {
|
||||||
|
case false: return (max(0, cursorIndex - chosenCandidateString.utf16.count))..<cursorIndex
|
||||||
|
case true:
|
||||||
|
return
|
||||||
|
cursorIndex..<min(cursorIndex + chosenCandidateString.utf16.count, composingBuffer.utf16.count - 1)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
// u8Range 是用來計算字串的。
|
||||||
|
let u8Range: Range<Int> = {
|
||||||
|
switch mgrPrefs.useRearCursorMode {
|
||||||
|
case false: return (max(0, cursorIndexU8 - chosenCandidateString.count))..<cursorIndexU8
|
||||||
|
case true:
|
||||||
|
return cursorIndexU8..<min(cursorIndexU8 + chosenCandidateString.count, composingBuffer.count - 1)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
let strSegmentedRear = composingBuffer.map { String($0) }[0..<u8Range.lowerBound].joined()
|
||||||
|
let strSegmentedFront = composingBuffer.map { String($0) }[u8Range.upperBound...].joined()
|
||||||
|
let newBufferConverted: String = NotEmpty(
|
||||||
|
composingBuffer: strSegmentedRear + chosenCandidateString + strSegmentedFront, cursorIndex: 0
|
||||||
|
).composingBufferConverted
|
||||||
|
guard newBufferConverted.count == composingBuffer.count else { return super.attributedString }
|
||||||
|
|
||||||
|
/// 考慮到因為滑鼠點擊等其它行為導致的組字區內容遞交情況,
|
||||||
|
/// 這裡對組字區內容也加上康熙字轉換或者 JIS 漢字轉換處理。
|
||||||
|
let attributedStringResult = NSMutableAttributedString(string: newBufferConverted)
|
||||||
|
attributedStringResult.setAttributes(
|
||||||
|
[
|
||||||
|
.underlineStyle: NSUnderlineStyle.single.rawValue,
|
||||||
|
.markedClauseSegment: 0,
|
||||||
|
], range: NSRange(location: 0, length: u16Range.lowerBound)
|
||||||
|
)
|
||||||
|
attributedStringResult.setAttributes(
|
||||||
|
[
|
||||||
|
.underlineStyle: NSUnderlineStyle.thick.rawValue,
|
||||||
|
.markedClauseSegment: 1,
|
||||||
|
], range: NSRange(location: u16Range.lowerBound, length: u16Range.count)
|
||||||
|
)
|
||||||
|
attributedStringResult.setAttributes(
|
||||||
|
[
|
||||||
|
.underlineStyle: NSUnderlineStyle.single.rawValue,
|
||||||
|
.markedClauseSegment: 2,
|
||||||
|
], range: NSRange(location: u16Range.upperBound, length: newBufferConverted.utf16.count)
|
||||||
|
)
|
||||||
|
|
||||||
|
return attributedStringResult
|
||||||
|
}
|
||||||
|
|
||||||
override var description: String {
|
override var description: String {
|
||||||
"<InputState.ChoosingCandidate, candidates:\(candidates), isTypingVertical:\(isTypingVertical), composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex)>"
|
"<InputState.ChoosingCandidate, candidates:\(candidates), isTypingVertical:\(isTypingVertical), composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex)>"
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,7 +169,7 @@ extension KeyHandler {
|
||||||
stateCallback(inputting)
|
stateCallback(inputting)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
} else if input.isShiftHold { // 臉書等網站會攔截 Tab 鍵,所以用 Shift+CMD+Space 對候選字詞做正向/反向輪替。
|
} else if input.isShiftHold { // 臉書等網站會攔截 Tab 鍵,所以用 Shift+Command+Space 對候選字詞做正向/反向輪替。
|
||||||
return handleInlineCandidateRotation(
|
return handleInlineCandidateRotation(
|
||||||
state: state, reverseModifier: input.isCommandHold, stateCallback: stateCallback,
|
state: state, reverseModifier: input.isCommandHold, stateCallback: stateCallback,
|
||||||
errorCallback: errorCallback
|
errorCallback: errorCallback
|
||||||
|
@ -278,7 +278,7 @@ extension KeyHandler {
|
||||||
|
|
||||||
// MARK: Punctuation list
|
// MARK: Punctuation list
|
||||||
|
|
||||||
if input.isSymbolMenuPhysicalKey && !input.isShiftHold {
|
if input.isSymbolMenuPhysicalKey, !input.isShiftHold, !input.isControlHold {
|
||||||
if input.isOptionHold {
|
if input.isOptionHold {
|
||||||
if currentLM.hasUnigramsFor(key: "_punctuation_list") {
|
if currentLM.hasUnigramsFor(key: "_punctuation_list") {
|
||||||
if composer.isEmpty {
|
if composer.isEmpty {
|
||||||
|
|
|
@ -328,9 +328,9 @@ extension KeyHandler {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - CMD+Enter 鍵的處理(注音文)
|
// MARK: - Command+Enter 鍵的處理(注音文)
|
||||||
|
|
||||||
/// CMD+Enter 鍵的處理(注音文)。
|
/// Command+Enter 鍵的處理(注音文)。
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - state: 當前狀態。
|
/// - state: 當前狀態。
|
||||||
/// - stateCallback: 狀態回呼。
|
/// - stateCallback: 狀態回呼。
|
||||||
|
@ -356,9 +356,9 @@ extension KeyHandler {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - CMD+Alt+Enter 鍵的處理(網頁 Ruby 注音文標記)
|
// MARK: - Command+Option+Enter 鍵的處理(網頁 Ruby 注音文標記)
|
||||||
|
|
||||||
/// CMD+Alt+Enter 鍵的處理(網頁 Ruby 注音文標記)。
|
/// Command+Option+Enter 鍵的處理(網頁 Ruby 注音文標記)。
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
/// - state: 當前狀態。
|
/// - state: 當前狀態。
|
||||||
/// - stateCallback: 狀態回呼。
|
/// - stateCallback: 狀態回呼。
|
||||||
|
@ -825,7 +825,7 @@ extension KeyHandler {
|
||||||
/// 讀音組成的雙字詞的權重、導致這個雙字詞並未在爬軌時被自動
|
/// 讀音組成的雙字詞的權重、導致這個雙字詞並未在爬軌時被自動
|
||||||
/// 選中的話,則使用者可以直接摁下本函式對應的按鍵來輪替候選字即可。
|
/// 選中的話,則使用者可以直接摁下本函式對應的按鍵來輪替候選字即可。
|
||||||
/// (預設情況下是 (Shift+)Tab 來做正 (反) 向切換,但也可以用
|
/// (預設情況下是 (Shift+)Tab 來做正 (反) 向切換,但也可以用
|
||||||
/// Shift(+CMD)+Space 或 Alt+↑/↓ 來切換(縱排輸入時則是 Alt+←/→)、
|
/// Shift(+Command)+Space 或 Alt+↑/↓ 來切換(縱排輸入時則是 Alt+←/→)、
|
||||||
/// 以應對臉書綁架 Tab 鍵的情況。
|
/// 以應對臉書綁架 Tab 鍵的情況。
|
||||||
if candidates[0] == currentPaired {
|
if candidates[0] == currentPaired {
|
||||||
/// 如果第一個候選字詞是當前節點的候選字詞的值的話,
|
/// 如果第一個候選字詞是當前節點的候選字詞的值的話,
|
||||||
|
|
|
@ -211,6 +211,50 @@ class ctlInputMethod: IMKInputController {
|
||||||
// - 是就地交給 super.interpretKeyEvents() 處理?
|
// - 是就地交給 super.interpretKeyEvents() 處理?
|
||||||
// - 還是藉由 delegate 扔回 ctlInputMethod 給 KeyHandler 處理?
|
// - 還是藉由 delegate 扔回 ctlInputMethod 給 KeyHandler 處理?
|
||||||
if let ctlCandidateCurrent = ctlInputMethod.ctlCandidateCurrent as? ctlCandidateIMK, ctlCandidateCurrent.visible {
|
if let ctlCandidateCurrent = ctlInputMethod.ctlCandidateCurrent as? ctlCandidateIMK, ctlCandidateCurrent.visible {
|
||||||
|
let event: NSEvent! = ctlCandidateIMK.replaceNumPadKeyCodes(target: event) ?? event
|
||||||
|
let input = InputSignal(event: event)
|
||||||
|
// Shift+Enter 是個特殊情形,不提前攔截處理的話、會有垃圾參數傳給 delegate 的 keyHandler 從而崩潰。
|
||||||
|
// 所以這裡直接將 Shift Flags 清空。
|
||||||
|
if input.isShiftHold, input.isEnter {
|
||||||
|
guard
|
||||||
|
let newEvent = NSEvent.keyEvent(
|
||||||
|
with: event.type,
|
||||||
|
location: event.locationInWindow,
|
||||||
|
modifierFlags: [],
|
||||||
|
timestamp: event.timestamp,
|
||||||
|
windowNumber: event.windowNumber,
|
||||||
|
context: nil,
|
||||||
|
characters: event.characters ?? "",
|
||||||
|
charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? event.characters ?? "",
|
||||||
|
isARepeat: event.isARepeat,
|
||||||
|
keyCode: event.keyCode
|
||||||
|
)
|
||||||
|
else {
|
||||||
|
NSSound.beep()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
ctlCandidateCurrent.interpretKeyEvents([newEvent])
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if let newChar = ctlCandidateIMK.defaultIMKSelectionKey[event.keyCode], input.isShiftHold,
|
||||||
|
isAssociatedPhrasesState
|
||||||
|
{
|
||||||
|
let newEvent = NSEvent.keyEvent(
|
||||||
|
with: event.type,
|
||||||
|
location: event.locationInWindow,
|
||||||
|
modifierFlags: [],
|
||||||
|
timestamp: event.timestamp,
|
||||||
|
windowNumber: event.windowNumber,
|
||||||
|
context: nil,
|
||||||
|
characters: newChar,
|
||||||
|
charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? event.characters ?? "",
|
||||||
|
isARepeat: event.isARepeat,
|
||||||
|
keyCode: event.keyCode
|
||||||
|
)
|
||||||
|
ctlCandidateCurrent.perform(Selector(("handleKeyboardEvent:")), with: newEvent)
|
||||||
|
}
|
||||||
|
|
||||||
ctlCandidateCurrent.interpretKeyEvents([event])
|
ctlCandidateCurrent.interpretKeyEvents([event])
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -238,31 +282,43 @@ class ctlInputMethod: IMKInputController {
|
||||||
_ = sender // 防止格式整理工具毀掉與此對應的參數。
|
_ = sender // 防止格式整理工具毀掉與此對應的參數。
|
||||||
var arrResult = [String]()
|
var arrResult = [String]()
|
||||||
|
|
||||||
func handleCandidatesPrepared(_ candidates: [(String, String)]) {
|
// 注意:下文中的不可列印字元是用來方便在 InputState 當中用來分割資料的。
|
||||||
|
func handleCandidatesPrepared(_ candidates: [(String, String)], prefix: String = "") {
|
||||||
for theCandidate in candidates {
|
for theCandidate in candidates {
|
||||||
let theConverted = IME.kanjiConversionIfRequired(theCandidate.1)
|
let theConverted = IME.kanjiConversionIfRequired(theCandidate.1)
|
||||||
var result = (theCandidate.1 == theConverted) ? theCandidate.1 : "\(theConverted)(\(theCandidate.1))"
|
var result = (theCandidate.1 == theConverted) ? theCandidate.1 : "\(theConverted)\u{1A}(\(theCandidate.1))"
|
||||||
if arrResult.contains(result) {
|
if arrResult.contains(result) {
|
||||||
result = "\(result)(\(theCandidate.0))"
|
let reading: String =
|
||||||
|
mgrPrefs.showHanyuPinyinInCompositionBuffer
|
||||||
|
? Tekkon.cnvPhonaToHanyuPinyin(target: Tekkon.restoreToneOneInZhuyinKey(target: theCandidate.0))
|
||||||
|
: theCandidate.0
|
||||||
|
result = "\(result)\u{17}(\(reading))"
|
||||||
}
|
}
|
||||||
arrResult.append(result)
|
arrResult.append(prefix + result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let state = state as? InputState.AssociatedPhrases {
|
if let state = state as? InputState.AssociatedPhrases {
|
||||||
handleCandidatesPrepared(state.candidates)
|
handleCandidatesPrepared(state.candidates, prefix: "⇧")
|
||||||
} else if let state = state as? InputState.SymbolTable {
|
} else if let state = state as? InputState.SymbolTable {
|
||||||
handleCandidatesPrepared(state.candidates)
|
handleCandidatesPrepared(state.candidates)
|
||||||
} else if let state = state as? InputState.ChoosingCandidate {
|
} else if let state = state as? InputState.ChoosingCandidate {
|
||||||
handleCandidatesPrepared(state.candidates)
|
handleCandidatesPrepared(state.candidates)
|
||||||
}
|
}
|
||||||
|
|
||||||
return arrResult
|
return arrResult
|
||||||
}
|
}
|
||||||
|
|
||||||
/// IMK 選字窗限定函式,只要選字窗內的高亮內容選擇出現變化了、就會呼叫這個函式。
|
/// IMK 選字窗限定函式,只要選字窗內的高亮內容選擇出現變化了、就會呼叫這個函式。
|
||||||
/// - Parameter _: 已經高亮選中的候選字詞內容。
|
/// - Parameter _: 已經高亮選中的候選字詞內容。
|
||||||
override open func candidateSelectionChanged(_: NSAttributedString!) {
|
override open func candidateSelectionChanged(_: NSAttributedString!) {
|
||||||
// 暫時不需要擴充這個函式。但有些幹話還是要講的:
|
// 警告:不要考慮用實作這個函式的方式來更新內文組字區的顯示。
|
||||||
|
// 因為這樣會導致 IMKServer.commitCompositionWithReply() 呼叫你本來不想呼叫的 commitComposition(),
|
||||||
|
// 然後 keyHandler 會被重設,屆時輸入法會在狀態處理等方面崩潰掉。
|
||||||
|
|
||||||
|
// 這個函式的實作其實很容易誘發各種崩潰,所以最好不要輕易實作。
|
||||||
|
|
||||||
|
// 有些幹話還是要講的:
|
||||||
// 在這個函式當中試圖(無論是否拿著傳入的參數)從 ctlCandidateIMK 找 identifier 的話,
|
// 在這個函式當中試圖(無論是否拿著傳入的參數)從 ctlCandidateIMK 找 identifier 的話,
|
||||||
// 只會找出 NSNotFound。你想 NSLog 列印看 identifier 是多少,輸入法直接崩潰。
|
// 只會找出 NSNotFound。你想 NSLog 列印看 identifier 是多少,輸入法直接崩潰。
|
||||||
// 而且會他媽的崩得連 console 內的 ips 錯誤報告都沒有。
|
// 而且會他媽的崩得連 console 內的 ips 錯誤報告都沒有。
|
||||||
|
@ -283,16 +339,20 @@ class ctlInputMethod: IMKInputController {
|
||||||
|
|
||||||
var indexDeducted = 0
|
var indexDeducted = 0
|
||||||
|
|
||||||
func handleCandidatesSelected(_ candidates: [(String, String)]) {
|
// 注意:下文中的不可列印字元是用來方便在 InputState 當中用來分割資料的。
|
||||||
|
func handleCandidatesSelected(_ candidates: [(String, String)], prefix: String = "") {
|
||||||
for (i, neta) in candidates.enumerated() {
|
for (i, neta) in candidates.enumerated() {
|
||||||
let theConverted = IME.kanjiConversionIfRequired(neta.1)
|
let theConverted = IME.kanjiConversionIfRequired(neta.1)
|
||||||
let netaShown = (neta.1 == theConverted) ? neta.1 : "\(theConverted)(\(neta.1))"
|
let netaShown = (neta.1 == theConverted) ? neta.1 : "\(theConverted)\u{1A}(\(neta.1))"
|
||||||
let netaShownWithPronunciation = "\(theConverted)(\(neta.0))"
|
let reading: String =
|
||||||
if candidateString.string == netaShownWithPronunciation {
|
mgrPrefs.showHanyuPinyinInCompositionBuffer
|
||||||
|
? Tekkon.cnvPhonaToHanyuPinyin(target: Tekkon.restoreToneOneInZhuyinKey(target: neta.0)) : neta.0
|
||||||
|
let netaShownWithPronunciation = "\(netaShown)\u{17}(\(reading))"
|
||||||
|
if candidateString.string == prefix + netaShownWithPronunciation {
|
||||||
indexDeducted = i
|
indexDeducted = i
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if candidateString.string == netaShown {
|
if candidateString.string == prefix + netaShown {
|
||||||
indexDeducted = i
|
indexDeducted = i
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -300,7 +360,7 @@ class ctlInputMethod: IMKInputController {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let state = state as? InputState.AssociatedPhrases {
|
if let state = state as? InputState.AssociatedPhrases {
|
||||||
handleCandidatesSelected(state.candidates)
|
handleCandidatesSelected(state.candidates, prefix: "⇧")
|
||||||
} else if let state = state as? InputState.SymbolTable {
|
} else if let state = state as? InputState.SymbolTable {
|
||||||
handleCandidatesSelected(state.candidates)
|
handleCandidatesSelected(state.candidates)
|
||||||
} else if let state = state as? InputState.ChoosingCandidate {
|
} else if let state = state as? InputState.ChoosingCandidate {
|
||||||
|
|
|
@ -13,7 +13,10 @@ import Cocoa
|
||||||
// MARK: - KeyHandler Delegate
|
// MARK: - KeyHandler Delegate
|
||||||
|
|
||||||
extension ctlInputMethod: KeyHandlerDelegate {
|
extension ctlInputMethod: KeyHandlerDelegate {
|
||||||
var clientBundleIdentifier: String { client()?.bundleIdentifier() ?? "" }
|
var clientBundleIdentifier: String {
|
||||||
|
guard let client = client() else { return "" }
|
||||||
|
return client.bundleIdentifier() ?? ""
|
||||||
|
}
|
||||||
|
|
||||||
func ctlCandidate() -> ctlCandidateProtocol { ctlInputMethod.ctlCandidateCurrent }
|
func ctlCandidate() -> ctlCandidateProtocol { ctlInputMethod.ctlCandidateCurrent }
|
||||||
|
|
||||||
|
@ -52,7 +55,7 @@ extension ctlInputMethod: KeyHandlerDelegate {
|
||||||
// MARK: - Candidate Controller Delegate
|
// MARK: - Candidate Controller Delegate
|
||||||
|
|
||||||
extension ctlInputMethod: ctlCandidateDelegate {
|
extension ctlInputMethod: ctlCandidateDelegate {
|
||||||
var isAssociatedPhrasesMode: Bool { state is InputState.AssociatedPhrases }
|
var isAssociatedPhrasesState: Bool { state is InputState.AssociatedPhrases }
|
||||||
|
|
||||||
/// 完成 handle() 函式本該完成的內容,但去掉了與 IMK 選字窗有關的判斷語句。
|
/// 完成 handle() 函式本該完成的內容,但去掉了與 IMK 選字窗有關的判斷語句。
|
||||||
/// 這樣分開處理很有必要,不然 handle() 函式會陷入無限迴圈。
|
/// 這樣分開處理很有必要,不然 handle() 函式會陷入無限迴圈。
|
||||||
|
|
|
@ -88,42 +88,6 @@ extension ctlInputMethod {
|
||||||
return NSFont.systemFont(ofSize: size)
|
return NSFont.systemFont(ofSize: size)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// FB10978412: Since macOS 11 Big Sur, CTFontCreateUIFontForLanguage cannot
|
|
||||||
/// distinguish zh-Hans and zh-Hant with correct adoptation of proper PingFang SC/TC variants.
|
|
||||||
///
|
|
||||||
/// Instructions for Apple Developer relations to reveal this bug:
|
|
||||||
///
|
|
||||||
/// 1) Remove the usage of ".languageIdentifier" from ctlCandidateUniversal.swift (already done).
|
|
||||||
/// 2) Run "make update" in the project folder to download the latest git-submodule of dictionary file.
|
|
||||||
/// 3) Compile the target "vChewingInstaller", run it. It will install the input method into
|
|
||||||
/// "~/Library/Input Methods/" folder. Remember to ENABLE BOTH "vChewing-CHS"
|
|
||||||
/// and "vChewing-CHT" input sources in System Preferences / Settings.
|
|
||||||
/// 4) Type Zhuyin "ej3" (ㄍㄨˇ) (or "gu3" in Pinyin if you enabled Pinyin typing in vChewing preferences.)
|
|
||||||
/// using both "vChewing-CHS" and "vChewing-CHT", and check the candidate window by pressing SPACE key.
|
|
||||||
/// 5) Do NOT enable either KangXi conversion mode nor JIS conversion mode. They are disabled by default.
|
|
||||||
/// 6) Expecting the glyph differences of the candidate "骨" between PingFang SC and PingFang TC when rendering
|
|
||||||
/// the candidate window in different "vChewing-CHS" and "vChewing-CHT" input modes.
|
|
||||||
func candidateFont(name: String?, size: CGFloat) -> NSFont {
|
|
||||||
let finalReturnFont: NSFont =
|
|
||||||
{
|
|
||||||
switch IME.currentInputMode {
|
|
||||||
case InputMode.imeModeCHS:
|
|
||||||
return CTFontCreateUIFontForLanguage(.system, size, "zh-Hans" as CFString)
|
|
||||||
case InputMode.imeModeCHT:
|
|
||||||
return (mgrPrefs.shiftJISShinjitaiOutputEnabled || mgrPrefs.chineseConversionEnabled)
|
|
||||||
? CTFontCreateUIFontForLanguage(.system, size, "ja" as CFString)
|
|
||||||
: CTFontCreateUIFontForLanguage(.system, size, "zh-Hant" as CFString)
|
|
||||||
default:
|
|
||||||
return CTFontCreateUIFontForLanguage(.system, size, nil)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
?? NSFont.systemFont(ofSize: size)
|
|
||||||
if let name = name {
|
|
||||||
return NSFont(name: name, size: size) ?? finalReturnFont
|
|
||||||
}
|
|
||||||
return finalReturnFont
|
|
||||||
}
|
|
||||||
|
|
||||||
ctlInputMethod.ctlCandidateCurrent.keyLabelFont = labelFont(
|
ctlInputMethod.ctlCandidateCurrent.keyLabelFont = labelFont(
|
||||||
name: mgrPrefs.candidateKeyLabelFontName, size: keyLabelSize
|
name: mgrPrefs.candidateKeyLabelFontName, size: keyLabelSize
|
||||||
)
|
)
|
||||||
|
@ -142,6 +106,13 @@ extension ctlInputMethod {
|
||||||
ctlInputMethod.ctlCandidateCurrent.delegate = self
|
ctlInputMethod.ctlCandidateCurrent.delegate = self
|
||||||
ctlInputMethod.ctlCandidateCurrent.reloadData()
|
ctlInputMethod.ctlCandidateCurrent.reloadData()
|
||||||
|
|
||||||
|
// Spotlight 視窗會擋住 IMK 選字窗,所以需要特殊處理。
|
||||||
|
if let ctlCandidateCurrent = ctlInputMethod.ctlCandidateCurrent as? ctlCandidateIMK,
|
||||||
|
mgrPrefs.adjustIMKCandidateWindowLevel
|
||||||
|
{
|
||||||
|
ctlCandidateCurrent.perform(Selector(("setWindowLevel:")), with: client.windowLevel() + 1000)
|
||||||
|
}
|
||||||
|
|
||||||
ctlInputMethod.ctlCandidateCurrent.visible = true
|
ctlInputMethod.ctlCandidateCurrent.visible = true
|
||||||
|
|
||||||
var lineHeightRect = NSRect(x: 0.0, y: 0.0, width: 16.0, height: 16.0)
|
var lineHeightRect = NSRect(x: 0.0, y: 0.0, width: 16.0, height: 16.0)
|
||||||
|
@ -175,4 +146,44 @@ extension ctlInputMethod {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// FB10978412: Since macOS 11 Big Sur, CTFontCreateUIFontForLanguage cannot
|
||||||
|
/// distinguish zh-Hans and zh-Hant with correct adoptation of proper PingFang SC/TC variants.
|
||||||
|
///
|
||||||
|
/// Instructions for Apple Developer relations to reveal this bug:
|
||||||
|
///
|
||||||
|
/// 0) Disable IMK Candidate window in the vChewing preferences (disabled by default).
|
||||||
|
/// **REASON**: IMKCandidates has bug that it does not respect font attributes attached to the
|
||||||
|
/// results generated from `candidiates() -> [Any]!` function. IMKCandidates is plagued with
|
||||||
|
/// bugs which are not dealt in the recent decade, regardless Radar complaints from input method developers.
|
||||||
|
/// 1) Remove the usage of ".languageIdentifier" from ctlCandidateUniversal.swift (already done).
|
||||||
|
/// 2) Run "make update" in the project folder to download the latest git-submodule of dictionary file.
|
||||||
|
/// 3) Compile the target "vChewingInstaller", run it. It will install the input method into
|
||||||
|
/// "~/Library/Input Methods/" folder. Remember to ENABLE BOTH "vChewing-CHS"
|
||||||
|
/// and "vChewing-CHT" input sources in System Preferences / Settings.
|
||||||
|
/// 4) Type Zhuyin "ej3" (ㄍㄨˇ) (or "gu3" in Pinyin if you enabled Pinyin typing in vChewing preferences.)
|
||||||
|
/// using both "vChewing-CHS" and "vChewing-CHT", and check the candidate window by pressing SPACE key.
|
||||||
|
/// 5) Do NOT enable either KangXi conversion mode nor JIS conversion mode. They are disabled by default.
|
||||||
|
/// 6) Expecting the glyph differences of the candidate "骨" between PingFang SC and PingFang TC when rendering
|
||||||
|
/// the candidate window in different "vChewing-CHS" and "vChewing-CHT" input modes.
|
||||||
|
func candidateFont(name: String?, size: CGFloat) -> NSFont {
|
||||||
|
let finalReturnFont: NSFont =
|
||||||
|
{
|
||||||
|
switch IME.currentInputMode {
|
||||||
|
case InputMode.imeModeCHS:
|
||||||
|
return CTFontCreateUIFontForLanguage(.system, size, "zh-Hans" as CFString)
|
||||||
|
case InputMode.imeModeCHT:
|
||||||
|
return (mgrPrefs.shiftJISShinjitaiOutputEnabled || mgrPrefs.chineseConversionEnabled)
|
||||||
|
? CTFontCreateUIFontForLanguage(.system, size, "ja" as CFString)
|
||||||
|
: CTFontCreateUIFontForLanguage(.system, size, "zh-Hant" as CFString)
|
||||||
|
default:
|
||||||
|
return CTFontCreateUIFontForLanguage(.system, size, nil)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
?? NSFont.systemFont(ofSize: size)
|
||||||
|
if let name = name {
|
||||||
|
return NSFont(name: name, size: size) ?? finalReturnFont
|
||||||
|
}
|
||||||
|
return finalReturnFont
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ extension ctlInputMethod {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 針對受 .NotEmpty() 管轄的非空狀態,在組字區內顯示游標。
|
/// 針對受 .NotEmpty() 管轄的非空狀態,在組字區內顯示游標。
|
||||||
private func setInlineDisplayWithCursor() {
|
func setInlineDisplayWithCursor() {
|
||||||
guard let client = client() else { return }
|
guard let client = client() else { return }
|
||||||
if let state = state as? InputState.AssociatedPhrases {
|
if let state = state as? InputState.AssociatedPhrases {
|
||||||
client.setMarkedText(
|
client.setMarkedText(
|
||||||
|
|
|
@ -40,7 +40,7 @@ public enum IME {
|
||||||
static var currentInputMode: InputMode = .init(rawValue: mgrPrefs.mostRecentInputMode) ?? .imeModeNULL
|
static var currentInputMode: InputMode = .init(rawValue: mgrPrefs.mostRecentInputMode) ?? .imeModeNULL
|
||||||
|
|
||||||
static func kanjiConversionIfRequired(_ text: String) -> String {
|
static func kanjiConversionIfRequired(_ text: String) -> String {
|
||||||
if currentInputMode == InputMode.imeModeCHT {
|
guard currentInputMode == InputMode.imeModeCHT else { return text }
|
||||||
switch (mgrPrefs.chineseConversionEnabled, mgrPrefs.shiftJISShinjitaiOutputEnabled) {
|
switch (mgrPrefs.chineseConversionEnabled, mgrPrefs.shiftJISShinjitaiOutputEnabled) {
|
||||||
case (false, true): return ChineseConverter.cnvTradToJIS(text)
|
case (false, true): return ChineseConverter.cnvTradToJIS(text)
|
||||||
case (true, false): return ChineseConverter.cnvTradToKangXi(text)
|
case (true, false): return ChineseConverter.cnvTradToKangXi(text)
|
||||||
|
@ -49,8 +49,6 @@ public enum IME {
|
||||||
case (false, false): return text
|
case (false, false): return text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return text
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - 自 ctlInputMethod 讀取當前輸入法的簡繁體模式
|
// MARK: - 自 ctlInputMethod 讀取當前輸入法的簡繁體模式
|
||||||
|
|
||||||
|
@ -106,17 +104,9 @@ public enum IME {
|
||||||
if #available(macOS 10.15, *) {
|
if #available(macOS 10.15, *) {
|
||||||
let appearanceDescription = NSApplication.shared.effectiveAppearance.debugDescription
|
let appearanceDescription = NSApplication.shared.effectiveAppearance.debugDescription
|
||||||
.lowercased()
|
.lowercased()
|
||||||
if appearanceDescription.contains("dark") {
|
return appearanceDescription.contains("dark")
|
||||||
return true
|
} else if let appleInterfaceStyle = UserDefaults.standard.string(forKey: "AppleInterfaceStyle") {
|
||||||
}
|
return appleInterfaceStyle.lowercased().contains("dark")
|
||||||
} else if #available(macOS 10.14, *) {
|
|
||||||
if let appleInterfaceStyle = UserDefaults.standard.object(forKey: "AppleInterfaceStyle")
|
|
||||||
as? String
|
|
||||||
{
|
|
||||||
if appleInterfaceStyle.lowercased().contains("dark") {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,11 +49,12 @@ public enum UserDef: String, CaseIterable {
|
||||||
case kKeepReadingUponCompositionError = "KeepReadingUponCompositionError"
|
case kKeepReadingUponCompositionError = "KeepReadingUponCompositionError"
|
||||||
case kTogglingAlphanumericalModeWithLShift = "TogglingAlphanumericalModeWithLShift"
|
case kTogglingAlphanumericalModeWithLShift = "TogglingAlphanumericalModeWithLShift"
|
||||||
case kUpperCaseLetterKeyBehavior = "UpperCaseLetterKeyBehavior"
|
case kUpperCaseLetterKeyBehavior = "UpperCaseLetterKeyBehavior"
|
||||||
|
case kDisableShiftTogglingAlphanumericalMode = "DisableShiftTogglingAlphanumericalMode"
|
||||||
|
|
||||||
case kUseIMKCandidateWindow = "UseIMKCandidateWindow"
|
case kUseIMKCandidateWindow = "UseIMKCandidateWindow"
|
||||||
case kHandleDefaultCandidateFontsByLangIdentifier = "HandleDefaultCandidateFontsByLangIdentifier"
|
case kHandleDefaultCandidateFontsByLangIdentifier = "HandleDefaultCandidateFontsByLangIdentifier"
|
||||||
case kShouldAlwaysUseShiftKeyAccommodation = "ShouldAlwaysUseShiftKeyAccommodation"
|
case kShouldAlwaysUseShiftKeyAccommodation = "ShouldAlwaysUseShiftKeyAccommodation"
|
||||||
case kDisableShiftTogglingAlphanumericalMode = "DisableShiftTogglingAlphanumericalMode"
|
case kAdjustIMKCandidateWindowLevel = "AdjustIMKCandidateWindowLevel"
|
||||||
|
|
||||||
case kCandidateTextFontName = "CandidateTextFontName"
|
case kCandidateTextFontName = "CandidateTextFontName"
|
||||||
case kCandidateKeyLabelFontName = "CandidateKeyLabelFontName"
|
case kCandidateKeyLabelFontName = "CandidateKeyLabelFontName"
|
||||||
|
@ -296,6 +297,9 @@ public enum mgrPrefs {
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.shouldAlwaysUseShiftKeyAccommodation, forKey: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue
|
mgrPrefs.shouldAlwaysUseShiftKeyAccommodation, forKey: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue
|
||||||
)
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.adjustIMKCandidateWindowLevel, forKey: UserDef.kAdjustIMKCandidateWindowLevel.rawValue
|
||||||
|
)
|
||||||
|
|
||||||
// -----
|
// -----
|
||||||
|
|
||||||
|
@ -424,6 +428,9 @@ public enum mgrPrefs {
|
||||||
@UserDefault(key: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue, defaultValue: false)
|
@UserDefault(key: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue, defaultValue: false)
|
||||||
static var shouldAlwaysUseShiftKeyAccommodation: Bool
|
static var shouldAlwaysUseShiftKeyAccommodation: Bool
|
||||||
|
|
||||||
|
@UserDefault(key: UserDef.kAdjustIMKCandidateWindowLevel.rawValue, defaultValue: false)
|
||||||
|
static var adjustIMKCandidateWindowLevel: Bool
|
||||||
|
|
||||||
// MARK: - Settings (Tier 3)
|
// MARK: - Settings (Tier 3)
|
||||||
|
|
||||||
static var minCandidateLength: Int {
|
static var minCandidateLength: Int {
|
||||||
|
@ -544,7 +551,13 @@ public enum mgrPrefs {
|
||||||
static var candidateKeyLabelFontName: String?
|
static var candidateKeyLabelFontName: String?
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCandidateKeys.rawValue, defaultValue: kDefaultKeys)
|
@UserDefault(key: UserDef.kCandidateKeys.rawValue, defaultValue: kDefaultKeys)
|
||||||
static var candidateKeys: String
|
static var candidateKeys: String {
|
||||||
|
didSet {
|
||||||
|
if mgrPrefs.useIMKCandidateWindow {
|
||||||
|
mgrPrefs.candidateKeys = kDefaultKeys
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static var defaultCandidateKeys: String {
|
static var defaultCandidateKeys: String {
|
||||||
kDefaultKeys
|
kDefaultKeys
|
||||||
|
@ -682,13 +695,18 @@ public enum mgrPrefs {
|
||||||
|
|
||||||
extension mgrPrefs {
|
extension mgrPrefs {
|
||||||
static func fixOddPreferences() {
|
static func fixOddPreferences() {
|
||||||
// 防呆。macOS 10.11 用 IMK 選字窗會崩潰。
|
// 防呆。macOS 10.11 用 IMK 選字窗會崩潰,macOS 10.13 的 IMK 選字窗仍有問題。
|
||||||
if #unavailable(macOS 10.13) { mgrPrefs.useIMKCandidateWindow = false }
|
// 一般人想用的 IMK 選字窗基於 macOS 10.09 系統內建的注音輸入法的那種矩陣選字窗。
|
||||||
|
// 然而,該選字窗的體驗直到 macOS 10.14 開始才在 IMKCandidates 當中正式提供。
|
||||||
|
if #unavailable(macOS 10.14) {
|
||||||
|
mgrPrefs.useIMKCandidateWindow = false
|
||||||
|
mgrPrefs.adjustIMKCandidateWindowLevel = false
|
||||||
|
}
|
||||||
if #unavailable(macOS 10.15) {
|
if #unavailable(macOS 10.15) {
|
||||||
handleDefaultCandidateFontsByLangIdentifier = false
|
mgrPrefs.handleDefaultCandidateFontsByLangIdentifier = false
|
||||||
shouldAlwaysUseShiftKeyAccommodation = false
|
mgrPrefs.shouldAlwaysUseShiftKeyAccommodation = false
|
||||||
disableShiftTogglingAlphanumericalMode = false
|
mgrPrefs.disableShiftTogglingAlphanumericalMode = false
|
||||||
togglingAlphanumericalModeWithLShift = false
|
mgrPrefs.togglingAlphanumericalModeWithLShift = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class CandidateKeyLabel: NSObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol ctlCandidateDelegate: AnyObject {
|
public protocol ctlCandidateDelegate: AnyObject {
|
||||||
var isAssociatedPhrasesMode: Bool { get }
|
var isAssociatedPhrasesState: Bool { get }
|
||||||
func sharedEventHandler(_ event: NSEvent!) -> Bool
|
func sharedEventHandler(_ event: NSEvent!) -> Bool
|
||||||
func candidateCountForController(_ controller: ctlCandidateProtocol) -> Int
|
func candidateCountForController(_ controller: ctlCandidateProtocol) -> Int
|
||||||
func candidatesForController(_ controller: ctlCandidateProtocol) -> [(String, String)]
|
func candidatesForController(_ controller: ctlCandidateProtocol) -> [(String, String)]
|
||||||
|
|
|
@ -11,7 +11,7 @@ import InputMethodKit
|
||||||
|
|
||||||
public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
|
public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
|
||||||
public var currentLayout: CandidateLayout = .horizontal
|
public var currentLayout: CandidateLayout = .horizontal
|
||||||
private let defaultIMKSelectionKey: [UInt16: String] = [
|
public static let defaultIMKSelectionKey: [UInt16: String] = [
|
||||||
18: "1", 19: "2", 20: "3", 21: "4", 23: "5", 22: "6", 26: "7", 28: "8", 25: "9",
|
18: "1", 19: "2", 20: "3", 21: "4", 23: "5", 22: "6", 26: "7", 28: "8", 25: "9",
|
||||||
]
|
]
|
||||||
public weak var delegate: ctlCandidateDelegate? {
|
public weak var delegate: ctlCandidateDelegate? {
|
||||||
|
@ -241,7 +241,6 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
|
||||||
// 鬼知道為什麼這個函式接收的參數是陣列,但經過測試卻發現這個函式收到的陣列往往內容只有一個。
|
// 鬼知道為什麼這個函式接收的參數是陣列,但經過測試卻發現這個函式收到的陣列往往內容只有一個。
|
||||||
// 這也可能是 Objective-C 當中允許接收內容為 nil 的一種方式。
|
// 這也可能是 Objective-C 當中允許接收內容為 nil 的一種方式。
|
||||||
guard !eventArray.isEmpty else { return }
|
guard !eventArray.isEmpty else { return }
|
||||||
var eventArray = eventArray
|
|
||||||
let event = eventArray[0]
|
let event = eventArray[0]
|
||||||
let input = InputSignal(event: event)
|
let input = InputSignal(event: event)
|
||||||
guard let delegate = delegate else { return }
|
guard let delegate = delegate else { return }
|
||||||
|
@ -279,7 +278,7 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if let newChar = defaultIMKSelectionKey[event.keyCode] {
|
if let newChar = ctlCandidateIMK.defaultIMKSelectionKey[event.keyCode] {
|
||||||
/// 根據 KeyCode 重新換算一下選字鍵的 NSEvent,糾正其 Character 數值。
|
/// 根據 KeyCode 重新換算一下選字鍵的 NSEvent,糾正其 Character 數值。
|
||||||
/// 反正 IMK 選字窗目前也沒辦法修改選字鍵。
|
/// 反正 IMK 選字窗目前也沒辦法修改選字鍵。
|
||||||
let newEvent = NSEvent.keyEvent(
|
let newEvent = NSEvent.keyEvent(
|
||||||
|
@ -295,12 +294,27 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol {
|
||||||
keyCode: event.keyCode
|
keyCode: event.keyCode
|
||||||
)
|
)
|
||||||
if let newEvent = newEvent {
|
if let newEvent = newEvent {
|
||||||
/// 這裡不用診斷了,檢出的內容都是經過轉換之後的正確 NSEvent。
|
if mgrPrefs.useSCPCTypingMode, delegate.isAssociatedPhrasesState {
|
||||||
eventArray = Array(eventArray.dropFirst(0))
|
// 註:input.isShiftHold 已經在 ctlInputMethod.handle() 內處理,因為在那邊處理才有效。
|
||||||
eventArray.insert(newEvent, at: 0)
|
if !input.isShiftHold {
|
||||||
|
_ = delegate.sharedEventHandler(event)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
perform(Selector(("handleKeyboardEvent:")), with: newEvent)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if delegate.isAssociatedPhrasesMode,
|
}
|
||||||
|
|
||||||
|
if mgrPrefs.useSCPCTypingMode {
|
||||||
|
if !input.isReservedKey {
|
||||||
|
_ = delegate.sharedEventHandler(event)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if delegate.isAssociatedPhrasesState,
|
||||||
!input.isPageUp, !input.isPageDown, !input.isCursorForward, !input.isCursorBackward,
|
!input.isPageUp, !input.isPageDown, !input.isCursorForward, !input.isCursorBackward,
|
||||||
!input.isCursorClockLeft, !input.isCursorClockRight, !input.isSpace,
|
!input.isCursorClockLeft, !input.isCursorClockRight, !input.isSpace,
|
||||||
!input.isEnter || !mgrPrefs.alsoConfirmAssociatedCandidatesByEnter
|
!input.isEnter || !mgrPrefs.alsoConfirmAssociatedCandidatesByEnter
|
||||||
|
@ -332,3 +346,25 @@ var currentTISInputSource: TISInputSource? {
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Translating NumPad KeyCodes to Default IMK Candidate Selection KeyCodes.
|
||||||
|
|
||||||
|
extension ctlCandidateIMK {
|
||||||
|
public static func replaceNumPadKeyCodes(target event: NSEvent) -> NSEvent? {
|
||||||
|
let mapNumPadKeyCodeTranslation: [UInt16: UInt16] = [
|
||||||
|
83: 18, 84: 19, 85: 20, 86: 21, 87: 23, 88: 22, 89: 26, 91: 28, 92: 25,
|
||||||
|
]
|
||||||
|
return NSEvent.keyEvent(
|
||||||
|
with: event.type,
|
||||||
|
location: event.locationInWindow,
|
||||||
|
modifierFlags: event.modifierFlags,
|
||||||
|
timestamp: event.timestamp,
|
||||||
|
windowNumber: event.windowNumber,
|
||||||
|
context: nil,
|
||||||
|
characters: event.characters ?? "",
|
||||||
|
charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? event.characters ?? "",
|
||||||
|
isARepeat: event.isARepeat,
|
||||||
|
keyCode: mapNumPadKeyCodeTranslation[event.keyCode] ?? event.keyCode
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -168,7 +168,11 @@ private class vwrCandidateUniversal: NSView {
|
||||||
result = NSColor.systemBlue
|
result = NSColor.systemBlue
|
||||||
default: break
|
default: break
|
||||||
}
|
}
|
||||||
let blendingAgainstTarget: NSColor = IME.isDarkMode ? NSColor.black : NSColor.white
|
var blendingAgainstTarget: NSColor = IME.isDarkMode ? NSColor.black : NSColor.white
|
||||||
|
if #unavailable(macOS 10.14) {
|
||||||
|
colorBlendAmount = 0.3
|
||||||
|
blendingAgainstTarget = NSColor.white
|
||||||
|
}
|
||||||
return result.blended(withFraction: colorBlendAmount, of: blendingAgainstTarget)!
|
return result.blended(withFraction: colorBlendAmount, of: blendingAgainstTarget)!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,68 +9,99 @@
|
||||||
import Cocoa
|
import Cocoa
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
@available(macOS 10.15, *)
|
extension NSImage {
|
||||||
class ctlPrefUI {
|
static var tabImageGeneral: NSImage! {
|
||||||
private(set) var tabImageGeneral: NSImage! = NSImage(named: "PrefToolbar-General")
|
if #unavailable(macOS 11.0) {
|
||||||
private(set) var tabImageExperiences: NSImage! = NSImage(named: "PrefToolbar-Experiences")
|
return NSImage(named: "PrefToolbar-General")
|
||||||
private(set) var tabImageDictionary: NSImage! = NSImage(named: "PrefToolbar-Dictionary")
|
} else {
|
||||||
private(set) var tabImageKeyboard: NSImage! = NSImage(named: "PrefToolbar-Keyboard")
|
return NSImage(
|
||||||
private(set) var tabImageDevZone: NSImage! = NSImage(named: "PrefToolbar-DevZone")
|
|
||||||
|
|
||||||
init() {
|
|
||||||
if #available(macOS 11.0, *) {
|
|
||||||
tabImageGeneral = NSImage(
|
|
||||||
systemSymbolName: "wrench.and.screwdriver.fill", accessibilityDescription: "General Preferences"
|
systemSymbolName: "wrench.and.screwdriver.fill", accessibilityDescription: "General Preferences"
|
||||||
)
|
)
|
||||||
tabImageExperiences = NSImage(
|
}
|
||||||
systemSymbolName: "person.fill.questionmark", accessibilityDescription: "Experiences 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"
|
||||||
)
|
)
|
||||||
tabImageDictionary = NSImage(
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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"
|
systemSymbolName: "character.book.closed.fill", accessibilityDescription: "Dictionary Preferences"
|
||||||
)
|
)
|
||||||
tabImageKeyboard = NSImage(
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static var tabImageKeyboard: NSImage! {
|
||||||
|
if #unavailable(macOS 11.0) {
|
||||||
|
return NSImage(named: "PrefToolbar-Keyboard")
|
||||||
|
} else {
|
||||||
|
return NSImage(
|
||||||
systemSymbolName: "keyboard.macwindow", accessibilityDescription: "Keyboard Preferences"
|
systemSymbolName: "keyboard.macwindow", accessibilityDescription: "Keyboard Preferences"
|
||||||
)
|
)
|
||||||
tabImageDevZone = NSImage(
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static var tabImageDevZone: NSImage! {
|
||||||
|
if #available(macOS 12.0, *) {
|
||||||
|
return NSImage(
|
||||||
systemSymbolName: "hand.raised.circle", accessibilityDescription: "DevZone Preferences"
|
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, *)
|
||||||
|
class ctlPrefUI {
|
||||||
lazy var controller = PreferencesWindowController(
|
lazy var controller = PreferencesWindowController(
|
||||||
panes: [
|
panes: [
|
||||||
Preferences.Pane(
|
Preferences.Pane(
|
||||||
identifier: Preferences.PaneIdentifier(rawValue: "General"),
|
identifier: Preferences.PaneIdentifier(rawValue: "General"),
|
||||||
title: NSLocalizedString("General", comment: ""),
|
title: NSLocalizedString("General", comment: ""),
|
||||||
toolbarIcon: tabImageGeneral
|
toolbarIcon: .tabImageGeneral
|
||||||
) {
|
) {
|
||||||
suiPrefPaneGeneral()
|
suiPrefPaneGeneral()
|
||||||
},
|
},
|
||||||
Preferences.Pane(
|
Preferences.Pane(
|
||||||
identifier: Preferences.PaneIdentifier(rawValue: "Experiences"),
|
identifier: Preferences.PaneIdentifier(rawValue: "Experience"),
|
||||||
title: NSLocalizedString("Experience", comment: ""),
|
title: NSLocalizedString("Experience", comment: ""),
|
||||||
toolbarIcon: tabImageExperiences
|
toolbarIcon: .tabImageExperience
|
||||||
) {
|
) {
|
||||||
suiPrefPaneExperience()
|
suiPrefPaneExperience()
|
||||||
},
|
},
|
||||||
Preferences.Pane(
|
Preferences.Pane(
|
||||||
identifier: Preferences.PaneIdentifier(rawValue: "Dictionary"),
|
identifier: Preferences.PaneIdentifier(rawValue: "Dictionary"),
|
||||||
title: NSLocalizedString("Dictionary", comment: ""),
|
title: NSLocalizedString("Dictionary", comment: ""),
|
||||||
toolbarIcon: tabImageDictionary
|
toolbarIcon: .tabImageDictionary
|
||||||
) {
|
) {
|
||||||
suiPrefPaneDictionary()
|
suiPrefPaneDictionary()
|
||||||
},
|
},
|
||||||
Preferences.Pane(
|
Preferences.Pane(
|
||||||
identifier: Preferences.PaneIdentifier(rawValue: "Keyboard"),
|
identifier: Preferences.PaneIdentifier(rawValue: "Keyboard"),
|
||||||
title: NSLocalizedString("Keyboard", comment: ""),
|
title: NSLocalizedString("Keyboard", comment: ""),
|
||||||
toolbarIcon: tabImageKeyboard
|
toolbarIcon: .tabImageKeyboard
|
||||||
) {
|
) {
|
||||||
suiPrefPaneKeyboard()
|
suiPrefPaneKeyboard()
|
||||||
},
|
},
|
||||||
Preferences.Pane(
|
Preferences.Pane(
|
||||||
identifier: Preferences.PaneIdentifier(rawValue: "DevZone"),
|
identifier: Preferences.PaneIdentifier(rawValue: "DevZone"),
|
||||||
title: NSLocalizedString("DevZone", comment: ""),
|
title: NSLocalizedString("DevZone", comment: ""),
|
||||||
toolbarIcon: tabImageDevZone
|
toolbarIcon: .tabImageDevZone
|
||||||
) {
|
) {
|
||||||
suiPrefPaneDevZone()
|
suiPrefPaneDevZone()
|
||||||
},
|
},
|
||||||
|
@ -123,3 +154,26 @@ extension View {
|
||||||
overlay(Tooltip(tooltip: tooltip))
|
overlay(Tooltip(tooltip: tooltip))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Windows Aero in Swift UI
|
||||||
|
|
||||||
|
// Ref: https://stackoverflow.com/questions/62461957
|
||||||
|
|
||||||
|
@available(macOS 10.15, *)
|
||||||
|
struct VisualEffectView: NSViewRepresentable {
|
||||||
|
let material: NSVisualEffectView.Material
|
||||||
|
let blendingMode: NSVisualEffectView.BlendingMode
|
||||||
|
|
||||||
|
func makeNSView(context _: Context) -> NSVisualEffectView {
|
||||||
|
let visualEffectView = NSVisualEffectView()
|
||||||
|
visualEffectView.material = material
|
||||||
|
visualEffectView.blendingMode = blendingMode
|
||||||
|
visualEffectView.state = NSVisualEffectView.State.active
|
||||||
|
return visualEffectView
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateNSView(_ visualEffectView: NSVisualEffectView, context _: Context) {
|
||||||
|
visualEffectView.material = material
|
||||||
|
visualEffectView.blendingMode = blendingMode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -16,6 +16,10 @@ struct suiPrefPaneDevZone: View {
|
||||||
forKey: UserDef.kHandleDefaultCandidateFontsByLangIdentifier.rawValue)
|
forKey: UserDef.kHandleDefaultCandidateFontsByLangIdentifier.rawValue)
|
||||||
@State private var selShouldAlwaysUseShiftKeyAccommodation: Bool = UserDefaults.standard.bool(
|
@State private var selShouldAlwaysUseShiftKeyAccommodation: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue)
|
forKey: UserDef.kShouldAlwaysUseShiftKeyAccommodation.rawValue)
|
||||||
|
@State private var selAdjustIMKCandidateWindowLevel: Bool = UserDefaults.standard.bool(
|
||||||
|
forKey: UserDef.kAdjustIMKCandidateWindowLevel.rawValue)
|
||||||
|
|
||||||
|
private let contentMaxHeight: Double = 430
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
@ -30,6 +34,7 @@ struct suiPrefPaneDevZone: View {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
ScrollView {
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
Preferences.Container(contentWidth: contentWidth) {
|
||||||
Preferences.Section(title: "", bottomDivider: true) {
|
Preferences.Section(title: "", bottomDivider: true) {
|
||||||
Text(
|
Text(
|
||||||
|
@ -44,7 +49,19 @@ struct suiPrefPaneDevZone: View {
|
||||||
mgrPrefs.useIMKCandidateWindow = selUseIMKCandidateWindow
|
mgrPrefs.useIMKCandidateWindow = selUseIMKCandidateWindow
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
Text(LocalizedStringKey("IMK candidate window is plagued with issues like failed selection keys."))
|
Text(LocalizedStringKey("IMK candidate window is plagued with issues and incapabilities."))
|
||||||
|
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
|
||||||
|
Toggle(
|
||||||
|
LocalizedStringKey("Adjust the window level of IMK Candidate Window"),
|
||||||
|
isOn: $selAdjustIMKCandidateWindowLevel.onChange {
|
||||||
|
mgrPrefs.adjustIMKCandidateWindowLevel = selAdjustIMKCandidateWindowLevel
|
||||||
|
}
|
||||||
|
).disabled(mgrPrefs.useIMKCandidateWindow == false)
|
||||||
|
Text(
|
||||||
|
LocalizedStringKey(
|
||||||
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop."
|
||||||
|
)
|
||||||
|
)
|
||||||
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
|
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
|
||||||
Toggle(
|
Toggle(
|
||||||
LocalizedStringKey("Use .langIdentifier to handle UI fonts in candidate window"),
|
LocalizedStringKey("Use .langIdentifier to handle UI fonts in candidate window"),
|
||||||
|
@ -64,6 +81,7 @@ struct suiPrefPaneDevZone: View {
|
||||||
mgrPrefs.shouldAlwaysUseShiftKeyAccommodation = selShouldAlwaysUseShiftKeyAccommodation
|
mgrPrefs.shouldAlwaysUseShiftKeyAccommodation = selShouldAlwaysUseShiftKeyAccommodation
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
.disabled(mgrPrefs.disableShiftTogglingAlphanumericalMode)
|
||||||
Text(
|
Text(
|
||||||
LocalizedStringKey(
|
LocalizedStringKey(
|
||||||
"Some client apps (like Chromium-cored browsers: MS Edge, Google Chrome, etc.) may duplicate Shift-key inputs due to their internal bugs, and their devs are less likely to fix their bugs of such. vChewing has its accommodation procedures enabled by default for known Chromium-cored browsers. If you want the same accommodation for other client apps, please tick this checkbox on."
|
"Some client apps (like Chromium-cored browsers: MS Edge, Google Chrome, etc.) may duplicate Shift-key inputs due to their internal bugs, and their devs are less likely to fix their bugs of such. vChewing has its accommodation procedures enabled by default for known Chromium-cored browsers. If you want the same accommodation for other client apps, please tick this checkbox on."
|
||||||
|
@ -73,6 +91,9 @@ struct suiPrefPaneDevZone: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
|
||||||
|
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
|
|
|
@ -25,6 +25,8 @@ struct suiPrefPaneDictionary: View {
|
||||||
forKey: UserDef.kFetchSuggestionsFromUserOverrideModel.rawValue)
|
forKey: UserDef.kFetchSuggestionsFromUserOverrideModel.rawValue)
|
||||||
@State private var selUseFixecCandidateOrderOnSelection: Bool = UserDefaults.standard.bool(
|
@State private var selUseFixecCandidateOrderOnSelection: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUseFixecCandidateOrderOnSelection.rawValue)
|
forKey: UserDef.kUseFixecCandidateOrderOnSelection.rawValue)
|
||||||
|
|
||||||
|
private let contentMaxHeight: Double = 430
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
@ -39,6 +41,7 @@ struct suiPrefPaneDictionary: View {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
ScrollView {
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
Preferences.Container(contentWidth: contentWidth) {
|
||||||
Preferences.Section(title: "", bottomDivider: true) {
|
Preferences.Section(title: "", bottomDivider: true) {
|
||||||
Text(LocalizedStringKey("Choose your desired user data folder path. Will be omitted if invalid."))
|
Text(LocalizedStringKey("Choose your desired user data folder path. Will be omitted if invalid."))
|
||||||
|
@ -143,6 +146,9 @@ struct suiPrefPaneDictionary: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
|
||||||
|
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
|
|
|
@ -38,6 +38,8 @@ struct suiPrefPaneExperience: View {
|
||||||
forKey: UserDef.kUpperCaseLetterKeyBehavior.rawValue)
|
forKey: UserDef.kUpperCaseLetterKeyBehavior.rawValue)
|
||||||
@State private var selDisableShiftTogglingAlphanumericalMode: Bool = UserDefaults.standard.bool(
|
@State private var selDisableShiftTogglingAlphanumericalMode: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kDisableShiftTogglingAlphanumericalMode.rawValue)
|
forKey: UserDef.kDisableShiftTogglingAlphanumericalMode.rawValue)
|
||||||
|
|
||||||
|
private let contentMaxHeight: Double = 430
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
@ -52,6 +54,7 @@ struct suiPrefPaneExperience: View {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
ScrollView {
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
Preferences.Container(contentWidth: contentWidth) {
|
||||||
Preferences.Section(label: { Text(LocalizedStringKey("Cursor Selection:")) }) {
|
Preferences.Section(label: { Text(LocalizedStringKey("Cursor Selection:")) }) {
|
||||||
Picker(
|
Picker(
|
||||||
|
@ -175,6 +178,9 @@ struct suiPrefPaneExperience: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
|
||||||
|
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
|
|
|
@ -37,13 +37,15 @@ struct suiPrefPaneGeneral: View {
|
||||||
@State private var selEnableAutoUpdateCheck = UserDefaults.standard.bool(
|
@State private var selEnableAutoUpdateCheck = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kCheckUpdateAutomatically.rawValue)
|
forKey: UserDef.kCheckUpdateAutomatically.rawValue)
|
||||||
@State private var selEnableDebugMode = UserDefaults.standard.bool(forKey: UserDef.kIsDebugModeEnabled.rawValue)
|
@State private var selEnableDebugMode = UserDefaults.standard.bool(forKey: UserDef.kIsDebugModeEnabled.rawValue)
|
||||||
|
|
||||||
|
private let contentMaxHeight: Double = 430
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
return 465
|
return 520
|
||||||
default:
|
default:
|
||||||
if mgrPrefs.appleLanguages[0].contains("zh-Han") {
|
if mgrPrefs.appleLanguages[0].contains("zh-Han") {
|
||||||
return 450
|
return 480
|
||||||
} else {
|
} else {
|
||||||
return 550
|
return 550
|
||||||
}
|
}
|
||||||
|
@ -51,6 +53,7 @@ struct suiPrefPaneGeneral: View {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
ScrollView {
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
Preferences.Container(contentWidth: contentWidth) {
|
||||||
Preferences.Section(bottomDivider: false, label: { Text(LocalizedStringKey("Candidate Size:")) }) {
|
Preferences.Section(bottomDivider: false, label: { Text(LocalizedStringKey("Candidate Size:")) }) {
|
||||||
Picker(
|
Picker(
|
||||||
|
@ -70,6 +73,7 @@ struct suiPrefPaneGeneral: View {
|
||||||
}
|
}
|
||||||
.labelsHidden()
|
.labelsHidden()
|
||||||
.frame(width: 120.0)
|
.frame(width: 120.0)
|
||||||
|
.disabled(mgrPrefs.useIMKCandidateWindow)
|
||||||
Text(LocalizedStringKey("Choose candidate font size for better visual clarity."))
|
Text(LocalizedStringKey("Choose candidate font size for better visual clarity."))
|
||||||
.preferenceDescription()
|
.preferenceDescription()
|
||||||
}
|
}
|
||||||
|
@ -127,6 +131,7 @@ struct suiPrefPaneGeneral: View {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.controlSize(.small)
|
.controlSize(.small)
|
||||||
|
.disabled(mgrPrefs.useIMKCandidateWindow)
|
||||||
}
|
}
|
||||||
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Output Settings:")) }) {
|
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Output Settings:")) }) {
|
||||||
Toggle(
|
Toggle(
|
||||||
|
@ -150,7 +155,7 @@ struct suiPrefPaneGeneral: View {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
Toggle(
|
Toggle(
|
||||||
LocalizedStringKey("Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter"),
|
LocalizedStringKey("Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter"),
|
||||||
isOn: $selInlineDumpPinyinInLieuOfZhuyin.onChange {
|
isOn: $selInlineDumpPinyinInLieuOfZhuyin.onChange {
|
||||||
mgrPrefs.inlineDumpPinyinInLieuOfZhuyin = selInlineDumpPinyinInLieuOfZhuyin
|
mgrPrefs.inlineDumpPinyinInLieuOfZhuyin = selInlineDumpPinyinInLieuOfZhuyin
|
||||||
}
|
}
|
||||||
|
@ -181,6 +186,9 @@ struct suiPrefPaneGeneral: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
|
||||||
|
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
|
|
|
@ -28,6 +28,7 @@ struct suiPrefPaneKeyboard: View {
|
||||||
@State private var selUsingHotKeyCurrencyNumerals = UserDefaults.standard.bool(
|
@State private var selUsingHotKeyCurrencyNumerals = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUsingHotKeyCurrencyNumerals.rawValue)
|
forKey: UserDef.kUsingHotKeyCurrencyNumerals.rawValue)
|
||||||
|
|
||||||
|
private let contentMaxHeight: Double = 430
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
@ -42,6 +43,7 @@ struct suiPrefPaneKeyboard: View {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
|
ScrollView {
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
Preferences.Container(contentWidth: contentWidth) {
|
||||||
Preferences.Section(label: { Text(LocalizedStringKey("Selection Keys:")) }) {
|
Preferences.Section(label: { Text(LocalizedStringKey("Selection Keys:")) }) {
|
||||||
ComboBox(
|
ComboBox(
|
||||||
|
@ -65,7 +67,7 @@ struct suiPrefPaneKeyboard: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
).frame(width: 180)
|
).frame(width: 180).disabled(mgrPrefs.useIMKCandidateWindow)
|
||||||
Text(
|
Text(
|
||||||
LocalizedStringKey(
|
LocalizedStringKey(
|
||||||
"Choose or hit Enter to confim your prefered keys for selecting candidates."
|
"Choose or hit Enter to confim your prefered keys for selecting candidates."
|
||||||
|
@ -137,8 +139,20 @@ struct suiPrefPaneKeyboard: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.frame(width: 380.0)
|
.frame(width: 380.0)
|
||||||
Text(LocalizedStringKey("Choose the phonetic layout for Mandarin parser."))
|
HStack {
|
||||||
.preferenceDescription()
|
Text(
|
||||||
|
NSLocalizedString(
|
||||||
|
"Choose the phonetic layout for Mandarin parser.",
|
||||||
|
comment: ""
|
||||||
|
) + (mgrPrefs.appleLanguages[0].contains("en") ? " " : "")
|
||||||
|
+ NSLocalizedString(
|
||||||
|
"Apple Dynamic Bopomofo Basic Keyboard Layouts (Dachen & Eten Traditional) must match the Dachen parser in order to be functional.",
|
||||||
|
comment: ""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
|
||||||
|
Spacer().frame(width: 30)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Basic Keyboard Layout:")) }) {
|
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Basic Keyboard Layout:")) }) {
|
||||||
HStack {
|
HStack {
|
||||||
|
@ -161,8 +175,20 @@ struct suiPrefPaneKeyboard: View {
|
||||||
.labelsHidden()
|
.labelsHidden()
|
||||||
.frame(width: 240.0)
|
.frame(width: 240.0)
|
||||||
}
|
}
|
||||||
Text(LocalizedStringKey("Choose the macOS-level basic keyboard layout."))
|
HStack {
|
||||||
.preferenceDescription()
|
Text(
|
||||||
|
NSLocalizedString(
|
||||||
|
"Choose the macOS-level basic keyboard layout.",
|
||||||
|
comment: ""
|
||||||
|
) + (mgrPrefs.appleLanguages[0].contains("en") ? " " : "")
|
||||||
|
+ NSLocalizedString(
|
||||||
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only.",
|
||||||
|
comment: ""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.preferenceDescription().fixedSize(horizontal: false, vertical: true)
|
||||||
|
Spacer().frame(width: 30)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Keyboard Shortcuts:")) }) {
|
Preferences.Section(bottomDivider: true, label: { Text(LocalizedStringKey("Keyboard Shortcuts:")) }) {
|
||||||
Toggle(
|
Toggle(
|
||||||
|
@ -209,25 +235,9 @@ struct suiPrefPaneKeyboard: View {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Divider()
|
|
||||||
Preferences.Container(contentWidth: contentWidth) {
|
|
||||||
Preferences.Section(title: "") {
|
|
||||||
VStack(alignment: .leading, spacing: 10) {
|
|
||||||
Text(
|
|
||||||
LocalizedStringKey(
|
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.preferenceDescription()
|
|
||||||
Text(
|
|
||||||
LocalizedStringKey(
|
|
||||||
"Apple Dynamic Bopomofo Basic Keyboard Layouts (Dachen & Eten Traditional) must match the Dachen parser in order to be functional."
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.preferenceDescription()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
.frame(maxHeight: contentMaxHeight).fixedSize(horizontal: false, vertical: true)
|
||||||
|
.background(VisualEffectView(material: .sidebar, blendingMode: .behindWindow))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,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, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists: ENTER to boost, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude.";
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.";
|
||||||
"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.";
|
||||||
|
@ -88,6 +88,7 @@
|
||||||
|
|
||||||
// SwiftUI Preferences
|
// SwiftUI Preferences
|
||||||
"(Shift+)Space:" = "(Shift+)Space:";
|
"(Shift+)Space:" = "(Shift+)Space:";
|
||||||
|
"Adjust the window level of IMK Candidate Window" = "Adjust the window level of IMK Candidate Window";
|
||||||
"Allow backspace-editing miscomposed readings" = "Allow backspace-editing miscomposed readings";
|
"Allow backspace-editing miscomposed readings" = "Allow backspace-editing miscomposed readings";
|
||||||
"Allow boosting / excluding a candidate of single kanji" = "Allow boosting / excluding a candidate of single kanji";
|
"Allow boosting / excluding a candidate of single kanji" = "Allow boosting / excluding a candidate of single kanji";
|
||||||
"Allow using Enter key to confirm associated candidate selection" = "Allow using Enter key to confirm associated candidate selection";
|
"Allow using Enter key to confirm associated candidate selection" = "Allow using Enter key to confirm associated candidate selection";
|
||||||
|
@ -119,6 +120,8 @@
|
||||||
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
|
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
|
||||||
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";
|
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";
|
||||||
"Choose your preferred layout of the candidate window." = "Choose your preferred layout of the candidate window.";
|
"Choose your preferred layout of the candidate window." = "Choose your preferred layout of the candidate window.";
|
||||||
|
"Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" = "Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter";
|
||||||
|
"Completely disable using Shift key to toggling alphanumerical mode" = "Completely disable using Shift key to toggling alphanumerical mode";
|
||||||
"Cursor Selection:" = "Cursor Selection:";
|
"Cursor Selection:" = "Cursor Selection:";
|
||||||
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "Dachen (Microsoft Standard / Wang / 01, etc.)";
|
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "Dachen (Microsoft Standard / Wang / 01, etc.)";
|
||||||
"Dachen 26 (libChewing)" = "Dachen 26 (libChewing)";
|
"Dachen 26 (libChewing)" = "Dachen 26 (libChewing)";
|
||||||
|
@ -145,15 +148,15 @@
|
||||||
"Hsu" = "Hsu";
|
"Hsu" = "Hsu";
|
||||||
"Hualuo Pinyin with Numeral Intonation" = "Hualuo Pinyin with Numeral Intonation";
|
"Hualuo Pinyin with Numeral Intonation" = "Hualuo Pinyin with Numeral Intonation";
|
||||||
"IBM" = "IBM";
|
"IBM" = "IBM";
|
||||||
"IMK candidate window is plagued with issues like failed selection keys." = "IMK candidate window is plagued with issues like failed selection keys.";
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop." = "IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop.";
|
||||||
|
"IMK candidate window is plagued with issues and incapabilities." = "IMK candidate window is plagued with issues and incapabilities.";
|
||||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
||||||
"Japanese" = "Japanese";
|
"Japanese" = "Japanese";
|
||||||
"Keyboard Shortcuts:" = "Keyboard Shortcuts:";
|
"Keyboard Shortcuts:" = "Keyboard Shortcuts:";
|
||||||
"Keyboard" = "Keyboard";
|
"Keyboard" = "Keyboard";
|
||||||
"Misc Settings:" = "Misc Settings:";
|
"Misc Settings:" = "Misc Settings:";
|
||||||
"MiTAC" = "MiTAC";
|
"MiTAC" = "MiTAC";
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only.";
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only.";
|
||||||
"Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" = "Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter";
|
|
||||||
"Output Settings:" = "Output Settings:";
|
"Output Settings:" = "Output Settings:";
|
||||||
"Phonetic Parser:" = "Phonetic Parser:";
|
"Phonetic Parser:" = "Phonetic Parser:";
|
||||||
"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
|
"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
|
||||||
|
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
@ -29,7 +29,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, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists: ENTER to boost, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude.";
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.";
|
||||||
"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.";
|
||||||
|
@ -88,6 +88,7 @@
|
||||||
|
|
||||||
// SwiftUI Preferences
|
// SwiftUI Preferences
|
||||||
"(Shift+)Space:" = "(Shift+)Space:";
|
"(Shift+)Space:" = "(Shift+)Space:";
|
||||||
|
"Adjust the window level of IMK Candidate Window" = "Adjust the window level of IMK Candidate Window";
|
||||||
"Allow backspace-editing miscomposed readings" = "Allow backspace-editing miscomposed readings";
|
"Allow backspace-editing miscomposed readings" = "Allow backspace-editing miscomposed readings";
|
||||||
"Allow boosting / excluding a candidate of single kanji" = "Allow boosting / excluding a candidate of single kanji";
|
"Allow boosting / excluding a candidate of single kanji" = "Allow boosting / excluding a candidate of single kanji";
|
||||||
"Allow using Enter key to confirm associated candidate selection" = "Allow using Enter key to confirm associated candidate selection";
|
"Allow using Enter key to confirm associated candidate selection" = "Allow using Enter key to confirm associated candidate selection";
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
|
"Choose the phonetic layout for Mandarin parser." = "Choose the phonetic layout for Mandarin parser.";
|
||||||
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";
|
"Choose your desired user data folder path. Will be omitted if invalid." = "Choose your desired user data folder path. Will be omitted if invalid.";
|
||||||
"Choose your preferred layout of the candidate window." = "Choose your preferred layout of the candidate window.";
|
"Choose your preferred layout of the candidate window." = "Choose your preferred layout of the candidate window.";
|
||||||
|
"Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" = "Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter";
|
||||||
"Completely disable using Shift key to toggling alphanumerical mode" = "Completely disable using Shift key to toggling alphanumerical mode";
|
"Completely disable using Shift key to toggling alphanumerical mode" = "Completely disable using Shift key to toggling alphanumerical mode";
|
||||||
"Cursor Selection:" = "Cursor Selection:";
|
"Cursor Selection:" = "Cursor Selection:";
|
||||||
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "Dachen (Microsoft Standard / Wang / 01, etc.)";
|
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "Dachen (Microsoft Standard / Wang / 01, etc.)";
|
||||||
|
@ -146,15 +148,15 @@
|
||||||
"Hsu" = "Hsu";
|
"Hsu" = "Hsu";
|
||||||
"Hualuo Pinyin with Numeral Intonation" = "Hualuo Pinyin with Numeral Intonation";
|
"Hualuo Pinyin with Numeral Intonation" = "Hualuo Pinyin with Numeral Intonation";
|
||||||
"IBM" = "IBM";
|
"IBM" = "IBM";
|
||||||
"IMK candidate window is plagued with issues like failed selection keys." = "IMK candidate window is plagued with issues like failed selection keys.";
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop." = "IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop.";
|
||||||
|
"IMK candidate window is plagued with issues and incapabilities." = "IMK candidate window is plagued with issues and incapabilities.";
|
||||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
"in front of the phrase (like macOS built-in Zhuyin IME)" = "in front of the phrase (like macOS built-in Zhuyin IME)";
|
||||||
"Japanese" = "Japanese";
|
"Japanese" = "Japanese";
|
||||||
"Keyboard Shortcuts:" = "Keyboard Shortcuts:";
|
"Keyboard Shortcuts:" = "Keyboard Shortcuts:";
|
||||||
"Keyboard" = "Keyboard";
|
"Keyboard" = "Keyboard";
|
||||||
"Misc Settings:" = "Misc Settings:";
|
"Misc Settings:" = "Misc Settings:";
|
||||||
"MiTAC" = "MiTAC";
|
"MiTAC" = "MiTAC";
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only." = "Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only.";
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only.";
|
||||||
"Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" = "Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter";
|
|
||||||
"Output Settings:" = "Output Settings:";
|
"Output Settings:" = "Output Settings:";
|
||||||
"Phonetic Parser:" = "Phonetic Parser:";
|
"Phonetic Parser:" = "Phonetic Parser:";
|
||||||
"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
|
"Push the cursor in front of the phrase after selection" = "Push the cursor in front of the phrase after selection";
|
||||||
|
|
|
@ -29,7 +29,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, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」は既存語彙:ENTER で最優先にし、SHIFT+CMD+ENTER で優先順位を下げる;\n BackSpace 或いは Delete で排除。";
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」は既存語彙:ENTER で最優先にし、SHIFT+COMMAND+ENTER で優先順位を下げる;\n BackSpace 或いは Delete で排除。";
|
||||||
"Edit Phrase Replacement Table…" = "言葉置換表を編集…";
|
"Edit Phrase Replacement Table…" = "言葉置換表を編集…";
|
||||||
"Use Phrase Replacement" = "言葉置換機能";
|
"Use Phrase Replacement" = "言葉置換機能";
|
||||||
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";
|
"Candidates keys cannot be empty." = "言選り用キー陣列に何かキーをご登録ください。";
|
||||||
|
@ -88,6 +88,7 @@
|
||||||
|
|
||||||
// SwiftUI Preferences
|
// SwiftUI Preferences
|
||||||
"(Shift+)Space:" = "(Shift+)Space:";
|
"(Shift+)Space:" = "(Shift+)Space:";
|
||||||
|
"Adjust the window level of IMK Candidate Window" = "IMK 候補陳列ウィンドウの表示の優先順位を調整する";
|
||||||
"Allow backspace-editing miscomposed readings" = "効かぬ音読みを BackSpace で再編集";
|
"Allow backspace-editing miscomposed readings" = "効かぬ音読みを BackSpace で再編集";
|
||||||
"Allow boosting / excluding a candidate of single kanji" = "即排除/即最優先にできる候補の文字数の最低限は1字とする";
|
"Allow boosting / excluding a candidate of single kanji" = "即排除/即最優先にできる候補の文字数の最低限は1字とする";
|
||||||
"Allow using Enter key to confirm associated candidate selection" = "Enter キーを連想語彙候補の確認のために使う";
|
"Allow using Enter key to confirm associated candidate selection" = "Enter キーを連想語彙候補の確認のために使う";
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
"Choose the phonetic layout for Mandarin parser." = "共通語分析器の注音配列をご指定ください。";
|
"Choose the phonetic layout for Mandarin parser." = "共通語分析器の注音配列をご指定ください。";
|
||||||
"Choose your desired user data folder path. Will be omitted if invalid." = "欲しがるユーザー辞書保存先をご指定ください。無効なる保存先設定は省かれる。";
|
"Choose your desired user data folder path. Will be omitted if invalid." = "欲しがるユーザー辞書保存先をご指定ください。無効なる保存先設定は省かれる。";
|
||||||
"Choose your preferred layout of the candidate window." = "入力候補陳列の仕様をご指定ください。";
|
"Choose your preferred layout of the candidate window." = "入力候補陳列の仕様をご指定ください。";
|
||||||
|
"Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" = "Ctrl(+Option)+Command+Enter で出すのを漢語弁音と変換";
|
||||||
"Completely disable using Shift key to toggling alphanumerical mode" = "Shift キーの英数入力モードの切り替え機能を徹底的に禁ず";
|
"Completely disable using Shift key to toggling alphanumerical mode" = "Shift キーの英数入力モードの切り替え機能を徹底的に禁ず";
|
||||||
"Cursor Selection:" = "カーソル候補呼出:";
|
"Cursor Selection:" = "カーソル候補呼出:";
|
||||||
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千配列 (Microsoft 標準・王安・零壹など)";
|
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千配列 (Microsoft 標準・王安・零壹など)";
|
||||||
|
@ -146,15 +148,15 @@
|
||||||
"Hsu" = "許氏国音自然配列";
|
"Hsu" = "許氏国音自然配列";
|
||||||
"Hualuo Pinyin with Numeral Intonation" = "中華ローマ弁音 (ローマ字+数字音調)";
|
"Hualuo Pinyin with Numeral Intonation" = "中華ローマ弁音 (ローマ字+数字音調)";
|
||||||
"IBM" = "IBM 配列";
|
"IBM" = "IBM 配列";
|
||||||
"IMK candidate window is plagued with issues like failed selection keys." = "IMK 候補陳列ウィンドウで言選り用キーは現時点で利用不可、尚他故障あり。";
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop." = "IMK 候補陳列ウィンドウにはこういう欠陥がある (#FB11300759):何の特殊措置をしない限り、候補陳列ウィンドウは常に NSMenu と Spotlight に遮られている。これをチェックすれば、毎度候補陳列ウィンドウを呼ぶたびに、候補陳列ウィンドウの表示の優先順位を自動的に調整する。だが、この特殊措置こそが、完璧とは言えぬ(この欠陥も #FB11300759 に記されておる):一旦入力アプリ自身が再起動すると、このパソコンの再起動まで、IMK 候補陳列ウィンドウは所在のデスクトップの全てのウィンドウの後ろに隠されてしまうことになる。";
|
||||||
|
"IMK candidate window is plagued with issues and incapabilities." = "IMK 候補陳列ウィンドウで言選り用キーは現時点で調整不可、且つ他故障あり。";
|
||||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "単語の前で // macOS 内蔵注音入力のやり方";
|
"in front of the phrase (like macOS built-in Zhuyin IME)" = "単語の前で // macOS 内蔵注音入力のやり方";
|
||||||
"Japanese" = "和語";
|
"Japanese" = "和語";
|
||||||
"Keyboard Shortcuts:" = "ショートカット:";
|
"Keyboard Shortcuts:" = "ショートカット:";
|
||||||
"Keyboard" = "配列設定";
|
"Keyboard" = "配列設定";
|
||||||
"Misc Settings:" = "他の設定:";
|
"Misc Settings:" = "他の設定:";
|
||||||
"MiTAC" = "神通配列";
|
"MiTAC" = "神通配列";
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外の英数キーボードは漢語弁音以外の配列に不適用。";
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "QWERTY 以外の英数キーボードは弁音以外の配列に不適用。";
|
||||||
"Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" = "Ctrl(+Alt)+CMD+Enter で出すのを漢語弁音と変換";
|
|
||||||
"Output Settings:" = "出力設定:";
|
"Output Settings:" = "出力設定:";
|
||||||
"Phonetic Parser:" = "注音配列:";
|
"Phonetic Parser:" = "注音配列:";
|
||||||
"Push the cursor in front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める";
|
"Push the cursor in front of the phrase after selection" = "候補選択の直後、すぐカーソルを単語の向こうに推し進める";
|
||||||
|
|
|
@ -29,7 +29,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, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:敲 Enter 以升权、敲 Shift+CMD+Enter 以降权;\n 敲 BackSpace 或 Delete 以排除。";
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:敲 Enter 以升权、敲 Shift+Command+Enter 以降权;\n 敲 BackSpace 或 Delete 以排除。";
|
||||||
"Edit Phrase Replacement Table…" = "编辑语汇置换表…";
|
"Edit Phrase Replacement Table…" = "编辑语汇置换表…";
|
||||||
"Use Phrase Replacement" = "使用语汇置换";
|
"Use Phrase Replacement" = "使用语汇置换";
|
||||||
"Candidates keys cannot be empty." = "您必须指定选字键。";
|
"Candidates keys cannot be empty." = "您必须指定选字键。";
|
||||||
|
@ -88,6 +88,7 @@
|
||||||
|
|
||||||
// SwiftUI Preferences
|
// SwiftUI Preferences
|
||||||
"(Shift+)Space:" = "(Shift+)空格键:";
|
"(Shift+)Space:" = "(Shift+)空格键:";
|
||||||
|
"Adjust the window level of IMK Candidate Window" = "调整 IMK 选字窗的显示优先级";
|
||||||
"Allow backspace-editing miscomposed readings" = "允许对无效的读音使用 BackSpace 编辑";
|
"Allow backspace-editing miscomposed readings" = "允许对无效的读音使用 BackSpace 编辑";
|
||||||
"Allow boosting / excluding a candidate of single kanji" = "将可以就地升权/排除的候选字词的最短词长设为单个汉字";
|
"Allow boosting / excluding a candidate of single kanji" = "将可以就地升权/排除的候选字词的最短词长设为单个汉字";
|
||||||
"Allow using Enter key to confirm associated candidate selection" = "允许使用 Enter 确认当前选中的联想词";
|
"Allow using Enter key to confirm associated candidate selection" = "允许使用 Enter 确认当前选中的联想词";
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
"Choose the phonetic layout for Mandarin parser." = "请指定普通话/国音分析器所使用的注音排列。";
|
"Choose the phonetic layout for Mandarin parser." = "请指定普通话/国音分析器所使用的注音排列。";
|
||||||
"Choose your desired user data folder path. Will be omitted if invalid." = "请在此指定您想指定的使用者语汇档案目录。无效值会被忽略。";
|
"Choose your desired user data folder path. Will be omitted if invalid." = "请在此指定您想指定的使用者语汇档案目录。无效值会被忽略。";
|
||||||
"Choose your preferred layout of the candidate window." = "选择您所偏好的候选字窗布局。";
|
"Choose your preferred layout of the candidate window." = "选择您所偏好的候选字窗布局。";
|
||||||
|
"Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" = "Ctrl(+Option)+Command+Enter 输出汉语拼音而非注音";
|
||||||
"Completely disable using Shift key to toggling alphanumerical mode" = "彻底禁止使用 Shift 键切换英数模式";
|
"Completely disable using Shift key to toggling alphanumerical mode" = "彻底禁止使用 Shift 键切换英数模式";
|
||||||
"Cursor Selection:" = "选字游标:";
|
"Cursor Selection:" = "选字游标:";
|
||||||
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千排列 (微软标准/王安/零壹/仲鼎/国乔)";
|
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千排列 (微软标准/王安/零壹/仲鼎/国乔)";
|
||||||
|
@ -146,15 +148,15 @@
|
||||||
"Hsu" = "许氏国音自然排列";
|
"Hsu" = "许氏国音自然排列";
|
||||||
"Hualuo Pinyin with Numeral Intonation" = "华罗拼音+数字标调";
|
"Hualuo Pinyin with Numeral Intonation" = "华罗拼音+数字标调";
|
||||||
"IBM" = "IBM 排列";
|
"IBM" = "IBM 排列";
|
||||||
"IMK candidate window is plagued with issues like failed selection keys." = "IMK 选字窗目前暂时无法正常使用选字键,并具其它未知故障。";
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop." = "IMK 选字窗有一处行为缺陷 (#FB11300759):在预设情况下,会始终被 NSMenu 和 Spotlight 挡住。启用该选项的话,威注音会试图根据当前状况自动调整该选字窗的显示优先级。然而,该保守治疗方案本身也有一个缺陷 (也备案于 #FB11300759):只要输入法本身有重新启动过,则 IMK 选字窗便会顽固地显示于当前桌面所有视窗的底部,直至重新开机为止。";
|
||||||
|
"IMK candidate window is plagued with issues and incapabilities." = "IMK 选字窗目前暂时无法正常自订选字键,并具其它未知故障。";
|
||||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "将游标置于词语前方 // macOS 内建注音风格";
|
"in front of the phrase (like macOS built-in Zhuyin IME)" = "将游标置于词语前方 // macOS 内建注音风格";
|
||||||
"Japanese" = "和语";
|
"Japanese" = "和语";
|
||||||
"Keyboard Shortcuts:" = "键盘快捷键:";
|
"Keyboard Shortcuts:" = "键盘快捷键:";
|
||||||
"Keyboard" = "键盘设定";
|
"Keyboard" = "键盘设定";
|
||||||
"Misc Settings:" = "杂项:";
|
"Misc Settings:" = "杂项:";
|
||||||
"MiTAC" = "神通排列";
|
"MiTAC" = "神通排列";
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英数布局是为了汉语拼音排列使用者而准备的。";
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "QWERTY 以外的英数布局是为了拼音排列使用者而准备的。";
|
||||||
"Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" = "Ctrl(+Alt)+CMD+Enter 输出汉语拼音而非注音";
|
|
||||||
"Output Settings:" = "输出设定:";
|
"Output Settings:" = "输出设定:";
|
||||||
"Phonetic Parser:" = "注音排列:";
|
"Phonetic Parser:" = "注音排列:";
|
||||||
"Push the cursor in front of the phrase after selection" = "在选字后将游标置于该字词的前方";
|
"Push the cursor in front of the phrase after selection" = "在选字后将游标置于该字词的前方";
|
||||||
|
@ -178,7 +180,7 @@
|
||||||
"Universal Pinyin with Numeral Intonation" = "通用拼音+数字标调";
|
"Universal Pinyin with Numeral Intonation" = "通用拼音+数字标调";
|
||||||
"Use .langIdentifier to handle UI fonts in candidate window" = "使用 .langIdentifier 来管理选字窗的预设介面字型";
|
"Use .langIdentifier to handle UI fonts in candidate window" = "使用 .langIdentifier 来管理选字窗的预设介面字型";
|
||||||
"Use ESC key to clear the entire input buffer" = "敲 ESC 键以清空整个组字缓冲区";
|
"Use ESC key to clear the entire input buffer" = "敲 ESC 键以清空整个组字缓冲区";
|
||||||
"Use IMK Candidate Window instead (will reboot the IME)" = "启用 IMK 选字窗(会自动重启输入法)";
|
"Use IMK Candidate Window instead (will reboot the IME)" = "启用与 macOS 内建输入法相同的 IMK 选字窗(会自动重启输入法)";
|
||||||
"Use Shift Key Accommodation in all cases" = "对任何客体应用均启用 Shift 键相容性措施";
|
"Use Shift Key Accommodation in all cases" = "对任何客体应用均启用 Shift 键相容性措施";
|
||||||
"Vertical" = "纵向布局";
|
"Vertical" = "纵向布局";
|
||||||
"Warning: This page is for testing future features. \nFeatures listed here may not work as expected." = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。";
|
"Warning: This page is for testing future features. \nFeatures listed here may not work as expected." = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。";
|
||||||
|
|
|
@ -29,7 +29,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, SHIFT+CMD+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:敲 Enter 以升權、敲 Shift+CMD+Enter 以降權;\n 敲 BackSpace 或 Delete 以排除。";
|
"\"%@\" already exists: ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:敲 Enter 以升權、敲 Shift+Command+Enter 以降權;\n 敲 BackSpace 或 Delete 以排除。";
|
||||||
"Edit Phrase Replacement Table…" = "編輯語彙置換表…";
|
"Edit Phrase Replacement Table…" = "編輯語彙置換表…";
|
||||||
"Use Phrase Replacement" = "使用語彙置換";
|
"Use Phrase Replacement" = "使用語彙置換";
|
||||||
"Candidates keys cannot be empty." = "您必須指定選字鍵。";
|
"Candidates keys cannot be empty." = "您必須指定選字鍵。";
|
||||||
|
@ -88,6 +88,7 @@
|
||||||
|
|
||||||
// SwiftUI Preferences
|
// SwiftUI Preferences
|
||||||
"(Shift+)Space:" = "(Shift+)空格鍵:";
|
"(Shift+)Space:" = "(Shift+)空格鍵:";
|
||||||
|
"Adjust the window level of IMK Candidate Window" = "調整 IMK 選字窗的顯示優先級";
|
||||||
"Allow backspace-editing miscomposed readings" = "允許對無效的讀音使用 BackSpace 編輯";
|
"Allow backspace-editing miscomposed readings" = "允許對無效的讀音使用 BackSpace 編輯";
|
||||||
"Allow boosting / excluding a candidate of single kanji" = "將可以就地升權/排除的候選字詞的最短詞長設為單個漢字";
|
"Allow boosting / excluding a candidate of single kanji" = "將可以就地升權/排除的候選字詞的最短詞長設為單個漢字";
|
||||||
"Allow using Enter key to confirm associated candidate selection" = "允許使用 Enter 確認當前選中的聯想詞";
|
"Allow using Enter key to confirm associated candidate selection" = "允許使用 Enter 確認當前選中的聯想詞";
|
||||||
|
@ -119,6 +120,7 @@
|
||||||
"Choose the phonetic layout for Mandarin parser." = "請指定普通話/國音分析器所使用的注音排列。";
|
"Choose the phonetic layout for Mandarin parser." = "請指定普通話/國音分析器所使用的注音排列。";
|
||||||
"Choose your desired user data folder path. Will be omitted if invalid." = "請在此指定您想指定的使用者語彙檔案目錄。無效值會被忽略。";
|
"Choose your desired user data folder path. Will be omitted if invalid." = "請在此指定您想指定的使用者語彙檔案目錄。無效值會被忽略。";
|
||||||
"Choose your preferred layout of the candidate window." = "選擇您所偏好的候選字窗佈局。";
|
"Choose your preferred layout of the candidate window." = "選擇您所偏好的候選字窗佈局。";
|
||||||
|
"Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" = "Ctrl(+Option)+Command+Enter 輸出漢語拼音而非注音";
|
||||||
"Completely disable using Shift key to toggling alphanumerical mode" = "徹底禁止使用 Shift 鍵切換英數模式";
|
"Completely disable using Shift key to toggling alphanumerical mode" = "徹底禁止使用 Shift 鍵切換英數模式";
|
||||||
"Cursor Selection:" = "選字游標:";
|
"Cursor Selection:" = "選字游標:";
|
||||||
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千排列 (微軟標準/王安/零壹/仲鼎/國喬)";
|
"Dachen (Microsoft Standard / Wang / 01, etc.)" = "大千排列 (微軟標準/王安/零壹/仲鼎/國喬)";
|
||||||
|
@ -146,15 +148,15 @@
|
||||||
"Hsu" = "許氏國音自然排列";
|
"Hsu" = "許氏國音自然排列";
|
||||||
"Hualuo Pinyin with Numeral Intonation" = "華羅拼音+數字標調";
|
"Hualuo Pinyin with Numeral Intonation" = "華羅拼音+數字標調";
|
||||||
"IBM" = "IBM 排列";
|
"IBM" = "IBM 排列";
|
||||||
"IMK candidate window is plagued with issues like failed selection keys." = "IMK 選字窗目前暫時無法正常使用選字鍵,併具其它未知故障。";
|
"IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop." = "IMK 選字窗有一處行為缺陷 (#FB11300759):在預設情況下,會始終被 NSMenu 和 Spotlight 擋住。啟用該選項的話,威注音會試圖根據當前狀況自動調整該選字窗的顯示優先級。然而,該保守治療方案本身也有一個缺陷 (也備案於 #FB11300759):只要輸入法本身有重新啟動過,則 IMK 選字窗便會頑固地顯示於當前桌面所有視窗的底部,直至重新開機為止。";
|
||||||
|
"IMK candidate window is plagued with issues and incapabilities." = "IMK 選字窗目前暫時無法正常自訂選字鍵,併具其它未知故障。";
|
||||||
"in front of the phrase (like macOS built-in Zhuyin IME)" = "將游標置於詞語前方 // macOS 內建注音風格";
|
"in front of the phrase (like macOS built-in Zhuyin IME)" = "將游標置於詞語前方 // macOS 內建注音風格";
|
||||||
"Japanese" = "和語";
|
"Japanese" = "和語";
|
||||||
"Keyboard Shortcuts:" = "鍵盤快速鍵:";
|
"Keyboard Shortcuts:" = "鍵盤快速鍵:";
|
||||||
"Keyboard" = "鍵盤設定";
|
"Keyboard" = "鍵盤設定";
|
||||||
"Misc Settings:" = "雜項:";
|
"Misc Settings:" = "雜項:";
|
||||||
"MiTAC" = "神通排列";
|
"MiTAC" = "神通排列";
|
||||||
"Non-QWERTY alphanumerical keyboard layouts are for Hanyu Pinyin parser only." = "QWERTY 以外的英數佈局是為了漢語拼音排列使用者而準備的。";
|
"Non-QWERTY alphanumerical keyboard layouts are for Pinyin parser only." = "QWERTY 以外的英數佈局是為了拼音排列使用者而準備的。";
|
||||||
"Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" = "Ctrl(+Alt)+CMD+Enter 輸出漢語拼音而非注音";
|
|
||||||
"Output Settings:" = "輸出設定:";
|
"Output Settings:" = "輸出設定:";
|
||||||
"Phonetic Parser:" = "注音排列:";
|
"Phonetic Parser:" = "注音排列:";
|
||||||
"Push the cursor in front of the phrase after selection" = "在選字後將游標置於該字詞的前方";
|
"Push the cursor in front of the phrase after selection" = "在選字後將游標置於該字詞的前方";
|
||||||
|
@ -178,7 +180,7 @@
|
||||||
"Universal Pinyin with Numeral Intonation" = "通用拼音+數字標調";
|
"Universal Pinyin with Numeral Intonation" = "通用拼音+數字標調";
|
||||||
"Use .langIdentifier to handle UI fonts in candidate window" = "使用 .langIdentifier 來管理選字窗的預設介面字型";
|
"Use .langIdentifier to handle UI fonts in candidate window" = "使用 .langIdentifier 來管理選字窗的預設介面字型";
|
||||||
"Use ESC key to clear the entire input buffer" = "敲 ESC 鍵以清空整個組字緩衝區";
|
"Use ESC key to clear the entire input buffer" = "敲 ESC 鍵以清空整個組字緩衝區";
|
||||||
"Use IMK Candidate Window instead (will reboot the IME)" = "啟用 IMK 選字窗(會自動重啟輸入法)";
|
"Use IMK Candidate Window instead (will reboot the IME)" = "啟用與 macOS 內建輸入法相同的 IMK 選字窗(會自動重啟輸入法)";
|
||||||
"Use Shift Key Accommodation in all cases" = "對任何客體應用均啟用 Shift 鍵相容性措施";
|
"Use Shift Key Accommodation in all cases" = "對任何客體應用均啟用 Shift 鍵相容性措施";
|
||||||
"Vertical" = "縱向佈局";
|
"Vertical" = "縱向佈局";
|
||||||
"Warning: This page is for testing future features. \nFeatures listed here may not work as expected." = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。";
|
"Warning: This page is for testing future features. \nFeatures listed here may not work as expected." = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。";
|
||||||
|
|
|
@ -336,7 +336,7 @@ extension ctlPrefWindow: NSToolbarDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
var toolbarIdentifiers: [NSToolbarItem.Identifier] {
|
var toolbarIdentifiers: [NSToolbarItem.Identifier] {
|
||||||
if #available(macOS 10.13, *) {
|
if #available(macOS 10.14, *) {
|
||||||
return [.ofGeneral, .ofExperience, .ofDictionary, .ofKeyboard, .ofDevZone]
|
return [.ofGeneral, .ofExperience, .ofDictionary, .ofKeyboard, .ofDevZone]
|
||||||
}
|
}
|
||||||
return [.ofGeneral, .ofExperience, .ofDictionary, .ofKeyboard]
|
return [.ofGeneral, .ofExperience, .ofDictionary, .ofKeyboard]
|
||||||
|
@ -389,59 +389,31 @@ extension ctlPrefWindow: NSToolbarDelegate {
|
||||||
case .ofGeneral:
|
case .ofGeneral:
|
||||||
let title = NSLocalizedString("General", comment: "")
|
let title = NSLocalizedString("General", comment: "")
|
||||||
item.label = title
|
item.label = title
|
||||||
if #available(macOS 11.0, *) {
|
item.image = .tabImageGeneral
|
||||||
item.image = NSImage(
|
|
||||||
systemSymbolName: "wrench.and.screwdriver.fill", accessibilityDescription: "General Preferences"
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
item.image = NSImage(named: "PrefToolbar-General")
|
|
||||||
}
|
|
||||||
item.action = #selector(showGeneralView(_:))
|
item.action = #selector(showGeneralView(_:))
|
||||||
|
|
||||||
case .ofExperience:
|
case .ofExperience:
|
||||||
let title = NSLocalizedString("Experience", comment: "")
|
let title = NSLocalizedString("Experience", comment: "")
|
||||||
item.label = title
|
item.label = title
|
||||||
if #available(macOS 11.0, *) {
|
item.image = .tabImageExperience
|
||||||
item.image = NSImage(
|
|
||||||
systemSymbolName: "person.fill.questionmark", accessibilityDescription: "Experiences Preferences"
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
item.image = NSImage(named: "PrefToolbar-Experiences")
|
|
||||||
}
|
|
||||||
item.action = #selector(showExperienceView(_:))
|
item.action = #selector(showExperienceView(_:))
|
||||||
|
|
||||||
case .ofDictionary:
|
case .ofDictionary:
|
||||||
let title = NSLocalizedString("Dictionary", comment: "")
|
let title = NSLocalizedString("Dictionary", comment: "")
|
||||||
item.label = title
|
item.label = title
|
||||||
if #available(macOS 11.0, *) {
|
item.image = .tabImageDictionary
|
||||||
item.image = NSImage(
|
|
||||||
systemSymbolName: "character.book.closed.fill", accessibilityDescription: "Dictionary Preferences"
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
item.image = NSImage(named: "PrefToolbar-Dictionary")
|
|
||||||
}
|
|
||||||
item.action = #selector(showDictionaryView(_:))
|
item.action = #selector(showDictionaryView(_:))
|
||||||
|
|
||||||
case .ofKeyboard:
|
case .ofKeyboard:
|
||||||
let title = NSLocalizedString("Keyboard", comment: "")
|
let title = NSLocalizedString("Keyboard", comment: "")
|
||||||
item.label = title
|
item.label = title
|
||||||
if #available(macOS 11.0, *) {
|
item.image = .tabImageKeyboard
|
||||||
item.image = NSImage(systemSymbolName: "keyboard.macwindow", accessibilityDescription: "Keyboard Preferences")
|
|
||||||
} else {
|
|
||||||
item.image = NSImage(named: "PrefToolbar-Keyboard")
|
|
||||||
}
|
|
||||||
item.action = #selector(showKeyboardView(_:))
|
item.action = #selector(showKeyboardView(_:))
|
||||||
|
|
||||||
case .ofDevZone:
|
case .ofDevZone:
|
||||||
let title = NSLocalizedString("DevZone", comment: "")
|
let title = NSLocalizedString("DevZone", comment: "")
|
||||||
item.label = title
|
item.label = title
|
||||||
if #available(macOS 11.0, *) {
|
item.image = .tabImageDevZone
|
||||||
item.image = NSImage(
|
|
||||||
systemSymbolName: "hand.raised.circle", accessibilityDescription: "DevZone Preferences"
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
item.image = NSImage(named: "PrefToolbar-DevZone")
|
|
||||||
}
|
|
||||||
item.action = #selector(showDevZoneView(_:))
|
item.action = #selector(showDevZoneView(_:))
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21223" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21223"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -27,17 +27,17 @@
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Dx-DY-UG1">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Dx-DY-UG1">
|
||||||
<rect key="frame" x="89" y="442" width="123" height="15"/>
|
<rect key="frame" x="89" y="442" width="130" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="lblAppTitle" userLabel="appNameLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="lblAppTitle" userLabel="appNameLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma-Bold"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Srh-ua-uQD">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Srh-ua-uQD">
|
||||||
<rect key="frame" x="89" y="426" width="281" height="15"/>
|
<rect key="frame" x="89" y="426" width="263" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Derived from OpenVanilla McBopopmofo Project." id="lblProjectDescription">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Derived from OpenVanilla McBopopmofo Project." id="lblProjectDescription">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="I1K-WT-jie"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="I1K-WT-jie"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="lblCopyright" userLabel="appCopyrightLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="lblCopyright" userLabel="appCopyrightLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8M8-3C-BZO">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8M8-3C-BZO">
|
||||||
<rect key="frame" x="89" y="387" width="431" height="15"/>
|
<rect key="frame" x="89" y="387" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" selectable="YES" title="Placeholder for detailed credits." id="lblCredits">
|
<textFieldCell key="cell" selectable="YES" title="Placeholder for detailed credits." id="lblCredits">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eYM-F7-drf">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eYM-F7-drf">
|
||||||
<rect key="frame" x="89" y="364" width="431" height="15"/>
|
<rect key="frame" x="89" y="364" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="lblLicense">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="lblLicense">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
<constraint firstAttribute="width" constant="356" id="B0d-48-3we"/>
|
<constraint firstAttribute="width" constant="356" id="B0d-48-3we"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" selectable="YES" id="lblDisclaimer">
|
<textFieldCell key="cell" selectable="YES" id="lblDisclaimer">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
@ -92,12 +92,12 @@
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="Noc-kP-zTE"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="Noc-kP-zTE"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Pk-k3-0cO">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Pk-k3-0cO">
|
||||||
<rect key="frame" x="211" y="442" width="126" height="15"/>
|
<rect key="frame" x="218" y="442" width="126" height="15"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="0XT-cl-6S4"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="0XT-cl-6S4"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="lblVersionString" userLabel="appVersionLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="lblVersionString" userLabel="appVersionLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -109,7 +109,7 @@
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="btnConfirm">
|
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="btnConfirm">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma-Bold"/>
|
||||||
<string key="keyEquivalent" base64-UTF8="YES">
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
DQ
|
DQ
|
||||||
</string>
|
</string>
|
||||||
|
@ -157,7 +157,7 @@ DQ
|
||||||
<rect key="frame" x="382" y="69" width="143" height="32"/>
|
<rect key="frame" x="382" y="69" width="143" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Website" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xCD-lx-zY7">
|
<buttonCell key="cell" type="push" title="Website" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="xCD-lx-zY7">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="btnWebsite:" target="-1" id="KjF-Ja-Vhz"/>
|
<action selector="btnWebsite:" target="-1" id="KjF-Ja-Vhz"/>
|
||||||
|
@ -167,7 +167,7 @@ DQ
|
||||||
<rect key="frame" x="382" y="42" width="143" height="32"/>
|
<rect key="frame" x="382" y="42" width="143" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Bug Report" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="7SW-k9-sId">
|
<buttonCell key="cell" type="push" title="Bug Report" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="7SW-k9-sId">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="btnBugReport:" target="-1" id="ub1-rB-AED"/>
|
<action selector="btnBugReport:" target="-1" id="ub1-rB-AED"/>
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
<outlet property="fontSizePopUpButton" destination="90" id="108"/>
|
<outlet property="fontSizePopUpButton" destination="90" id="108"/>
|
||||||
<outlet property="lblCurrentlySpecifiedUserDataFolder" destination="REC-r4-T7m" id="eEq-XN-mMq"/>
|
<outlet property="lblCurrentlySpecifiedUserDataFolder" destination="REC-r4-T7m" id="eEq-XN-mMq"/>
|
||||||
<outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/>
|
<outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/>
|
||||||
<outlet property="tglControlDevZoneIMKCandidate" destination="tglControlDevZoneIMKCandidate" id="eyT-uP-QU6"/>
|
|
||||||
<outlet property="uiLanguageButton" destination="oS6-u5-7dP" id="V3u-XK-z7G"/>
|
<outlet property="uiLanguageButton" destination="oS6-u5-7dP" id="V3u-XK-z7G"/>
|
||||||
<outlet property="vwrDevZone" destination="Qd7-ln-nNO" id="8mw-wO-gXS"/>
|
<outlet property="vwrDevZone" destination="Qd7-ln-nNO" id="8mw-wO-gXS"/>
|
||||||
<outlet property="vwrDictionary" destination="Rnp-LM-RIF" id="8gY-ah-RT8"/>
|
<outlet property="vwrDictionary" destination="Rnp-LM-RIF" id="8gY-ah-RT8"/>
|
||||||
|
@ -140,6 +139,13 @@
|
||||||
<binding destination="32" name="value" keyPath="values.ShowPageButtonsInCandidateWindow" id="6BK-hU-lqs"/>
|
<binding destination="32" name="value" keyPath="values.ShowPageButtonsInCandidateWindow" id="6BK-hU-lqs"/>
|
||||||
</connections>
|
</connections>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="32" name="enabled" keyPath="values.UseIMKCandidateWindow" id="pHT-37-Eyh">
|
||||||
|
<dictionary key="options">
|
||||||
|
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="da1-7e-els">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="da1-7e-els">
|
||||||
<rect key="frame" x="18" y="199" width="246" height="15"/>
|
<rect key="frame" x="18" y="199" width="246" height="15"/>
|
||||||
|
@ -213,7 +219,7 @@
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="18" id="zRq-Om-0dK"/>
|
<constraint firstAttribute="height" constant="18" id="zRq-Om-0dK"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="check" title="Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="iWy-Nw-QKB">
|
<buttonCell key="cell" type="check" title="Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter" bezelStyle="regularSquare" imagePosition="left" controlSize="small" inset="2" id="iWy-Nw-QKB">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
|
@ -256,6 +262,11 @@
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="32" name="selectedTag" keyPath="values.CandidateListTextSize" id="107"/>
|
<binding destination="32" name="selectedTag" keyPath="values.CandidateListTextSize" id="107"/>
|
||||||
|
<binding destination="32" name="enabled" keyPath="values.UseIMKCandidateWindow" id="bpc-Zm-I2n">
|
||||||
|
<dictionary key="options">
|
||||||
|
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0Fh-O5-BKD">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0Fh-O5-BKD">
|
||||||
|
@ -356,7 +367,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="127" y="471" width="151" height="23"/>
|
<rect key="frame" x="127" y="470" width="151" height="23"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="147" id="Luo-hb-kcY"/>
|
<constraint firstAttribute="width" constant="147" id="Luo-hb-kcY"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
|
@ -372,6 +383,11 @@
|
||||||
</comboBoxCell>
|
</comboBoxCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="changeSelectionKeyAction:" target="-2" id="REj-7y-bbQ"/>
|
<action selector="changeSelectionKeyAction:" target="-2" id="REj-7y-bbQ"/>
|
||||||
|
<binding destination="32" name="enabled" keyPath="values.UseIMKCandidateWindow" id="BDQ-gl-txA">
|
||||||
|
<dictionary key="options">
|
||||||
|
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
</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">
|
||||||
|
@ -594,7 +610,7 @@
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="n7q-ew-DYu" firstAttribute="leading" secondItem="XWo-36-xGi" secondAttribute="leading" constant="32" id="2gT-9Z-6F4"/>
|
<constraint firstItem="n7q-ew-DYu" firstAttribute="leading" secondItem="XWo-36-xGi" secondAttribute="leading" constant="32" id="2gT-9Z-6F4"/>
|
||||||
<constraint firstItem="YkJ-lr-EP6" firstAttribute="top" secondItem="J0f-Aw-dxC" secondAttribute="bottom" constant="8" id="5fd-qi-hJ6"/>
|
<constraint firstItem="YkJ-lr-EP6" firstAttribute="top" secondItem="J0f-Aw-dxC" secondAttribute="bottom" constant="8" id="5fd-qi-hJ6"/>
|
||||||
<constraint firstItem="13" firstAttribute="top" secondItem="uHU-aL-du7" secondAttribute="bottom" constant="11" id="5uq-In-4bN"/>
|
<constraint firstItem="13" firstAttribute="top" secondItem="uHU-aL-du7" secondAttribute="bottom" constant="10" id="5uq-In-4bN"/>
|
||||||
<constraint firstItem="HaB-rc-AcW" firstAttribute="leading" secondItem="6MM-WC-Mpd" secondAttribute="leading" id="7Fs-9l-g66"/>
|
<constraint firstItem="HaB-rc-AcW" firstAttribute="leading" secondItem="6MM-WC-Mpd" secondAttribute="leading" id="7Fs-9l-g66"/>
|
||||||
<constraint firstItem="TMn-LX-3Ub" firstAttribute="top" secondItem="7z2-DD-c58" secondAttribute="bottom" constant="9" id="AXY-LV-HMX"/>
|
<constraint firstItem="TMn-LX-3Ub" firstAttribute="top" secondItem="7z2-DD-c58" secondAttribute="bottom" constant="9" id="AXY-LV-HMX"/>
|
||||||
<constraint firstItem="6q5-OP-iEb" firstAttribute="top" secondItem="YkJ-lr-EP6" secondAttribute="bottom" constant="9" id="AvD-Ni-GL2"/>
|
<constraint firstItem="6q5-OP-iEb" firstAttribute="top" secondItem="YkJ-lr-EP6" secondAttribute="bottom" constant="9" id="AvD-Ni-GL2"/>
|
||||||
|
@ -616,7 +632,7 @@
|
||||||
<constraint firstItem="7z2-DD-c58" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="5" id="VKv-YI-AS2"/>
|
<constraint firstItem="7z2-DD-c58" firstAttribute="top" secondItem="15" secondAttribute="bottom" constant="5" id="VKv-YI-AS2"/>
|
||||||
<constraint firstItem="15" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" symbolic="YES" id="WHr-jO-a07"/>
|
<constraint firstItem="15" firstAttribute="top" secondItem="13" secondAttribute="bottom" constant="8" symbolic="YES" id="WHr-jO-a07"/>
|
||||||
<constraint firstItem="IpX-f7-rTL" firstAttribute="top" secondItem="XWo-36-xGi" secondAttribute="top" constant="20" id="YaG-ab-LJH"/>
|
<constraint firstItem="IpX-f7-rTL" firstAttribute="top" secondItem="XWo-36-xGi" secondAttribute="top" constant="20" id="YaG-ab-LJH"/>
|
||||||
<constraint firstItem="uHU-aL-du7" firstAttribute="top" secondItem="IpX-f7-rTL" secondAttribute="bottom" constant="8" symbolic="YES" id="aet-Zq-v6x"/>
|
<constraint firstItem="uHU-aL-du7" firstAttribute="top" secondItem="IpX-f7-rTL" secondAttribute="bottom" constant="9" id="aet-Zq-v6x"/>
|
||||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="TMn-LX-3Ub" secondAttribute="trailing" constant="20" symbolic="YES" id="atz-4L-U9s"/>
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="TMn-LX-3Ub" secondAttribute="trailing" constant="20" symbolic="YES" id="atz-4L-U9s"/>
|
||||||
<constraint firstItem="veW-XM-HGs" firstAttribute="leading" secondItem="YkJ-lr-EP6" secondAttribute="leading" id="bS2-qk-WNJ"/>
|
<constraint firstItem="veW-XM-HGs" firstAttribute="leading" secondItem="YkJ-lr-EP6" secondAttribute="leading" id="bS2-qk-WNJ"/>
|
||||||
<constraint firstItem="HaB-rc-AcW" firstAttribute="top" secondItem="6MM-WC-Mpd" secondAttribute="bottom" constant="6" symbolic="YES" id="cBa-57-gWH"/>
|
<constraint firstItem="HaB-rc-AcW" firstAttribute="top" secondItem="6MM-WC-Mpd" secondAttribute="bottom" constant="6" symbolic="YES" id="cBa-57-gWH"/>
|
||||||
|
@ -1044,11 +1060,11 @@
|
||||||
<point key="canvasLocation" x="-392" y="-704"/>
|
<point key="canvasLocation" x="-392" y="-704"/>
|
||||||
</visualEffectView>
|
</visualEffectView>
|
||||||
<visualEffectView blendingMode="behindWindow" material="sidebar" state="followsWindowActiveState" id="Qd7-ln-nNO" userLabel="vwrDevZone">
|
<visualEffectView blendingMode="behindWindow" material="sidebar" state="followsWindowActiveState" id="Qd7-ln-nNO" userLabel="vwrDevZone">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="445" height="165"/>
|
<rect key="frame" x="0.0" y="0.0" width="445" height="272"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lblControlDevZoneTitleDescription" userLabel="lblControlDevZoneTitleDescription">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lblControlDevZoneTitleDescription" userLabel="lblControlDevZoneTitleDescription">
|
||||||
<rect key="frame" x="18" y="115" width="343" height="30"/>
|
<rect key="frame" x="18" y="222" width="343" height="30"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" id="lblDevZoneTitleDescription">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" id="lblDevZoneTitleDescription">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
<string key="title">Warning: This page is for testing future features.
|
<string key="title">Warning: This page is for testing future features.
|
||||||
|
@ -1058,49 +1074,82 @@ Features listed here may not work as expected.</string>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="P1o-bW-Tjn">
|
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="P1o-bW-Tjn">
|
||||||
<rect key="frame" x="20" y="104" width="339" height="5"/>
|
<rect key="frame" x="20" y="211" width="339" height="5"/>
|
||||||
</box>
|
</box>
|
||||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tglControlDevZoneIMKCandidate" userLabel="tglControlDevZoneIMKCandidate">
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="le7-59-tFK" userLabel="tglControlDevZoneIMKCandidate">
|
||||||
<rect key="frame" x="19" y="82.5" width="340" height="17"/>
|
<rect key="frame" x="19" y="191.5" width="340" height="17"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="16" id="1fy-CP-mlB"/>
|
<constraint firstAttribute="height" constant="16" id="054-U2-1Xk"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="check" title="Use IMK Candidate Window instead (will reboot the IME)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="tglDevZoneIMKCandidate" userLabel="tglDevZoneIMKCandidate">
|
<buttonCell key="cell" type="check" title="Use IMK Candidate Window instead (will reboot the IME)" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="tglDevZoneIMKCandidate" userLabel="tglDevZoneIMKCandidate">
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" metaFont="cellTitle"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="updateIMKCandidateEnableStatusAction:" target="-2" id="mkT-P8-reE"/>
|
<action selector="updateIMKCandidateEnableStatusAction:" target="-2" id="Gt8-3s-vDd"/>
|
||||||
<binding destination="32" name="value" keyPath="values.UseIMKCandidateWindow" id="XjP-hu-rUm"/>
|
<binding destination="32" name="value" keyPath="values.UseIMKCandidateWindow" id="xRC-sa-mZn"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lblControlDevZoneIMKCandidate" userLabel="lblControlDevZoneIMKCandidate">
|
<textField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jrF-Cr-EDB" userLabel="lblControlDevZoneIMKCandidate">
|
||||||
<rect key="frame" x="18" y="46" width="409" height="28"/>
|
<rect key="frame" x="18" y="169" width="409" height="14"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="405" id="YoB-Wx-n3h"/>
|
<constraint firstAttribute="width" constant="405" id="eHP-6y-RUV"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="IMK candidate window is plagued with issues like malfunctioned selection keys, etc." id="lblDevZoneIMKCandidate">
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="IMK candidate window is plagued with issues and incapabilities." id="lblDevZoneIMKCandidate" userLabel="lblDevZoneIMKCandidate">
|
||||||
<font key="font" metaFont="smallSystem"/>
|
<font key="font" metaFont="smallSystem"/>
|
||||||
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
|
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OJj-Hq-nF8" userLabel="tglControlDevZoneIMKCandidateLevel">
|
||||||
|
<rect key="frame" x="19" y="145.5" width="406" height="17"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="16" id="pEL-6t-gbP"/>
|
||||||
|
</constraints>
|
||||||
|
<buttonCell key="cell" type="check" title="Adjust the window level of IMK Candidate Window" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="tglDevZoneIMKCandidateLevel" userLabel="tglDevZoneIMKCandidateLevel">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="cellTitle"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="updateIMKCandidateEnableStatusAction:" target="-2" id="dAG-Si-cta"/>
|
||||||
|
<binding destination="32" name="value" keyPath="values.AdjustIMKCandidateWindowLevel" id="E6Z-Rn-IHD"/>
|
||||||
|
<binding destination="32" name="enabled" keyPath="values.UseIMKCandidateWindow" id="qla-KO-plC"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4qO-ck-Pzw" userLabel="lblControlDevZoneIMKCandidateLevel">
|
||||||
|
<rect key="frame" x="18" y="39" width="409" height="98"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="98" id="s4O-ec-pBz"/>
|
||||||
|
<constraint firstAttribute="width" constant="405" id="zNy-dn-yPR"/>
|
||||||
|
</constraints>
|
||||||
|
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" id="lblDevZoneIMKCandidateLevel" userLabel="lblDevZoneIMKCandidateLevel">
|
||||||
|
<font key="font" metaFont="smallSystem"/>
|
||||||
|
<string key="title">IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop.</string>
|
||||||
|
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="leading" secondItem="Qd7-ln-nNO" secondAttribute="leading" constant="20" symbolic="YES" id="0Ia-ut-ksj"/>
|
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="leading" secondItem="Qd7-ln-nNO" secondAttribute="leading" constant="20" symbolic="YES" id="0Ia-ut-ksj"/>
|
||||||
<constraint firstItem="tglControlDevZoneIMKCandidate" firstAttribute="top" secondItem="P1o-bW-Tjn" secondAttribute="bottom" constant="7.5" id="3as-Db-NwQ"/>
|
<constraint firstItem="OJj-Hq-nF8" firstAttribute="top" secondItem="jrF-Cr-EDB" secondAttribute="bottom" constant="6.5" id="2sJ-y7-C7J"/>
|
||||||
<constraint firstItem="P1o-bW-Tjn" firstAttribute="trailing" secondItem="tglControlDevZoneIMKCandidate" secondAttribute="trailing" id="LM7-ov-mng"/>
|
<constraint firstItem="le7-59-tFK" firstAttribute="trailing" secondItem="P1o-bW-Tjn" secondAttribute="trailing" id="5G1-VY-skr"/>
|
||||||
|
<constraint firstItem="jrF-Cr-EDB" firstAttribute="trailing" secondItem="OJj-Hq-nF8" secondAttribute="trailing" id="EL1-YF-bHq"/>
|
||||||
|
<constraint firstItem="jrF-Cr-EDB" firstAttribute="leading" secondItem="le7-59-tFK" secondAttribute="leading" id="HZn-ty-n6v"/>
|
||||||
|
<constraint firstItem="4qO-ck-Pzw" firstAttribute="top" secondItem="OJj-Hq-nF8" secondAttribute="bottom" constant="9" id="L8p-vO-Fo7"/>
|
||||||
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="trailing" secondItem="P1o-bW-Tjn" secondAttribute="trailing" id="LqC-ii-aOO"/>
|
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="trailing" secondItem="P1o-bW-Tjn" secondAttribute="trailing" id="LqC-ii-aOO"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="lblControlDevZoneIMKCandidate" secondAttribute="trailing" constant="20" symbolic="YES" id="MHM-FX-JE7"/>
|
<constraint firstItem="4qO-ck-Pzw" firstAttribute="leading" secondItem="OJj-Hq-nF8" secondAttribute="leading" id="UVx-eH-QjH"/>
|
||||||
<constraint firstItem="lblControlDevZoneIMKCandidate" firstAttribute="leading" secondItem="tglControlDevZoneIMKCandidate" secondAttribute="leading" id="WDx-XS-EUF"/>
|
|
||||||
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="leading" secondItem="P1o-bW-Tjn" secondAttribute="leading" id="Wc3-Oe-D2E"/>
|
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="leading" secondItem="P1o-bW-Tjn" secondAttribute="leading" id="Wc3-Oe-D2E"/>
|
||||||
<constraint firstItem="P1o-bW-Tjn" firstAttribute="top" secondItem="lblControlDevZoneTitleDescription" secondAttribute="bottom" constant="8" symbolic="YES" id="Whf-Gf-g65"/>
|
<constraint firstItem="P1o-bW-Tjn" firstAttribute="top" secondItem="lblControlDevZoneTitleDescription" secondAttribute="bottom" constant="8" symbolic="YES" id="Whf-Gf-g65"/>
|
||||||
<constraint firstAttribute="bottom" relation="lessThanOrEqual" secondItem="lblControlDevZoneIMKCandidate" secondAttribute="bottom" constant="142" id="ZcX-Vx-qyC"/>
|
<constraint firstAttribute="bottom" relation="lessThanOrEqual" secondItem="4qO-ck-Pzw" secondAttribute="bottom" constant="39" id="Wrk-iz-rTZ"/>
|
||||||
<constraint firstItem="lblControlDevZoneIMKCandidate" firstAttribute="top" secondItem="tglControlDevZoneIMKCandidate" secondAttribute="bottom" constant="9" id="eqi-Pb-gfH"/>
|
<constraint firstItem="jrF-Cr-EDB" firstAttribute="leading" secondItem="OJj-Hq-nF8" secondAttribute="leading" id="Z1H-NT-vGK"/>
|
||||||
<constraint firstItem="P1o-bW-Tjn" firstAttribute="leading" secondItem="tglControlDevZoneIMKCandidate" secondAttribute="leading" id="f2q-KJ-bvO"/>
|
<constraint firstItem="jrF-Cr-EDB" firstAttribute="top" secondItem="le7-59-tFK" secondAttribute="bottom" constant="9" id="aj4-H1-92H"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="4qO-ck-Pzw" secondAttribute="trailing" constant="20" symbolic="YES" id="erj-vd-tL0"/>
|
||||||
|
<constraint firstItem="le7-59-tFK" firstAttribute="top" secondItem="P1o-bW-Tjn" secondAttribute="bottom" constant="5.5" id="j3c-3A-4JT"/>
|
||||||
|
<constraint firstItem="le7-59-tFK" firstAttribute="leading" secondItem="P1o-bW-Tjn" secondAttribute="leading" id="tqq-97-fHt"/>
|
||||||
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="top" secondItem="Qd7-ln-nNO" secondAttribute="top" constant="20" symbolic="YES" id="vYg-x4-tfo"/>
|
<constraint firstItem="lblControlDevZoneTitleDescription" firstAttribute="top" secondItem="Qd7-ln-nNO" secondAttribute="top" constant="20" symbolic="YES" id="vYg-x4-tfo"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<point key="canvasLocation" x="-393.5" y="-119.5"/>
|
<point key="canvasLocation" x="-393.5" y="-66"/>
|
||||||
</visualEffectView>
|
</visualEffectView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|
|
@ -58,11 +58,12 @@
|
||||||
"GlJ-Ns-9eE.title" = "Auto-Select";
|
"GlJ-Ns-9eE.title" = "Auto-Select";
|
||||||
"hSv-LJ-Cq3.title" = "Enable symbol input support (incl. certain emoji symbols)";
|
"hSv-LJ-Cq3.title" = "Enable symbol input support (incl. certain emoji symbols)";
|
||||||
"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.";
|
||||||
"iWy-Nw-QKB.title" = "Output Hanyu-Pinyin in lieu of Zhuyin when Ctrl(+Alt)+CMD+Enter";
|
"iWy-Nw-QKB.title" = "Commit Hanyu-Pinyin instead on Ctrl(+Option)+Command+Enter";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
||||||
"lblDevZoneIMKCandidate.title" = "IMK candidate window is plagued with issues like failed selection keys.";
|
"lblDevZoneIMKCandidate.title" = "IMK candidate window is plagued with issues and incapabilities.";
|
||||||
|
"lblDevZoneIMKCandidateLevel.title" = "IMK Candidate Window has a bug (#FB11300759) that it is always shown below NSMenu and Spotlight window by default. By toggling this checkbox, vChewing will attempt to adjust its window level according to its current context. However, this accomodation itself has a bug (also filed in #FB11300759): as long as vChewing application restarted once, IMK Candidate Window will always be shown beneath all other windows in the current desktop.";
|
||||||
"lblDevZoneTitleDescription.title" = "Warning: This page is for testing future features. \nFeatures listed here may not work as expected.";
|
"lblDevZoneTitleDescription.title" = "Warning: This page is for testing future features. \nFeatures listed here may not work as expected.";
|
||||||
"lblUpperCaseLetterKeyBehavior.title" = "Choose the behavior of Shift+Letter key with letter inputs.";
|
"lblUpperCaseLetterKeyBehavior.title" = "Choose the behavior of Shift+Letter key with letter inputs.";
|
||||||
"Parser11.title" = "Secondary Pinyin with Numeral Intonation";
|
"Parser11.title" = "Secondary Pinyin with Numeral Intonation";
|
||||||
|
@ -80,6 +81,7 @@
|
||||||
"s7u-Fm-dVg.title" = "Cycling Pages";
|
"s7u-Fm-dVg.title" = "Cycling Pages";
|
||||||
"shc-Nu-UsM.title" = "Show page buttons in candidate list";
|
"shc-Nu-UsM.title" = "Show page buttons in candidate list";
|
||||||
"tglDevZoneIMKCandidate.title" = "Use IMK Candidate Window instead (will reboot the IME)";
|
"tglDevZoneIMKCandidate.title" = "Use IMK Candidate Window instead (will reboot the IME)";
|
||||||
|
"tglDevZoneIMKCandidateLevel.title" = "Adjust the window level of IMK Candidate Window";
|
||||||
"TXr-FF-ehw.title" = "Traditional Chinese";
|
"TXr-FF-ehw.title" = "Traditional Chinese";
|
||||||
"ueU-Rz-a1C.title" = "Choose the behavior of (Shift+)Tab key in the candidate window.";
|
"ueU-Rz-a1C.title" = "Choose the behavior of (Shift+)Tab key in the candidate window.";
|
||||||
"VdT-fw-7pQ.title" = "Debug Mode";
|
"VdT-fw-7pQ.title" = "Debug Mode";
|
||||||
|
|
|
@ -58,11 +58,12 @@
|
||||||
"GlJ-Ns-9eE.title" = "システム設定に準ずる";
|
"GlJ-Ns-9eE.title" = "システム設定に準ずる";
|
||||||
"hSv-LJ-Cq3.title" = "僅かなる絵文字も含む符号入力サポートを起用";
|
"hSv-LJ-Cq3.title" = "僅かなる絵文字も含む符号入力サポートを起用";
|
||||||
"iRg-wx-Nx2.title" = "入力候補陣列の候補文字の字号をご指定ください。";
|
"iRg-wx-Nx2.title" = "入力候補陣列の候補文字の字号をご指定ください。";
|
||||||
"iWy-Nw-QKB.title" = "Ctrl(+Alt)+CMD+Enter で出すのを漢語弁音と変換";
|
"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter で出すのを漢語弁音と変換";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
||||||
"lblDevZoneIMKCandidate.title" = "IMK 候補陳列ウィンドウで言選り用キーは現時点で利用不可、尚他故障あり。";
|
"lblDevZoneIMKCandidate.title" = "IMK 候補陳列ウィンドウで言選り用キーは現時点で調整不可、且つ他故障あり。";
|
||||||
|
"lblDevZoneIMKCandidateLevel.title" = "IMK 候補陳列ウィンドウにはこういう欠陥がある (#FB11300759):何の特殊措置をしない限り、候補陳列ウィンドウは常に NSMenu と Spotlight に遮られている。これをチェックすれば、毎度候補陳列ウィンドウを呼ぶたびに、候補陳列ウィンドウの表示の優先順位を自動的に調整する。だが、この特殊措置こそが、完璧とは言えぬ(この欠陥も #FB11300759 に記されておる):一旦入力アプリ自身が再起動すると、このパソコンの再起動まで、IMK 候補陳列ウィンドウは所在のデスクトップの全てのウィンドウの後ろに隠されてしまうことになる。";
|
||||||
"lblDevZoneTitleDescription.title" = "警告:これからの新機能テストのために作ったページですから、\nここで陳列されている諸機能は予想通り動けるだと思わないでください。";
|
"lblDevZoneTitleDescription.title" = "警告:これからの新機能テストのために作ったページですから、\nここで陳列されている諸機能は予想通り動けるだと思わないでください。";
|
||||||
"lblUpperCaseLetterKeyBehavior.title" = "Shift+文字キーの行為をご指定ください。";
|
"lblUpperCaseLetterKeyBehavior.title" = "Shift+文字キーの行為をご指定ください。";
|
||||||
"Parser11.title" = "国音二式 (ローマ字+数字音調)";
|
"Parser11.title" = "国音二式 (ローマ字+数字音調)";
|
||||||
|
@ -80,6 +81,7 @@
|
||||||
"s7u-Fm-dVg.title" = "ページ";
|
"s7u-Fm-dVg.title" = "ページ";
|
||||||
"shc-Nu-UsM.title" = "ページボタンを表示";
|
"shc-Nu-UsM.title" = "ページボタンを表示";
|
||||||
"tglDevZoneIMKCandidate.title" = "IMK 候補陳列ウィンドウを起用(入力アプリは自動的に再起動)";
|
"tglDevZoneIMKCandidate.title" = "IMK 候補陳列ウィンドウを起用(入力アプリは自動的に再起動)";
|
||||||
|
"tglDevZoneIMKCandidateLevel.title" = "IMK 候補陳列ウィンドウの表示の優先順位を調整する";
|
||||||
"TXr-FF-ehw.title" = "繁体中国語";
|
"TXr-FF-ehw.title" = "繁体中国語";
|
||||||
"ueU-Rz-a1C.title" = "入力候補陳列での (Shift+)Tab キーの輪番切替対象をご指定ください。";
|
"ueU-Rz-a1C.title" = "入力候補陳列での (Shift+)Tab キーの輪番切替対象をご指定ください。";
|
||||||
"VdT-fw-7pQ.title" = "欠陥辿着モード";
|
"VdT-fw-7pQ.title" = "欠陥辿着モード";
|
||||||
|
|
|
@ -58,11 +58,12 @@
|
||||||
"GlJ-Ns-9eE.title" = "自动选择";
|
"GlJ-Ns-9eE.title" = "自动选择";
|
||||||
"hSv-LJ-Cq3.title" = "启用包括少许绘文字在内的符号输入支援";
|
"hSv-LJ-Cq3.title" = "启用包括少许绘文字在内的符号输入支援";
|
||||||
"iRg-wx-Nx2.title" = "变更候选字窗的字型大小。";
|
"iRg-wx-Nx2.title" = "变更候选字窗的字型大小。";
|
||||||
"iWy-Nw-QKB.title" = "Ctrl(+Alt)+CMD+Enter 输出汉语拼音而非注音";
|
"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter 输出汉语拼音而非注音";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
||||||
"lblDevZoneIMKCandidate.title" = "IMK 选字窗目前暂时无法正常使用选字键,并具其它未知故障。";
|
"lblDevZoneIMKCandidate.title" = "IMK 选字窗目前暂时无法正常自订选字键,并具其它未知故障。";
|
||||||
|
"lblDevZoneIMKCandidateLevel.title" = "IMK 选字窗有一处行为缺陷 (#FB11300759):在预设情况下,会始终被 NSMenu 和 Spotlight 挡住。启用该选项的话,威注音会试图根据当前状况自动调整该选字窗的显示优先级。然而,该保守治疗方案本身也有一个缺陷 (也备案于 #FB11300759):只要输入法本身有重新启动过,则 IMK 选字窗便会顽固地显示于当前桌面所有视窗的底部,直至重新开机为止。";
|
||||||
"lblDevZoneTitleDescription.title" = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。";
|
"lblDevZoneTitleDescription.title" = "警告:该页面仅作未来功能测试所用。\n在此列出的功能并非处于完全可用之状态。";
|
||||||
"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母键 的行为。";
|
"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母键 的行为。";
|
||||||
"Parser11.title" = "国音二式+数字标调";
|
"Parser11.title" = "国音二式+数字标调";
|
||||||
|
@ -79,7 +80,8 @@
|
||||||
"rVQ-Hx-cGi.title" = "和语";
|
"rVQ-Hx-cGi.title" = "和语";
|
||||||
"s7u-Fm-dVg.title" = "轮替页面";
|
"s7u-Fm-dVg.title" = "轮替页面";
|
||||||
"shc-Nu-UsM.title" = "在选字窗内显示翻页按钮";
|
"shc-Nu-UsM.title" = "在选字窗内显示翻页按钮";
|
||||||
"tglDevZoneIMKCandidate.title" = "启用 IMK 选字窗(会自动重启输入法)";
|
"tglDevZoneIMKCandidate.title" = "启用与 macOS 内建输入法相同的 IMK 选字窗(会自动重启输入法)";
|
||||||
|
"tglDevZoneIMKCandidateLevel.title" = "调整 IMK 选字窗的显示优先级";
|
||||||
"TXr-FF-ehw.title" = "繁体中文";
|
"TXr-FF-ehw.title" = "繁体中文";
|
||||||
"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 热键在选字窗内的轮替操作对象。";
|
"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 热键在选字窗内的轮替操作对象。";
|
||||||
"VdT-fw-7pQ.title" = "侦错模式";
|
"VdT-fw-7pQ.title" = "侦错模式";
|
||||||
|
|
|
@ -58,11 +58,12 @@
|
||||||
"GlJ-Ns-9eE.title" = "自動選擇";
|
"GlJ-Ns-9eE.title" = "自動選擇";
|
||||||
"hSv-LJ-Cq3.title" = "啟用包括少許繪文字在內的符號輸入支援";
|
"hSv-LJ-Cq3.title" = "啟用包括少許繪文字在內的符號輸入支援";
|
||||||
"iRg-wx-Nx2.title" = "變更候選字窗的字型大小。";
|
"iRg-wx-Nx2.title" = "變更候選字窗的字型大小。";
|
||||||
"iWy-Nw-QKB.title" = "Ctrl(+Alt)+CMD+Enter 輸出漢語拼音而非注音";
|
"iWy-Nw-QKB.title" = "Ctrl(+Option)+Command+Enter 輸出漢語拼音而非注音";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
"jQC-12-UuK.ibShadowedObjectValues[0]" = "Item 1";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
"jQC-12-UuK.ibShadowedObjectValues[1]" = "Item 2";
|
||||||
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
"jQC-12-UuK.ibShadowedObjectValues[2]" = "Item 3";
|
||||||
"lblDevZoneIMKCandidate.title" = "IMK 選字窗目前暫時無法正常使用選字鍵,併具其它未知故障。";
|
"lblDevZoneIMKCandidate.title" = "IMK 選字窗目前暫時無法正常自訂選字鍵,併具其它未知故障。";
|
||||||
|
"lblDevZoneIMKCandidateLevel.title" = "IMK 選字窗有一處行為缺陷 (#FB11300759):在預設情況下,會始終被 NSMenu 和 Spotlight 擋住。啟用該選項的話,威注音會試圖根據當前狀況自動調整該選字窗的顯示優先級。然而,該保守治療方案本身也有一個缺陷 (也備案於 #FB11300759):只要輸入法本身有重新啟動過,則 IMK 選字窗便會頑固地顯示於當前桌面所有視窗的底部,直至重新開機為止。";
|
||||||
"lblDevZoneTitleDescription.title" = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。";
|
"lblDevZoneTitleDescription.title" = "警告:該頁面僅作未來功能測試所用。\n在此列出的功能並非處於完全可用之狀態。";
|
||||||
"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母鍵 的行為。";
|
"lblUpperCaseLetterKeyBehavior.title" = "指定 Shift+字母鍵 的行為。";
|
||||||
"Parser11.title" = "國音二式+數字標調";
|
"Parser11.title" = "國音二式+數字標調";
|
||||||
|
@ -79,7 +80,8 @@
|
||||||
"rVQ-Hx-cGi.title" = "和語";
|
"rVQ-Hx-cGi.title" = "和語";
|
||||||
"s7u-Fm-dVg.title" = "輪替頁面";
|
"s7u-Fm-dVg.title" = "輪替頁面";
|
||||||
"shc-Nu-UsM.title" = "在選字窗內顯示翻頁按鈕";
|
"shc-Nu-UsM.title" = "在選字窗內顯示翻頁按鈕";
|
||||||
"tglDevZoneIMKCandidate.title" = "啟用 IMK 選字窗(會自動重啟輸入法)";
|
"tglDevZoneIMKCandidate.title" = "啟用與 macOS 內建輸入法相同的 IMK 選字窗(會自動重啟輸入法)";
|
||||||
|
"tglDevZoneIMKCandidateLevel.title" = "調整 IMK 選字窗的顯示優先級";
|
||||||
"TXr-FF-ehw.title" = "繁體中文";
|
"TXr-FF-ehw.title" = "繁體中文";
|
||||||
"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 熱鍵在選字窗內的輪替操作對象。";
|
"ueU-Rz-a1C.title" = "指定 (Shift+)Tab 熱鍵在選字窗內的輪替操作對象。";
|
||||||
"VdT-fw-7pQ.title" = "偵錯模式";
|
"VdT-fw-7pQ.title" = "偵錯模式";
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.9.4</string>
|
<string>2.0.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1994</string>
|
<string>2000</string>
|
||||||
<key>UpdateInfoEndpoint</key>
|
<key>UpdateInfoEndpoint</key>
|
||||||
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
|
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
|
||||||
<key>UpdateInfoSite</key>
|
<key>UpdateInfoSite</key>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21223" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21223"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -27,17 +27,17 @@
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Dx-DY-UG1">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Dx-DY-UG1">
|
||||||
<rect key="frame" x="89" y="442" width="123" height="15"/>
|
<rect key="frame" x="89" y="442" width="130" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="lblAppTitle" userLabel="appNameLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="vChewing for macOS" id="lblAppTitle" userLabel="appNameLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma-Bold"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Srh-ua-uQD">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Srh-ua-uQD">
|
||||||
<rect key="frame" x="89" y="426" width="322" height="15"/>
|
<rect key="frame" x="89" y="426" width="303" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="A subproduct of the vChewing Input Method for macOS." id="lblProjectDescription">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="A subproduct of the vChewing Input Method for macOS." id="lblProjectDescription">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="I1K-WT-jie"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="293" id="I1K-WT-jie"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="lblCopyright" userLabel="appCopyrightLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="Placeholder for showing copyright information." id="lblCopyright" userLabel="appCopyrightLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8M8-3C-BZO">
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8M8-3C-BZO">
|
||||||
<rect key="frame" x="89" y="372" width="431" height="30"/>
|
<rect key="frame" x="89" y="372" width="431" height="30"/>
|
||||||
<textFieldCell key="cell" selectable="YES" id="lblCredits">
|
<textFieldCell key="cell" selectable="YES" id="lblCredits">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<string key="title">vChewing Phrase Editor developed by Shiki Suen.
|
<string key="title">vChewing Phrase Editor developed by Shiki Suen.
|
||||||
vChewing Phrase Database Maintained by Shiki Suen.</string>
|
vChewing Phrase Database Maintained by Shiki Suen.</string>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
@ -69,7 +69,7 @@ vChewing Phrase Database Maintained by Shiki Suen.</string>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eYM-F7-drf">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eYM-F7-drf">
|
||||||
<rect key="frame" x="89" y="349" width="431" height="15"/>
|
<rect key="frame" x="89" y="349" width="431" height="15"/>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="lblLicense">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="MIT-NTL License:" id="lblLicense">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -80,7 +80,7 @@ vChewing Phrase Database Maintained by Shiki Suen.</string>
|
||||||
<constraint firstAttribute="width" constant="356" id="B0d-48-3we"/>
|
<constraint firstAttribute="width" constant="356" id="B0d-48-3we"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" selectable="YES" id="lblDisclaimer">
|
<textFieldCell key="cell" selectable="YES" id="lblDisclaimer">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
<string key="title">DISCLAIMER: The vChewing project, having no relationship of cooperation or affiliation with the OpenVanilla project, is not responsible for the phrase database shipped in the original McBopomofo project. Certain geopolitical and ideological contents, which are potentially harmful to the global spread of this software, are not included in vChewing official phrase database.</string>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
@ -94,12 +94,12 @@ vChewing Phrase Database Maintained by Shiki Suen.</string>
|
||||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="Noc-kP-zTE"/>
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" image="AboutBanner" id="Noc-kP-zTE"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Pk-k3-0cO">
|
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9Pk-k3-0cO">
|
||||||
<rect key="frame" x="211" y="442" width="126" height="15"/>
|
<rect key="frame" x="218" y="442" width="126" height="15"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="0XT-cl-6S4"/>
|
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="122" id="0XT-cl-6S4"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="lblVersionString" userLabel="appVersionLabel">
|
<textFieldCell key="cell" lineBreakMode="clipping" title="version_placeholder" id="lblVersionString" userLabel="appVersionLabel">
|
||||||
<font key="font" metaFont="cellTitle"/>
|
<font key="font" size="12" name="Tahoma"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
|
@ -111,7 +111,7 @@ vChewing Phrase Database Maintained by Shiki Suen.</string>
|
||||||
</constraints>
|
</constraints>
|
||||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="btnConfirm">
|
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="btnConfirm">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma-Bold"/>
|
||||||
<string key="keyEquivalent" base64-UTF8="YES">
|
<string key="keyEquivalent" base64-UTF8="YES">
|
||||||
DQ
|
DQ
|
||||||
</string>
|
</string>
|
||||||
|
@ -159,7 +159,7 @@ DQ
|
||||||
<rect key="frame" x="382" y="69" width="143" height="32"/>
|
<rect key="frame" x="382" y="69" width="143" height="32"/>
|
||||||
<buttonCell key="cell" type="push" title="Website" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ImH-h2-3FG">
|
<buttonCell key="cell" type="push" title="Website" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ImH-h2-3FG">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" size="13" name="Tahoma"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="btnWebsite:" target="-1" id="WNO-E7-7UJ"/>
|
<action selector="btnWebsite:" target="-1" id="WNO-E7-7UJ"/>
|
||||||
|
|
|
@ -726,7 +726,7 @@
|
||||||
<key>USE_HFS+_COMPRESSION</key>
|
<key>USE_HFS+_COMPRESSION</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>VERSION</key>
|
<key>VERSION</key>
|
||||||
<string>1.9.4</string>
|
<string>2.0.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>TYPE</key>
|
<key>TYPE</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
|
@ -775,7 +775,7 @@
|
||||||
<key>BACKGROUND_PATH</key>
|
<key>BACKGROUND_PATH</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>Installer/InstallerBg.png</string>
|
<string>Installer/InstallerBg@2x.png</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -790,7 +790,7 @@
|
||||||
<key>BACKGROUND_PATH</key>
|
<key>BACKGROUND_PATH</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>Installer/InstallerBg.png</string>
|
<string>Installer/InstallerBg@2x.png</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -941,11 +941,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Simplified Chinese</string>
|
<string>Traditional Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>Installer/pkgTextWarning-CHS.txt</string>
|
<string>Installer/pkgTextWarning-CHT.txt</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -963,11 +963,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Traditional Chinese</string>
|
<string>Simplified Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>Installer/pkgTextWarning-CHT.txt</string>
|
<string>Installer/pkgTextWarning-CHS.txt</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -991,11 +991,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Simplified Chinese</string>
|
<string>Traditional Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>LICENSE-CHS.txt</string>
|
<string>LICENSE-CHT.txt</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -1013,11 +1013,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Traditional Chinese</string>
|
<string>Simplified Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>PATH</key>
|
<key>PATH</key>
|
||||||
<string>LICENSE-CHT.txt</string>
|
<string>LICENSE-CHS.txt</string>
|
||||||
<key>PATH_TYPE</key>
|
<key>PATH_TYPE</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -1048,9 +1048,9 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Traditional Chinese</string>
|
<string>Simplified Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<string>威注音輸入法</string>
|
<string>威注音输入法</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
|
@ -1060,9 +1060,9 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Simplified Chinese</string>
|
<string>Traditional Chinese</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<string>威注音输入法</string>
|
<string>威注音輸入法</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -1099,11 +1099,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Traditional Chinese</string>
|
<string>Simplified Chinese</string>
|
||||||
<key>SECONDARY_VALUE</key>
|
<key>SECONDARY_VALUE</key>
|
||||||
<string>至少 macOS 10.11.5 方可滿足威注音對系統內的萬國碼版本支援的需要。</string>
|
<string>至少 macOS 10.11.5 方可满足威注音对系统内的万国码版本支援的需要。</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<string>作業系統版本太舊</string>
|
<string>作业系统版本太旧</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
|
@ -1115,11 +1115,11 @@
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>LANGUAGE</key>
|
<key>LANGUAGE</key>
|
||||||
<string>Simplified Chinese</string>
|
<string>Traditional Chinese</string>
|
||||||
<key>SECONDARY_VALUE</key>
|
<key>SECONDARY_VALUE</key>
|
||||||
<string>至少 macOS 10.11.5 方可满足威注音对系统内的万国码版本支援的需要。</string>
|
<string>至少 macOS 10.11.5 方可滿足威注音對系統內的萬國碼版本支援的需要。</string>
|
||||||
<key>VALUE</key>
|
<key>VALUE</key>
|
||||||
<string>作业系统版本太旧</string>
|
<string>作業系統版本太舊</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>NAME</key>
|
<key>NAME</key>
|
||||||
|
|
|
@ -1421,7 +1421,7 @@
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
@ -1431,7 +1431,7 @@
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
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.vChewingTests;
|
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewingTests;
|
||||||
|
@ -1460,13 +1460,13 @@
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewingTests;
|
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewingTests;
|
||||||
|
@ -1497,7 +1497,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
@ -1518,7 +1518,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
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;
|
||||||
|
@ -1547,7 +1547,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
@ -1564,7 +1564,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
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;
|
||||||
|
@ -1678,7 +1678,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
|
@ -1706,7 +1706,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
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)";
|
||||||
|
@ -1733,7 +1733,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
|
@ -1755,7 +1755,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
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 = "";
|
||||||
|
@ -1777,7 +1777,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
@ -1797,9 +1797,9 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
|
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingInstaller;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
@ -1819,7 +1819,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 = 1994;
|
CURRENT_PROJECT_VERSION = 2000;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
@ -1833,8 +1833,8 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.9.4;
|
MARKETING_VERSION = 2.0.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
|
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingInstaller;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
|