// // KMConvertImageSettingView.swift // PDF Master // // Created by tangchao on 2022/12/6. // import Cocoa class KMConvertImageSettingView: KMConvertSettingView, NibLoadable { @IBOutlet weak var fileTypeTitleLabel: NSTextField! @IBOutlet weak var formatComboBox: NSComboBox! @IBOutlet weak var resolutionComboBox: NSComboBox! @IBOutlet weak var formatBox: NSBox! var formartView: KMDesignSelect! @IBOutlet weak var pageRangeBox: NSBox! @IBOutlet weak var topBoxHeightConst: NSLayoutConstraint! var selectedFormatIndex = 0 var selectedResolutionIndex = 3 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(results).filter { $0 is Self } return views.last as? Self } override func awakeFromNib() { super.awakeFromNib() fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "") fileTypeTitleLabel.textColor = NSColor(hex: "#616469") fileTypeTitleLabel.font = .SFProTextSemibold(12) formartView = KMDesignSelect.init(withType: .Combox) formatBox.fillColor = .clear formatBox.contentView = formartView.view formartView.removeAllItems() formartView.addItems(withObjectValues: ["JPEG","JPG","PNG","GIF","TIFF","TGA","BMP","JPEG-2000"]) formartView.selectItem(at: 0) formartView.editable = false //默认属性,初始化可不设置 formartView.delete = self formartView.updateUI() // resolutionComboBox.isEditable = false // resolutionComboBox.removeAllItems() // resolutionComboBox.addItems(withObjectValues: ["50 dpi", "72 dpi", "96 dpi", "150 dpi", "300 dpi", "600 dpi"]) // resolutionComboBox.selectItem(at: 3) // resolutionComboBox.delegate = self self.topBoxHeightConst.constant = 80 resolutionComboBox.isHidden = true } override func viewDidMoveToWindow() { super.viewDidMoveToWindow() let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib() pageRangeItemView?.frame = pageRangeBox.contentView!.bounds pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18) pageRangeBox.contentView = pageRangeItemView self.pageRangeItemView = pageRangeItemView pageRangeItemView?.isTextDidEndCallback = true pageRangeItemView?.pageCount = self.pageCount pageRangeItemView?.itemClick = { [unowned self] index, _ in pageRangeSelectedIndex = index guard let callback = self.pageRangeDidChange else { return } callback(KMPageRange(rawValue: index)!) } pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex) if (pageRange != .custom) { return } guard let callback = pageRangeDidInputFinishCallback else { return } callback(textString) } } override func getPageRangeString() -> String { if let view = self.pageRangeItemView { return view.pageRangeValue } return "" } } extension KMConvertImageSettingView: KMSelectPopButtonDelegate { func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) { if formartView.isEqual(to: obj) { if formartView.indexOfSelectedItem < 0 { selectedFormatIndex = 0 } else { selectedFormatIndex = formartView.indexOfSelectedItem } } // else if resolutionComboBox.isEqual(to: notification.object) { // if resolutionComboBox.indexOfSelectedItem < 0 { // selectedResolutionIndex = 0 // } else { // selectedResolutionIndex = resolutionComboBox.indexOfSelectedItem // } // } } func km_controlTextDidEndEditing(_ obj: KMDesignSelect) { } }