123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- //
- // KMWatermarkAdjectiveOutsideView.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2022/12/16.
- //
- import Cocoa
- class KMWatermarkAdjectiveOutsideView: KMWatermarkAdjectiveBaseView {
- var titleLabel: NSTextField!
- var rotateButton: NSButton!
- var ratateComboBox: NSView!
- var alphaButton: NSButton!
- var alphaComboBox: NSComboBox!
- var pageAboveComboBox: NSComboBox!
-
- var rComboBox: NSComboBox!
-
- var pageTargetScale: NSButton!
- var pageTargetScaleComboBox: NSComboBox!
-
- override var isFlipped: Bool {
- return true
- }
-
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
-
- self.titleLabel = NSTextField(labelWithString: "")
- self.rotateButton = NSButton()
- self.ratateComboBox = NSView()
- self.alphaButton = NSButton()
- self.alphaComboBox = NSComboBox()
- self.pageAboveComboBox = NSComboBox()
- self.pageTargetScale = NSButton(checkboxWithTitle: NSLocalizedString("Scale relative to target page", comment: ""), target: self, action: #selector(pageTargetScaleAction))
- self.pageTargetScaleComboBox = NSComboBox()
- self.addSubview(self.titleLabel)
- self.addSubview(self.rotateButton)
- self.addSubview(self.ratateComboBox)
- self.addSubview(self.alphaButton)
- self.addSubview(self.alphaComboBox)
- self.addSubview(self.pageAboveComboBox)
-
- self.rComboBox = NSComboBox()
- self.addSubview(self.rComboBox)
- self.addSubview(self.pageTargetScale)
- self.addSubview(self.pageTargetScaleComboBox)
- //
- titleLabel.stringValue = NSLocalizedString("Appearance", comment: "")
-
- rotateButton.isBordered = false
- rotateButton.title = NSLocalizedString("", comment: "")
- rComboBox.isEditable = false
- rComboBox.delegate = self
- rComboBox.removeAllItems()
- for i in 0 ... 360 {
- rComboBox.addItem(withObjectValue: i)
- }
- rComboBox.selectItem(withObjectValue: 0)
-
- alphaButton.isBordered = false
- alphaButton.title = NSLocalizedString("", comment: "")
- alphaComboBox.isEditable = false
- alphaComboBox.delegate = self
- alphaComboBox.removeAllItems()
- for i in 0 ... 100 {
- alphaComboBox.addItem(withObjectValue: "\(i)%")
- }
- alphaComboBox.selectItem(withObjectValue: "100%")
-
- pageAboveComboBox.isEditable = false
- pageAboveComboBox.delegate = self
- pageAboveComboBox.removeAllItems()
- pageAboveComboBox.addItems(withObjectValues: [NSLocalizedString("At the top of the page", comment: ""),NSLocalizedString("At the top of the page", comment: "")])
- pageAboveComboBox.selectItem(at: 0)
-
- self.pageTargetScaleComboBox.delegate = self
- self.pageTargetScaleComboBox.removeAllItems()
- for i in 0 ... 100 {
- pageTargetScaleComboBox.addItem(withObjectValue: "\(i)%")
- }
- self.pageTargetScaleComboBox.selectItem(withObjectValue: "100%")
- self.pageTargetScale.state = .on
- }
-
- required init?(coder: NSCoder) {
- super.init(coder: coder)
- }
-
- override func layout() {
- super.layout()
- let width: CGFloat = NSWidth(self.bounds)
- let heigth: CGFloat = NSHeight(self.bounds)
- let leftMargin: CGFloat = 16
- self.titleLabel.frame = NSMakeRect(leftMargin, 0, width-2*leftMargin, 16)
- let rotateY = self.titleLabel.frame.maxY+10
- self.rotateButton.frame = NSMakeRect(leftMargin, rotateY, 22, 22)
- self.rComboBox.frame = NSMakeRect(self.rotateButton.frame.maxX+10, rotateY, 80, 22)
- self.alphaButton.frame = NSMakeRect(self.rComboBox.frame.maxX+10, rotateY, 22, 22)
- self.alphaComboBox.frame = NSMakeRect(self.alphaButton.frame.maxX+10, rotateY, 80, 22)
- self.pageAboveComboBox.frame = NSMakeRect(leftMargin, self.rotateButton.frame.maxY+10, width-1*leftMargin, 22)
- self.pageTargetScale.frame = NSMakeRect(leftMargin, self.pageAboveComboBox.frame.maxY+10, width-2*leftMargin, 16)
- self.pageTargetScaleComboBox.frame = NSMakeRect(leftMargin, self.pageTargetScale.frame.maxY+10, 100, 22)
- }
-
-
- override func setModel(model: KMWatermarkModel) {
- super.setModel(model: model)
- rComboBox.stringValue = "\(abs(Int(-model.rotation)))"
- alphaComboBox.stringValue = "\(Int(model.opacity*100))%"
- if (model.isFront) {
- pageAboveComboBox.selectItem(at: 0)
- } else {
- pageAboveComboBox.selectItem(at: 1)
- }
- }
-
- @objc func pageTargetScaleAction(sender: NSButton) {
- self.pageTargetScaleComboBox.isEnabled = sender.state == .on
-
- if (sender.state == .on) {
- guard let callback = itemClick else {
- return
- }
-
- callback(4, pageTargetScaleComboBox.indexOfSelectedItem)
- } else {
- guard let callback = itemClick else {
- return
- }
-
- callback(4, 50)
- }
- }
- }
- extension KMWatermarkAdjectiveOutsideView: NSComboBoxDelegate {
- func comboBoxSelectionDidChange(_ notification: Notification) {
- if (rComboBox.isEqual(to: notification.object)) { /// 旋转
- if (rComboBox.indexOfSelectedItem < 0) {
- return
- }
-
- guard let callback = itemClick else {
- return
- }
-
- callback(1, rComboBox.indexOfSelectedItem)
- } else if (alphaComboBox.isEqual(to: notification.object)) { /// 透明度
- if (alphaComboBox.indexOfSelectedItem < 0) {
- return
- }
- guard let callback = itemClick else {
- return
- }
-
- callback(2, alphaComboBox.indexOfSelectedItem)
- } else if (pageAboveComboBox.isEqual(to: notification.object)) {
- if (pageAboveComboBox.indexOfSelectedItem < 0) {
- return
- }
-
- guard let callback = itemClick else {
- return
- }
-
- callback(3, pageAboveComboBox.indexOfSelectedItem)
- } else if (pageTargetScaleComboBox.isEqual(to: notification.object)) {
- if (pageTargetScaleComboBox.indexOfSelectedItem < 0) {
- return
- }
-
- guard let callback = itemClick else {
- return
- }
-
- callback(4, pageTargetScaleComboBox.indexOfSelectedItem)
- }
- }
- }
|