123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- //
- // KMEditDocumentController.swift
- // PDF Reader Pro
- //
- // Created by Niehaoyu on 2024/11/1.
- //
- import Cocoa
- import KMComponentLibrary
- @objc protocol KMEditDocumentControllerDelegate: AnyObject {
-
- @objc optional func editControllerDidApplyEnable(_ controller: KMEditDocumentController) -> Bool
-
- @objc optional func editControllerDidExitEnable(_ controller: KMEditDocumentController) -> Bool
-
- @objc optional func editControllerDidApplyClicked(_ controller: KMEditDocumentController)
-
- @objc optional func editControllerDidExitClicked(_ controller: KMEditDocumentController)
-
- }
-
- class KMEditDocumentController: NSViewController {
-
- var pdfDocument: CPDFDocument?
-
- var pdfView: CPDFListView = CPDFListView.init()
-
- let coverView = NSView(frame: CGRectMake(0, 0, 300, 300))
-
- private var groupListMenuGroup: ComponentGroup? = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
-
- weak open var delegate: KMEditDocumentControllerDelegate?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- pdfView.frame = view.bounds
- pdfView.autoresizingMask = [.width, .height]
- pdfView.setDisplay(.singlePage)
- pdfView.toolMode = .CNoteToolMode
- pdfView.autoScales = true
- pdfView.pdfListViewDelegate = self
- view.addSubview(pdfView)
-
- }
-
- func reloadData() {
- guard let pdfDocument = self.pdfDocument else { return }
-
- DispatchQueue.main.async {
- self.pdfView.document = pdfDocument
- self.pdfView.layoutDocumentView()
- }
-
- }
-
- func refreshUI() {
- pdfView.updateRender(true)
-
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.15) {[weak self] in
- self?.pdfView.updateRender(true)
- }
- }
-
- func layoutDocumentView() {
- pdfView.document?.refreshPageData()
- pdfView.layoutDocumentView()
-
- }
-
- }
- extension KMEditDocumentController: CPDFListViewDelegate {
- func pdfListViewMenu(forEvent pdfListView: CPDFListView!, for theEvent: NSEvent!, click menu: AutoreleasingUnsafeMutablePointer<NSMenu?>!, isMoveSelectAnno: Bool) {
-
- var pagePoint = CGPoint.zero
- let point = self.view.convert(theEvent.locationInWindow, from: nil)
-
- var items: [(String, String)] = []
- items.append(("Apply", PDFViewMenuIdentifier_Edit_Apply))
- items.append(("Exit", PDFViewMenuIdentifier_Edit_Exit))
-
- var viewHeight: CGFloat = 8
- var menuItemArr: [ComponentMenuitemProperty] = []
-
- for (i, value) in items {
- if value.count == 0 {
- let property: ComponentMenuitemProperty = ComponentMenuitemProperty.divider()
- menuItemArr.append(property)
- viewHeight += 8
- } else {
- let properties_Menuitem: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
- itemSelected: false,
- keyEquivalent: nil,
- text: KMLocalizedString(i),
- identifier: value,representedObject: point)
-
- properties_Menuitem.isDisabled = true
-
- if properties_Menuitem.identifier == PDFViewMenuIdentifier_Edit_Apply {
- if delegate?.editControllerDidApplyEnable?(self) == true {
- properties_Menuitem.isDisabled = false
- }
- } else if (properties_Menuitem.identifier == PDFViewMenuIdentifier_Edit_Exit) {
- if delegate?.editControllerDidExitEnable?(self) == true {
- properties_Menuitem.isDisabled = false
- }
- }
-
- menuItemArr.append(properties_Menuitem)
- viewHeight += 36
- }
- }
-
-
- groupListMenuGroup?.pagePoint = pagePoint
- groupListMenuGroup?.groupDelegate = self
- groupListMenuGroup?.frame = CGRectMake(0, 0, 180, viewHeight)
- groupListMenuGroup?.updateGroupInfo(menuItemArr)
-
- groupListMenuGroup?.showWithPoint(CGPoint(x: point.x, y: point.y - viewHeight), relativeTo: nil, withWindow: self.view.window)
- }
-
- func pdfListViewIsSupportSelecton(_ theEvent: NSEvent!, mouseType: KMPDFViewMouseType) -> Bool {
- if(mouseType == .menuForEvent) {
- return true
- }
- return false
- }
- }
- //MARK: - ComponentGroupDelegate
- extension KMEditDocumentController: ComponentGroupDelegate {
- func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
-
- if menuItemProperty?.identifier == PDFViewMenuIdentifier_Edit_Apply {
- delegate?.editControllerDidApplyClicked?(self)
- } else if (menuItemProperty?.identifier == PDFViewMenuIdentifier_Edit_Exit) {
- delegate?.editControllerDidExitClicked?(self)
- }
- }
- }
|