KMToolbarViewController.swift 83 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477
  1. //
  2. // KMToolbarViewController.swift
  3. // PDF Master
  4. //
  5. // Created by lxy on 2022/12/2.
  6. //
  7. import Cocoa
  8. @objc enum KMToolbarViewType : Int {
  9. case None
  10. case Main
  11. case Annatiton
  12. case Page
  13. case Conversion
  14. case ScanOCR
  15. case editPDF
  16. case Form
  17. case FillSign
  18. case Tool
  19. case Move
  20. case Magnify
  21. case Select
  22. case SelectZoom
  23. case LeftPanel
  24. case RightPanel
  25. func isToolMode() -> Bool {
  26. return (self == .Move || self == .Magnify || self == .Select || self == .SelectZoom)
  27. }
  28. func itemIdentifier() -> String {
  29. if (self == .Annatiton) {
  30. return KMDocumentAnnotationToolbarItemIdentifier
  31. } else if (self == .Page) {
  32. return KMDocumentPageToolbarItemIdentifier
  33. } else if (self == .Conversion) {
  34. return KMDocumentConversonToolbarItemIdentifier
  35. } else if (self == .ScanOCR) {
  36. return KMDocumentScanOCRToolbarItemIdentifier
  37. } else if (self == .editPDF) {
  38. return KMDocumentEditToolbarItemIdentifier
  39. } else if (self == .Form) {
  40. return KMDocumentFormToolbarItemIdentifier
  41. } else if (self == .FillSign) {
  42. return KMDocumentFillSginToolbarItemIdentifier
  43. } else if (self == .Tool) {
  44. return KMDocumentToolToolbarItemIdentifier
  45. } else if (self == .Move) {
  46. return KMToolbarMoveToolModeItemIdentifier
  47. } else if (self == .Magnify) {
  48. return KMToolbarMagnifyToolModeItemIdentifier
  49. } else if (self == .Select) {
  50. return KMToolbarSelectToolModeItemIdentifier
  51. } else if (self == .SelectZoom) {
  52. return KMToolbarZoomToSelectionItemIdentifier
  53. } else if (self == .LeftPanel) {
  54. return KMLeftControlToolbarItemIdentifier
  55. } else if (self == .RightPanel) {
  56. return KMRightControlToolbarItemIdentifier
  57. }
  58. return ""
  59. }
  60. }
  61. @objc enum KMToolbarType: Int {
  62. /// conversion
  63. case word = 3000
  64. case excel = 3001
  65. case ppt = 3002
  66. case rtf = 3003
  67. case csv = 3004
  68. case html = 3005
  69. case conversion_text = 3006
  70. case conversion_image = 3007
  71. /// tool
  72. case compress = 8000
  73. case merge = 8001
  74. case fileCompare = 8002
  75. case secure = 8003
  76. case redact = 8004
  77. case watermark = 8005
  78. case background = 8006
  79. case headerAndFooter = 8007
  80. case bates = 8008
  81. case crop = 8009
  82. }
  83. @objc protocol KMToolbarViewControllerDelegate {
  84. @objc optional func changeAnnotationModeAction(item:KMToolbarClickButton)
  85. @objc optional func showPDFLayoutModeAction(show:Bool)
  86. @objc optional func changePDFViewZoomInAction()
  87. @objc optional func changePDFViewZoomOutAction()
  88. @objc optional func changePDFViewGotoNextPageAction()
  89. @objc optional func changePDFViewGoToPreviousPageAction()
  90. @objc optional func showPDFViewPrintViewController()
  91. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, zoomSting : String)
  92. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, zoomModel selectedTag:Int)
  93. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, shareDocument item:NSMenuItem)
  94. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, shareFlatten item:NSMenuItem)
  95. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, shareOriginalPDF item:NSMenuItem)
  96. @objc optional func toolbarViewController(_ viewController: KMToolbarViewController, clickMode toolMode: KMToolbarViewType, toolbar toolbarItem: KMToolBoxItem, _ pages: [Int])
  97. @objc optional func toolbarViewController(_ viewController: KMToolbarViewController, clickChaildToolType: KMToolbarType, toolbar toolbarItem: KMToolBoxItem)
  98. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, scanOCRModel selectedTag:Int)
  99. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, rightPanel toolbarItem: KMToolBoxItem)
  100. @objc optional func toolbarViewController(_ viewController:KMToolbarViewController, leftPanel toolbarItem: KMToolBoxItem)
  101. }
  102. class KMToolbarViewController: NSViewController, NSTextFieldDelegate {
  103. var toolbar : KMToolbar!
  104. var toolbarType : KMToolbarViewType = KMToolbarViewType.None
  105. var toolbarItems : [String : Any] = [:]
  106. @IBOutlet weak var mainWindowController : MainWindowController!
  107. open weak var delegate: KMToolbarViewControllerDelegate?
  108. @IBOutlet var zoomButton: NSPopUpButton!
  109. @IBOutlet var zoomView: NSView!
  110. @IBOutlet weak var zoomTextField: NSTextField!
  111. var pdfView : CPDFListView = CPDFListView()
  112. var shareButton = KMToolbarClickButton()
  113. private var bottomLine = NSView()
  114. // 是否显示所有注释
  115. var isShowAllAnnotations = true
  116. var ignoreCurrentAnnotationTypeChange = false
  117. override func viewDidLoad() {
  118. super.viewDidLoad()
  119. self.zoomTextField.delegate = self
  120. NotificationCenter.default.addObserver(self, selector: #selector(listViewAnnotationTypeChangeNotification), name: Notification.Name("CPDFListViewAnnotationTypeChangeNotification"), object: nil)
  121. NotificationCenter.default.addObserver(self, selector: #selector(listViewAnnotationTypeChangeNotification), name: Notification.Name("CPDFListViewToolModeChangeNotification"), object: nil)
  122. }
  123. override func loadView() {
  124. super.loadView()
  125. self.toolbar = KMToolbar.init(identifier: "KMToolbar_New")
  126. self.toolbar.frame = self.view.bounds
  127. self.toolbar.autoresizingMask = [.width,.height]
  128. self.toolbar.delegate = self
  129. self.view.addSubview(self.toolbar)
  130. self.view.addSubview(self.bottomLine)
  131. self.bottomLine.frame = NSMakeRect(0, 0, NSWidth(self.view.bounds), 1)
  132. self.bottomLine.autoresizingMask = [.width]
  133. self.bottomLine.wantsLayer = true
  134. self.bottomLine.layer?.backgroundColor = NSColor(hex: "#0000001A").cgColor
  135. }
  136. func updateType(newType:KMToolbarViewType) {
  137. if newType != toolbarType {
  138. toolbarType = newType
  139. if self.toolbar != nil && self.toolbar.superview != nil {
  140. self.toolbar.removeFromSuperview()
  141. }
  142. self.toolbar = KMToolbar.init(identifier: "KMToolbar_New")
  143. self.toolbar.frame = self.view.bounds
  144. self.toolbar.autoresizingMask = [.width,.height]
  145. self.toolbar.delegate = self
  146. self.view.addSubview(self.toolbar)
  147. }
  148. }
  149. func reloadateToolbar() -> Void {
  150. toolbar.reloadData()
  151. }
  152. func resetToolbar() -> Void {
  153. for item in toolbar.items {
  154. item.isSelected = false
  155. }
  156. }
  157. // MARK: Action
  158. @IBAction func changeAnnotationMode(item: KMToolbarClickButton) {
  159. self.delegate?.changeAnnotationModeAction?(item: item)
  160. }
  161. @IBAction func leftControllButtonAction(item: KMToolbarClickButton) {
  162. let tag = KMToolbarViewType(rawValue: item.tag) ?? .None
  163. if tag == .editPDF {
  164. Task { @MainActor in
  165. if await (KMLightMemberManager.manager.canUseAdvanced() == false) {
  166. let _ = KMComparativeTableViewController.show(window: self.view.window!)
  167. return
  168. }
  169. self.delegate?.toolbarViewController?(self, clickMode: tag, toolbar: item.clickObject as! KMToolBoxItem, [])
  170. }
  171. } else {
  172. self.delegate?.toolbarViewController?(self, clickMode: tag, toolbar: item.clickObject as! KMToolBoxItem, [])
  173. }
  174. }
  175. @objc private func leftPanelAction(sender: KMToolbarClickButton) {
  176. self.delegate?.toolbarViewController?(self, leftPanel: sender.clickObject as! KMToolBoxItem)
  177. }
  178. @IBAction func rightPanelControllButtonAction(item: KMToolbarClickButton) {
  179. let tag = KMToolbarViewType(rawValue: item.tag) ?? .None
  180. self.delegate?.toolbarViewController?(self, rightPanel: item.clickObject as! KMToolBoxItem)
  181. }
  182. @IBAction func showPDFLayoutMode(sender: KMToolbarClickButton) {
  183. let item = sender.clickObject as? KMToolBoxItem
  184. if (item != nil) {
  185. item?.isSelected = !item!.isSelected
  186. }
  187. self.delegate?.showPDFLayoutModeAction?(show: true)
  188. }
  189. @objc func cropMenuAction(item: KMToolBoxItem) {
  190. self.delegate?.toolbarViewController?(self, clickChaildToolType: .crop, toolbar: item)
  191. }
  192. @objc func batesMenuAction(sender: KMToolbarClickButton) {
  193. self.delegate?.toolbarViewController?(self, clickChaildToolType: .bates, toolbar: sender.clickObject as! KMToolBoxItem)
  194. }
  195. @objc func headerfooterMenuAction(sender: KMToolbarClickButton) {
  196. self.delegate?.toolbarViewController?(self, clickChaildToolType: .headerAndFooter, toolbar: sender.clickObject as! KMToolBoxItem)
  197. }
  198. @objc func backgroundMenuAction(sender: KMToolbarClickButton) {
  199. self.delegate?.toolbarViewController?(self, clickChaildToolType: .background, toolbar: sender.clickObject as! KMToolBoxItem)
  200. }
  201. @objc func watermarkMenuAction(sender: KMToolbarClickButton) {
  202. self.delegate?.toolbarViewController?(self, clickChaildToolType: .watermark, toolbar: sender.clickObject as! KMToolBoxItem)
  203. }
  204. @objc func redactMenuAction(sender: KMToolbarClickButton) {
  205. self.delegate?.toolbarViewController?(self, clickChaildToolType: .redact, toolbar: sender.clickObject as! KMToolBoxItem)
  206. }
  207. @objc func compressMenuAction(sender: KMToolbarClickButton) {
  208. self.delegate?.toolbarViewController?(self, clickChaildToolType: .compress, toolbar: sender.clickObject as! KMToolBoxItem)
  209. }
  210. @objc func secureMenuAction(sender: KMToolbarClickButton) {
  211. self.delegate?.toolbarViewController?(self, clickChaildToolType: .secure, toolbar: sender.clickObject as! KMToolBoxItem)
  212. }
  213. @objc func conversionMenuItemAction(sender: KMToolbarClickButton) {
  214. let item: KMToolBoxItem = sender.clickObject as! KMToolBoxItem
  215. var type: KMToolbarType = .word
  216. if (item.btnTag == KMToolbarType.excel.rawValue) {
  217. type = .excel
  218. } else if (item.btnTag == KMToolbarType.ppt.rawValue) {
  219. type = .ppt
  220. } else if (item.btnTag == KMToolbarType.rtf.rawValue) {
  221. type = .rtf
  222. } else if (item.btnTag == KMToolbarType.csv.rawValue) {
  223. type = .csv
  224. } else if (item.btnTag == KMToolbarType.html.rawValue) {
  225. type = .html
  226. } else if (item.btnTag == KMToolbarType.conversion_text.rawValue) {
  227. type = .conversion_text
  228. } else if (item.btnTag == KMToolbarType.conversion_image.rawValue) {
  229. type = .conversion_image
  230. }
  231. self.delegate?.toolbarViewController?(self, clickChaildToolType: type, toolbar: item)
  232. }
  233. @IBAction func zoomModelSelectButtonAction(_ sender: NSPopUpButton) {
  234. self.delegate?.toolbarViewController?(self, zoomModel: sender.selectedTag())
  235. for item in sender.itemArray {
  236. item.state = .off
  237. }
  238. sender.selectedItem?.state = .on
  239. }
  240. @IBAction func zoomPDFViewButtonAction(sender:KMToolbarClickButton) {
  241. if sender.tag == 0 {
  242. self.delegate?.changePDFViewZoomOutAction?()
  243. } else if sender.tag == 1 {
  244. self.delegate?.changePDFViewZoomInAction?()
  245. } else if sender.tag == 2 {
  246. self.delegate?.changePDFViewGotoNextPageAction?()
  247. } else if sender.tag == 3 {
  248. self.delegate?.changePDFViewGoToPreviousPageAction?()
  249. }
  250. }
  251. @IBAction func printPDFViewButtonAction(sender:KMToolbarClickButton) {
  252. self.delegate?.showPDFViewPrintViewController?()
  253. }
  254. @IBAction func shareButtonAction(sender:KMToolbarClickButton) {
  255. self.shareButton = sender
  256. let menu = NSMenu()
  257. menu.addItem(withTitle: NSLocalizedString("Document", comment: ""), action: #selector(shareViaWithDocument), target: self)
  258. menu.addItem(withTitle: NSLocalizedString("Flattened Copy", comment: ""), action: #selector(shareViaWithFlatten), target: self)
  259. menu.addItem(withTitle: NSLocalizedString("Original PDF", comment: ""), action: #selector(shareViaWithOriginalPDF), target: self)
  260. menu.popUp(positioning: nil, at: NSPoint(x: sender.frame.origin.x, y: sender.frame.origin.y-10), in: sender.superview)
  261. }
  262. @IBAction func shareViaWithDocument(sender:NSMenuItem) {
  263. self.delegate?.toolbarViewController?(self, shareDocument: sender)
  264. }
  265. @IBAction func shareViaWithFlatten(sender:NSMenuItem) {
  266. self.delegate?.toolbarViewController?(self, shareFlatten: sender)
  267. }
  268. @IBAction func shareViaWithOriginalPDF(sender:NSMenuItem) {
  269. self.delegate?.toolbarViewController?(self, shareOriginalPDF: sender)
  270. }
  271. @objc func mergeMenuItemAction(sender: KMToolbarClickButton) {
  272. self.delegate?.toolbarViewController?(self, clickChaildToolType: .merge, toolbar: sender.clickObject as! KMToolBoxItem)
  273. }
  274. @IBAction func scanOCRModelSelect(sender:KMToolbarClickButton) {
  275. self.delegate?.toolbarViewController?(self, scanOCRModel: sender.tag)
  276. }
  277. // Form 对齐
  278. @IBAction func formsAlignmentAction(sender:KMToolbarClickButton) {
  279. }
  280. // Form 更多操作
  281. @IBAction func formsMoreOperationAction(sender:KMToolbarClickButton) {
  282. }
  283. func toolbarItemFindItemIdentifiers(value : String) -> KMToolBoxItem{
  284. for item in self.toolbarItems {
  285. if item.key == value {
  286. return item.value as! KMToolBoxItem
  287. }
  288. }
  289. return KMToolBoxItem()
  290. }
  291. func controlTextDidEndEditing(_ obj: Notification) {
  292. let textField = obj.object as? NSTextField
  293. if textField == self.zoomTextField {
  294. self.delegate?.toolbarViewController?(self, zoomSting: self.zoomTextField.stringValue)
  295. }
  296. }
  297. func controlTextDidChange(_ obj: Notification) {
  298. }
  299. func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
  300. switch commandSelector {
  301. case #selector(NSResponder.insertNewline(_:)):
  302. if let inputView = control as? NSTextField {
  303. // //当当前TextField按下enter
  304. if inputView == zoomTextField {
  305. print("按下 enter")
  306. self.delegate?.toolbarViewController?(self, zoomSting: self.zoomTextField.stringValue)
  307. }
  308. }
  309. return true
  310. default:
  311. return false
  312. }
  313. }
  314. }
  315. extension KMToolbarViewController : KMNewToolbarDelegate,NSToolbarItemValidation {
  316. func toolbarLeftDefaultItemIdentifiers(_ toolbar: KMToolbar!) -> [String]! {
  317. if toolbarType == .Main {
  318. return [KMLeftControlToolbarItemIdentifier, KMToolbarDividerItemIdentifier,
  319. KMDocumentZoomToolbarItemIdentifier,
  320. KMDocumentZoomOutToolbarItemIdentifier,
  321. KMDocumentZoomViewToolbarItemIdentifier, KMToolbarDividerItemIdentifier]
  322. }
  323. return []
  324. }
  325. func toolbarRightDefaultItemIdentifiers(_ toolbar: KMToolbar!) -> [String]! {
  326. if toolbarType == .Main {
  327. return [KMDocumentPrintToolbarItemIdentifier,
  328. KMDocumentShareToolbarItemIdentifier,
  329. KMRightControlToolbarItemIdentifier]
  330. }
  331. return []
  332. }
  333. func toolbarDefaultItemIdentifiers(_ toolbar: KMToolbar!) -> [String]! {
  334. switch toolbarType {
  335. case .None:
  336. return []
  337. case .Main:
  338. return [KMDocumentAnnotationToolbarItemIdentifier,
  339. KMDocumentEditToolbarItemIdentifier,
  340. KMDocumentPageToolbarItemIdentifier,
  341. KMDocumentConversonToolbarItemIdentifier,
  342. // KMDocumentFillSginToolbarItemIdentifier,
  343. KMDocumentToolToolbarItemIdentifier]
  344. case .Annatiton,.Magnify,.Move,.Select,.SelectZoom:
  345. return [KMToolbarMoveToolModeItemIdentifier,
  346. KMToolbarMagnifyToolModeItemIdentifier,
  347. KMToolbarSelectToolModeItemIdentifier,
  348. KMToolbarZoomToSelectionItemIdentifier,
  349. KMNewToolbarSpaceItemIdentifier,
  350. KMToolbarDividerItemIdentifier,
  351. KMNewToolbarSpaceItemIdentifier,
  352. KMToolbarHighlightAnnotationItemIdentifier,
  353. KMToolbarUnderlineAnnotationItemIdentifier,
  354. KMToolbarStrikeOutAnnotationItemIdentifier,
  355. KMToolbarInkAnnotationItemIdentifier,
  356. KMToolbarFreeTextAnnotationItemIdentifier,
  357. KMToolbarAnchoredAnnotationItemIdentifier,
  358. KMToolbarSquareAnnotationItemIdentifier,
  359. KMToolbarLinkAnnotationItemIdentifier,
  360. KMAnnotationStampToolbarItemIdentifier,
  361. KMToolbarSignSignatureAnnotationItemIdentifier,
  362. KMToolbarDividerItemIdentifier,
  363. KMToolbarShowToolbarItemIdentifier]
  364. case .editPDF:
  365. return [KMToolbarAddTextEditPDFItemIdentifier,
  366. KMToolbarAddImageEditPDFItemIdentifier]
  367. case .Page:
  368. return []
  369. case .Tool:
  370. return [KMToolbarToolCompressItemIdentifier,
  371. KMToolbarToolMergeItemIdentifier,
  372. KMToolbarToolSecureItemIdentifier,
  373. KMToolbarToolCropItemIdentifier]
  374. case .Form:
  375. return [KMToolbarToolTextFieldItemIdentifier,
  376. KMToolbarToolCheckBoxItemIdentifier,
  377. KMToolbarToolRadioButtonItemIdentifier,
  378. KMToolbarToolListBoxItemIdentifier,
  379. KMToolbarToolPullDownmenuItemIdentifier,
  380. KMToolbarToolButtonIdentifier,
  381. KMToolbarToolSignBoxIdentifier,
  382. KMToolbarDividerItemIdentifier,
  383. KMToolbarToolFormAlignIdentifier,
  384. KMToolbarToolFormMoreIdentifier]
  385. case .FillSign:
  386. return [KMToolbarToolTextIdentifier,
  387. KMToolbarToolHookItemIdentifier,
  388. KMToolbarToolForkItemIdentifier,
  389. KMToolbarToolRectangleIdentifier,
  390. KMToolbarToolLineItemIdentifier,
  391. KMToolbarToolDotItemIdentifier,
  392. KMToolbarToolDateIdentifier,
  393. KMToolbarFillSignSignatureIdentifier]
  394. case .Conversion:
  395. return [KMToolbarConversionWordItemIdentifier,
  396. KMToolbarConversionExcelItemIdentifier,
  397. KMToolbarConversionPPTItemIdentifier,
  398. KMToolbarConversionRTFItemIdentifier,
  399. KMToolbarConversionCSVItemIdentifier,
  400. KMToolbarConversionHTMLItemIdentifier,
  401. KMToolbarConversionTextItemIdentifier,
  402. KMToolbarConversionImageItemIdentifier]
  403. case .ScanOCR:
  404. return [KMToolbarToolEnhancedScanIdentifier,
  405. KMToolbarToolOCRTextIdentifier]
  406. default:
  407. break
  408. }
  409. return []
  410. }
  411. func toolbar(_ toolbar: KMToolbar!, itemForItemIdentifier identifier: String!) -> KMToolBoxItem! {
  412. var item = self.toolbarItems[identifier] as? KMToolBoxItem
  413. if item == nil {
  414. item = KMToolBoxItem.init(itemIdentifier: identifier)
  415. self.toolbarItems[identifier] = item
  416. if identifier == KMLeftControlToolbarItemIdentifier {
  417. item?.image = NSImage(named: "KMImageNameMainToolbarLeft")
  418. item?.titleName = "View Settings"
  419. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarLeft")
  420. item?.target = self
  421. item?.btnTag = KMToolbarViewType.LeftPanel.rawValue
  422. item?.toolTip = NSLocalizedString("View Settings", comment: "")
  423. item?.boxImagePosition = KMToolBoxImagePosition.only
  424. item?.btnAction = #selector(leftPanelAction)
  425. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftPanelAction), target: self)
  426. menuItem?.target = self
  427. menuItem?.tag = item!.btnTag
  428. item?.menuFormRepresentation = menuItem
  429. } else if identifier == KMDocumentZoomToolbarItemIdentifier {
  430. item?.image = NSImage(named: "KMImageNameMainToolbarMinus")
  431. item?.titleName = "zoom"
  432. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarMinus")
  433. item?.target = self
  434. item?.btnTag = 0
  435. item?.toolTip = NSLocalizedString("", comment: "")
  436. item?.boxImagePosition = KMToolBoxImagePosition.only
  437. item?.btnAction = #selector(zoomPDFViewButtonAction)
  438. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(zoomPDFViewButtonAction), target: self)
  439. menuItem?.target = self
  440. menuItem?.tag = item!.btnTag
  441. item?.menuFormRepresentation = menuItem
  442. } else if identifier == KMDocumentZoomOutToolbarItemIdentifier {
  443. item?.image = NSImage(named: "KMImageNameMainToolbarPlus")
  444. item?.titleName = "zoom"
  445. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarPlus")
  446. item?.target = self
  447. item?.btnTag = 1
  448. // item?.toolTip = NSLocalizedString("Annotate PDF with highlight, text box and markup tools", comment: "")
  449. item?.boxImagePosition = KMToolBoxImagePosition.only
  450. item?.btnAction = #selector(zoomPDFViewButtonAction)
  451. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(zoomPDFViewButtonAction), target: self)
  452. menuItem?.target = self
  453. menuItem?.tag = item!.btnTag
  454. item?.menuFormRepresentation = menuItem
  455. } else if identifier == KMDocumentZoomViewToolbarItemIdentifier{
  456. item?.titleName = "Zoom"
  457. item?.target = self
  458. item?.customizeView = self.zoomView;
  459. } else if identifier == KMDocumentNextPageToolbarItemIdentifier {
  460. item?.image = NSImage(named: "KMImageNameMainToolbarForward")
  461. item?.titleName = "Forward"
  462. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarForward")
  463. item?.target = self
  464. item?.btnTag = 2
  465. item?.toolTip = NSLocalizedString("Forward", comment: "")
  466. item?.boxImagePosition = KMToolBoxImagePosition.only
  467. item?.btnAction = #selector(zoomPDFViewButtonAction)
  468. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(zoomPDFViewButtonAction), target: self)
  469. menuItem?.target = self
  470. menuItem?.tag = item!.btnTag
  471. item?.menuFormRepresentation = menuItem
  472. } else if identifier == KMDocumentPreviousPageToolbarItemIdentifier {
  473. item?.image = NSImage(named: "KMImageNameMainToolbarBack")
  474. item?.titleName = "Next"
  475. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarBack")
  476. item?.target = self
  477. item?.btnTag = 3
  478. item?.toolTip = NSLocalizedString("Next", comment: "")
  479. item?.boxImagePosition = KMToolBoxImagePosition.only
  480. item?.btnAction = #selector(zoomPDFViewButtonAction)
  481. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(zoomPDFViewButtonAction), target: self)
  482. menuItem?.target = self
  483. menuItem?.tag = item!.btnTag
  484. item?.menuFormRepresentation = menuItem
  485. } else if identifier == KMDocumentAnnotationToolbarItemIdentifier {
  486. item?.titleName = NSLocalizedString("Annotation", comment: "")
  487. item?.target = self
  488. item?.isMainTool = true
  489. item?.toolTip = NSLocalizedString("Add annotation with highlight, text and shape tool", comment: "")
  490. item?.btnTag = KMToolbarViewType.Annatiton.rawValue
  491. item?.btnAction = #selector(leftControllButtonAction)
  492. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  493. menuItem?.target = self
  494. menuItem?.tag = item!.btnTag
  495. item?.menuFormRepresentation = menuItem
  496. } else if identifier == KMDocumentPageToolbarItemIdentifier {
  497. item?.titleName = NSLocalizedString("Page Edit", comment: "")
  498. item?.target = self
  499. item?.isMainTool = true
  500. item?.toolTip = NSLocalizedString("PDF Page Editor: rotate, delete, paste, copy, and cut pages", comment: "")
  501. item?.btnTag = KMToolbarViewType.Page.rawValue
  502. item?.btnAction = #selector(leftControllButtonAction)
  503. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  504. menuItem?.target = self
  505. menuItem?.tag = item!.btnTag
  506. item?.menuFormRepresentation = menuItem
  507. } else if identifier == KMDocumentConversonToolbarItemIdentifier {
  508. item?.titleName = NSLocalizedString("Converter", comment: "")
  509. item?.target = self
  510. item?.isMainTool = true
  511. item?.toolTip = NSLocalizedString("Convert PDF to Word, Excel, PPT, RTF, CSV, HTML, Text and Image.", comment: "")
  512. item?.btnTag = KMToolbarViewType.Conversion.rawValue
  513. item?.btnAction = #selector(leftControllButtonAction)
  514. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  515. menuItem?.target = self
  516. menuItem?.tag = item!.btnTag
  517. item?.menuFormRepresentation = menuItem
  518. } else if identifier == KMDocumentScanOCRToolbarItemIdentifier {
  519. item?.titleName = NSLocalizedString("Scan & OCR", comment: "")
  520. item?.target = self
  521. item?.isMainTool = true
  522. item?.btnTag = KMToolbarViewType.ScanOCR.rawValue
  523. item?.toolTip = NSLocalizedString("Scan & OCR", comment: "")
  524. item?.btnAction = #selector(leftControllButtonAction)
  525. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  526. menuItem?.target = self
  527. menuItem?.tag = item!.btnTag
  528. item?.menuFormRepresentation = menuItem
  529. } else if identifier == KMToolbarToolEnhancedScanIdentifier {
  530. item?.image = NSImage(named: "KMImageNameMainToolEnhancedScan")
  531. item?.alternateImage = NSImage(named: "KMImageNameMainToolEnhancedScan")
  532. item?.target = self
  533. item?.btnTag = 0
  534. item?.toolTip = NSLocalizedString("Enhanced Scan", comment: "")
  535. item?.titleName = NSLocalizedString("Enhanced Scan", comment: "")
  536. item?.boxImagePosition = KMToolBoxImagePosition.left
  537. item?.btnAction = #selector(scanOCRModelSelect)
  538. } else if identifier == KMToolbarToolOCRTextIdentifier {
  539. item?.image = NSImage(named: "KMImageNameMainToolOCRText")
  540. item?.alternateImage = NSImage(named: "KMImageNameMainToolOCRText")
  541. item?.target = self
  542. item?.btnTag = 1
  543. item?.toolTip = NSLocalizedString("OCR Text Recognition", comment: "")
  544. item?.titleName = NSLocalizedString("OCR Text Recognition", comment: "")
  545. item?.boxImagePosition = KMToolBoxImagePosition.left
  546. item?.btnAction = #selector(scanOCRModelSelect)
  547. } else if identifier == KMDocumentEditToolbarItemIdentifier {
  548. item?.titleName = NSLocalizedString("Edit", comment: "")
  549. item?.target = self
  550. item?.isMainTool = true
  551. item?.btnTag = KMToolbarViewType.editPDF.rawValue
  552. item?.toolTip = NSLocalizedString("Edit text and image in PDF", comment: "")
  553. item?.btnAction = #selector(leftControllButtonAction)
  554. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  555. menuItem?.target = self
  556. menuItem?.tag = item!.btnTag
  557. item?.menuFormRepresentation = menuItem
  558. } else if identifier == KMDocumentFormToolbarItemIdentifier {
  559. item?.titleName = NSLocalizedString("Form", comment: "")
  560. item?.target = self
  561. item?.isMainTool = true
  562. item?.btnTag = KMToolbarViewType.Form.rawValue
  563. item?.toolTip = NSLocalizedString("Form", comment: "")
  564. item?.btnAction = #selector(leftControllButtonAction)
  565. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  566. menuItem?.target = self
  567. menuItem?.tag = item!.btnTag
  568. item?.menuFormRepresentation = menuItem
  569. } else if identifier == KMDocumentFillSginToolbarItemIdentifier {
  570. item?.titleName = NSLocalizedString("Fillsign", comment: "")
  571. item?.target = self
  572. item?.isMainTool = true
  573. item?.btnTag = KMToolbarViewType.FillSign.rawValue
  574. item?.toolTip = NSLocalizedString("Fill and sign forms or allow others to sign them", comment: "")
  575. item?.btnAction = #selector(leftControllButtonAction)
  576. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  577. menuItem?.target = self
  578. menuItem?.tag = item!.btnTag
  579. item?.menuFormRepresentation = menuItem
  580. } else if identifier == KMDocumentToolToolbarItemIdentifier {
  581. item?.titleName = NSLocalizedString("Tools", comment: "")
  582. item?.target = self
  583. item?.isMainTool = true
  584. item?.btnTag = KMToolbarViewType.Tool.rawValue
  585. item?.toolTip = NSLocalizedString("Advanced editing tools", comment: "")
  586. item?.btnAction = #selector(leftControllButtonAction)
  587. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(leftControllButtonAction), target: self)
  588. menuItem?.target = self
  589. menuItem?.tag = item!.btnTag
  590. item?.menuFormRepresentation = menuItem
  591. } else if identifier == KMDocumentPrintToolbarItemIdentifier {
  592. item?.image = NSImage(named: "KMImageNameMainToolbarPrint")
  593. item?.titleName = "Print"
  594. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarPrint")
  595. item?.target = self
  596. item?.toolTip = NSLocalizedString("Print", comment: "")
  597. item?.boxImagePosition = KMToolBoxImagePosition.only
  598. item?.btnAction = #selector(printPDFViewButtonAction)
  599. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(printPDFViewButtonAction), target: self)
  600. menuItem?.target = self
  601. item?.menuFormRepresentation = menuItem
  602. } else if identifier == KMDocumentShareToolbarItemIdentifier {
  603. item?.image = NSImage(named: "KMImageNameMainToolbarShare")
  604. item?.titleName = "Share"
  605. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarShare")
  606. item?.target = self
  607. item?.toolTip = NSLocalizedString("Share the file with others", comment: "")
  608. item?.boxImagePosition = KMToolBoxImagePosition.only
  609. item?.btnAction = #selector(shareButtonAction)
  610. let menuItem = NSMenuItem.init(title: item?.titleName, action: nil, target: self)
  611. let menu = NSMenu()
  612. menu.addItem(withTitle: NSLocalizedString("Document", comment: ""), action: #selector(shareViaWithDocument), target: self)
  613. menu.addItem(withTitle: NSLocalizedString("Flattened Copy", comment: ""), action: #selector(shareViaWithFlatten), target: self)
  614. menu.addItem(withTitle: NSLocalizedString("Original PDF", comment: ""), action: #selector(shareViaWithOriginalPDF), target: self)
  615. menuItem?.submenu = menu
  616. item?.menuFormRepresentation = menuItem
  617. } else if identifier == KMRightControlToolbarItemIdentifier {
  618. item?.image = NSImage(named: "KMImageNameMainToolbarrRight")
  619. item?.titleName = "right"
  620. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarrRight")
  621. item?.target = self
  622. item?.btnTag = KMToolbarViewType.RightPanel.rawValue
  623. item?.toolTip = NSLocalizedString("Show/hide the right properties panel", comment: "")
  624. item?.boxImagePosition = KMToolBoxImagePosition.only
  625. item?.btnAction = #selector(rightPanelControllButtonAction)
  626. let menuItem = NSMenuItem.init(title: item?.titleName, action: #selector(rightPanelControllButtonAction), target: self)
  627. menuItem?.target = self
  628. menuItem?.tag = item!.btnTag
  629. item?.menuFormRepresentation = menuItem
  630. } else if identifier == KMToolbarMoveToolModeItemIdentifier {
  631. item?.image = NSImage(named: "KMImageNameMainToolMove")
  632. item?.alternateImage = NSImage(named: "KMImageNameMainToolMove")
  633. item?.target = self
  634. item?.btnTag = KMToolbarViewType.Move.rawValue
  635. item?.toolTip = NSLocalizedString("Scroll Tool", comment: "")
  636. item?.boxImagePosition = KMToolBoxImagePosition.only
  637. item?.btnAction = #selector(leftControllButtonAction)
  638. let menuItem = NSMenuItem.init(title: "Scroll Tool", action: #selector(leftControllButtonAction), target: self)
  639. menuItem?.tag = KMToolbarViewType.Move.rawValue
  640. item?.menuFormRepresentation = menuItem
  641. } else if identifier == KMToolbarMagnifyToolModeItemIdentifier {
  642. item?.image = NSImage(named: "KMImageNameMainToolMagnify")
  643. item?.alternateImage = NSImage(named: "KMImageNameMainToolMagnify")
  644. item?.target = self
  645. item?.btnTag = KMToolbarViewType.Magnify.rawValue
  646. item?.toolTip = NSLocalizedString("Magnify Tool", comment: "")
  647. item?.boxImagePosition = KMToolBoxImagePosition.only
  648. item?.btnAction = #selector(leftControllButtonAction)
  649. let menuItem = NSMenuItem.init(title: "Magnify Tool", action: #selector(leftControllButtonAction), target: self)
  650. menuItem?.tag = KMToolbarViewType.Magnify.rawValue
  651. item?.menuFormRepresentation = menuItem
  652. } else if identifier == KMToolbarSelectToolModeItemIdentifier {
  653. item?.image = NSImage(named: "KMImageNameMainToolSelect")
  654. item?.alternateImage = NSImage(named: "KMImageNameMainToolSelect")
  655. item?.target = self
  656. item?.btnTag = KMToolbarViewType.Select.rawValue
  657. item?.toolTip = NSLocalizedString("Content Selection", comment: "")
  658. item?.boxImagePosition = KMToolBoxImagePosition.only
  659. item?.btnAction = #selector(leftControllButtonAction)
  660. let menuItem = NSMenuItem.init(title: "Content Selection", action: #selector(leftControllButtonAction), target: self)
  661. menuItem?.tag = KMToolbarViewType.Select.rawValue
  662. item?.menuFormRepresentation = menuItem
  663. } else if identifier == KMToolbarZoomToSelectionItemIdentifier {
  664. item?.image = NSImage(named: "KMImageNameMainToolSelectZoom")
  665. item?.alternateImage = NSImage(named: "KMImageNameMainToolSelectZoom")
  666. item?.target = self
  667. item?.btnTag = KMToolbarViewType.SelectZoom.rawValue
  668. item?.toolTip = NSLocalizedString("Zoom to selected area", comment: "")
  669. item?.boxImagePosition = KMToolBoxImagePosition.only
  670. item?.btnAction = #selector(leftControllButtonAction)
  671. let menuItem = NSMenuItem.init(title: "", action: #selector(leftControllButtonAction), target: self)
  672. menuItem?.tag = KMToolbarViewType.SelectZoom.rawValue
  673. item?.menuFormRepresentation = menuItem
  674. } else if identifier == KMToolbarHighlightAnnotationItemIdentifier {
  675. item?.image = NSImage(named: "KMImageNameMainToolHighlight")
  676. item?.alternateImage = NSImage(named: "KMImageNameMainToolHighlight")
  677. item?.target = self
  678. item?.btnTag = CAnnotationType.highlight.rawValue
  679. item?.toolTip = NSLocalizedString("Highlight (⌃⌘H)", comment: "")
  680. item?.boxImagePosition = KMToolBoxImagePosition.only
  681. item?.btnAction = #selector(changeAnnotationMode)
  682. let menuItem = NSMenuItem.init(title: "highlight", action: #selector(changeAnnotationMode), target: self)
  683. menuItem?.tag = CAnnotationType.highlight.rawValue
  684. item?.menuFormRepresentation = menuItem
  685. } else if identifier == KMToolbarUnderlineAnnotationItemIdentifier {
  686. item?.image = NSImage(named: "KMImageNameMainToolUnderline")
  687. item?.alternateImage = NSImage(named: "KMImageNameMainToolUnderline")
  688. item?.target = self
  689. item?.btnTag = CAnnotationType.underline.rawValue
  690. item?.toolTip = NSLocalizedString("Underline (⌃⌘U)", comment: "")
  691. item?.boxImagePosition = KMToolBoxImagePosition.only
  692. item?.btnAction = #selector(changeAnnotationMode)
  693. let menuItem = NSMenuItem.init(title: "underline", action: #selector(changeAnnotationMode), target: self)
  694. menuItem?.tag = CAnnotationType.underline.rawValue
  695. item?.menuFormRepresentation = menuItem
  696. } else if identifier == KMToolbarStrikeOutAnnotationItemIdentifier {
  697. item?.image = NSImage(named: "KMImageNameMainToolStrikeththrough")
  698. item?.alternateImage = NSImage(named: "KMImageNameMainToolStrikeththrough")
  699. item?.target = self
  700. item?.btnTag = CAnnotationType.strikeOut.rawValue
  701. item?.toolTip = NSLocalizedString("Strikethrough (⌃⌘S)", comment: "")
  702. item?.boxImagePosition = KMToolBoxImagePosition.only
  703. item?.btnAction = #selector(changeAnnotationMode)
  704. let menuItem = NSMenuItem.init(title: "strikeOut", action: #selector(changeAnnotationMode), target: self)
  705. menuItem?.tag = CAnnotationType.strikeOut.rawValue
  706. item?.menuFormRepresentation = menuItem
  707. } else if identifier == KMToolbarInkAnnotationItemIdentifier {
  708. item?.image = NSImage(named: "KMImageNameMainToolPen")
  709. item?.alternateImage = NSImage(named: "KMImageNameMainToolPen")
  710. item?.target = self
  711. item?.btnTag = CAnnotationType.ink.rawValue
  712. item?.toolTip = NSLocalizedString("Draw freely as you do with a pen", comment: "")
  713. item?.boxImagePosition = KMToolBoxImagePosition.only
  714. item?.btnAction = #selector(changeAnnotationMode)
  715. let menuItem = NSMenuItem.init(title: "Freehand", action: #selector(changeAnnotationMode), target: self)
  716. menuItem?.tag = CAnnotationType.ink.rawValue
  717. item?.menuFormRepresentation = menuItem
  718. } else if identifier == KMToolbarFreeTextAnnotationItemIdentifier {
  719. item?.image = NSImage(named: "KMImageNameMainToolFreeText")
  720. item?.alternateImage = NSImage(named: "KMImageNameMainToolFreeText")
  721. item?.target = self
  722. item?.btnTag = CAnnotationType.freeText.rawValue
  723. item?.toolTip = NSLocalizedString("Text (⌃⌘T)", comment: "")
  724. item?.boxImagePosition = KMToolBoxImagePosition.only
  725. item?.btnAction = #selector(changeAnnotationMode)
  726. let menuItem = NSMenuItem.init(title: "FreeText", action: #selector(changeAnnotationMode), target: self)
  727. menuItem?.tag = CAnnotationType.freeText.rawValue
  728. item?.menuFormRepresentation = menuItem
  729. } else if identifier == KMToolbarAnchoredAnnotationItemIdentifier {
  730. item?.image = NSImage(named: "KMImageNameMainToolAnchored")
  731. item?.alternateImage = NSImage(named: "KMImageNameMainToolAnchored")
  732. item?.target = self
  733. item?.btnTag = CAnnotationType.anchored.rawValue
  734. item?.toolTip = NSLocalizedString("Sticky Note(⌃⌘N)", comment: "")
  735. item?.boxImagePosition = KMToolBoxImagePosition.only
  736. item?.btnAction = #selector(changeAnnotationMode)
  737. let menuItem = NSMenuItem.init(title: "Anchored", action: #selector(changeAnnotationMode), target: self)
  738. menuItem?.tag = CAnnotationType.anchored.rawValue
  739. item?.menuFormRepresentation = menuItem
  740. } else if identifier == KMToolbarSquareAnnotationItemIdentifier {
  741. item?.image = NSImage(named: "KMImageNameMainToolSquare_Default")
  742. item?.alternateImage = NSImage(named: "KMImageNameMainToolSquare_Default")
  743. item?.target = self
  744. item?.btnTag = CAnnotationType.square.rawValue
  745. item?.toolTip = NSLocalizedString("Hold shift to draw square/circle/straight arrow/line", comment: "")
  746. item?.boxImagePosition = KMToolBoxImagePosition.only
  747. item?.btnAction = #selector(changeAnnotationMode)
  748. let menuItem = NSMenuItem.init(title: "Square", action: #selector(changeAnnotationMode), target: self)
  749. menuItem?.tag = CAnnotationType.square.rawValue
  750. item?.menuFormRepresentation = menuItem
  751. } else if identifier == KMToolbarLinkAnnotationItemIdentifier {
  752. item?.image = NSImage(named: "KMImageNameMainToolLine")
  753. item?.alternateImage = NSImage(named: "KMImageNameMainToolLine")
  754. item?.target = self
  755. item?.btnTag = CAnnotationType.link.rawValue
  756. item?.toolTip = NSLocalizedString("Select an area or text on the page for a link to be inserted", comment: "")
  757. item?.boxImagePosition = KMToolBoxImagePosition.only
  758. item?.btnAction = #selector(changeAnnotationMode)
  759. let menuItem = NSMenuItem.init(title: "Link", action: #selector(changeAnnotationMode), target: self)
  760. menuItem?.tag = CAnnotationType.link.rawValue
  761. item?.menuFormRepresentation = menuItem
  762. } else if identifier == KMToolbarSignSignatureAnnotationItemIdentifier {
  763. item?.image = NSImage(named: "KMImageNameMainToolSignSignature")
  764. item?.alternateImage = NSImage(named: "KMImageNameMainToolSignSignature")
  765. item?.target = self
  766. item?.btnTag = CAnnotationType.signSignature.rawValue
  767. item?.toolTip = NSLocalizedString("Add a handwritten signature or create a signature via the trackpad", comment: "")
  768. item?.boxImagePosition = KMToolBoxImagePosition.only
  769. item?.btnAction = #selector(changeAnnotationMode)
  770. let menuItem = NSMenuItem.init(title: "SignSignature", action: #selector(changeAnnotationMode), target: self)
  771. menuItem?.tag = CAnnotationType.signSignature.rawValue
  772. item?.menuFormRepresentation = menuItem
  773. } else if identifier == KMAnnotationStampToolbarItemIdentifier {
  774. item?.image = NSImage(named: "KMImageNameMainToolStamp")
  775. item?.alternateImage = NSImage(named: "KMImageNameMainToolStamp")
  776. item?.target = self
  777. item?.btnTag = CAnnotationType.stamp.rawValue
  778. item?.toolTip = NSLocalizedString("Add Stamp", comment: "")
  779. item?.boxImagePosition = KMToolBoxImagePosition.only
  780. item?.btnAction = #selector(changeAnnotationMode)
  781. let menuItem = NSMenuItem.init(title: "Stamp", action: #selector(changeAnnotationMode), target: self)
  782. menuItem?.tag = CAnnotationType.stamp.rawValue
  783. item?.menuFormRepresentation = menuItem
  784. } else if identifier == KMToolbarShowToolbarItemIdentifier {
  785. item?.image = NSImage(named: "KMImageNameMainToolShow")
  786. item?.selectedImage = NSImage(named: "KMImageNameMainToolHide")
  787. item?.alternateImage = NSImage(named: "KMImageNameMainToolShow")
  788. item?.selectedBackgroundColor = NSColor.clear
  789. item?.target = self
  790. item?.toolTip = NSLocalizedString("Hide", comment: "")
  791. item?.titleName = NSLocalizedString("Hide", comment: "")
  792. item?.boxImagePosition = KMToolBoxImagePosition.only
  793. item?.btnAction = #selector(showPDFLayoutMode)
  794. let menuItem = NSMenuItem.init(title: "Hide", action: #selector(showPDFLayoutMode), target: self)
  795. item?.menuFormRepresentation = menuItem
  796. } else if identifier == KMToolbarAddTextEditPDFItemIdentifier {
  797. item?.image = NSImage(named: "KMImageNameMainToolFreeText")
  798. item?.alternateImage = NSImage(named: "KMImageNameMainToolFreeText")
  799. item?.target = self
  800. item?.btnTag = CAnnotationType.addText.rawValue
  801. item?.toolTip = NSLocalizedString("Add Text", comment: "")
  802. item?.titleName = NSLocalizedString("Add Text", comment: "")
  803. item?.boxImagePosition = KMToolBoxImagePosition.left
  804. item?.btnAction = #selector(changeAnnotationMode)
  805. let menuItem = NSMenuItem.init(title: "Add Text", action: #selector(changeAnnotationMode), target: self)
  806. menuItem?.tag = CAnnotationType.addText.rawValue
  807. item?.menuFormRepresentation = menuItem
  808. } else if identifier == KMToolbarAddImageEditPDFItemIdentifier {
  809. item?.image = NSImage(named: "KMImageNameMainToolEditImage")
  810. item?.alternateImage = NSImage(named: "KMImageNameMainToolEditImage")
  811. item?.target = self
  812. item?.btnTag = CAnnotationType.addImage.rawValue
  813. item?.toolTip = NSLocalizedString("Add Image", comment: "")
  814. item?.titleName = NSLocalizedString("Add Image", comment: "")
  815. item?.boxImagePosition = KMToolBoxImagePosition.left
  816. item?.btnAction = #selector(changeAnnotationMode)
  817. let menuItem = NSMenuItem.init(title: "Add Image", action: #selector(changeAnnotationMode), target: self)
  818. menuItem?.tag = CAnnotationType.addImage.rawValue
  819. item?.menuFormRepresentation = menuItem
  820. } else if identifier == KMToolbarToolCropItemIdentifier {
  821. item?.image = NSImage(named: "KMImageNameMainToolbarrRight")
  822. item?.alternateImage = NSImage(named: "KMImageNameMainToolbarrRight")
  823. item?.target = self
  824. item?.btnTag = KMToolbarType.crop.rawValue
  825. item?.toolTip = NSLocalizedString("Crop pages", comment: "")
  826. item?.titleName = NSLocalizedString("Crop", comment: "")
  827. item?.boxImagePosition = KMToolBoxImagePosition.expandLeft
  828. item?.btnAction = #selector(cropMenuAction)
  829. let menuItem = NSMenuItem.init(title: "Crop", action: #selector(cropMenuAction), target: self)
  830. item?.menuFormRepresentation = menuItem
  831. } else if identifier == KMToolbarToolBatesItemIdentifier {
  832. item?.image = NSImage(named: "KMImageNameMainToolsBatesNumber")
  833. item?.alternateImage = NSImage(named: "KMImageNameMainToolsBatesNumber")
  834. item?.target = self
  835. item?.btnTag = KMToolbarType.bates.rawValue
  836. item?.toolTip = NSLocalizedString("Bates Number", comment: "")
  837. item?.titleName = NSLocalizedString("Bates Number", comment: "")
  838. item?.boxImagePosition = KMToolBoxImagePosition.left
  839. item?.btnAction = #selector(batesMenuAction)
  840. let menuItem = NSMenuItem.init(title: "Bates Number", action: #selector(batesMenuAction), target: self)
  841. item?.menuFormRepresentation = menuItem
  842. } else if identifier == KMToolbarToolHeaderFooterItemIdentifier {
  843. item?.image = NSImage(named: "KMImageNameMainToolsHeadeFooter")
  844. item?.alternateImage = NSImage(named: "KMImageNameMainToolsHeadeFooter")
  845. item?.target = self
  846. item?.btnTag = KMToolbarType.headerAndFooter.rawValue
  847. item?.toolTip = NSLocalizedString("Header&Footer", comment: "")
  848. item?.titleName = NSLocalizedString("Header&Footer", comment: "")
  849. item?.boxImagePosition = KMToolBoxImagePosition.left
  850. item?.btnAction = #selector(headerfooterMenuAction)
  851. let menuItem = NSMenuItem.init(title: "Header&Footer", action: #selector(headerfooterMenuAction), target: self)
  852. item?.menuFormRepresentation = menuItem
  853. } else if identifier == KMToolbarToolBackgroundItemIdentifier {
  854. item?.image = NSImage(named: "KMImageNameMainToolsBackgroud")
  855. item?.alternateImage = NSImage(named: "KMImageNameMainToolsBackgroud")
  856. item?.target = self
  857. item?.btnTag = KMToolbarType.background.rawValue
  858. item?.toolTip = NSLocalizedString("Backgroud", comment: "")
  859. item?.titleName = NSLocalizedString("Backgroud", comment: "")
  860. item?.boxImagePosition = KMToolBoxImagePosition.left
  861. item?.btnAction = #selector(backgroundMenuAction)
  862. let menuItem = NSMenuItem.init(title: "Backgroud", action: #selector(backgroundMenuAction), target: self)
  863. item?.menuFormRepresentation = menuItem
  864. } else if identifier == KMToolbarToolWatermarkItemIdentifier {
  865. item?.image = NSImage(named: "KMImageNameMainToolsWatermark")
  866. item?.alternateImage = NSImage(named: "KMImageNameMainToolsWatermark")
  867. item?.target = self
  868. item?.btnTag = KMToolbarType.watermark.rawValue
  869. item?.toolTip = NSLocalizedString("Watermark", comment: "")
  870. item?.titleName = NSLocalizedString("Watermark", comment: "")
  871. item?.boxImagePosition = KMToolBoxImagePosition.left
  872. item?.btnAction = #selector(watermarkMenuAction)
  873. let menuItem = NSMenuItem.init(title: "Watermark", action: #selector(watermarkMenuAction), target: self)
  874. item?.menuFormRepresentation = menuItem
  875. } else if identifier == KMToolbarToolTextFieldItemIdentifier {
  876. item?.image = NSImage(named: "KMImageNameMainToolFormText")
  877. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormText")
  878. item?.target = self
  879. item?.btnTag = CAnnotationType.textField.rawValue
  880. item?.toolTip = NSLocalizedString("TextField", comment: "")
  881. item?.titleName = NSLocalizedString("TextField", comment: "")
  882. item?.boxImagePosition = KMToolBoxImagePosition.only
  883. item?.btnAction = #selector(changeAnnotationMode)
  884. let menuItem = NSMenuItem.init(title: "TextField", action: #selector(changeAnnotationMode), target: self)
  885. menuItem?.tag = item!.btnTag
  886. item?.menuFormRepresentation = menuItem
  887. } else if identifier == KMToolbarToolCheckBoxItemIdentifier {
  888. item?.image = NSImage(named: "KMImageNameMainToolFormCheckbox")
  889. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormCheckbox")
  890. item?.target = self
  891. item?.btnTag = CAnnotationType.checkBox.rawValue
  892. item?.toolTip = NSLocalizedString("CheckBox", comment: "")
  893. item?.titleName = NSLocalizedString("CheckBox", comment: "")
  894. item?.boxImagePosition = KMToolBoxImagePosition.only
  895. item?.btnAction = #selector(changeAnnotationMode)
  896. let menuItem = NSMenuItem.init(title: "CheckBox", action: #selector(changeAnnotationMode), target: self)
  897. menuItem?.tag = item!.btnTag
  898. item?.menuFormRepresentation = menuItem
  899. } else if identifier == KMToolbarToolRadioButtonItemIdentifier {
  900. item?.image = NSImage(named: "KMImageNameMainToolFormRadio")
  901. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormRadio")
  902. item?.target = self
  903. item?.btnTag = CAnnotationType.radioButton.rawValue
  904. item?.toolTip = NSLocalizedString("RadioButton", comment: "")
  905. item?.titleName = NSLocalizedString("RadioButton", comment: "")
  906. item?.boxImagePosition = KMToolBoxImagePosition.only
  907. item?.btnAction = #selector(changeAnnotationMode)
  908. let menuItem = NSMenuItem.init(title: "RadioButton", action: #selector(changeAnnotationMode), target: self)
  909. menuItem?.tag = item!.btnTag
  910. item?.menuFormRepresentation = menuItem
  911. } else if identifier == KMToolbarToolListBoxItemIdentifier {
  912. item?.image = NSImage(named: "KMImageNameMainToolFormListBox")
  913. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormListBox")
  914. item?.target = self
  915. item?.btnTag = CAnnotationType.listMenu.rawValue
  916. item?.toolTip = NSLocalizedString("ListBox", comment: "")
  917. item?.titleName = NSLocalizedString("ListBox", comment: "")
  918. item?.boxImagePosition = KMToolBoxImagePosition.only
  919. item?.btnAction = #selector(changeAnnotationMode)
  920. let menuItem = NSMenuItem.init(title: "ListBox", action: #selector(changeAnnotationMode), target: self)
  921. menuItem?.tag = item!.btnTag
  922. item?.menuFormRepresentation = menuItem
  923. } else if identifier == KMToolbarToolPullDownmenuItemIdentifier {
  924. item?.image = NSImage(named: "KMImageNameMainToolFormPulldown")
  925. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormPulldown")
  926. item?.target = self
  927. item?.btnTag = CAnnotationType.comboBox.rawValue
  928. item?.toolTip = NSLocalizedString("PullDownmenu", comment: "")
  929. item?.titleName = NSLocalizedString("PullDownmenu", comment: "")
  930. item?.boxImagePosition = KMToolBoxImagePosition.only
  931. item?.btnAction = #selector(changeAnnotationMode)
  932. let menuItem = NSMenuItem.init(title: "PullDownmenu", action: #selector(changeAnnotationMode), target: self)
  933. menuItem?.tag = item!.btnTag
  934. item?.menuFormRepresentation = menuItem
  935. } else if identifier == KMToolbarToolButtonIdentifier {
  936. item?.image = NSImage(named: "KMImageNameMainToolFormButton")
  937. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormButton")
  938. item?.target = self
  939. item?.btnTag = CAnnotationType.actionButton.rawValue
  940. item?.toolTip = NSLocalizedString("Button", comment: "")
  941. item?.titleName = NSLocalizedString("Button", comment: "")
  942. item?.boxImagePosition = KMToolBoxImagePosition.only
  943. item?.btnAction = #selector(changeAnnotationMode)
  944. let menuItem = NSMenuItem.init(title: "Button", action: #selector(changeAnnotationMode), target: self)
  945. menuItem?.tag = item!.btnTag
  946. item?.menuFormRepresentation = menuItem
  947. } else if identifier == KMToolbarToolSignBoxIdentifier {
  948. item?.image = NSImage(named: "KMImageNameMainToolFormSign")
  949. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormSign")
  950. item?.target = self
  951. item?.btnTag = CAnnotationType.signature.rawValue
  952. item?.toolTip = NSLocalizedString("SignBox", comment: "")
  953. item?.titleName = NSLocalizedString("SignBox", comment: "")
  954. item?.boxImagePosition = KMToolBoxImagePosition.only
  955. item?.btnAction = #selector(changeAnnotationMode)
  956. let menuItem = NSMenuItem.init(title: "SignBox", action: #selector(changeAnnotationMode), target: self)
  957. menuItem?.tag = item!.btnTag
  958. item?.menuFormRepresentation = menuItem
  959. } else if identifier == KMToolbarToolFormAlignIdentifier {
  960. item?.image = NSImage(named: "KMImageNameMainToolFormAlignment")
  961. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormAlignment")
  962. item?.target = self
  963. item?.toolTip = NSLocalizedString("Alignment", comment: "")
  964. item?.titleName = NSLocalizedString("Alignment", comment: "")
  965. item?.boxImagePosition = KMToolBoxImagePosition.expandLeft
  966. item?.btnAction = #selector(formsAlignmentAction)
  967. let menuItem = NSMenuItem.init(title: "Alignment", action: #selector(formsAlignmentAction), target: self)
  968. menuItem?.tag = item!.btnTag
  969. item?.menuFormRepresentation = menuItem
  970. } else if identifier == KMToolbarToolFormMoreIdentifier {
  971. item?.image = NSImage(named: "KMImageNameMainToolFormMore")
  972. item?.alternateImage = NSImage(named: "KMImageNameMainToolFormMore")
  973. item?.target = self
  974. item?.toolTip = NSLocalizedString("More", comment: "")
  975. item?.titleName = NSLocalizedString("More", comment: "")
  976. item?.boxImagePosition = KMToolBoxImagePosition.expandLeft
  977. item?.btnAction = #selector(formsMoreOperationAction)
  978. let menuItem = NSMenuItem.init(title: "More", action: #selector(formsMoreOperationAction), target: self)
  979. menuItem?.tag = item!.btnTag
  980. item?.menuFormRepresentation = menuItem
  981. } else if identifier == KMToolbarToolRedactItemIdentifier {
  982. item?.image = NSImage(named: "KMImageNameMainToolsRedact")
  983. item?.alternateImage = NSImage(named: "KMImageNameMainToolsRedact")
  984. item?.target = self
  985. item?.btnTag = KMToolbarType.redact.rawValue
  986. item?.toolTip = NSLocalizedString("Redact", comment: "")
  987. item?.titleName = NSLocalizedString("Redact", comment: "")
  988. item?.btnAction = #selector(redactMenuAction)
  989. let menuItem = NSMenuItem.init(title: "Redact", action: #selector(changeAnnotationMode), target: self)
  990. menuItem?.tag = item!.btnTag
  991. item?.menuFormRepresentation = menuItem
  992. } else if identifier == KMToolbarToolCompressItemIdentifier {
  993. item?.image = NSImage(named: "KMImageNameMainToolsCompress")
  994. item?.alternateImage = NSImage(named: "KMImageNameMainToolsCompress")
  995. item?.target = self
  996. item?.btnTag = KMToolbarType.compress.rawValue
  997. item?.toolTip = NSLocalizedString("Reduce file size or custimize the quality to make the document smaller.", comment: "")
  998. item?.titleName = NSLocalizedString("Compress", comment: "")
  999. item?.btnAction = #selector(compressMenuAction)
  1000. let menuItem = NSMenuItem.init(title: "Compress", action: #selector(compressMenuAction), target: self)
  1001. menuItem?.tag = item!.btnTag
  1002. item?.menuFormRepresentation = menuItem
  1003. } else if identifier == KMToolbarToolSecureItemIdentifier {
  1004. item?.image = NSImage(named: "KMImageNameMainToolsSecurity")
  1005. item?.alternateImage = NSImage(named: "KMImageNameMainToolsSecurity")
  1006. item?.target = self
  1007. item?.btnTag = KMToolbarType.secure.rawValue
  1008. item?.toolTip = NSLocalizedString("", comment: "")
  1009. item?.titleName = NSLocalizedString("Security", comment: "")
  1010. item?.boxImagePosition = KMToolBoxImagePosition.expandLeft
  1011. item?.btnAction = #selector(secureMenuAction)
  1012. let menuItem = NSMenuItem.init(title: "Security", action: #selector(secureMenuAction), target: self)
  1013. menuItem?.tag = item!.btnTag
  1014. item?.menuFormRepresentation = menuItem
  1015. } else if identifier == KMToolbarToolHookItemIdentifier {
  1016. item?.image = NSImage(named: "KMImageNameFillSignHook")
  1017. item?.alternateImage = NSImage(named: "KMImageNameFillSignHook")
  1018. item?.target = self
  1019. item?.btnTag = CAnnotationType.signTure.rawValue
  1020. item?.toolTip = NSLocalizedString("Check", comment: "")
  1021. item?.titleName = NSLocalizedString("Signature", comment: "")
  1022. item?.boxImagePosition = KMToolBoxImagePosition.only
  1023. item?.btnAction = #selector(changeAnnotationMode)
  1024. let menuItem = NSMenuItem.init(title: "Signature", action: #selector(changeAnnotationMode), target: self)
  1025. menuItem?.tag = item!.btnTag
  1026. item?.menuFormRepresentation = menuItem
  1027. } else if identifier == KMToolbarToolForkItemIdentifier {
  1028. item?.image = NSImage(named: "KMImageNameFillSignFork")
  1029. item?.alternateImage = NSImage(named: "KMImageNameFillSignFork")
  1030. item?.target = self
  1031. item?.btnTag = CAnnotationType.signFalse.rawValue
  1032. item?.toolTip = NSLocalizedString("X", comment: "")
  1033. item?.titleName = NSLocalizedString("signFalse", comment: "")
  1034. item?.boxImagePosition = KMToolBoxImagePosition.only
  1035. item?.btnAction = #selector(changeAnnotationMode)
  1036. let menuItem = NSMenuItem.init(title: "signFalse", action: #selector(changeAnnotationMode), target: self)
  1037. menuItem?.tag = item!.btnTag
  1038. item?.menuFormRepresentation = menuItem
  1039. } else if identifier == KMToolbarToolLineItemIdentifier {
  1040. item?.image = NSImage(named: "KMImageNameFillSignLine")
  1041. item?.alternateImage = NSImage(named: "KMImageNameFillSignLine")
  1042. item?.target = self
  1043. item?.btnTag = CAnnotationType.signLine.rawValue
  1044. item?.toolTip = NSLocalizedString("Line", comment: "")
  1045. item?.titleName = NSLocalizedString("Line", comment: "")
  1046. item?.boxImagePosition = KMToolBoxImagePosition.only
  1047. item?.btnAction = #selector(changeAnnotationMode)
  1048. let menuItem = NSMenuItem.init(title: "Line", action: #selector(changeAnnotationMode), target: self)
  1049. menuItem?.tag = item!.btnTag
  1050. item?.menuFormRepresentation = menuItem
  1051. } else if identifier == KMToolbarToolDotItemIdentifier {
  1052. item?.image = NSImage(named: "KMImageNameFillSignDot")
  1053. item?.alternateImage = NSImage(named: "KMImageNameFillSignDot")
  1054. item?.target = self
  1055. item?.btnTag = CAnnotationType.signDot.rawValue
  1056. item?.toolTip = NSLocalizedString("Dot", comment: "")
  1057. item?.titleName = NSLocalizedString("Dot", comment: "")
  1058. item?.boxImagePosition = KMToolBoxImagePosition.only
  1059. item?.btnAction = #selector(changeAnnotationMode)
  1060. let menuItem = NSMenuItem.init(title: "Dot", action: #selector(changeAnnotationMode), target: self)
  1061. menuItem?.tag = item!.btnTag
  1062. item?.menuFormRepresentation = menuItem
  1063. } else if identifier == KMToolbarToolRectangleIdentifier {
  1064. item?.image = NSImage(named: "KMImageNameFillSignRectangle")
  1065. item?.alternateImage = NSImage(named: "KMImageNameFillSignRectangle")
  1066. item?.target = self
  1067. item?.btnTag = CAnnotationType.signCircle.rawValue
  1068. item?.toolTip = NSLocalizedString("Rectangle", comment: "")
  1069. item?.titleName = NSLocalizedString("Rectangle", comment: "")
  1070. item?.boxImagePosition = KMToolBoxImagePosition.only
  1071. item?.btnAction = #selector(changeAnnotationMode)
  1072. let menuItem = NSMenuItem.init(title: "Rectangle", action: #selector(changeAnnotationMode), target: self)
  1073. menuItem?.tag = item!.btnTag
  1074. item?.menuFormRepresentation = menuItem
  1075. } else if identifier == KMToolbarToolTextIdentifier {
  1076. item?.image = NSImage(named: "KMImageNameMainToolFreeText")
  1077. item?.alternateImage = NSImage(named: "KMImageNameMainToolFreeText")
  1078. item?.target = self
  1079. item?.btnTag = CAnnotationType.signText.rawValue
  1080. item?.toolTip = NSLocalizedString("Add a handwritten signature or create a signature via the trackpad", comment: "")
  1081. item?.titleName = NSLocalizedString("signText", comment: "")
  1082. item?.boxImagePosition = KMToolBoxImagePosition.only
  1083. item?.btnAction = #selector(changeAnnotationMode)
  1084. let menuItem = NSMenuItem.init(title: "signText", action: #selector(changeAnnotationMode), target: self)
  1085. menuItem?.tag = item!.btnTag
  1086. item?.menuFormRepresentation = menuItem
  1087. } else if identifier == KMToolbarToolDateIdentifier {
  1088. item?.image = NSImage(named: "KMImageNameFillSignDate")
  1089. item?.alternateImage = NSImage(named: "KMImageNameFillSignDate")
  1090. item?.target = self
  1091. item?.btnTag = CAnnotationType.signDate.rawValue
  1092. item?.toolTip = NSLocalizedString("Date", comment: "")
  1093. item?.titleName = NSLocalizedString("Date", comment: "")
  1094. item?.boxImagePosition = KMToolBoxImagePosition.only
  1095. item?.btnAction = #selector(changeAnnotationMode)
  1096. let menuItem = NSMenuItem.init(title: "Date", action: #selector(changeAnnotationMode), target: self)
  1097. menuItem?.tag = item!.btnTag
  1098. item?.menuFormRepresentation = menuItem
  1099. } else if (identifier == KMToolbarFillSignSignatureIdentifier) {
  1100. item?.image = NSImage(named: "KMImageNameMainToolSignSignature")
  1101. item?.alternateImage = NSImage(named: "KMImageNameMainToolSignSignature")
  1102. item?.target = self
  1103. item?.btnTag = CAnnotationType.signSignature.rawValue
  1104. item?.toolTip = NSLocalizedString("Add a handwritten signature or create a signature via the trackpad", comment: "")
  1105. item?.boxImagePosition = KMToolBoxImagePosition.only
  1106. item?.btnAction = #selector(changeAnnotationMode)
  1107. let menuItem = NSMenuItem.init(title: "SignSignature", action: #selector(changeAnnotationMode), target: self)
  1108. menuItem?.tag = CAnnotationType.signSignature.rawValue
  1109. item?.menuFormRepresentation = menuItem
  1110. } else if identifier == KMToolbarConversionWordItemIdentifier {
  1111. item?.image = NSImage(named: "KMImageNameMainToolConverterWord")
  1112. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterWord")
  1113. item?.target = self
  1114. item?.btnTag = KMToolbarType.word.rawValue
  1115. item?.toolTip = NSLocalizedString("Convert PDF to editable Word documents.", comment: "")
  1116. item?.titleName = NSLocalizedString("To Word", comment: "")
  1117. item?.boxImagePosition = KMToolBoxImagePosition.left
  1118. item?.btnAction = #selector(conversionMenuItemAction)
  1119. let menuItem = NSMenuItem.init(title: "To Word", action: #selector(conversionMenuItemAction), target: self)
  1120. menuItem?.tag = item!.btnTag
  1121. item?.menuFormRepresentation = menuItem
  1122. } else if identifier == KMToolbarConversionExcelItemIdentifier {
  1123. item?.image = NSImage(named: "KMImageNameMainToolConverterExcel")
  1124. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterExcel")
  1125. item?.target = self
  1126. item?.btnTag = KMToolbarType.excel.rawValue
  1127. item?.toolTip = NSLocalizedString("Extract data from PDF to Excel", comment: "")
  1128. item?.titleName = NSLocalizedString("To Excel", comment: "")
  1129. item?.boxImagePosition = KMToolBoxImagePosition.left
  1130. item?.btnAction = #selector(conversionMenuItemAction)
  1131. let menuItem = NSMenuItem.init(title: "To Excel", action: #selector(conversionMenuItemAction), target: self)
  1132. menuItem?.tag = item!.btnTag
  1133. item?.menuFormRepresentation = menuItem
  1134. } else if identifier == KMToolbarConversionPPTItemIdentifier {
  1135. item?.image = NSImage(named: "KMImageNameMainToolConverterPPT")
  1136. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterPPT")
  1137. item?.target = self
  1138. item?.btnTag = KMToolbarType.ppt.rawValue
  1139. item?.toolTip = NSLocalizedString("Convert PDF documents to PPT while retaining formatting", comment: "")
  1140. item?.titleName = NSLocalizedString("To PPT", comment: "")
  1141. item?.boxImagePosition = KMToolBoxImagePosition.left
  1142. item?.btnAction = #selector(conversionMenuItemAction)
  1143. let menuItem = NSMenuItem.init(title: "To PPT", action: #selector(conversionMenuItemAction), target: self)
  1144. menuItem?.tag = item!.btnTag
  1145. item?.menuFormRepresentation = menuItem
  1146. } else if identifier == KMToolbarConversionRTFItemIdentifier {
  1147. item?.image = NSImage(named: "KMImageNameMainToolConverterRTF")
  1148. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterRTF")
  1149. item?.target = self
  1150. item?.btnTag = KMToolbarType.rtf.rawValue
  1151. item?.toolTip = NSLocalizedString("Convert PDF to RTF that can be opened in almost any word processor", comment: "")
  1152. item?.titleName = NSLocalizedString("To RTF", comment: "")
  1153. item?.boxImagePosition = KMToolBoxImagePosition.left
  1154. item?.btnAction = #selector(conversionMenuItemAction)
  1155. let menuItem = NSMenuItem.init(title: "To RTF", action: #selector(conversionMenuItemAction), target: self)
  1156. menuItem?.tag = item!.btnTag
  1157. item?.menuFormRepresentation = menuItem
  1158. } else if identifier == KMToolbarConversionCSVItemIdentifier {
  1159. item?.image = NSImage(named: "KMImageNameMainToolConverterCSV")
  1160. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterCSV")
  1161. item?.target = self
  1162. item?.btnTag = KMToolbarType.csv.rawValue
  1163. item?.toolTip = NSLocalizedString("To CSV", comment: "")
  1164. item?.titleName = NSLocalizedString("To CSV", comment: "")
  1165. item?.boxImagePosition = KMToolBoxImagePosition.left
  1166. item?.btnAction = #selector(conversionMenuItemAction)
  1167. let menuItem = NSMenuItem.init(title: "To CSV", action: #selector(conversionMenuItemAction), target: self)
  1168. menuItem?.tag = item!.btnTag
  1169. item?.menuFormRepresentation = menuItem
  1170. } else if identifier == KMToolbarConversionHTMLItemIdentifier {
  1171. item?.image = NSImage(named: "KMImageNameMainToolConverterHTML")
  1172. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterHTML")
  1173. item?.target = self
  1174. item?.btnTag = KMToolbarType.html.rawValue
  1175. item?.toolTip = NSLocalizedString("To HTML", comment: "")
  1176. item?.titleName = NSLocalizedString("To HTML", comment: "")
  1177. item?.boxImagePosition = KMToolBoxImagePosition.left
  1178. item?.btnAction = #selector(conversionMenuItemAction)
  1179. let menuItem = NSMenuItem.init(title: "To HTML", action: #selector(conversionMenuItemAction), target: self)
  1180. menuItem?.tag = item!.btnTag
  1181. item?.menuFormRepresentation = menuItem
  1182. } else if identifier == KMToolbarConversionTextItemIdentifier {
  1183. item?.image = NSImage(named: "KMImageNameMainToolConverterText")
  1184. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterText")
  1185. item?.target = self
  1186. item?.btnTag = KMToolbarType.conversion_text.rawValue
  1187. item?.toolTip = NSLocalizedString("To Text", comment: "")
  1188. item?.titleName = NSLocalizedString("To Text", comment: "")
  1189. item?.boxImagePosition = KMToolBoxImagePosition.left
  1190. item?.btnAction = #selector(conversionMenuItemAction)
  1191. let menuItem = NSMenuItem.init(title: "To Text", action: #selector(conversionMenuItemAction), target: self)
  1192. menuItem?.tag = item!.btnTag
  1193. item?.menuFormRepresentation = menuItem
  1194. } else if identifier == KMToolbarConversionImageItemIdentifier {
  1195. item?.image = NSImage(named: "KMImageNameMainToolConverterImage")
  1196. item?.alternateImage = NSImage(named: "KMImageNameMainToolConverterImage")
  1197. item?.target = self
  1198. item?.btnTag = KMToolbarType.conversion_image.rawValue
  1199. item?.toolTip = NSLocalizedString("Convert each page in a PDF to JPEG, JPG, PNG, GIF and other formats", comment: "")
  1200. item?.titleName = NSLocalizedString("To Image", comment: "")
  1201. item?.boxImagePosition = KMToolBoxImagePosition.left
  1202. item?.btnAction = #selector(conversionMenuItemAction)
  1203. let menuItem = NSMenuItem.init(title: "To Image", action: #selector(conversionMenuItemAction), target: self)
  1204. menuItem?.tag = item!.btnTag
  1205. item?.menuFormRepresentation = menuItem
  1206. } else if identifier == KMToolbarToolMergeItemIdentifier {
  1207. item?.image = NSImage(named: "KMImageNameMainToolsMerge")
  1208. item?.alternateImage = NSImage(named: "KMImageNameMainToolsMerge")
  1209. item?.target = self
  1210. item?.btnTag = KMToolbarType.merge.rawValue
  1211. item?.toolTip = NSLocalizedString("Combine multiple files into a new PDF.", comment: "")
  1212. item?.titleName = NSLocalizedString("Merge", comment: "")
  1213. item?.boxImagePosition = KMToolBoxImagePosition.left
  1214. item?.btnAction = #selector(mergeMenuItemAction)
  1215. let menuItem = NSMenuItem.init(title: "Merge", action: #selector(mergeMenuItemAction), target: self)
  1216. menuItem?.tag = item!.btnTag
  1217. item?.menuFormRepresentation = menuItem
  1218. }
  1219. }
  1220. return item
  1221. }
  1222. func validateToolbarItem(_ item: NSToolbarItem) -> Bool {
  1223. return true
  1224. }
  1225. @objc func listViewAnnotationTypeChangeNotification(sender: Notification?) {
  1226. // if let notiName = sender?.name, notiName == NSNotification.Name.CPDFListViewAnnotationTypeChange, self.ignoreCurrentAnnotationTypeChange {
  1227. // }
  1228. if (self.ignoreCurrentAnnotationTypeChange) {
  1229. // 忽略后重置 这个属性是基于单次添加,所以使用后会重置
  1230. // self.ignoreCurrentAnnotationTypeChange = false
  1231. return
  1232. }
  1233. let annotationType : CAnnotationType = pdfView.annotationType
  1234. if annotationType == .square || annotationType == .circle || annotationType == .arrow || annotationType == .line{
  1235. UserDefaults.standard.set(pdfView.annotationType.rawValue, forKey: KMToolBarToolPDFShapeStyle)
  1236. UserDefaults.standard.synchronize()
  1237. }
  1238. for item in self.toolbar.items {
  1239. if self.toolbarType == .Annatiton || self.toolbarType == .Move || self.toolbarType == .Magnify ||
  1240. self.toolbarType == .Select || self.toolbarType == .SelectZoom {
  1241. item.isSelected = false
  1242. if item.itemIdentifier == KMDocumentAnnotationToolbarItemIdentifier {
  1243. item.isSelected = true
  1244. } else if item.itemIdentifier == KMToolbarHighlightAnnotationItemIdentifier {
  1245. if annotationType == .highlight {
  1246. item.isSelected = true
  1247. }
  1248. } else if item.itemIdentifier == KMToolbarUnderlineAnnotationItemIdentifier {
  1249. if annotationType == .underline {
  1250. item.isSelected = true
  1251. }
  1252. } else if item.itemIdentifier == KMToolbarStrikeOutAnnotationItemIdentifier {
  1253. if annotationType == .strikeOut {
  1254. item.isSelected = true
  1255. }
  1256. } else if item.itemIdentifier == KMToolbarInkAnnotationItemIdentifier {
  1257. if annotationType == .ink || annotationType == .eraser {
  1258. item.isSelected = true
  1259. }
  1260. } else if item.itemIdentifier == KMToolbarFreeTextAnnotationItemIdentifier {
  1261. if annotationType == .freeText {
  1262. item.isSelected = true
  1263. }
  1264. } else if item.itemIdentifier == KMToolbarAnchoredAnnotationItemIdentifier {
  1265. if annotationType == .anchored {
  1266. item.isSelected = true
  1267. }
  1268. } else if item.itemIdentifier == KMToolbarSquareAnnotationItemIdentifier {
  1269. if annotationType == .square || annotationType == .circle || annotationType == .arrow || annotationType == .line {
  1270. item.isSelected = true
  1271. }
  1272. } else if item.itemIdentifier == KMToolbarLinkAnnotationItemIdentifier {
  1273. if annotationType == .link {
  1274. item.isSelected = true
  1275. }
  1276. } else if item.itemIdentifier == KMAnnotationStampToolbarItemIdentifier {
  1277. if annotationType == .stamp {
  1278. item.isSelected = true
  1279. }
  1280. } else if item.itemIdentifier == KMToolbarSignSignatureAnnotationItemIdentifier {
  1281. if annotationType == .signSignature {
  1282. item.isSelected = true
  1283. }
  1284. } else if pdfView.toolMode == .moveToolMode {
  1285. if item.itemIdentifier == KMToolbarMoveToolModeItemIdentifier {
  1286. item.isSelected = true
  1287. }
  1288. } else if pdfView.toolMode == .magnifyToolMode {
  1289. if item.itemIdentifier == KMToolbarMagnifyToolModeItemIdentifier {
  1290. item.isSelected = true
  1291. }
  1292. } else if pdfView.toolMode == .selectToolMode {
  1293. if item.itemIdentifier == KMToolbarSelectToolModeItemIdentifier {
  1294. item.isSelected = true
  1295. }
  1296. } else if pdfView.toolMode == .selectZoomToolMode {
  1297. if item.itemIdentifier == KMToolbarZoomToSelectionItemIdentifier {
  1298. item.isSelected = true
  1299. }
  1300. }
  1301. if (item.itemIdentifier == KMToolbarShowToolbarItemIdentifier) {
  1302. item.isSelected = !self.isShowAllAnnotations
  1303. }
  1304. } else if self.toolbarType == .FillSign {
  1305. item.isSelected = false
  1306. if pdfView.toolMode == .selfSignMode {
  1307. if item.itemIdentifier == KMToolbarToolHookItemIdentifier {
  1308. if annotationType == .signTure {
  1309. item.isSelected = true
  1310. }
  1311. } else if item.itemIdentifier == KMToolbarToolForkItemIdentifier {
  1312. if annotationType == .signFalse {
  1313. item.isSelected = true
  1314. }
  1315. } else if item.itemIdentifier == KMToolbarToolLineItemIdentifier {
  1316. if annotationType == .signLine {
  1317. item.isSelected = true
  1318. }
  1319. } else if item.itemIdentifier == KMToolbarToolDotItemIdentifier {
  1320. if annotationType == .signDot {
  1321. item.isSelected = true
  1322. }
  1323. } else if item.itemIdentifier == KMToolbarToolRectangleIdentifier {
  1324. if annotationType == .signCircle {
  1325. item.isSelected = true
  1326. }
  1327. } else if item.itemIdentifier == KMToolbarToolDateIdentifier {
  1328. if annotationType == .signDate {
  1329. item.isSelected = true
  1330. }
  1331. } else if item.itemIdentifier == KMToolbarToolTextIdentifier {
  1332. if annotationType == .signText {
  1333. item.isSelected = true
  1334. }
  1335. } else if (item.itemIdentifier == KMToolbarFillSignSignatureIdentifier) {
  1336. if (annotationType == .signSignature) {
  1337. item.isSelected = true
  1338. }
  1339. }
  1340. }
  1341. }
  1342. }
  1343. }
  1344. }