KMToolbarViewController.swift 94 KB

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