KMNPageEditViewController.swift 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // KMNPageEditViewController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by 丁林圭 on 2024/10/21.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. @objc protocol KMNPageEditViewViewDelegate: AnyObject {
  10. @objc optional func changeBoundEditViewController(pageEditVC:KMNPageEditViewController)
  11. @objc optional func changeUndoManagerEditViewController(pageEditVC:KMNPageEditViewController)
  12. }
  13. class KMNPageEditViewController: KMNThumbnailBaseViewController {
  14. weak open var pageEditViewController: KMNPageEditViewViewDelegate?
  15. override func viewDidLoad() {
  16. super.viewDidLoad()
  17. backViewBox.fillColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-pdfView")
  18. collectionView.menuClickedAction = { point in
  19. return self.clickMenu(point: point)
  20. }
  21. }
  22. private func insertFilePath(filePath:String,pdfPassword:String?) {
  23. let selectedIndexPaths = collectionView.selectionIndexPaths
  24. let insertPDF = KMNPDFInsertPDFWindowController(showDocument, filePath: filePath, password: pdfPassword, selectionIndexPaths: selectedIndexPaths)
  25. insertPDF.pdfCallback = { [weak self] fileAttribute, insertIdx in
  26. let doc = fileAttribute.pdfDocument
  27. var insertPages: [CPDFPage] = []
  28. for number in fileAttribute.fetchSelectPages() {
  29. if let page = doc?.page(at: UInt(number-1)) {
  30. insertPages.append(page)
  31. }
  32. }
  33. self?.thumbnailBaseViewDelegate?.insertPDFThumbnailViewControlle?(pageEditVC: self, pdfDocment: doc)
  34. self?.insertFormPages(insertPages: insertPages, pageDex: insertIdx)
  35. }
  36. insertPDF.fileCallback = { [weak self] filePath, insertIdx in
  37. self?.insertFromFilePath(fileNames: [filePath], formDex: 0, indexDex: UInt(insertIdx), selectIndexs: [], completionBlock: { newSelectIndexs in
  38. })
  39. }
  40. insertPDF.own_beginSheetModal(for: self.view.window, completionHandler: nil)
  41. }
  42. // MARK: - public
  43. public func canZoomInPageSize()->Bool {
  44. if pageThumbnailSize.width > defaultItemSize.width {
  45. return false
  46. }
  47. return true
  48. }
  49. public func canZoomOutPageSize()->Bool {
  50. if pageThumbnailSize.width < defaultItemSize.width {
  51. return false
  52. }
  53. return true
  54. }
  55. public func zoomInPageAction() { //放大
  56. if (canZoomInPageSize() == false) {
  57. return
  58. }
  59. let indexpaths = collectionView.selectionIndexPaths
  60. if (pageThumbnailSize.width < defaultItemSize.width) {
  61. pageThumbnailSize = defaultItemSize
  62. } else if (pageThumbnailSize.width == defaultItemSize.width) {
  63. pageThumbnailSize = NSSize(width: defaultItemSize.width*1.5, height: defaultItemSize.height*1.5)
  64. }
  65. collectionView.reloadData()
  66. collectionView.selectionIndexPaths = indexpaths
  67. }
  68. public func zoomOutPageAction() { //缩小
  69. if (canZoomOutPageSize() == false) {
  70. return
  71. }
  72. let indexpaths = collectionView.selectionIndexPaths
  73. if (pageThumbnailSize.width > defaultItemSize.width) {
  74. pageThumbnailSize = defaultItemSize
  75. } else if (pageThumbnailSize.width == defaultItemSize.width) {
  76. pageThumbnailSize = NSSize(width: defaultItemSize.width*0.5, height: defaultItemSize.height*0.5)
  77. }
  78. collectionView.reloadData()
  79. collectionView.selectionIndexPaths = indexpaths
  80. }
  81. }