|
@@ -7,6 +7,10 @@
|
|
|
|
|
|
import Cocoa
|
|
|
|
|
|
+typealias KMPrintPosterViewPageSettingChange = (_ view: KMPrintPosterView, _ model: KMPrintModel) -> Void
|
|
|
+typealias KMPrintPosterViewPrintSettingChange = (_ view: KMPrintPosterView, _ model: KMPrintModel) -> Void
|
|
|
+
|
|
|
+
|
|
|
class KMPrintPosterView: KMBaseXibView {
|
|
|
|
|
|
@IBOutlet weak var scaleTextField: NSTextField!
|
|
@@ -51,11 +55,14 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
|
|
|
var preview: KMPDFPosterPrintContentView?
|
|
|
|
|
|
- lazy var viewModel: KMPrintViewModel = KMPrintViewModel()
|
|
|
+ var pageSettingChangeAction: KMPrintPosterViewPageSettingChange?
|
|
|
+ var printSettingChangeAction: KMPrintPosterViewPrintSettingChange?
|
|
|
|
|
|
+ lazy var viewModel: KMPrintViewModel = KMPrintViewModel()
|
|
|
|
|
|
override func setup() {
|
|
|
-
|
|
|
+ viewModel.model.page.operation.type = .poster
|
|
|
+
|
|
|
scaleTextField.stringValue = "100"
|
|
|
scaleTextField.formatter = TextFieldFormatter()
|
|
|
|
|
@@ -83,7 +90,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
|
|
|
unitComboBox.selectItem(at: 1)
|
|
|
|
|
|
- var paperArray = KMPrintPaperInfo.KMPaperType.allValues()
|
|
|
+ let paperArray = KMPrintPaperInfo.KMPaperType.allValues()
|
|
|
var tPaperArray = paperArray
|
|
|
tPaperArray.removeFirst()
|
|
|
|
|
@@ -93,7 +100,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
pageWidthTextField.isEnabled = false
|
|
|
pageHeightTextField.isEnabled = false
|
|
|
|
|
|
- var tFileArray = paperArray
|
|
|
+ let tFileArray = paperArray
|
|
|
filePageSizeBox.addItems(withObjectValues: tFileArray)
|
|
|
filePageSizeBox.selectItem(at: 0)
|
|
|
filePageSizeBox.isEditable = false
|
|
@@ -152,14 +159,15 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
|
|
|
tableView.tabViewItem(at: 0).label = NSLocalizedString("Tile", comment: "")
|
|
|
tableView.tabViewItem(at: 1).label = NSLocalizedString("Split", comment: "")
|
|
|
+ tableView.delegate = self
|
|
|
|
|
|
- var paperArray = KMPrintPaperInfo.KMPaperType.allValues() /*KMPageSizeTool.paperSize()*/
|
|
|
+ let paperArray = KMPrintPaperInfo.KMPaperType.allValues() /*KMPageSizeTool.paperSize()*/
|
|
|
var tPaperArray = paperArray
|
|
|
tPaperArray.removeFirst()
|
|
|
splitSizeComboBox.removeAllItems()
|
|
|
splitSizeComboBox.addItems(withObjectValues: tPaperArray)
|
|
|
|
|
|
- var tFileArray = paperArray
|
|
|
+ let tFileArray = paperArray
|
|
|
filePageSizeBox.removeAllItems()
|
|
|
filePageSizeBox.addItems(withObjectValues: tFileArray)
|
|
|
|
|
@@ -168,23 +176,98 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
}
|
|
|
|
|
|
override func reloadData() {
|
|
|
+ let model = viewModel.model
|
|
|
+
|
|
|
let poster: KMPrintPageOperation.Poster = viewModel.model.page.operation.poster
|
|
|
|
|
|
columnCountText.stringValue = "\(poster.pageOfPaper.point.x)"
|
|
|
lineCountText.stringValue = "\(poster.pageOfPaper.point.y)"
|
|
|
+
|
|
|
+ //pageRange
|
|
|
+ var range: KMPrintPageRange = self.viewModel.model.page.range
|
|
|
+ if range.type == .allPage {
|
|
|
+ pageRangeComboBox.isEditable = false
|
|
|
+ pageRangeComboBox.selectItem(at: 0)
|
|
|
+ } else if range.type == .oddPage {
|
|
|
+ pageRangeComboBox.isEditable = false
|
|
|
+ pageRangeComboBox.selectItem(at: 1)
|
|
|
+ } else if range.type == .evenPage {
|
|
|
+ pageRangeComboBox.isEditable = false
|
|
|
+ pageRangeComboBox.selectItem(at: 2)
|
|
|
+ } else if range.type == .custom {
|
|
|
+ pageRangeComboBox.isEditable = true
|
|
|
+ pageRangeComboBox.selectItem(at: 3)
|
|
|
+ pageRangeComboBox.stringValue = range.pageString
|
|
|
+ }
|
|
|
+
|
|
|
+ //paper Type
|
|
|
+ if model.paper.info.type == .Actual {
|
|
|
+ filePageSizeBox.selectItem(at: 0)
|
|
|
+ paperWidthTextField.isEnabled = false
|
|
|
+ paperHeightTextField.isEnabled = false
|
|
|
+ } else if model.paper.info.type == .custom {
|
|
|
+ splitSizeComboBox.selectItem(at: splitSizeComboBox.numberOfItems)
|
|
|
+ pageWidthTextField.isEnabled = true
|
|
|
+ pageHeightTextField.isEnabled = true
|
|
|
+
|
|
|
+ filePageSizeBox.selectItem(at: filePageSizeBox.numberOfItems)
|
|
|
+ paperWidthTextField.isEnabled = true
|
|
|
+ paperHeightTextField.isEnabled = true
|
|
|
+ } else {
|
|
|
+ splitSizeComboBox.selectItem(withObjectValue: model.paper.info.type.rawValue)
|
|
|
+ pageWidthTextField.isEnabled = false
|
|
|
+ pageHeightTextField.isEnabled = false
|
|
|
+
|
|
|
+ filePageSizeBox.selectItem(withObjectValue: model.paper.info.type.rawValue)
|
|
|
+ paperWidthTextField.isEnabled = false
|
|
|
+ paperHeightTextField.isEnabled = false
|
|
|
+
|
|
|
+ paperWidthTextField.stringValue = model.paper.info.size.width.description
|
|
|
+ paperHeightTextField.stringValue = model.paper.info.size.height.description
|
|
|
+
|
|
|
+ pageWidthTextField.stringValue = model.paper.info.size.width.description
|
|
|
+ pageHeightTextField.stringValue = model.paper.info.size.height.description
|
|
|
+ }
|
|
|
+
|
|
|
+ //page per
|
|
|
+ if model.page.operation.poster.pageOfPaper.type == .custom {
|
|
|
+ columnCountText.isEditable = true
|
|
|
+ lineCountText.isEditable = true
|
|
|
+ columnCountText.isSelectable = true
|
|
|
+ lineCountText.isSelectable = true
|
|
|
+ } else {
|
|
|
+ columnCountText.isEditable = false
|
|
|
+ lineCountText.isEditable = false
|
|
|
+ columnCountText.isSelectable = false
|
|
|
+ lineCountText.isSelectable = false
|
|
|
+
|
|
|
+ lineCountText.stringValue = model.page.operation.poster.pageOfPaper.point.x.description
|
|
|
+ columnCountText.stringValue = model.page.operation.poster.pageOfPaper.point.y.description
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ func updatePDFView(isPageChange: Bool = true) {
|
|
|
+ debugPrint("需要刷新PDFView")
|
|
|
+ self.reloadData()
|
|
|
+ if isPageChange {
|
|
|
+ self.pageSettingChangeAction?(self, self.viewModel.model)
|
|
|
+ } else {
|
|
|
+ self.printSettingChangeAction?(self, self.viewModel.model)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+extension KMPrintPosterView {
|
|
|
//MARK: Action
|
|
|
@IBAction func buttonItemClickCutMarks(_ sender: NSButton) {
|
|
|
self.viewModel.posterCutMarkAction(isSelect: cutMarksButton.state == .on, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@IBAction func buttonItemClickLabels(_ sender: NSButton) {
|
|
|
self.viewModel.posterTagsAction(isSelect: cutMarksButton.state == .on, tags:[labelTextField.stringValue]) { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView(isPageChange: false)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -197,7 +280,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
}
|
|
|
|
|
|
self.viewModel.printDirectionAction(type: direction, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView(isPageChange: false)
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -205,11 +288,8 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
@IBAction func comboBoxItemClickPageRange(_ sender: NSComboBox) {
|
|
|
var range: KMPrintPageRange = KMPrintPageRange()
|
|
|
if sender.indexOfSelectedItem == 0 ||
|
|
|
- sender.indexOfSelectedItem == 1 ||
|
|
|
+ sender.indexOfSelectedItem == 1 ||
|
|
|
sender.indexOfSelectedItem == 2 {
|
|
|
- window?.makeFirstResponder(self)
|
|
|
- sender.isEditable = false
|
|
|
-
|
|
|
if sender.indexOfSelectedItem == 0 {
|
|
|
range.type = .allPage
|
|
|
} else if sender.indexOfSelectedItem == 1 {
|
|
@@ -219,59 +299,41 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
}
|
|
|
} else if sender.indexOfSelectedItem == 3 {
|
|
|
sender.stringValue = ""
|
|
|
- sender.isEditable = true
|
|
|
window?.makeFirstResponder(sender)
|
|
|
|
|
|
range.type = .custom
|
|
|
range.pageString = sender.stringValue
|
|
|
}
|
|
|
self.viewModel.pageRangeAction(range: range) { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@IBAction func comboBoxItemClickSplitSize(_ sender: NSComboBox) {
|
|
|
overlapTextField.stringValue = "0"
|
|
|
- var customSize = CGSize(width: 595, height: 842)
|
|
|
+ let customSize = CGSize(width: 595, height: 842)
|
|
|
// self.PDFPrint.splitSize = CGSizeMake(tSize.width * 595.0/210, tSize.height * 842.0/297.0);
|
|
|
- if splitSizeComboBox.indexOfSelectedItem == splitSizeComboBox.numberOfItems - 1 {
|
|
|
- pageWidthTextField.isEnabled = true
|
|
|
- pageHeightTextField.isEnabled = true
|
|
|
- } else {
|
|
|
- pageWidthTextField.isEnabled = false
|
|
|
- pageHeightTextField.isEnabled = false
|
|
|
- }
|
|
|
|
|
|
let type = KMPrintPaperInfo.KMPaperType(rawValue: sender.stringValue) ?? .A4
|
|
|
self.viewModel.printPaperTypeAction(type: type, customSize: customSize, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
@IBAction func comboBoxItemClickFullPageSize(_ sender: NSComboBox) {
|
|
|
var customSize = CGSize(width: 595, height: 842)
|
|
|
- if filePageSizeBox.indexOfSelectedItem == 0 {
|
|
|
- paperWidthTextField.isEnabled = false
|
|
|
- paperHeightTextField.isEnabled = false
|
|
|
- } else if filePageSizeBox.indexOfSelectedItem == filePageSizeBox.numberOfItems - 1 {
|
|
|
- paperWidthTextField.isEnabled = true
|
|
|
- paperHeightTextField.isEnabled = true
|
|
|
- } else {
|
|
|
- paperWidthTextField.isEnabled = false
|
|
|
- paperHeightTextField.isEnabled = false
|
|
|
- }
|
|
|
|
|
|
overlapTextField.stringValue = "0"
|
|
|
let type = KMPrintPaperInfo.KMPaperType(rawValue: sender.stringValue) ?? .A4
|
|
|
self.viewModel.printPaperTypeAction(type: type, posterType: .breakUp, customSize: customSize, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@IBAction func buttonItemClickReversePage(_ sender: NSButton) {
|
|
|
self.viewModel.printReverseAction(isSelect: reverseButton.state == .on) { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -292,7 +354,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
|
|
|
overlapTextField.stringValue = "0"
|
|
|
self.viewModel.printOverlapChangeAction(value: overlapTextField.floatValue, completion: { success, model in
|
|
|
-
|
|
|
+ self.reloadData()
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -307,28 +369,18 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
}
|
|
|
|
|
|
self.viewModel.printContentAction(type: type, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@IBAction func comboBoxItemClickPagesPer(_ sender: NSComboBox) {
|
|
|
- if selectPerComboBox.indexOfSelectedItem != 5 {
|
|
|
- columnCountText.isEditable = false
|
|
|
- lineCountText.isEditable = false
|
|
|
- columnCountText.isSelectable = false
|
|
|
- lineCountText.isSelectable = false
|
|
|
- } else {
|
|
|
- columnCountText.isEditable = true
|
|
|
- lineCountText.isEditable = true
|
|
|
- columnCountText.isSelectable = true
|
|
|
- lineCountText.isSelectable = true
|
|
|
- }
|
|
|
-
|
|
|
self.viewModel.printPagePerChangeAction(type: KMPrintPageOperation.PageOfPaper.PageType(rawValue: selectPerComboBox.stringValue) ?? .page, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
+extension KMPrintPosterView: NSTabViewDelegate {
|
|
|
func tabView(_ tabView: NSTabView, willSelect tabViewItem: NSTabViewItem?) {
|
|
|
overlapTextField.stringValue = "0"
|
|
|
self.viewModel.printOverlapChangeAction(value: overlapTextField.floatValue, completion: { success, model in
|
|
@@ -338,16 +390,18 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
if let identifier = tabViewItem?.identifier as? String {
|
|
|
if identifier == "1" {
|
|
|
self.viewModel.posterTypeAction(type: .tile) { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
}
|
|
|
} else {
|
|
|
self.viewModel.posterTypeAction(type: .breakUp) { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+}
|
|
|
+
|
|
|
+extension KMPrintPosterView {
|
|
|
@objc func controlTextDidEndEditing(_ notification: Notification) {
|
|
|
guard let textField = notification.object as? NSTextField else {
|
|
|
return
|
|
@@ -411,7 +465,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
var size = self.viewModel.model.paper.info.size
|
|
|
size.width = over
|
|
|
self.viewModel.printPaperTypeAction(type: .custom, customSize: size, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
|
|
|
} else if textField == pageHeightTextField || textField == paperHeightTextField {
|
|
@@ -430,7 +484,7 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
var size = self.viewModel.model.paper.info.size
|
|
|
size.width = over
|
|
|
self.viewModel.printPaperTypeAction(type: .custom, customSize: size, completion: { success, model in
|
|
|
-
|
|
|
+ self.updatePDFView()
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -468,7 +522,6 @@ class KMPrintPosterView: KMBaseXibView {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|