123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374 |
- //
- // KMPDFToolbarController.swift
- // PDF Reader Pro
- //
- // Created by Niehaoyu on 2024/10/8.
- //
- import Cocoa
- import KMComponentLibrary
- @objc protocol KMPDFToolbarControllerDelegate: AnyObject {
-
- //ViewTools视图工具发生变化时调用
- @objc optional func kmPDFToolbarControllerDidViewToolsChanged(_ controller: KMPDFToolbarController)
-
- //一级工具栏状态发生变化时调用
- @objc optional func kmPDFToolbarControllerDidToolModeChanged(_ controller: KMPDFToolbarController)
-
- //非一级工具栏按钮点击调用
- @objc optional func kmPDFToolbarControllerDidToolbarItemClicked(_ controller: KMPDFToolbarController, _ itemIdentifier: String)
-
- //结束页面编辑
- @objc optional func kmPDFToolbarControllerDidExitPageEditMode(_ controller: KMPDFToolbarController)
-
- //ComponentSelect中文字编辑回调
- @objc optional func kmPDFToolbarControllerDidSelectTextDidBeginEditing(_ controller: KMPDFToolbarController, _ view: ComponentSelect)
- @objc optional func kmPDFToolbarControllerDidSelectTextDidChange(_ controller: KMPDFToolbarController, _ view: ComponentSelect)
- @objc optional func kmPDFToolbarControllerDidSelectTextDidEndEditing(_ controller: KMPDFToolbarController, _ view: ComponentSelect)
-
-
- }
- class KMPDFToolbarController: NSViewController {
-
- @IBOutlet var contendBox: NSBox!
-
- @IBOutlet var mainToolbarContendView: NSView!
-
- @IBOutlet var leftToolsView: NSView!
- @IBOutlet var leftViewButton: ComponentButton!
- @IBOutlet var pageButton: ComponentButton!
- @IBOutlet var toolsView: ComponentDropdownTool!
- @IBOutlet var dividerView: ComponentDivider!
- @IBOutlet var selectZoom: ComponentSelectZoom!
-
- @IBOutlet var tabsContendView: NSView!
- @IBOutlet var tabsScrollView: NSScrollView!
-
- @IBOutlet var tabsMoreButton: ComponentButton!
-
- @IBOutlet var rightToolsView: NSView!
-
- @IBOutlet var secondContendView: NSView!
-
- @IBOutlet var tabsLeftConst: NSLayoutConstraint!
- @IBOutlet var tabsRightConst: NSLayoutConstraint!
-
- @IBOutlet var rightViewWidthConst: NSLayoutConstraint!
-
- var scrollDocumentView: NSView = NSView.init()
-
- var tabsView: ComponentTabs!
-
- //MARK: -自定义工具栏
- private var customRightGroupView: ComponentGroup!
- private var customRightItems: [ComponentMenuitemProperty] = []
- private var undoRedo_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Undo / Redo"), identifier: "undoRedo_Menuitem_PropertyKey")
- private var save_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Save"), identifier: "save_Menuitem_PropertyKey")
-
- private var fileInfo_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("File Info"), identifier: "fileInfo_Menuitem_PropertyKey")
- private var batch_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Batch"), identifier: "batch_Menuitem_PropertyKey")
- private var tts_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("TTS"), identifier: "tts_Menuitem_PropertyKey")
- private var ppt_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Slide Show"), identifier: "ppt_Menuitem_PropertyKey")
- private var print_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Print"), identifier: "print_Menuitem_PropertyKey")
- private var share_Menuitem_Property = ComponentMenuitemProperty(type: .normal, multipleSelect: true, itemSelected: false, text: KMLocalizedString("Share"), identifier: "share_Menuitem_PropertyKey")
-
- //MARK: -更多Tabs
- private var moreTabsItems: [ComponentMenuitemProperty] = []
- private var markup_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Markup"), identifier: "markup_Menuitem_PropertyKey")
- private var edit_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Edit"), identifier: "markup_Menuitem_PropertyKey")
- private var form_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Form"), identifier: "markup_Menuitem_PropertyKey")
- private var fill_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Fill"), identifier: "markup_Menuitem_PropertyKey")
- private var convert_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Convert"), identifier: "markup_Menuitem_PropertyKey")
- private var protect_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Protect"), identifier: "markup_Menuitem_PropertyKey")
- private var tools_Menuitem_Property = ComponentMenuitemProperty(type: .normal, itemSelected: false, text: KMLocalizedString("Tools"), identifier: "markup_Menuitem_PropertyKey")
-
- var pdfView: CPDFListView?
- var viewManager: KMPDFViewManager?
- var toolbarManager: KMPDFToolbarManager?
-
- //MARK: -View
- var secondToolBar: KMPDFSecToolbarController = KMPDFSecToolbarController.init()
-
- var redactToolbar: KMRedactToolbarController = KMRedactToolbarController.init()
-
- weak open var delegate: KMPDFToolbarControllerDelegate?
-
- override func viewWillLayout() {
- super.viewWillLayout()
-
- refreshTabsScrollViewUI()
- }
-
- override func viewDidLayout() {
- super.viewDidLayout()
-
- refreshTabsScrollViewUI()
-
- refreshTabsScrollViewVisiableRect()
- }
-
- override func viewDidAppear() {
- super.viewDidAppear()
-
- refreshTabsScrollViewUI()
-
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- contendBox.fillColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle")
-
- leftToolsView.wantsLayer = true
- leftToolsView.layer?.backgroundColor = contendBox.fillColor.cgColor
-
- rightToolsView.wantsLayer = true
- rightToolsView.layer?.backgroundColor = contendBox.fillColor.cgColor
-
- tabsContendView.wantsLayer = true
- tabsContendView.layer?.backgroundColor = contendBox.fillColor.cgColor
-
- tabsMoreButton.superview?.wantsLayer = true
- tabsMoreButton.superview?.layer?.backgroundColor = contendBox.fillColor.cgColor
-
- tabsView = ComponentTabs.init()
- tabsView.frame = CGRectMake(0, 0, 446, 40)
-
- scrollDocumentView.wantsLayer = true
- tabsScrollView.documentView = scrollDocumentView
-
- setUpData()
-
- NotificationCenter.default.addObserver(self, selector: #selector(imageColorChangedNoti), name: toolbarImageColorChangedNotificationName, object: nil)
- }
-
- func setUpData() {
- setUpProperty()
-
- setUpRightViews()
-
- setupSecondToolbar()
-
- reloadData()
- }
-
- func setUpProperty() {
- guard let toolbarManager = self.toolbarManager else {
- return
- }
- leftViewButton.properties = toolbarManager.viewProperty
- leftViewButton.setTarget(self, action: #selector(buttonClicked(_:)))
-
- pageButton.properties = toolbarManager.pageProperty
- pageButton.setTarget(self, action: #selector(buttonClicked(_:)))
-
- dividerView.properties = ComponentDividerProperty(type: .vertical, dash: false)
-
- toolsView.properties = toolbarManager.toolsProperty
- toolsView.delegate = self
-
- selectZoom.properties = toolbarManager.selectZoomProperty
- selectZoom.delegate = self
-
- tabsView.updateItemProperty([toolbarManager.markupMode_Property,
- toolbarManager.editMode_Property,
- toolbarManager.formMode_Property,
- toolbarManager.fillMode_Property,
- toolbarManager.convertMode_Property,
- toolbarManager.protectMode_Property,
- toolbarManager.toolsMode_Property])
- tabsView.delegate = self
-
- scrollDocumentView.frame = CGRectMake(0, 0, tabsView.viewWidth, 28)
-
- tabsView.frame = scrollDocumentView.bounds
- tabsView.autoresizingMask = [.width, .height]
-
- scrollDocumentView.addSubview(tabsView)
-
- tabsMoreButton.properties = ComponentButtonProperty(type: .text_gray,
- size: .xs,
- onlyIcon: true,
- icon: NSImage(named: "toolbar_more"))
- tabsMoreButton.setTarget(self, action: #selector(tabsMoreButtonClicked(_:)))
-
- customRightItems = [undoRedo_Menuitem_Property,
- save_Menuitem_Property,
- fileInfo_Menuitem_Property,
- batch_Menuitem_Property,
- tts_Menuitem_Property,
- ppt_Menuitem_Property,
- print_Menuitem_Property,
- share_Menuitem_Property]
-
- moreTabsItems = [markup_Menuitem_Property,
- edit_Menuitem_Property,
- form_Menuitem_Property,
- fill_Menuitem_Property,
- convert_Menuitem_Property,
- protect_Menuitem_Property,
- tools_Menuitem_Property]
-
- }
-
- //MARK: - 刷新一级工具栏
- func reloadToolbarTabsView() {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- toolbarManager.markupMode_Property.state = viewManager.toolMode == .Markup ? .pressed : .normal
- toolbarManager.editMode_Property.state = viewManager.toolMode == .Edit ? .pressed : .normal
- toolbarManager.formMode_Property.state = viewManager.toolMode == .Form ? .pressed : .normal
- toolbarManager.fillMode_Property.state = viewManager.toolMode == .Fill ? .pressed : .normal
- toolbarManager.convertMode_Property.state = viewManager.toolMode == .Convert ? .pressed : .normal
- toolbarManager.protectMode_Property.state = viewManager.toolMode == .Protect ? .pressed : .normal
- toolbarManager.toolsMode_Property.state = viewManager.toolMode == .Tools ? .pressed : .normal
-
- tabsView.refreshItems()
-
- }
-
- func reloadLeftIconView() {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- toolbarManager.viewProperty.state = viewManager.showDisplayView ? .pressed : .normal
- toolbarManager.viewProperty.isDisabled = false
- if viewManager.isPageEditMode {
- toolbarManager.viewProperty.isDisabled = true
- }
- leftViewButton.reloadData()
-
- }
-
- func reloadPageEditView() {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- toolbarManager.pageProperty.state = viewManager.isPageEditMode ? .pressed : .normal
- pageButton.reloadData()
-
- }
-
- func reloadSelectZoomView() {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- toolbarManager.selectZoomProperty.isDisabled = false
- if viewManager.isPageEditMode {
- toolbarManager.selectZoomProperty.isDisabled = true
- }
- if let pdfview = self.pdfView {
- toolbarManager.selectZoomProperty.text = (NSString(format: "%.0f", pdfview.scaleFactor * 100) as String) + "%"
- }
-
- selectZoom.reloadData()
-
- }
-
- func refreshTabsScrollViewUI() {
- let pointX: CGFloat = (CGRectGetWidth(view.frame) - tabsView.viewWidth)/2
-
- var xValue: CGFloat = 0
-
- if pointX-12-264 > 10 {
- xValue = pointX - 12 - 264
- tabsLeftConst.constant = xValue
-
- tabsMoreButton.superview?.isHidden = true
- } else {
- xValue = 10
- let rightXValue = CGRectGetWidth(view.frame) - tabsView.viewWidth - 12 - 264 - rightViewWidthConst.constant - 12 - xValue
-
- if rightXValue < 10 {
- tabsMoreButton.superview?.isHidden = false
- tabsRightConst.constant = 44
- } else {
- tabsMoreButton.superview?.isHidden = true
- tabsRightConst.constant = rightXValue
- }
- }
- }
-
- func refreshTabsScrollViewVisiableRect() {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- if tabsView.viewWidth > CGRectGetWidth(tabsContendView.frame)-21 {
- if viewManager.toolMode != .None {
- var pointx: CGFloat = 0
- print(tabsScrollView.documentVisibleRect)
- let _manager = toolbarManager
-
- if viewManager.toolMode == .Markup {
- pointx = 0
- } else if viewManager.toolMode == .Edit {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth
- } else if viewManager.toolMode == .Form {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth
- } else if viewManager.toolMode == .Fill {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.formMode_Property.propertyInfo.viewWidth
- } else if viewManager.toolMode == .Convert {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.formMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth
- } else if viewManager.toolMode == .Protect {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.formMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.convertMode_Property.propertyInfo.viewWidth
- } else if viewManager.toolMode == .Tools {
- pointx = _manager.markupMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.formMode_Property.propertyInfo.viewWidth + _manager.editMode_Property.propertyInfo.viewWidth + _manager.convertMode_Property.propertyInfo.viewWidth + _manager.protectMode_Property.propertyInfo.viewWidth
- }
- if tabsScrollView.documentVisibleRect.origin.x > pointx {
- tabsScrollView.scroll(tabsScrollView.contentView, to: CGPoint(x: pointx, y: 0))
- }
- }
- }
- }
-
- //MARK: -右侧工具模块
- func setUpRightViews() {
- let subviews = rightToolsView.subviews
- for view in subviews {
- view.removeFromSuperview()
- }
-
- var itemXvalue: CGFloat = 4
- guard let _manager = self.toolbarManager, let _ = self.viewManager else {
- return
- }
-
- var propertys: [Any] = []
-
- var adddividerA: Bool = false
- var adddividerB: Bool = false
-
- for property in _manager.validRightPropertys {
- if property == _manager.undoProperty ||
- property == _manager.redoProperty ||
- property == _manager.saveProperty {
- adddividerA = true
-
- } else if property == _manager.fileInfo_Property ||
- property == _manager.batchProperty ||
- property == _manager.ttsProperty ||
- property == _manager.pptProperty ||
- property == _manager.printProperty ||
- property == _manager.shareProperty {
- adddividerB = true
- }
- }
-
- for property in _manager.validRightPropertys {
- if adddividerA == true {
- if property == _manager.fileInfo_Property ||
- property == _manager.batchProperty ||
- property == _manager.ttsProperty ||
- property == _manager.pptProperty ||
- property == _manager.printProperty ||
- property == _manager.shareProperty {
-
- propertys.append(ComponentDividerProperty(type: .vertical, dash: false))
- adddividerA = false
- }
- }
- propertys.append(property)
- }
- if adddividerB == true {
- if propertys.last is ComponentDividerProperty {
-
- } else {
- propertys.append(ComponentDividerProperty(type: .vertical, dash: false))
- }
- }
- propertys.append(_manager.rightViewProperty)
-
- for property in propertys {
- if property is ComponentButtonProperty {
- let buttonProperty = (property as! ComponentButtonProperty)
- let button = ComponentButton.init()
- button.properties = buttonProperty
- if buttonProperty.onlyIcon {
- button.frame = CGRectMake(itemXvalue, 0, 28, 28)
- } else {
- button.frame = CGRectMake(itemXvalue, 0, button.properties.propertyInfo.viewWidth, 28)
- }
- button.setTarget(self, action: #selector(buttonClicked(_:)))
- rightToolsView.addSubview(button)
-
- itemXvalue += CGRectGetWidth(button.frame)
- itemXvalue += 12
-
- } else if property is ComponentDividerProperty {
- let divider = ComponentDivider.init()
- divider.frame = CGRectMake(itemXvalue, CGRectGetHeight(rightToolsView.frame)/2-8, 1, 16)
- divider.properties = (property as! ComponentDividerProperty)
- rightToolsView.addSubview(divider)
-
- itemXvalue += 1
- itemXvalue += 12
-
- } else if property is ComponentDropdownToolProperty {
- let dropdownTool = ComponentDropdownTool.init()
- dropdownTool.properties = property as! ComponentDropdownToolProperty
- dropdownTool.frame = CGRectMake(itemXvalue, 0, 28, 28)
- dropdownTool.delegate = self
- rightToolsView.addSubview(dropdownTool)
-
- itemXvalue += CGRectGetWidth(dropdownTool.frame)
- itemXvalue += 12
-
- }
- }
- itemXvalue -= 12
-
- rightViewWidthConst.constant = itemXvalue
-
- }
-
- func reloadRightToolsView() {
- let subviews = rightToolsView.subviews
- for view in subviews {
- if view is ComponentButton {
- let button = view as! ComponentButton
- if button.properties.identifier == KMPDFToolbar_rightView_Identifier {
- if viewManager?.showRightSide == true {
- if button.properties.state != .pressed {
- button.properties.state = .pressed
- button.reloadData()
- }
- } else {
- if button.properties.state != .normal {
- button.properties.state = .normal
- button.reloadData()
- }
- }
- button.reloadData()
-
- }
- } else if view is ComponentDropdownTool {
-
- }
- }
-
- }
-
- //MARK: - 二级工具栏
- func setupSecondToolbar() {
- secondToolBar.view.frame = secondContendView.bounds
- secondToolBar.delegate = self
- secondToolBar.view.autoresizingMask = [.width, .height]
- secondToolBar.viewManager = viewManager
- secondContendView.addSubview(secondToolBar.view)
-
- }
-
- func resetSecondToolbar(forceRefresh refresh: Bool = false) {
- guard let _manager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- if viewManager.isPageEditMode {
- secondToolBar.reloadMainPropertys(_manager.getSubToolbarItems(isPageEditMode: true))
- secondToolBar.reloadRightPropertys([_manager.page_Reduce_Property, _manager.page_Increase_Property])
- } else {
- let propertys = _manager.getSubToolbarItems(viewManager.toolMode)
- if let firstProperty = propertys.first {
- if secondToolBar.propertys.contains(firstProperty) == false {
- secondToolBar.reloadMainPropertys(propertys)
- } else {
- //同一种类型
- if refresh {
- //特殊情况下同一级点击刷新所有item
- secondToolBar.reloadMainPropertys(propertys)
- }
- }
- } else {
- secondToolBar.reloadMainPropertys(propertys)
- }
- secondToolBar.reloadRightPropertys([])
- }
- }
-
- //只刷新Item状态
- func refreshSecondToolbarItemsState() {
-
- toolbarManager?.eyeProperty.state = pdfView?.hideNotes == true ? .pressed : .normal
-
- secondToolBar.reloadMainview()
-
- secondToolBar.reloadRightview()
- }
-
- //MARK: - 取消二级工具栏按钮选中状态
- func cancelSelectedSecondToolbarItems(_ toolMode: KMPDFToolsMode) {
- guard let _manager = self.toolbarManager, let _ = self.viewManager else {
- return
- }
-
- let propertys = _manager.getSubToolbarItems(toolMode)
- for property in propertys {
- if property is ComponentButtonProperty {
- (property as! ComponentButtonProperty).state = .normal
- } else if property is ComponentDropdownToolProperty {
- (property as! ComponentDropdownToolProperty).state = .normal
- } else if property is ComponentSelectProperties {
- (property as! ComponentSelectProperties).state = .normal
- }
- }
- }
-
- //MARK: - PDF界面选中注释发生变化时调用
- func pdfViewActiveAnnotationsChanged() {
- if self.viewManager?.toolMode == .Form {
- let annotations = self.pdfView?.activeAnnotations ?? []
-
- if annotations.count < 2 {
- toolbarManager?.form_alignment_left_Property.isDisabled = true
- toolbarManager?.form_alignment_Hori_Property.isDisabled = true
- toolbarManager?.form_alignment_Right_Property.isDisabled = true
- toolbarManager?.form_alignment_Top_Property.isDisabled = true
- toolbarManager?.form_alignment_Vert_Property.isDisabled = true
- toolbarManager?.form_alignment_Bottom_Property.isDisabled = true
- toolbarManager?.form_alignment_Distribute_Vert_Property.isDisabled = true
- toolbarManager?.form_alignment_Distribute_Hori_Property.isDisabled = true
- } else if annotations.count < 3 {
- toolbarManager?.form_alignment_left_Property.isDisabled = false
- toolbarManager?.form_alignment_Hori_Property.isDisabled = false
- toolbarManager?.form_alignment_Right_Property.isDisabled = false
- toolbarManager?.form_alignment_Top_Property.isDisabled = false
- toolbarManager?.form_alignment_Vert_Property.isDisabled = false
- toolbarManager?.form_alignment_Bottom_Property.isDisabled = false
- toolbarManager?.form_alignment_Distribute_Vert_Property.isDisabled = true
- toolbarManager?.form_alignment_Distribute_Hori_Property.isDisabled = true
- } else {
- toolbarManager?.form_alignment_left_Property.isDisabled = false
- toolbarManager?.form_alignment_Hori_Property.isDisabled = false
- toolbarManager?.form_alignment_Right_Property.isDisabled = false
- toolbarManager?.form_alignment_Top_Property.isDisabled = false
- toolbarManager?.form_alignment_Vert_Property.isDisabled = false
- toolbarManager?.form_alignment_Bottom_Property.isDisabled = false
- toolbarManager?.form_alignment_Distribute_Vert_Property.isDisabled = false
- toolbarManager?.form_alignment_Distribute_Hori_Property.isDisabled = false
- }
- }
- }
-
- //MARK: - Action点击
- public func clickWithIdentify(_ identify: String) {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
-
- if identify == KMPDFToolbar_PageEdit_Identifier {
- //MARK: -页面编辑
- pageButton.properties.state = viewManager.isPageEditMode ? .pressed : .normal
- pageButton.reloadData()
-
- viewManager.toolMode = .None
-
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, pageButton.properties.identifier)
-
- reloadData()
-
- } else if identify == KMPDFToolbar_Markup_Identifier {
- componentTabsDidSelected(tabsView, toolbarManager.markupMode_Property)
-
- } else if identify == KMPDFToolbar_edit_link_Identifier {
- viewManager.toolMode = .Edit
- viewManager.subToolMode = .Edit_Link
-
- toolbarManager.edit_text_Property.state = .normal
- toolbarManager.edit_image_Property.state = .normal
- toolbarManager.edit_link_Property.state = .pressed
-
- refreshSecondToolbarItemsState()
- kmPDFSecToolbarControllerDidItemClicked(secondToolBar, toolbarManager.edit_link_Property)
-
- } else if identify == KMPDFToolbar_edit_text_Identifier {
- viewManager.toolMode = .Edit
- viewManager.subToolMode = .Edit_text
-
- toolbarManager.edit_text_Property.state = .pressed
- toolbarManager.edit_image_Property.state = .normal
- toolbarManager.edit_link_Property.state = .normal
-
- refreshSecondToolbarItemsState()
- kmPDFSecToolbarControllerDidItemClicked(secondToolBar, toolbarManager.edit_text_Property)
-
- } else if identify == KMPDFToolbar_edit_image_Identifier {
- viewManager.toolMode = .Edit
- viewManager.subToolMode = .Edit_Image
-
- toolbarManager.edit_text_Property.state = .normal
- toolbarManager.edit_image_Property.state = .pressed
- toolbarManager.edit_link_Property.state = .normal
-
- refreshSecondToolbarItemsState()
-
- kmPDFSecToolbarControllerDidItemClicked(secondToolBar, toolbarManager.edit_image_Property)
- }
- }
-
- //MARK: - 查找
- func findViewWith(_ identify: String) -> NSView? {
- //左侧
-
- //中间
-
- //右侧
- if true {
- let views = rightToolsView.subviews
- for view in views {
- if view is ComponentButton {
- if (view as! ComponentButton).properties.identifier == identify {
- return view
- }
- } else if view is ComponentDropdownTool {
- if (view as! ComponentDropdownTool).properties.identifier == identify {
- return view
- }
- for item in (view as! ComponentDropdownTool).properties.menuItemArr ?? [] {
- if item.identifier == identify {
- return view
- }
- }
- }
- }
- }
-
- return nil
- }
-
- //MARK: - reloadData
- func reloadData() {
- reloadLeftIconView()
-
- reloadPageEditView()
-
- reloadToolsView()
-
- reloadSelectZoomView()
-
- reloadToolbarTabsView()
-
- reloadRightToolsView()
-
- resetSecondToolbar()
-
- refreshSecondToolbarItemsState()
-
- updateRightMenuItemSelectedState()
-
- reloadRedactToolbar()
- }
-
- //MARK: - 刷新tools工具
- func reloadToolsView() {
- toolbarManager?.reloadToolsData()
- toolbarManager?.tools_selectProperty.itemSelected = false
- toolbarManager?.tools_scrollProperty.itemSelected = false
- toolbarManager?.tools_contentProperty.itemSelected = false
- toolbarManager?.tools_magnifyProperty.itemSelected = false
- toolbarManager?.tools_areaProperty.itemSelected = false
- if viewManager?.viewToolsType == .Select {
- toolbarManager?.tools_selectProperty.itemSelected = true
- } else if viewManager?.viewToolsType == .Scroll {
- toolbarManager?.tools_scrollProperty.itemSelected = true
- } else if viewManager?.viewToolsType == .Content_Selection {
- toolbarManager?.tools_contentProperty.itemSelected = true
- } else if viewManager?.viewToolsType == .Magnify {
- toolbarManager?.tools_magnifyProperty.itemSelected = true
- } else if viewManager?.viewToolsType == .AreaZoom {
- toolbarManager?.tools_areaProperty.itemSelected = true
- }
-
- toolbarManager?.toolsProperty.isDisabled = false
- if viewManager?.isPageEditMode == true {
- toolbarManager?.toolsProperty.isDisabled = true
- }
- toolsView.reloadData()
-
- }
-
- //MARK: - Action
- @objc func buttonClicked(_ sender: ComponentButton) {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
- if sender.properties == toolbarManager.viewProperty {
- //MARK: -View
- viewManager.showDisplayView = !viewManager.showDisplayView
-
- sender.properties.state = viewManager.showDisplayView ? .pressed : .normal
- sender.reloadData()
-
- } else if sender.properties == toolbarManager.pageProperty {
- //MARK: -页面编辑
- viewManager.isPageEditMode = !viewManager.isPageEditMode
-
- sender.properties.state = viewManager.isPageEditMode ? .pressed : .normal
- sender.reloadData()
-
- if viewManager.toolMode != .None {
- cancelSelectedSecondToolbarItems(viewManager.toolMode)
-
- viewManager.toolMode = .None
- }
- } else if sender.properties == toolbarManager.rightViewProperty {
- //MARK: -属性栏
- viewManager.showRightSide = !viewManager.showRightSide
-
- }
-
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, sender.properties.identifier)
-
- reloadData()
- }
-
- @objc func tabsMoreButtonClicked(_ sender: ComponentButton) {
- guard let point = sender.superview?.convert(sender.frame.origin, to: view.window?.contentView) else { return }
-
- for item in moreTabsItems {
- item.state = .normal
- item.itemSelected = false
- }
- showGroupView(moreTabsItems, point)
-
- customRightGroupView.clickedAutoHide = true
- }
-
- //MARK: - 自定义工具栏
- func updateRightMenuItemSelectedState() {
-
- undoRedo_Menuitem_Property.itemSelected = false
- save_Menuitem_Property.itemSelected = false
- fileInfo_Menuitem_Property.itemSelected = false
- batch_Menuitem_Property.itemSelected = false
- tts_Menuitem_Property.itemSelected = false
- ppt_Menuitem_Property.itemSelected = false
- print_Menuitem_Property.itemSelected = false
- share_Menuitem_Property.itemSelected = false
-
- guard let toolbarManager = self.toolbarManager, let _ = self.viewManager else {
- return
- }
- for property in toolbarManager.validRightPropertys {
- if property == toolbarManager.undoProperty ||
- property == toolbarManager.redoProperty {
- undoRedo_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.saveProperty {
- save_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.fileInfo_Property {
- fileInfo_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.batchProperty {
- batch_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.ttsProperty {
- tts_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.pptProperty {
- ppt_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.printProperty {
- print_Menuitem_Property.itemSelected = true
- } else if property == toolbarManager.shareProperty {
- share_Menuitem_Property.itemSelected = true
- }
- }
-
- }
-
- func showPageTurnMenuWithPoint(_ point: CGPoint) {
- if (customRightGroupView?.superview) != nil {
- return
- }
-
- updateRightMenuItemSelectedState()
-
- let items: [ComponentMenuitemProperty] = [ComponentMenuitemProperty.header(KMLocalizedString("Show Right Tools")), undoRedo_Menuitem_Property, save_Menuitem_Property, ComponentMenuitemProperty.divider(),
- fileInfo_Menuitem_Property, batch_Menuitem_Property, tts_Menuitem_Property, ppt_Menuitem_Property, print_Menuitem_Property, share_Menuitem_Property]
-
- showGroupView(items, point)
- customRightGroupView.clickedAutoHide = false
-
- refreshRightMenuState()
- }
-
- func showGroupView(_ items: [ComponentMenuitemProperty], _ point: NSPoint) {
-
- var viewHeight: CGFloat = 8.0
- for item in items {
- item.state = .normal
- if item.type == .normal {
- viewHeight += 36
- } else if item.type == .divider {
- viewHeight += 8
- } else if item.type == .header {
- viewHeight += 36
- }
- }
-
- if customRightGroupView == nil {
- customRightGroupView = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
- }
- customRightGroupView.clickedAutoHide = false
- customRightGroupView?.frame = CGRectMake(0, 0, 160, viewHeight)
- customRightGroupView?.reloadData()
- customRightGroupView.groupDelegate = self
- customRightGroupView.showWithPoint(CGPoint(x: point.x, y: point.y-viewHeight), relativeTo: nil)
- customRightGroupView?.updateGroupInfo(items)
-
- }
-
- func hideGroupView() {
- customRightGroupView?.removeGroupView()
-
- }
-
- func refreshRightMenuState() {
-
- let totalItems = customRightItems
-
- var selectedCount = 0
- for item in totalItems {
- if item.itemSelected == true {
- selectedCount += 1
- }
- }
-
- var maxCount = 6
- if undoRedo_Menuitem_Property.itemSelected == true {
- maxCount = 5
- }
- if selectedCount == maxCount {
- for item in totalItems {
- if item.itemSelected == false {
- item.isDisabled = true
- }
- }
- } else {
- for item in totalItems {
- item.isDisabled = false
- }
- }
-
- if selectedCount == 5 && undoRedo_Menuitem_Property.itemSelected == false {
- //特殊情况,UndoRedo占两个空位
- undoRedo_Menuitem_Property.isDisabled = true
- }
-
- for item in totalItems {
- NotificationCenter.default.post(name: Notification.Name(rawValue: ComponentMenuItemUpdatedKey), object: item.identifier)
- }
-
- }
-
- //MARK: - Redact
- func reloadRedactToolbar() {
- if viewManager?.subToolMode == .Redact {
- redactToolbar.view.frame = contendBox.bounds
- redactToolbar.view.autoresizingMask = [.width, .height]
- contendBox.addSubview(redactToolbar.view)
- redactToolbar.delegate = self
- redactToolbar.reloadData()
- } else {
- redactToolbar.view.removeFromSuperview()
- }
- }
-
- //MARK: - Noti
- @objc func imageColorChangedNoti() {
- toolbarManager?.refreshMarkupColorImages()
-
- secondToolBar.reloadMainview()
- }
-
- //MARK: - MouseEvent
- override func rightMouseUp(with event: NSEvent) {
- super.rightMouseUp(with: event)
-
- var clickEnabled = true
- let windowPoint = event.locationInWindow
-
- if tabsMoreButton.superview?.isHidden == false {
- if CGRectContainsPoint(tabsMoreButton.frame, mainToolbarContendView.convert(windowPoint, from: nil)) {
- clickEnabled = false
- }
- }
-
- if clickEnabled {
- showPageTurnMenuWithPoint(windowPoint)
- }
-
- }
-
- }
- //MARK: - ComponentDropdownToolDelegate:工具模式
- extension KMPDFToolbarController: ComponentDropdownToolDelegate {
- func componentDropdownToolDidClicked(_ view: ComponentDropdownTool, menuItem: ComponentMenuitemProperty?) {
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
-
- for item in toolbarManager.toolsProperty.menuItemArr ?? [] {
- item.itemSelected = false
- item.state = .normal
- }
-
- menuItem?.itemSelected = true
-
- var itemIdentifier = menuItem?.identifier ?? ""
-
- if toolbarManager.getSubToolItemIdentifys(KMPDFToolbar_View_Identifier).contains(itemIdentifier) {
- //MARK: 工具模式
- if menuItem == toolbarManager.tools_selectProperty {
- viewManager.viewToolsType = .Select
- } else if menuItem == toolbarManager.tools_scrollProperty {
- viewManager.viewToolsType = .Scroll
- } else if menuItem == toolbarManager.tools_contentProperty {
- viewManager.viewToolsType = .Content_Selection
- } else if menuItem == toolbarManager.tools_magnifyProperty {
- viewManager.viewToolsType = .Magnify
- } else if menuItem == toolbarManager.tools_areaProperty {
- viewManager.viewToolsType = .AreaZoom
- }
- if viewManager.viewToolsType != .Select {
- if viewManager.toolMode != .None {
- cancelSelectedSecondToolbarItems(viewManager.toolMode)
-
- viewManager.toolMode = .None
- viewManager.subToolMode = .None
-
- delegate?.kmPDFToolbarControllerDidToolModeChanged?(self)
- }
-
- reloadToolbarTabsView()
- }
- reloadToolsView()
-
- delegate?.kmPDFToolbarControllerDidViewToolsChanged?(self)
- } else if menuItem == toolbarManager.share_PDF_Property ||
- menuItem == toolbarManager.share_Flatted_Property ||
- menuItem == toolbarManager.share_Original_Property {
- //MARK: -分享
- if let id = menuItem?.identifier {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, id)
- }
-
- } else {
-
- }
-
- }
- }
- //MARK: - ComponentSelectZoomDelegate:缩放比例
- extension KMPDFToolbarController: ComponentSelectZoomDelegate {
- func componentSelectZoomDidReduce(view: ComponentSelectZoom) {
- let zoomSting = view.properties.text
- var scale = CGFloat((NSString(string: zoomSting)).floatValue / 100.0)
- switch scale {
- case 0...0.25:
- scale = 0
- case 0.25...3:
- scale -= 0.25
- case 3.1...10:
- scale -= 0.4
- case 10.1...100:
- scale -= 1
- default:
- scale -= 1
- }
- pdfView?.scaleFactor = scale
-
- }
-
- func componentSelectZoomDidSelect(view: ComponentSelectZoom?, menuItemProperty: ComponentMenuitemProperty?) {
- if menuItemProperty?.identifier == KMPDFToolbar_Zoom_AdapWidth_Identifier {
- pdfView?.autoScales = true
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_AdapPage_Identifier {
- let pageHeight = pdfView?.currentPage()!.size.height
- let pdfviewHeight = pdfView?.bounds.size.height
- pdfView?.scaleFactor = pdfviewHeight!/pageHeight!
- pdfView?.autoScales = false
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_ActualSize_Identifier {
- if pdfView?.scaleFactor != 1.0 {
- pdfView?.scaleFactor = 1.0
- pdfView?.autoScales = false
- }
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_10_Identifier {
- pdfView?.scaleFactor = 0.1
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_25_Identifier {
- pdfView?.scaleFactor = 0.25
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_50_Identifier {
- pdfView?.scaleFactor = 0.5
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_75_Identifier {
- pdfView?.scaleFactor = 0.75
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_100_Identifier {
- pdfView?.scaleFactor = 1.0
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_150_Identifier {
- pdfView?.scaleFactor = 1.5
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_200_Identifier {
- pdfView?.scaleFactor = 2.0
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_400_Identifier {
- pdfView?.scaleFactor = 4.0
-
- } else if menuItemProperty?.identifier == KMPDFToolbar_Zoom_800_Identifier {
- pdfView?.scaleFactor = 8.0
-
- }
- }
-
- func componentSelectZoomDidAdd(view: ComponentSelectZoom) {
- let zoomSting = view.properties.text
- var scale = CGFloat((NSString(string: zoomSting)).floatValue / 100.0)
- switch scale {
- case 0...0.25:
- scale += 0.25
- case 0.25...3:
- scale += 0.25
- case 3.1...10:
- scale += 0.4
- case 10.1...100:
- scale += 1
- default:
- scale += 1
- }
- pdfView?.scaleFactor = scale
- }
-
- }
- //MARK: - ComponentTabsDelegate:一级工具栏
- extension KMPDFToolbarController: ComponentTabsDelegate {
- func componentTabsDidSelected(_ view: ComponentTabs, _ property: ComponentTabsProperty) {
- guard let toolbarManager = self.toolbarManager, let _manager = self.viewManager else {
- return
- }
-
- if _manager.viewToolsType != .Select {
- _manager.viewToolsType = .Select
-
- delegate?.kmPDFToolbarControllerDidViewToolsChanged?(self)
- }
-
- if _manager.isPageEditMode == true {
- delegate?.kmPDFToolbarControllerDidExitPageEditMode?(self)
-
- _manager.isPageEditMode = false
- }
-
- cancelSelectedSecondToolbarItems(_manager.toolMode)
- if property == toolbarManager.markupMode_Property {
- if _manager.toolMode == .Markup {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Markup
- }
- _manager.subToolMode = .None
- } else if property == toolbarManager.editMode_Property {
- if _manager.toolMode == .Edit {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Edit
- }
- _manager.subToolMode = .None
- } else if property == toolbarManager.formMode_Property {
- if _manager.toolMode == .Form {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Form
- }
- _manager.subToolMode = .None
-
- pdfViewActiveAnnotationsChanged()
-
- } else if property == toolbarManager.fillMode_Property {
- if _manager.toolMode == .Fill {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Fill
- }
- _manager.subToolMode = .None
- } else if property == toolbarManager.convertMode_Property {
- if _manager.toolMode == .Convert {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Convert
- }
- _manager.subToolMode = .None
- } else if property == toolbarManager.protectMode_Property {
- if _manager.toolMode == .Protect {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Protect
- }
- _manager.subToolMode = .None
- } else if property == toolbarManager.toolsMode_Property {
- if _manager.toolMode == .Tools {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Tools
- }
- _manager.subToolMode = .None
- }
-
- refreshTabsScrollViewVisiableRect()
-
- delegate?.kmPDFToolbarControllerDidToolModeChanged?(self)
-
- reloadData()
- }
- }
- //MARK: - KMPDFSecToolbarControllerDelegate:二级工具栏
- extension KMPDFToolbarController: KMPDFSecToolbarControllerDelegate {
- func kmPDFSecToolbarControllerDidItemClicked(_ controller: KMPDFSecToolbarController, _ property: Any) {
- if let value = property as? ComponentButtonProperty {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, value.identifier)
- reloadData()
- } else if let value = property as? ComponentMenuitemProperty {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, value.identifier)
- reloadData()
- } else if let value = property as? ComponentDropdownToolProperty {
- if value.identifier == KMPDFToolbar_edit_Watermark_Identifier ||
- value.identifier == KMPDFToolbar_edit_BG_Identifier ||
- value.identifier == KMPDFToolbar_edit_HF_Identifier ||
- value.identifier == KMPDFToolbar_edit_Bates_Identifier {
- if viewManager?.subToolMode != .None {
- viewManager?.subToolMode = .None
-
- controller.refreshToolbarModeInfo()
- }
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, value.identifier)
- }
- }
- }
-
- func kmPDFSecToolbarControllerDidSelectTextDidBeginEditing(_ controller: KMPDFSecToolbarController, _ view: ComponentSelect) {
- delegate?.kmPDFToolbarControllerDidSelectTextDidBeginEditing?(self, view)
- }
-
- func kmPDFSecToolbarControllerDidSelectTextDidChange(_ controller: KMPDFSecToolbarController, _ view: ComponentSelect) {
- delegate?.kmPDFToolbarControllerDidSelectTextDidChange?(self, view)
- }
-
- func kmPDFSecToolbarControllerDidSelectTextDidEndEditing(_ controller: KMPDFSecToolbarController, _ view: ComponentSelect) {
- delegate?.kmPDFToolbarControllerDidSelectTextDidEndEditing?(self, view)
- }
- }
- //MARK: - ComponentGroupDelegate:右侧工具栏
- extension KMPDFToolbarController: ComponentGroupDelegate {
- func componentGroupDidDismiss(group: ComponentGroup?) {
- tabsMoreButton.properties.state = .normal
- tabsMoreButton.reloadData()
-
- }
-
- func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
-
- guard let property = menuItemProperty else {
- return
- }
-
- guard let toolbarManager = self.toolbarManager, let viewManager = self.viewManager else {
- return
- }
-
- if customRightItems.contains(property) {
- var validItems:[NSObject] = []
-
- if undoRedo_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.undoProperty)
- validItems.append(toolbarManager.redoProperty)
- }
- if save_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.saveProperty)
- }
- if fileInfo_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.fileInfo_Property)
- }
- if batch_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.batchProperty)
- }
- if tts_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.ttsProperty)
- }
- if ppt_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.pptProperty)
- }
- if print_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.printProperty)
- }
- if share_Menuitem_Property.itemSelected {
- validItems.append(toolbarManager.shareProperty)
- }
-
- let sortArray = toolbarManager.totalRightPropertys
-
- let sortedArray = validItems.sorted {
- guard let indexA = sortArray.firstIndex(of: $0 as NSObject),
- let indexB = sortArray.firstIndex(of: $1 as NSObject) else {
- return false
- }
- return indexA < indexB
- }
-
- toolbarManager.validRightPropertys = sortedArray
-
- setUpRightViews()
-
- refreshRightMenuState()
-
- } else if moreTabsItems.contains(property) {
- viewManager.viewToolsType = .Select
-
- if viewManager.isPageEditMode == true {
- delegate?.kmPDFToolbarControllerDidExitPageEditMode?(self)
- viewManager.isPageEditMode = false
- }
-
- if property == markup_Menuitem_Property {
- viewManager.toolMode = .Markup
- } else if property == edit_Menuitem_Property {
- viewManager.toolMode = .Edit
- } else if property == form_Menuitem_Property {
- viewManager.toolMode = .Form
- } else if property == fill_Menuitem_Property {
- viewManager.toolMode = .Fill
- } else if property == toolbarManager.convertMode_Property {
- viewManager.toolMode = .Convert
- } else if property == protect_Menuitem_Property {
- viewManager.toolMode = .Protect
- } else if property == tools_Menuitem_Property {
- viewManager.toolMode = .Tools
- }
- tabsView.refreshItems()
-
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, property.identifier)
-
- reloadData()
-
- }
-
-
- }
- }
- //MARK: - KMRedactToolbarControllerDelegate标记密文
- extension KMPDFToolbarController: KMRedactToolbarControllerDelegate {
- func redactToolbarControllerDidButtonClick(controller: KMRedactToolbarController, buttonIndex: Int) {
- if buttonIndex == 1 {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, KMPDFToolbar_protect_redact_Property_Identifier)
-
- } else if buttonIndex == 2 {
- self.applyRedactAlert()
-
- // viewManager?.subToolMode = .None
- // cancelSelectedSecondToolbarItems(.Protect)
- // delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, KMPDFToolbar_protect_redact_Apply_Identifier)
-
- } else if buttonIndex == 3 {
- self.exitRedactAlert()
- // viewManager?.subToolMode = .None
- // cancelSelectedSecondToolbarItems(.Protect)
- // delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, KMPDFToolbar_protect_redact_Exit_Identifier)
-
- }
-
- reloadData()
-
-
- }
-
- func exitRedactAlert() {
- if UserDefaults.standard.object(forKey: "kExitRedactAlert") != nil {
- return
- }
- let alert = NSAlert()
- alert.alertStyle = .informational
- // alert.informativeText = KMLocalizedString("Redaction allows you to permanently mask and remove sensitive content.")
- alert.messageText = KMLocalizedString("""
- There are unapplied redactions in this file. Any content associated with them will not be redacted until applied.
- """)
- alert.addButton(withTitle: KMLocalizedString("Exit"))
- alert.addButton(withTitle: KMLocalizedString("Cancel"))
- alert.showsSuppressionButton = true
- let response = alert.runModal()
- if response.rawValue == 1000 {
- if alert.suppressionButton?.state == .on {
- UserDefaults.standard.set("YES", forKey: "kExitRedactAlert")
- UserDefaults.standard.synchronize()
- }
-
- //退出
- viewManager?.subToolMode = .None
- cancelSelectedSecondToolbarItems(.Protect)
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, KMPDFToolbar_protect_redact_Exit_Identifier)
- } else if response.rawValue == 1001 {
- //取消
-
- }
- }
-
- func applyRedactAlert() {
- if UserDefaults.standard.object(forKey: "kApplyRedactAlert") != nil {
- return
- }
- let alert = NSAlert()
- alert.alertStyle = .informational
- alert.messageText = KMLocalizedString("This action will permanently remove the redacted information from this document.")
- alert.informativeText = KMLocalizedString("""
- After you save this document, you will not be able to retrieve the redacted information.
- """)
- alert.addButton(withTitle: KMLocalizedString("Apply"))
- alert.addButton(withTitle: KMLocalizedString("Cancel"))
- alert.showsSuppressionButton = true
- let response = alert.runModal()
- if response.rawValue == 1000 {
- if alert.suppressionButton?.state == .on {
- UserDefaults.standard.set("YES", forKey: "kApplyRedactAlert")
- UserDefaults.standard.synchronize()
- }
-
- //应用
- viewManager?.subToolMode = .None
- cancelSelectedSecondToolbarItems(.Protect)
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, KMPDFToolbar_protect_redact_Apply_Identifier)
- } else if response.rawValue == 1001 {
- //取消
-
- }
- }
- }
|