KMToolbarViewController.swift 86 KB

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