123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- //
- // KMRedactPropertyContentView.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2023/1/17.
- //
- import Cocoa
- class KMRedactPropertyContentView: KMRedactContentBaseView {
- @IBOutlet weak var outsideBox: NSBox!
-
- @IBOutlet weak var outsideLabel: NSTextField!
- @IBOutlet weak var outsideColorView: KMRedactColorView!
-
- @IBOutlet weak var fillLabel: NSTextField!
- @IBOutlet weak var fillColorView: KMRedactColorView!
-
- @IBOutlet weak var overTextCheck: NSButton!
- @IBOutlet var overTextView: NSTextView!
-
- @IBOutlet weak var textLabel: NSTextField!
- @IBOutlet weak var fontStyleComboBox: NSComboBox!
- @IBOutlet weak var fontSizeComboBox: NSComboBox!
- @IBOutlet weak var fontTypeComboBox: NSComboBox!
-
- @IBOutlet weak var textColorView: KMRedactColorView!
- @IBOutlet weak var textAligementView: KMRedactAligementView!
-
- let fontSizes: Array<Int> = [8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72]
-
- var annotation : CPDFRedactAnnotation? {
- get {
- return nil
- }
- set {
- if (newValue == nil) {
- return
- }
-
- self.outsideColorView.color = (newValue?.borderColor())!
- self.fillColorView.color = newValue!.interiorColor()
- self.textColorView.color = newValue!.fontColor()
-
- if ((newValue?.overlayText().isEmpty)!) {
- self.isOverText(false)
- } else {
- self.isOverText(true)
- }
- }
- }
-
- override func awakeFromNib() {
- super.awakeFromNib()
- self.outsideLabel.stringValue = NSLocalizedString("Redaction Mark Outline Color:", comment: "")
- self.fillLabel.stringValue = NSLocalizedString("Redact Area Fill Color:", comment: "")
-
- self.overTextCheck.title = NSLocalizedString("Use Overlay Text", comment: "")
- self.overTextCheck.target = self
- self.overTextCheck.action = #selector(overTextCheckAction)
- self.overTextView.textContainerInset = NSMakeSize(6, 8)
- self.overTextView.enclosingScrollView?.borderType = .noBorder
- self.overTextView.enclosingScrollView?.contentView.wantsLayer = true
- self.overTextView.enclosingScrollView?.contentView.layer?.borderWidth = 1
- self.overTextView.enclosingScrollView?.contentView.layer?.borderColor = NSColor.black.cgColor
-
- self.overTextView.string = NSLocalizedString("Redact", comment: "")
- self.overTextView.delegate = self
-
- self.textLabel.stringValue = NSLocalizedString("Font", comment: "")
-
- var fontNames: Array<String> = []
- for font in CPDFAnnotationModel.supportFonts() {
- let fontDict: NSDictionary = font as! NSDictionary
- let fontName: String = fontDict.allKeys.first as! String
- fontNames.append(fontName)
- }
- self.fontStyleComboBox.delegate = self
- self.fontStyleComboBox.removeAllItems()
- self.fontStyleComboBox.addItems(withObjectValues: fontNames)
- self.updateFontName(fontNames[1])
- self.fontTypeComboBox.delegate = self
- self.fontSizeComboBox.delegate = self
-
- self.fontSizeComboBox.removeAllItems()
- self.fontSizeComboBox.addItems(withObjectValues: self.fontSizes)
- self.fontSizeComboBox.stringValue = NSLocalizedString("Auto", comment: "")
-
- /*
- self.interiorColor = annotationModel.interiorColor;
- self.borderColor = annotationModel.color;
- if (annotationModel.isOverlayText) {
- self.overlayText = annotationModel.overlayText?:@"";
- self.fontColor = annotationModel.fontColor;
- self.alignment = annotationModel.alignment;
- self.font = [NSFont fontWithName:@"Helvetica" size:annotationModel.fontSize];
- }
- */
- self.outsideColorView.itemClick = { [weak self] idx in
- if (idx == 2) {
- guard let callback = self!.itemClick else {
- return
- }
- callback(1, nil)
- }
- }
-
- self.fillColorView.itemClick = { [weak self] idx in
- if (idx == 2) {
- guard let callback = self!.itemClick else {
- return
- }
- callback(2, nil)
- }
- }
-
- self.textColorView.itemClick = { [weak self] idx in
- if (idx == 2) {
- guard let callback = self!.itemClick else {
- return
- }
- callback(8, nil)
- }
- }
-
- self.textAligementView.itemClick = {
- (index: Int) in
- guard let callback = self.itemClick else {
- return
- }
-
- callback(9, index)
- }
- }
-
- // MARK: Private Methods
-
- @objc private func overTextCheckAction(sender: NSButton) {
- if (sender.state == .on) {
- self.isOverText(true)
- } else {
- self.isOverText(false)
- }
-
- guard let callback = self.itemClick else {
- return
- }
- callback(3, sender.state == .on)
- }
-
- private func isOverText(_ isOver: Bool) {
- if (isOver) {
- self.overTextCheck.state = .on
- self.overTextView.isEditable = true
- self.fontStyleComboBox.isEnabled = true
- self.fontSizeComboBox.isEnabled = true
- self.fontTypeComboBox.isEnabled = true
- self.textColorView.isEnabled = true
- self.textAligementView.isEnabled = true
- } else {
- self.overTextCheck.state = .off
- self.overTextView.isEditable = false
- self.fontStyleComboBox.isEnabled = false
- self.fontSizeComboBox.isEnabled = false
- self.fontTypeComboBox.isEnabled = false
- self.textColorView.isEnabled = false
- self.textAligementView.isEnabled = false
- }
- }
-
- private func updateFontName(_ fontName: String) {
- var styleNames: Array<String>?
- for font in CPDFAnnotationModel.supportFonts() {
- let fontDict = font as! NSDictionary
- let name: String = fontDict.allKeys.first as! String
-
- if (name == fontName) {
- let datas: Array<String> = fontDict.allValues.first as! Array<String>
- styleNames = datas
- self.fontStyleComboBox.stringValue = fontName
- break
- }
- }
-
- if (styleNames != nil) {
- self.fontTypeComboBox.removeAllItems()
- self.fontTypeComboBox.addItems(withObjectValues: styleNames!)
- self.fontTypeComboBox.selectItem(at: 0)
- }
- }
-
- }
- extension KMRedactPropertyContentView: NSTextViewDelegate {
- func textDidChange(_ notification: Notification) {
- if (self.overTextView.isEqual(to: notification.object)) {
- guard let callback = self.itemClick else {
- return
- }
- callback(4, self.overTextView.string)
- }
- }
- }
- extension KMRedactPropertyContentView: NSComboBoxDelegate {
- func comboBoxSelectionDidChange(_ notification: Notification) {
- if (self.fontStyleComboBox.isEqual(to: notification.object)) {
- var index: Int = self.fontStyleComboBox.indexOfSelectedItem
- if (index < 0) {
- index = 0
- }
-
- guard let callback = self.itemClick else {
- return
- }
- callback(5, self.fontStyleComboBox.itemObjectValue(at: index))
- } else if (self.fontSizeComboBox.isEqual(to: notification.object)) {
- var index: Int = self.fontSizeComboBox.indexOfSelectedItem
- if (index < 0) {
- index = 0
- }
-
- guard let callback = self.itemClick else {
- return
- }
- callback(6, self.fontSizeComboBox.itemObjectValue(at: index))
- } else if (self.fontTypeComboBox.isEqual(to: notification.object)) {
- var index: Int = self.fontTypeComboBox.indexOfSelectedItem
- if (index < 0) {
- index = 0
- }
-
- guard let callback = self.itemClick else {
- return
- }
- callback(7, self.fontTypeComboBox.itemObjectValue(at: index))
- }
- }
- }
|