// // KMConvertWordSettingView.swift // PDF Master // // Created by tangchao on 2022/12/6. // import Cocoa class KMConvertWordSettingView: KMConvertSettingView, NibLoadable { @IBOutlet weak var pageSettingTitleLabel: NSTextField! @IBOutlet weak var saveFlowTextRadio: KMImageTitleButton! @IBOutlet weak var savePageLayoutRadio: KMImageTitleButton! @IBOutlet weak var textOCRBox: NSBox! @IBOutlet weak var pageRangeBox: NSBox! var ocrEnabled: Bool { get { return ocrItemView.checkBox.state == .on } } var ocrString: String { get { return ocrItemView.languageComboBox.stringValue } } // 流排 0 框排 1 var pageSettingSelectedIndex: Int = 0 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 init(frame frameRect: NSRect) { super.init(frame: frameRect) } required init?(coder: NSCoder) { super.init(coder: coder) } override func awakeFromNib() { super.awakeFromNib() pageSettingTitleLabel.stringValue = NSLocalizedString("Layout Settings", comment: "") pageSettingTitleLabel.textColor = NSColor(hex: "#616469") pageSettingTitleLabel.font = .SFProTextRegular(12) saveFlowTextRadio.title = NSLocalizedString("Retain Flowing Text", comment: "") saveFlowTextRadio.imageName = "btn_radio_unsel_on" saveFlowTextRadio.action = { [unowned self] view, button in self.saveFlowTextRadioAction(sender: view) } savePageLayoutRadio.title = NSLocalizedString("Retain Page Layout", comment: "") savePageLayoutRadio.titleLabel.textColor = NSColor.buttonTitleColor() savePageLayoutRadio.titleLabel.font = .SFProTextRegular(14) savePageLayoutRadio.imageName = "btn_radio_unsel_on" savePageLayoutRadio.action = { [unowned self] view, button in self.savePageLayoutRadioAction(sender: view) } saveFlowTextRadio.state = .on saveFlowTextRadio.imageName = "btn_radio_sel_on" } override func viewDidMoveToWindow() { super.viewDidMoveToWindow() let ocrItemView = KMConvertOCRSettingItemView.createFromNib() ocrItemView?.frame = textOCRBox.contentView!.bounds ocrItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18) // textOCRBox.contentView = ocrItemView ocrItemView?.languageIndex = ocrLanuguageIndex self.ocrItemView = ocrItemView ocrItemView?.lanugageDidSelected = { [unowned self] (index: Int) -> () in guard let callback = lanugageDidSelected else { return } callback(index) } let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib() pageRangeItemView?.frame = pageRangeBox.contentView!.bounds pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18) pageRangeBox.contentView = pageRangeItemView pageRangeItemView?.pageCount = self.pageCount self.pageRangeItemView = pageRangeItemView pageRangeItemView?.isTextDidEndCallback = true 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) } } @objc func saveFlowTextRadioAction(sender: AnyObject) { for radio in [saveFlowTextRadio, savePageLayoutRadio] { if ((radio?.isEqual(to: sender))!) { radio?.state = .on radio!.imageName = "btn_radio_sel_on" } else { radio?.state = .off radio!.imageName = "btn_radio_unsel_on" } } pageSettingSelectedIndex = 0 } @objc func savePageLayoutRadioAction(sender: AnyObject) { for radio in [saveFlowTextRadio, savePageLayoutRadio] { if (radio?.isEqual(to: sender))! { radio?.state = .on radio!.imageName = "btn_radio_sel_on" } else { radio?.state = .off radio!.imageName = "btn_radio_unsel_on" } } pageSettingSelectedIndex = 1 } override func getPageRangeString() -> String { if let view = self.pageRangeItemView { return view.pageRangeValue } return "" } }