123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- //
- // KMPDFMergePageRangeTabelViewCell.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2023/10/11.
- //
- import Cocoa
- @objcMembers class KMPDFMergePageRangeTabelViewCell: NSTableCellView {
- var pageCount: Int = 0
- var callback: ((Int) -> Void)?
- var textDidChange: ((String) -> Void)?
- var textDidEndEdit: ((String, KMPDFMergePageRangeTabelViewCell) -> Void)?
-
- var comboBox: KMMergeSelect?
-
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
- self.initSubviews()
- }
-
- required init?(coder: NSCoder) {
- super.init(coder: coder)
- self.initSubviews()
- }
-
- override var isFlipped: Bool {
- return true
- }
-
- func initSubviews() {
- let comboBox = KMMergeSelect(withType: .Combox)
- self.addSubview(comboBox.view)
- self.comboBox = comboBox
-
- self.comboBox?.removeAllItems()
- self.comboBox?.addItems(withObjectValues: [KMLocalizedString("All Pages", nil),KMLocalizedString("Odd Pages", nil),KMLocalizedString("Even Pages", nil),KMLocalizedString("Customized", nil)])
-
- self.comboBox?.stringValue = KMLocalizedString("All Pages", nil)
- self.comboBox?.editable = false
- self.comboBox?.delete = self
- self.comboBox?.placeholderString = KMLocalizedString("eg .1,3-5,10", nil)
-
- }
-
- override func layout() {
- super.layout()
-
- let width = NSWidth(self.bounds)
- let height = NSHeight(self.bounds)
-
- let comboBoxH = 26.0
- self.comboBox?.view.frame = NSMakeRect(10, (height-comboBoxH)*0.5, width-10, comboBoxH)
-
- }
-
- func updatePageRange(_ pageRange: KMPageRange, pageStrings: String, isFirstResponser: Bool = true) {
- if (pageRange == .all) {
- self.comboBox?.stringValue = KMLocalizedString("All Pages", nil)
- self.comboBox?.editable = false
- self.comboBox?.alert = false
- } else if (pageRange == .odd) {
- self.comboBox?.stringValue = KMLocalizedString("Odd Pages", nil)
- self.comboBox?.editable = false
- self.comboBox?.alert = false
- } else if (pageRange == .even) {
- self.comboBox?.stringValue = KMLocalizedString("Even Pages", nil)
- self.comboBox?.editable = false
- self.comboBox?.alert = false
- } else {
- self.comboBox?.stringValue = pageStrings
- self.comboBox?.editable = true
- if (pageStrings.isEmpty) {
- self.comboBox?.alert = true
- } else {
- self.comboBox?.alert = false
- }
- if (isFirstResponser || pageStrings.isEmpty) {
- if let data = self.window?.firstResponder, data.isEqual(to: self.comboBox?.textField) == false {
- if (Thread.isMainThread) {
- self.window?.makeFirstResponder(self.comboBox?.textField)
- } else {
- DispatchQueue.main.async {
- self.window?.makeFirstResponder(self.comboBox?.textField)
- }
- }
- }
- }
- }
- }
-
-
-
- /*
- - (void)updateRageRangeState:(NSInteger)state {
- if (state == 9) {
- self.comboBox.state = KMDesignTokenStateError_def;
- } else if (state == 10) {
- self.comboBox.state = KMDesignTokenStateError_focus;
- }
- }
- */
-
- }
- extension KMPDFMergePageRangeTabelViewCell: KMSelectPopButtonDelegate {
- func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
- guard let data = self.callback else {
- return
- }
- var index = obj.indexOfSelectedItem
- if (index < 0) {
- index = 0
- }
-
- if (index == obj.numberOfItems-1) {
- self.comboBox?.editable = true
- DispatchQueue.main.async {
- self.comboBox?.stringValue = ""
- }
- self.window?.makeFirstResponder(obj.textField)
- } else {
- self.comboBox?.editable = false
- self.comboBox?.alert = false
- }
-
- data(index)
- }
-
- func km_controlTextDidChange(_ obj: KMDesignSelect) {
- guard let data = self.textDidChange else {
- return
- }
- data(obj.stringValue)
- }
-
- func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
- guard let data = self.textDidEndEdit else {
- return
- }
- data(obj.stringValue, self)
- }
-
- func km_SelectPopoverWillShow(_ obj: KMDesignSelect) {
- if (obj.isEqual(to: self.comboBox)) {
- var disableItems: [String] = []
- if (self.pageCount <= 1) {
- disableItems.append(KMLocalizedString("Even Pages", nil))
- }
- self.comboBox?.disItems = disableItems
- }
- }
- }
|