KMToolbarViewController.swift 84 KB

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