// // KMPDFEditPageRangeWindowController.swift // PDF Reader Pro // // Created by tangchao on 2023/11/10. // import Cocoa class KMPDFEditPageRangeWindowController: NSWindowController { weak var pdfDocument: CPDFDocument? var pageSelectCallBack: (([Int]) -> Void)? @IBOutlet var pageRangeLabel: NSTextField! @IBOutlet var pageRangeTextField: NSTextField! @IBOutlet var totalPageCountLabel: NSTextField! @IBOutlet var detailLabel: NSTextField! @IBOutlet var cancelButton: NSButton! @IBOutlet var okButton: NSButton! private var fileAttri_: KMFileAttribute? override var windowNibName: NSNib.Name? { return "KMPDFEditPageRangeWindowController" } deinit { KMPrint("KMPDFEditPageRangeWindowController deinit.") } override func windowDidLoad() { super.windowDidLoad() self.pageRangeLabel.stringValue = KMLocalizedString("Page Range", nil) self.pageRangeTextField.placeholderString = KMLocalizedString("e.g. 1,3-5,10", nil) // self.totalPageCountLabel.integerValue = self.pdfDocument.pageCount; self.totalPageCountLabel.stringValue = String(format: KMLocalizedString(", Total %ld Pages", nil), self.pdfDocument?.pageCount ?? 0) self.detailLabel.stringValue = "" self.cancelButton.title = KMLocalizedString("Cancel", nil) self.okButton.title = KMLocalizedString("OK", nil) self.window?.title = KMLocalizedString("Page Range", nil) self.fileAttri_ = KMFileAttribute() self.fileAttri_?.filePath = self.pdfDocument?.documentURL.path ?? "" if let cnt = self.pdfDocument?.pageCount { self.fileAttri_?.pageCnt = Int(cnt) } self.fileAttri_?.bAllPage = false self.fileAttri_?.pagesType = .custom } @IBAction func buttonClicked_Cancel(_ sender: AnyObject?) { if let win = self.window { self.window?.sheetParent?.endSheet(win) } } @IBAction func buttonClicked_Done(_ sender: AnyObject?) { self.fileAttri_?.pagesString = self.pageRangeTextField.stringValue if self.fileAttri_ == nil || self.fileAttri_!.fetchSelectPages().isEmpty { let alert = NSAlert() alert.alertStyle = .critical alert.messageText = String(format: "%@ %@", self.pdfDocument?.documentURL.lastPathComponent.lastPathComponent ?? "", KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", nil)) // alert.runModal() alert.beginSheetModal(for: self.window!) { res in self.window?.makeFirstResponder(self.pageRangeTextField) } return } else { if (self.pageSelectCallBack != nil) { self.pageSelectCallBack!(self.fileAttri_?.fetchSelectPages() ?? []) } } } }