123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //
- // KMConvertPageRangeSettingItemView.swift
- // PDF Office
- //
- // Created by tangchao on 2022/12/6.
- //
- import Cocoa
- typealias KMConvertPageRangeSettingItemViewItemClick = (_ index: Int) -> ()
- typealias KMConvertPageRangeSettingItemViewTextDidEndEditing = (_ textString: String) -> ()
- class KMConvertPageRangeSettingItemView: NSView, NibLoadable {
-
- @IBOutlet weak var titleLabel: NSTextField!
- @IBOutlet weak var pageSizeComboBox: NSComboBox!
- @IBOutlet weak var pageSizeBox: NSBox!
- @IBOutlet weak var pagesizeBoxHeight: NSLayoutConstraint!
-
- var pageSizeVC: KMDesignSelect!
-
- var pageRangeValue: String = ""
-
- var itemClick: KMConvertBaseWindowControllerItemClick!
- var textDidEndEditingCallback: KMConvertPageRangeSettingItemViewTextDidEndEditing!
-
- var isTextDidEndCallback: Bool = false
-
- static var nibName: String? {
- return "KMConvertBaseWindowController"
- }
-
- static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
- guard let nibName = nibName else { return nil }
- var topLevelArray: NSArray? = nil
- bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
- guard let results = topLevelArray else { return nil }
- let views = Array<Any>(results).filter { $0 is Self }
- return views.last as? Self
- }
-
- override func awakeFromNib() {
- super.awakeFromNib()
-
- pageSizeVC = KMDesignSelect.init(withType: .Combox)
-
- pageSizeBox.fillColor = .clear
- pageSizeBox.contentView = pageSizeVC.view
-
- pageSizeVC.removeAllItems()
- pageSizeVC.addItems(withObjectValues: [NSLocalizedString("All Pages", comment: ""), NSLocalizedString("Current Page", comment: ""), NSLocalizedString("Odd Pages", comment: ""), NSLocalizedString("Even Pages", comment: ""), NSLocalizedString("Customized", comment: "")])
- pageSizeVC.selectItem(at: 0)
- pageSizeVC.editable = false //默认属性,初始化可不设置
- pageSizeVC.delete = self
- pageSizeVC.placeholderString = NSLocalizedString("eg. 1,3-5,10", comment: "")
-
- titleLabel.stringValue = NSLocalizedString("Page Range", comment: "")
- titleLabel.textColor = NSColor(hex: "#616469")
- titleLabel.font = .SFProTextRegular(12)
-
- pageSizeVC.updateUI()
- }
- }
- extension KMConvertPageRangeSettingItemView: KMSelectPopButtonDelegate {
- func km_controlTextDidChange(_ obj: KMDesignSelect) {
- if pageSizeVC != obj {
- return
- }
- self.pageRangeValue = pageSizeVC.stringValue
- }
-
- func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
- if pageSizeVC != obj {
- return
- }
- guard let callback = textDidEndEditingCallback else {
- return
- }
- if (self.isTextDidEndCallback) {
- callback(pageSizeVC.stringValue)
- }
- }
-
- func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
- if pageSizeVC != obj {
- return
- }
- let index = pageSizeVC.indexOfSelectedItem
- if index < 0 {
- return
- }
- if index == pageSizeVC.numberOfItems-1 {
- pageSizeVC.editable = true
- DispatchQueue.main.async { [self] in
- pageSizeVC.stringValue = ""
- }
- self.window?.makeFirstResponder(pageSizeVC.textField)
- } else {
- pageSizeVC.editable = false
- }
- guard let callback = itemClick else {
- return
- }
- callback(index)
- }
- }
|