KMToolbarViewController.swift 84 KB

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