//
//  KMSystemViewMenu.swift
//  EaseUS PDF Editor
//
//  Created by tangchao on 2023/12/26.
//

import Foundation

protocol KMSystemViewMenuProtocol {
    // scale
    func menuItemAction_adjustWidth(_ sender: Any)
    func menuItemAction_adjustPage(_ sender: Any)
    func menuItemAction_size(_ sender: Any)
    func menuItemAction_zoomOut(_ sender: Any)
    func menuItemAction_zoomIn(_ sender: Any)
    
    // page show
    func menuItemAction_singlePage(_ sender: Any)
    func menuItemAction_singlePageContinue(_ sender: Any)
    func menuItemAction_doublePage(_ sender: Any)
    func menuItemAction_doublePageContinue(_ sender: Any)
    func menuItemAction_bookMode(_ sender: Any)
    func menuItemAction_readMode(_ sender: Any)
    func menuItemAction_showSplitPage(_ sender: Any)

    func menuItemAction_autoScrol(_ sender: Any)
    func menuItemAction_autoScrolSetting(_ sender: Any)
    
    // rotate
    func menuItemAction_rotateLeft(_ sender: Any)
    func menuItemAction_rotateRight(_ sender: Any)
    func menuItemAction_rotateAllPageLeft(_ sender: Any)
    func menuItemAction_rotateAllPageRight(_ sender: Any)
    
    // split screen
    func menuItemAction_splitScreenVerti(_ sender: Any)
    func menuItemAction_splitScreenHorti(_ sender: Any)
    func menuItemAction_splitScreenNo(_ sender: Any)
    
    func menuItemAction_view_readMode(_ sender: Any)

    func menuItemAction_enterFullScreen(_ sender: Any)

    func menuItemAction_hiddenLeftSide(_ sender: Any)
    func menuItemAction_hiddenRightSide(_ sender: Any)
    func menuItemAction_thumai(_ sender: Any)
    func menuItemAction_outline(_ sender: Any)
    func menuItemAction_bookmark(_ sender: Any)
    func menuItemAction_annotation(_ sender: Any)
    func menuItemAction_search(_ sender: Any)

    func menuItemAction_topic(_ sender: Any)
    func menuItemAction_hiddenPageIndicator(_ sender: Any)
    
    func togglePresentation(_ sender: Any?)
    func chooseTransition(_ sender: Any?)
    
    func toggleAutoFlow(_ sender: Any?)
    func chooseAutoFlowSetting(_ sender: Any?)
    
    func toggleReadingBar(_ sender: Any?)
    
    func toggleLeftSidePane(_ sender: Any?)
    func changeLeftSidePaneState(_ sender: Any?)
    
    func splitViewAction(_ sender: Any?)
    func themesColor(_ sender: Any?)
    
    func toggleStatusBar(_ sender: Any?)
    func toggleToolbarShow(_ sender: Any?)
}
extension KMSystemViewMenuProtocol {
    func menuItemAction_autoScrol(_ sender: Any) {}
    func menuItemAction_autoScrolSetting(_ sender: Any) {}
    
    func menuItemAction_splitScreenVerti(_ sender: Any) {}
    func menuItemAction_splitScreenHorti(_ sender: Any) {}
    func menuItemAction_splitScreenNo(_ sender: Any) {}
    
    func menuItemAction_enterFullScreen(_ sender: Any) {}
    func menuItemAction_topic(_ sender: Any) {}
}

extension KMSystemMenu.View {
    // scale
    public static let adjustWidthSelector           = NSSelectorFromString("menuItemAction_adjustWidth:")
    public static let adjustPageSelector            = NSSelectorFromString("menuItemAction_adjustPage:")
    public static let sizeSelector                  = NSSelectorFromString("menuItemAction_size:")
    public static let zoomOutSelector               = NSSelectorFromString("menuItemAction_zoomOut:")
    public static let zoomInSelector                = NSSelectorFromString("menuItemAction_zoomIn:")
    // page show
    public static let singlePageSelector            = NSSelectorFromString("menuItemAction_singlePage:")
    public static let singlePageContinueSelector    = NSSelectorFromString("menuItemAction_singlePageContinue:")
    public static let doublePageSelector            = NSSelectorFromString("menuItemAction_doublePage:")
    public static let doublePageContinueSelector    = NSSelectorFromString("menuItemAction_doublePageContinue:")
    public static let bookModeSelector              = NSSelectorFromString("menuItemAction_bookMode:")
    public static let readModeSelector              = NSSelectorFromString("menuItemAction_readMode:")
    public static let showSplitPageSelector         = NSSelectorFromString("menuItemAction_showSplitPage:")
    public static let autoScrolSelector             = NSSelectorFromString("menuItemAction_autoScrol:")
    public static let autoScrolSettingSelector      = NSSelectorFromString("menuItemAction_autoScrolSetting:")
    // rotate
    public static let rotateLeftSelector            = NSSelectorFromString("menuItemAction_rotateLeft:")
    public static let rotateRightSelector           = NSSelectorFromString("menuItemAction_rotateRight:")
    public static let rotateAllPageLeftSelector     = NSSelectorFromString("menuItemAction_rotateAllPageLeft:")
    public static let rotateAllPageRightSelector    = NSSelectorFromString("menuItemAction_rotateAllPageRight:")
    // split screen
    public static let splitScreenVertiSelector      = NSSelectorFromString("menuItemAction_splitScreenVerti:")
    public static let splitScreenHortiSelector      = NSSelectorFromString("menuItemAction_splitScreenHorti:")
    public static let splitScreenNoSelector         = NSSelectorFromString("menuItemAction_splitScreenNo:")

    public static let viewReadModeSelector          = NSSelectorFromString("menuItemAction_view_readMode:")
    public static let enterFullScreenSelector       = NSSelectorFromString("menuItemAction_enterFullScreen:")
    
    public static let hiddenLeftSideSelector        = NSSelectorFromString("menuItemAction_hiddenLeftSide:")
    public static let hiddenRightSideSelector       = NSSelectorFromString("menuItemAction_hiddenRightSide:")
    public static let thumaiSelector                = NSSelectorFromString("menuItemAction_thumai:")
    public static let outlineSelector               = NSSelectorFromString("menuItemAction_outline:")
    public static let bookmarkSelector              = NSSelectorFromString("menuItemAction_bookmark:")
    public static let annotationSelector            = NSSelectorFromString("menuItemAction_annotation:")
    public static let searchSelector                = NSSelectorFromString("menuItemAction_search:")
    
    public static let topicSelector                 = NSSelectorFromString("menuItemAction_topic:")
    public static let hiddenPageIndicatorSelector   = NSSelectorFromString("menuItemAction_hiddenPageIndicator:")
    
    
    public static let togglePresentationSelector   = NSSelectorFromString("togglePresentation:")
    public static let chooseTransitionSelector   = NSSelectorFromString("chooseTransition:")
    
    public static let toggleAutoFlowSelector   = NSSelectorFromString("toggleAutoFlow:")
    public static let chooseAutoFlowSettingSelector   = NSSelectorFromString("chooseAutoFlowSetting:")
    
    public static let toggleReadingBarSelector   = NSSelectorFromString("toggleReadingBar:")
    
    public static let toggleLeftSidePaneSelector   = NSSelectorFromString("toggleLeftSidePane:")
    
    public static let changeLeftSidePaneStateSelector   = NSSelectorFromString("changeLeftSidePaneState:")
    
    public static let splitViewActionSelector   = NSSelectorFromString("splitViewAction:")
    public static let themesColorSelector   = NSSelectorFromString("themesColor:")
    
    public static let toggleStatusBarSelector   = NSSelectorFromString("toggleStatusBar:")
    public static let toggleToolbarShowSelector   = NSSelectorFromString("toggleToolbarShow:")
    
    public static func actions() -> [Selector] {
        return [self.adjustWidthSelector, self.adjustPageSelector, self.sizeSelector, self.zoomOutSelector, self.zoomInSelector,
                // page show
                self.singlePageSelector, self.singlePageContinueSelector, self.doublePageSelector, self.doublePageContinueSelector,
                self.bookModeSelector, self.readModeSelector, self.showSplitPageSelector, self.autoScrolSelector,
                self.autoScrolSettingSelector,
                // rotate
                self.rotateLeftSelector, self.rotateRightSelector, self.rotateAllPageLeftSelector, self.rotateAllPageRightSelector,
                // split screen
                self.splitScreenVertiSelector, self.splitScreenHortiSelector, self.splitScreenNoSelector,
                self.viewReadModeSelector, self.enterFullScreenSelector,
                self.hiddenLeftSideSelector, self.hiddenRightSideSelector,
                self.thumaiSelector, self.outlineSelector, self.bookmarkSelector, self.annotationSelector,
                self.searchSelector, self.topicSelector, self.hiddenPageIndicatorSelector,
                self.togglePresentationSelector, self.chooseTransitionSelector,
                self.toggleAutoFlowSelector, self.chooseAutoFlowSettingSelector,
                self.toggleReadingBarSelector,
                self.toggleLeftSidePaneSelector,
                self.changeLeftSidePaneStateSelector,
                self.splitViewActionSelector,
                self.themesColorSelector,
                self.toggleStatusBarSelector, self.toggleToolbarShowSelector]
    }
}