|
@@ -5,10 +5,7 @@
|
|
|
// Created by tangchao on 2023/1/12.
|
|
|
//
|
|
|
|
|
|
-import Cocoa
|
|
|
-
|
|
|
class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
-
|
|
|
@IBOutlet weak var typeLabel: NSTextField!
|
|
|
|
|
|
@IBOutlet weak var oneFileForOnePageRadio: NSButton!
|
|
@@ -17,15 +14,20 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
@IBOutlet weak var oneFileForOnePageStepper: NSStepper!
|
|
|
@IBOutlet weak var oneFileForOnePageOtherLabel: NSTextField!
|
|
|
|
|
|
+ private var oneFileForOnePageVC: KMDesignButton?
|
|
|
+
|
|
|
@IBOutlet weak var splitMuitiFileRadio: NSButton!
|
|
|
@IBOutlet weak var splitMuitiFileView: NSView!
|
|
|
@IBOutlet weak var splitMuitiFileStepper: NSStepper!
|
|
|
@IBOutlet weak var splitMuitiFileTextField: NSTextField!
|
|
|
@IBOutlet weak var splitMuitiFileOtherLabel: NSTextField!
|
|
|
|
|
|
+ private var splitMuitiFileVC: KMDesignButton?
|
|
|
+
|
|
|
@IBOutlet weak var pageRangeRadio: NSButton!
|
|
|
@IBOutlet weak var pageRangeComboBox: NSComboBox!
|
|
|
|
|
|
+ private var pageRangeVC: KMDesignButton?
|
|
|
|
|
|
@IBOutlet weak var nameLabel: NSTextField!
|
|
|
@IBOutlet weak var nameView: NSView!
|
|
@@ -38,17 +40,21 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
@IBOutlet weak var sepView: NSView!
|
|
|
@IBOutlet weak var sepTextView: NSTextField!
|
|
|
|
|
|
+ private var prefixForOrigFileNameVC: KMDesignButton?
|
|
|
+ private var tagVC: KMDesignButton?
|
|
|
+ private var sepVC: KMDesignButton?
|
|
|
+
|
|
|
var type: Int {
|
|
|
get {
|
|
|
-1
|
|
|
}
|
|
|
set {
|
|
|
if (newValue == 0) {
|
|
|
- self.selectRadio(radio: self.oneFileForOnePageRadio)
|
|
|
+ self.safe_selectRadio(sender: self.oneFileForOnePageVC)
|
|
|
} else if (newValue == 1) {
|
|
|
- self.selectRadio(radio: self.splitMuitiFileRadio)
|
|
|
+ self.safe_selectRadio(sender: self.splitMuitiFileVC)
|
|
|
} else if (newValue == 2) {
|
|
|
- self.selectRadio(radio: self.pageRangeRadio)
|
|
|
+ self.safe_selectRadio(sender: self.pageRangeVC)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -57,19 +63,35 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
super.awakeFromNib()
|
|
|
|
|
|
self.typeLabel.stringValue = NSLocalizedString("Splitting Method", comment: "")
|
|
|
- self.oneFileForOnePageRadio.title = NSLocalizedString("Average per", comment: "")
|
|
|
+
|
|
|
self.oneFileForOnePageTextField.stringValue = "1"
|
|
|
self.oneFileForOnePageStepper.minValue = 1
|
|
|
self.oneFileForOnePageStepper.integerValue = 1
|
|
|
self.oneFileForOnePageOtherLabel.stringValue = NSLocalizedString("page split into a PDF file", comment: "")
|
|
|
|
|
|
- self.splitMuitiFileRadio.title = NSLocalizedString("Average split into", comment: "")
|
|
|
+ self.oneFileForOnePageVC = KMDesignButton(withType: .RadioButton)
|
|
|
+ self.oneFileForOnePageRadio.addSubview(self.oneFileForOnePageVC!.view)
|
|
|
+ self.oneFileForOnePageVC?.view.frame = self.oneFileForOnePageRadio.bounds
|
|
|
+ self.oneFileForOnePageVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.oneFileForOnePageVC?.target = self
|
|
|
+ self.oneFileForOnePageVC?.action = #selector(oneFileForOnePageAction)
|
|
|
+ self.oneFileForOnePageVC?.stringValue = NSLocalizedString("Average per", comment: "")
|
|
|
+ self.oneFileForOnePageVC?.checkbox_radio()
|
|
|
+
|
|
|
self.splitMuitiFileTextField.stringValue = "1"
|
|
|
self.splitMuitiFileStepper.minValue = 1
|
|
|
self.splitMuitiFileStepper.integerValue = 1
|
|
|
self.splitMuitiFileOtherLabel.stringValue = NSLocalizedString("PDF files", comment: "")
|
|
|
|
|
|
- self.pageRangeRadio.title = NSLocalizedString("Split by page atmosphere", comment: "")
|
|
|
+ self.splitMuitiFileVC = KMDesignButton(withType: .RadioButton)
|
|
|
+ self.splitMuitiFileRadio.addSubview(self.splitMuitiFileVC!.view)
|
|
|
+ self.splitMuitiFileVC?.view.frame = self.splitMuitiFileRadio.bounds
|
|
|
+ self.splitMuitiFileVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.splitMuitiFileVC?.target = self
|
|
|
+ self.splitMuitiFileVC?.action = #selector(splitMuitiFileAction)
|
|
|
+ self.splitMuitiFileVC?.stringValue = NSLocalizedString("Average split into", comment: "")
|
|
|
+ self.splitMuitiFileVC?.checkbox_radio()
|
|
|
+
|
|
|
self.pageRangeComboBox.removeAllItems()
|
|
|
self.pageRangeComboBox.addItems(withObjectValues: ["Odd Pages","Even Pages","Customize"])
|
|
|
self.pageRangeComboBox.placeholderString = "e.g. 1,3-5,10"
|
|
@@ -77,19 +99,57 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
self.pageRangeComboBox.isEditable = false
|
|
|
self.pageRangeComboBox.delegate = self
|
|
|
|
|
|
- for radio in [self.oneFileForOnePageRadio, self.splitMuitiFileRadio, self.pageRangeRadio] {
|
|
|
- radio?.target = self
|
|
|
- radio?.action = #selector(radioAction)
|
|
|
- }
|
|
|
- self.selectRadio(radio: self.oneFileForOnePageRadio)
|
|
|
+ self.pageRangeVC = KMDesignButton(withType: .RadioButton)
|
|
|
+ self.pageRangeRadio.addSubview(self.pageRangeVC!.view)
|
|
|
+ self.pageRangeVC?.view.frame = self.pageRangeRadio.bounds
|
|
|
+ self.pageRangeVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.pageRangeVC?.target = self
|
|
|
+ self.pageRangeVC?.action = #selector(pageRangeAction)
|
|
|
+ self.pageRangeVC?.stringValue = NSLocalizedString("Split by page atmosphere", comment: "")
|
|
|
+ self.pageRangeVC?.checkbox_radio()
|
|
|
+
|
|
|
+ self.safe_selectRadio(sender: self.oneFileForOnePageVC)
|
|
|
|
|
|
self.nameLabel.stringValue = NSLocalizedString("File Naming", comment: "")
|
|
|
- self.prefixForOrigFileNameCheck.title = NSLocalizedString("Precede the original document name", comment: "")
|
|
|
- self.tagCheck.title = NSLocalizedString("Tags", comment: "")
|
|
|
- self.sepCheck.title = NSLocalizedString("Separator", comment: "")
|
|
|
self.tagTextField.stringValue = "part"
|
|
|
self.sepTextView.stringValue = "-"
|
|
|
|
|
|
+ self.nameView.wantsLayer = true
|
|
|
+ self.nameView.layer?.backgroundColor = KMAppearance.view_bg_dis_color().cgColor
|
|
|
+ self.nameView.layer?.borderWidth = 1
|
|
|
+ self.nameView.layer?.borderColor = KMAppearance.view_border_dis_color().cgColor
|
|
|
+ self.nameView.layer?.cornerRadius = 4
|
|
|
+
|
|
|
+ self.prefixForOrigFileNameVC = KMDesignButton(withType: .CheckBox)
|
|
|
+ self.prefixForOrigFileNameCheck.addSubview(self.prefixForOrigFileNameVC!.view)
|
|
|
+ self.prefixForOrigFileNameVC?.view.frame = self.prefixForOrigFileNameCheck.bounds
|
|
|
+ self.prefixForOrigFileNameVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.prefixForOrigFileNameVC?.target = self
|
|
|
+ self.prefixForOrigFileNameVC?.action = #selector(prefixForOrigFileNameAction)
|
|
|
+ self.prefixForOrigFileNameVC?.stringValue = NSLocalizedString("Precede the original document name", comment: "")
|
|
|
+ self.prefixForOrigFileNameVC?.checkbox_radio()
|
|
|
+ self.safe_selectCheck(sender: self.prefixForOrigFileNameVC)
|
|
|
+
|
|
|
+ self.tagVC = KMDesignButton(withType: .CheckBox)
|
|
|
+ self.tagCheck.addSubview(self.tagVC!.view)
|
|
|
+ self.tagVC?.view.frame = self.tagCheck.bounds
|
|
|
+ self.tagVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.tagVC?.target = self
|
|
|
+ self.tagVC?.action = #selector(tagAction)
|
|
|
+ self.tagVC?.stringValue = NSLocalizedString("Tags", comment: "")
|
|
|
+ self.tagVC?.checkbox_radio()
|
|
|
+ self.safe_selectCheck(sender: self.tagVC)
|
|
|
+
|
|
|
+ self.sepVC = KMDesignButton(withType: .CheckBox)
|
|
|
+ self.sepCheck.addSubview(self.sepVC!.view)
|
|
|
+ self.sepVC?.view.frame = self.sepCheck.bounds
|
|
|
+ self.sepVC?.view.autoresizingMask = [.width, .height]
|
|
|
+ self.sepVC?.target = self
|
|
|
+ self.sepVC?.action = #selector(sepAction)
|
|
|
+ self.sepVC?.stringValue = NSLocalizedString("Separator", comment: "")
|
|
|
+ self.sepVC?.checkbox_radio()
|
|
|
+ self.safe_selectCheck(sender: self.sepVC)
|
|
|
+
|
|
|
for textfield in [self.oneFileForOnePageTextField, self.splitMuitiFileTextField, self.tagTextField, self.sepTextView] {
|
|
|
textfield?.isEditable = true
|
|
|
textfield?.focusRingType = .none
|
|
@@ -110,33 +170,42 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
view?.layer?.cornerRadius = 2
|
|
|
}
|
|
|
|
|
|
- for view in [self.nameView, self.tagView, self.sepView] {
|
|
|
+ for view in [self.tagView, self.sepView] {
|
|
|
view?.wantsLayer = true
|
|
|
view?.layer?.borderWidth = 1
|
|
|
view?.layer?.borderColor = NSColor.black.cgColor
|
|
|
view?.layer?.cornerRadius = 2
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc private func oneFileForOnePageAction() {
|
|
|
+ self.safe_selectRadio(sender: self.oneFileForOnePageVC)
|
|
|
|
|
|
- for check in [self.prefixForOrigFileNameCheck, self.tagCheck, self.sepCheck] {
|
|
|
- check?.target = self
|
|
|
- check?.action = #selector(checkAction)
|
|
|
+ guard let callback = self.itemClick else {
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ callback(1, 0)
|
|
|
}
|
|
|
|
|
|
- @objc func radioAction(sender: NSButton) {
|
|
|
- selectRadio(radio: sender)
|
|
|
+ @objc private func splitMuitiFileAction() {
|
|
|
+ self.safe_selectRadio(sender: self.splitMuitiFileVC)
|
|
|
|
|
|
guard let callback = self.itemClick else {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- var index: Int = 0
|
|
|
- if (sender.isEqual(to: self.splitMuitiFileRadio)) {
|
|
|
- index = 1
|
|
|
- } else if (sender.isEqual(to: self.pageRangeRadio)) {
|
|
|
- index = 2
|
|
|
+ callback(1, 1)
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc private func pageRangeAction() {
|
|
|
+ self.safe_selectRadio(sender: self.pageRangeVC)
|
|
|
+
|
|
|
+ guard let callback = self.itemClick else {
|
|
|
+ return
|
|
|
}
|
|
|
- callback(1, index)
|
|
|
+
|
|
|
+ callback(1, 2)
|
|
|
}
|
|
|
|
|
|
@objc func stepperAction(sender: NSStepper) {
|
|
@@ -155,32 +224,44 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
callback(index, sender.integerValue)
|
|
|
}
|
|
|
|
|
|
- @objc func checkAction(sender: NSButton) {
|
|
|
- if (self.tagCheck.state == .on) {
|
|
|
- self.tagTextField.isEnabled = true
|
|
|
- } else {
|
|
|
- self.tagTextField.isEnabled = false
|
|
|
- }
|
|
|
+ @objc private func prefixForOrigFileNameAction() {
|
|
|
+ self.safe_selectCheck(sender: self.prefixForOrigFileNameVC)
|
|
|
|
|
|
- if (sepCheck.state == .on) {
|
|
|
- self.sepTextView.isEnabled = true
|
|
|
- } else {
|
|
|
- self.sepTextView.isEnabled = false
|
|
|
+ guard let callback = self.itemClick else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var value = false
|
|
|
+ if let sender = self.prefixForOrigFileNameVC {
|
|
|
+ value = sender.state == .Checked
|
|
|
}
|
|
|
|
|
|
- var index: Int = 6
|
|
|
- if (sender.isEqual(to: self.prefixForOrigFileNameCheck)) {
|
|
|
- index = 6
|
|
|
- } else if (sender.isEqual(to: self.tagCheck)) {
|
|
|
- index = 7
|
|
|
- } else if (sender.isEqual(to: self.sepCheck)) {
|
|
|
- index = 8
|
|
|
+ callback(6, value)
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc private func tagAction() {
|
|
|
+ self.safe_selectCheck(sender: self.tagVC)
|
|
|
+
|
|
|
+ guard let callback = self.itemClick else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var value = false
|
|
|
+ if let sender = self.tagVC {
|
|
|
+ value = sender.state == .Checked
|
|
|
}
|
|
|
+ callback(7, value)
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc private func sepAction() {
|
|
|
+ self.safe_selectCheck(sender: self.sepVC)
|
|
|
|
|
|
guard let callback = self.itemClick else {
|
|
|
return
|
|
|
}
|
|
|
- callback(index, sender.state == .on)
|
|
|
+ var value = false
|
|
|
+ if let sender = self.sepVC {
|
|
|
+ value = sender.state == .Checked
|
|
|
+ }
|
|
|
+ callback(8, value)
|
|
|
}
|
|
|
|
|
|
public func setPageRangeString(_ string: String) {
|
|
@@ -194,18 +275,28 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
self.nameViewLabel.stringValue = name
|
|
|
}
|
|
|
|
|
|
+ func selectCheck(sender: KMDesignButton) {
|
|
|
+ sender.state = sender.state == .Checked ? .Norm : .Checked
|
|
|
+
|
|
|
+ if (sender.isEqual(to: self.tagVC)) {
|
|
|
+ self.tagTextField.isEnabled = sender.state == .Checked
|
|
|
+ } else if (sender.isEqual(to: self.sepVC)) {
|
|
|
+ self.sepTextView.isEnabled = sender.state == .Checked
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// MARK: Private Methods
|
|
|
|
|
|
- private func selectRadio(radio: NSButton) {
|
|
|
- for item in [self.oneFileForOnePageRadio, self.splitMuitiFileRadio, self.pageRangeRadio] {
|
|
|
- if (radio.isEqual(to: item)) {
|
|
|
- item?.state = .on
|
|
|
+ private func selectRadio(sender: KMDesignButton) {
|
|
|
+ for radioVC in [self.oneFileForOnePageVC, self.splitMuitiFileVC, self.pageRangeVC] {
|
|
|
+ if (sender.isEqual(to: radioVC)) {
|
|
|
+ radioVC?.state = .Checked
|
|
|
} else {
|
|
|
- item?.state = .off
|
|
|
+ radioVC?.state = .Norm
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (self.oneFileForOnePageRadio.state == .on) {
|
|
|
+ if let state = self.oneFileForOnePageVC?.state, state == .Checked {
|
|
|
self.oneFileForOnePageTextField.isEnabled = true
|
|
|
self.oneFileForOnePageStepper.isEnabled = true
|
|
|
} else {
|
|
@@ -213,7 +304,7 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
self.oneFileForOnePageStepper.isEnabled = false
|
|
|
}
|
|
|
|
|
|
- if (self.splitMuitiFileRadio.state == .on) {
|
|
|
+ if let state = self.splitMuitiFileVC?.state, state == .Checked {
|
|
|
self.splitMuitiFileTextField.isEnabled = true
|
|
|
self.splitMuitiFileStepper.isEnabled = true
|
|
|
} else {
|
|
@@ -221,13 +312,24 @@ class KMPageEditSplitSettingView: KMPageEditSettingBaseView {
|
|
|
self.splitMuitiFileStepper.isEnabled = false
|
|
|
}
|
|
|
|
|
|
- if (self.pageRangeRadio.state == .on) {
|
|
|
+ if let state = self.pageRangeVC?.state, state == .Checked {
|
|
|
self.pageRangeComboBox.isEnabled = true
|
|
|
} else {
|
|
|
self.pageRangeComboBox.isEnabled = false
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private func safe_selectRadio(sender: KMDesignButton?) {
|
|
|
+ if let _radioVC = sender {
|
|
|
+ self.selectRadio(sender: _radioVC)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private func safe_selectCheck(sender: KMDesignButton?) {
|
|
|
+ if let _checkVC = sender {
|
|
|
+ self.selectCheck(sender: _checkVC)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
extension KMPageEditSplitSettingView: NSTextFieldDelegate {
|