// // KMAnnotationFontWindowController.m // SignFlow // // Created by wanjun on 2021/6/22. // #import "KMAnnotationFontWindowController.h" //#import "NSUserDefaults_SKExtensions.h" #import "NSFont_SKExtensions.h" @interface KMAnnotationFontWindowController () @property (assign) IBOutlet NSBox *lineBox; @property (assign) IBOutlet NSTextField *fontLabel; @property (assign) IBOutlet NSComboBox *fontComboBox; @property (assign) IBOutlet NSTextField *fontWeightLabel; @property (assign) IBOutlet NSPopUpButton *fontWeightPopUpButton; @property (assign) IBOutlet NSTextField *fontSizeLabel; @property (assign) IBOutlet NSPopUpButton *fontSizePopUpButton; @property (assign) IBOutlet NSTextField *fontColorLabel; @property (assign) IBOutlet NSColorWell *fontColorWell; @property (assign) IBOutlet NSTextField *fontAdjacencyLabel; @property (assign) IBOutlet NSBox *fontAdjacencyBox; @property (assign) IBOutlet NSTextField *fontAdjacencyBoxLabel; @property (assign) IBOutlet NSStepper *fontAdjacencyStepper; @property (assign) IBOutlet NSTextField *rowHeightLabel; @property (assign) IBOutlet NSBox *rowHeightBox; @property (assign) IBOutlet NSTextField *rowHeightBoxLabel; @property (assign) IBOutlet NSStepper *rowHeightStepper; @property (assign) IBOutlet NSTextField *alignmentLabel; @property (assign) IBOutlet NSSegmentedControl *alignmentSegmentedControl; @property (assign) IBOutlet NSLayoutConstraint *fontAdjacencyLayoutConstraint; @property (assign) IBOutlet NSLayoutConstraint *rowHeightLayoutConstraint; @property (assign) IBOutlet NSLayoutConstraint *alignmenBottomConstraint; @property (nonatomic, retain) NSMutableArray*fonts; @end static KMAnnotationFontWindowController *sharedAnnotationFont = nil; @implementation KMAnnotationFontWindowController - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } + (id)sharedAnnotationFont { if (sharedAnnotationFont == nil) sharedAnnotationFont = [[self alloc] init]; return sharedAnnotationFont; } - (id)init { self = [super initWithWindowNibName:@"KMAnnotationFontWindowController"]; if (self) { } return self; } - (void)windowDidLoad { [super windowDidLoad]; self.fonts = [CPDFAnnotationModel supportFonts]; self.window.title = NSLocalizedString(@"Fonts", nil); self.fontLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Fonts", nil)]; self.fontWeightLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Font Weight", nil)]; self.fontSizeLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Font Size", nil)]; self.fontColorLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Text Color", nil)]; self.fontAdjacencyLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Font Adjacency", nil)]; self.rowHeightLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Row Height", nil)]; self.alignmentLabel.stringValue = [NSString stringWithFormat:@"%@:",NSLocalizedString(@"Alignment", nil)]; if (@available(macOS 10.13, *)) { [self.alignmentSegmentedControl setToolTip:NSLocalizedString(@"Left Alignment", nil) forSegment:0]; [self.alignmentSegmentedControl setToolTip:NSLocalizedString(@"Center", nil) forSegment:1]; [self.alignmentSegmentedControl setToolTip:NSLocalizedString(@"Right Alignment", nil) forSegment:2]; } [self.alignmentSegmentedControl.cell setControlTint:NSClearControlTint]; self.fontAdjacencyStepper.hidden = YES; self.rowHeightStepper.hidden = YES; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(alignmentTypeNotification:) name:@"KMAnnotationAlignmentTypeNotification" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fontTypeNotification:) name:@"KMAnnotationFontTypeNotification" object:nil]; } #pragma mark - View Methods -(void)setAnnotationModel:(CPDFAnnotationModel *)annotationModel { if (_annotationModel != annotationModel) { _annotationModel = annotationModel; } [self reloadData]; } - (void)reloadData { NSFont *notefont = [NSFont fontWithName:self.annotationModel.fontName size:self.annotationModel.fontSize]; NSColor *noteColor = self.annotationModel.fontColor; if (noteColor) { CGFloat r, g, b, a = 0.0; [[noteColor colorUsingColorSpaceName:NSDeviceRGBColorSpace] getRed:&r green:&g blue:&b alpha:&a]; noteColor = [NSColor colorWithRed:r green:g blue:b alpha:self.annotationModel.opacity]; } if (CAnnotationTypeFreeText == self.annotationModel.annotationType || CAnnotationTypeSignText == self.annotationModel.annotationType || CAnnotationTypeSignDate == self.annotationModel.annotationType || CAnnotationTypeTextField == self.annotationModel.annotationType) { if (self.annotationModel.alignment == NSTextAlignmentLeft) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignLeftOtherSel"] forSegment:0]; if (@available(macOS 11.0, *)) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignLeftSel"] forSegment:0]; } [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignCenterNor"] forSegment:1]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignRightNor"] forSegment:2]; self.alignmentSegmentedControl.selectedSegment = 0; } else if (self.annotationModel.alignment == NSTextAlignmentCenter) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignLeftNor"] forSegment:0]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignCenterOtherSel"] forSegment:1]; if (@available(macOS 11.0, *)) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignCenterSel"] forSegment:1]; } [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignRightNor"] forSegment:2]; self.alignmentSegmentedControl.selectedSegment = 1; } else if (self.annotationModel.alignment == NSTextAlignmentRight) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignLeftNor"] forSegment:0]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignCenterNor"] forSegment:1]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignRightOtherSel"] forSegment:2]; if (@available(macOS 11.0, *)) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignRightSel"] forSegment:2]; } self.alignmentSegmentedControl.selectedSegment = 2; } else if (self.annotationModel.alignment == NSTextAlignmentJustified) { [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignLeftNor"] forSegment:0]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignCenterNor"] forSegment:1]; [self.alignmentSegmentedControl setImage:[NSImage imageNamed:@"KMImageNamePropertybarTextalignRightNor"] forSegment:2]; self.alignmentSegmentedControl.selectedSegment = 3; } } [self.fontWeightPopUpButton removeAllItems]; self.fontSizePopUpButton.title = [NSString stringWithFormat:@"%@ pt",@(notefont.pointSize)]; NSDictionary * dic = nil; NSMutableArray * fontNames = [NSMutableArray array]; for (NSUInteger i=0; i