KMToolbarViewController.swift 90 KB

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