// // KMRedactPropertiesWindowController.swift // PDF Reader Pro // // Created by tangchao on 2023/12/19. // import Cocoa class KMRedactPropertiesWindowController: NSWindowController { var readactAnnotation: CPDFRedactAnnotation? @IBOutlet weak var outlineColorLabel: NSTextField! @IBOutlet weak var outlineColorWell: NSColorWell! @IBOutlet weak var fillColorLabel: NSTextField! @IBOutlet weak var fillColorWell: NSColorWell! @IBOutlet weak var overlayTextButton: NSButton! @IBOutlet weak var overlayTextLabel: NSTextField! @IBOutlet weak var overlayTextField: NSTextField! @IBOutlet weak var fontSizeLabel: NSTextField! @IBOutlet weak var fontSizeComboBox: NSComboBox! @IBOutlet weak var alignementLabel: NSTextField! @IBOutlet weak var segmentedControl: NSSegmentedControl! @IBOutlet weak var fontColorLabel: NSTextField! @IBOutlet weak var fontColorWell: NSColorWell! @IBOutlet weak var makePropertiesButton: NSButton! @IBOutlet weak var cancelButton: NSButton! @IBOutlet weak var okButton: NSButton! /* @property (nonatomic,assign) NSModalSession modalSession; */ var callback: ((_ anno: CPDFRedactAnnotation?)->Void)? convenience init() { self.init(windowNibName: "KMRedactPropertiesWindowController") } override func windowDidLoad() { super.windowDidLoad() self.outlineColorLabel.stringValue = KMLocalizedString("Redaction Mark Outline Color:", nil) self.fillColorLabel.stringValue = KMLocalizedString("Redact Area Fill Color:", nil) self.overlayTextButton.title = KMLocalizedString("Use Overlay Text", nil) self.overlayTextLabel.stringValue = KMLocalizedString("Overlay Text:", nil) // self.repeatTextButton.title = NSLocalizedString(@"Repeat Text", nil); // self.autoSizeTextButton.title = NSLocalizedString(@"Auto-Size text to fit redaction region", nil); self.alignementLabel.stringValue = KMLocalizedString("Text Alignment", nil) self.fontSizeLabel.stringValue = KMLocalizedString("Font Size", nil) self.fontColorLabel.stringValue = String(format: "%@:", KMLocalizedString("Font Color", nil)) self.makePropertiesButton.title = KMLocalizedString("Make Properties Default", nil) self.cancelButton.title = KMLocalizedString("Cancel", nil) self.okButton.title = KMLocalizedString("OK", nil) if let anno = self.readactAnnotation { self.outlineColorWell.color = anno.borderColor() ?? .red self.fillColorWell.color = anno.interiorColor() ?? .clear self.fontColorWell.color = anno.fontColor() ?? .red self.fontSizeComboBox.stringValue = String(format: "%.lf pt", anno.font().pointSize) var segment = 0 if(anno.alignment().rawValue == 1) { segment = 1 } else if (anno.alignment().rawValue == 2) { segment = 2 } self.segmentedControl.setSelected(true, forSegment: segment) self.overlayTextField.stringValue = anno.overlayText() ?? "" if(anno.overlayText().isEmpty == false) { self.overlayTextButton.state = .on } else { self.overlayTextButton.state = .off } self.makePropertiesButton.isHidden = false } else { self.outlineColorWell.color = KMPDFAnnotationRedactConfig.shared.redactOutlineColor! self.fillColorWell.color = KMPDFAnnotationRedactConfig.shared.redactFillColor! self.fontColorWell.color = KMPDFAnnotationRedactConfig.shared.redactFontColor! self.overlayTextButton.state = KMPDFAnnotationRedactConfig.shared.overlayText ? .on : .off // self.repeatTextButton.state = [KMPDFAnnotationRedactConfig sharedInstance].repeatText ? NSControlStateValueOn : NSControlStateValueOff; // self.autoSizeTextButton.state = [KMPDFAnnotationRedactConfig sharedInstance].autoSizeText ? NSControlStateValueOn : NSControlStateValueOff; self.overlayTextField.stringValue = KMPDFAnnotationRedactConfig.shared.overlayTextString self.fontSizeComboBox.stringValue = String(format: "%ld pt", KMPDFAnnotationRedactConfig.shared.fontSize) var segment = 0 if(KMPDFAnnotationRedactConfig.shared.textAlignment == 1) { segment = 1 } else if (KMPDFAnnotationRedactConfig.shared.textAlignment == 2) { segment = 2 } self.segmentedControl.setSelected(true, forSegment: segment) self.makePropertiesButton.isHidden = true } self.updateUIState() } @IBAction func cancel_button(_ sender: AnyObject?) { if self.callback != nil { self.callback!(self.readactAnnotation) } self.km_quick_endSheet() } @IBAction func sure_button(_ sender: AnyObject?) { let s = (self.fontSizeComboBox.stringValue as? NSString)?.trimmingCharacters(in: CharacterSet(charactersIn: " pt")) ?? "" let fontsize = Int(s) ?? 12 var alignment: NSTextAlignment = .left if(self.segmentedControl.indexOfSelectedItem == 1) { alignment = .center } else if (self.segmentedControl.indexOfSelectedItem == 2) { alignment = .right } if(self.readactAnnotation == nil || self.makePropertiesButton.state == .on) { KMPDFAnnotationRedactConfig.shared.redactOutlineColor = self.outlineColorWell.color KMPDFAnnotationRedactConfig.shared.redactFillColor = self.fillColorWell.color KMPDFAnnotationRedactConfig.shared.redactFontColor = self.fontColorWell.color KMPDFAnnotationRedactConfig.shared.overlayText = self.overlayTextButton.state == .on KMPDFAnnotationRedactConfig.shared.fontSize = fontsize KMPDFAnnotationRedactConfig.shared.textAlignment = alignment.rawValue if(self.overlayTextButton.state == .on) { KMPDFAnnotationRedactConfig.shared.overlayTextString = self.overlayTextField.stringValue } else { KMPDFAnnotationRedactConfig.shared.overlayTextString = "" } } if let anno = self.readactAnnotation { anno.setBorderColor(self.outlineColorWell.color) anno.setInteriorColor(self.fillColorWell.color) anno.setFontColor(self.fontColorWell.color) if(self.overlayTextButton.state == .on) { anno.setFont(.init(name: "Helvetica", size: fontsize.cgFloat)) anno.setAlignment(alignment) anno.setOverlayText(self.overlayTextField.stringValue) } else { anno.setOverlayText("") } } if self.callback != nil { self.callback!(self.readactAnnotation) } self.km_quick_endSheet() } @IBAction func useOverlayText_button(_ sender: AnyObject?) { self.updateUIState() } @IBAction func autoSzieText_button(_ sender: AnyObject?) { self.updateUIState() } @IBAction func fontSize_Combox(_ sender: AnyObject?) { } func updateUIState() { let state = self.overlayTextButton.state let enabled = state == .on self.overlayTextLabel.isEnabled = enabled self.overlayTextField.isEnabled = enabled // self.autoSizeTextButton.enabled = state; self.fontSizeLabel.isEnabled = enabled self.fontSizeComboBox.isEnabled = enabled self.alignementLabel.isEnabled = enabled self.segmentedControl.isEnabled = enabled // self.repeatTextButton.enabled = state; self.fontColorLabel.isEnabled = enabled self.fontColorWell.isEnabled = enabled if(enabled) { self.overlayTextLabel.textColor = .labelColor self.fontSizeLabel.textColor = .labelColor self.alignementLabel.textColor = .labelColor self.fontColorLabel.textColor = .labelColor } else { self.overlayTextLabel.textColor = .tertiaryLabelColor self.fontSizeLabel.textColor = .tertiaryLabelColor self.fontColorLabel.textColor = .tertiaryLabelColor self.alignementLabel.textColor = .tertiaryLabelColor } } }