Revision: 14975
          http://sourceforge.net/p/skim-app/code/14975
Author:   hofman
Date:     2025-03-16 17:43:38 +0000 (Sun, 16 Mar 2025)
Log Message:
-----------
Add a class for a note toolbar below the main toolbar. For now unused.

Modified Paths:
--------------
    trunk/SKMainWindowController.h
    trunk/SKMainWindowController.m
    trunk/SKMainWindowController_Actions.h
    trunk/SKMainWindowController_Actions.m
    trunk/Skim.xcodeproj/project.pbxproj

Added Paths:
-----------
    trunk/SKNoteToolbarController.h
    trunk/SKNoteToolbarController.m

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2025-03-15 17:04:23 UTC (rev 14974)
+++ trunk/SKMainWindowController.h      2025-03-16 17:43:38 UTC (rev 14975)
@@ -70,7 +70,7 @@
 
 @class PDFAnnotation, PDFSelection, SKGroupedSearchResult;
 @class SKPDFView, SKSecondaryPDFView, SKPresentationView, SKStatusBar, 
SKFindController, SKSplitView, SKFieldEditor, SKOverviewView, SKSideWindow;
-@class SKLeftSideViewController, SKRightSideViewController, 
SKMainToolbarController, SKMainTouchBarController, SKProgressController, 
SKNoteTypeSheetController, SKSnapshotWindowController, SKTransitionController;
+@class SKLeftSideViewController, SKRightSideViewController, 
SKMainToolbarController, SKMainTouchBarController, SKNoteToolbarController, 
SKProgressController, SKNoteTypeSheetController, SKSnapshotWindowController, 
SKTransitionController;
 
 @interface SKMainWindowController : NSWindowController 
<SKSnapshotWindowControllerDelegate, SKThumbnailDelegate, 
SKFindControllerDelegate, SKPDFViewDelegate, SKPDFDocumentDelegate, 
NSTouchBarDelegate> {
     SKSplitView                         *splitView;
@@ -92,6 +92,8 @@
     
     SKMainTouchBarController            *touchBarController;
     
+    SKNoteToolbarController             *noteToolbarController;
+    
     SKOverviewView                      *overviewView;
     NSView                              *overviewContentView;
     

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-03-15 17:04:23 UTC (rev 14974)
+++ trunk/SKMainWindowController.m      2025-03-16 17:43:38 UTC (rev 14975)
@@ -106,6 +106,7 @@
 #import "SKChainedUndoManager.h"
 #import "SKThumbnailStamp.h"
 #import "SKPresentationView.h"
+#import "SKNoteToolbarController.h"
 
 #define MULTIPLICATION_SIGN_CHARACTER (unichar)0x00d7
 
@@ -1636,6 +1637,7 @@
     if (isPresentation)
         [NSCursor setHiddenUntilMouseMoves:NO];
     [touchBarController overviewChanged];
+    [noteToolbarController validateButtons];
 }
 
 - (void)hideOverviewAnimating:(BOOL)animate completionHandler:(void 
(^)(void))handler {
@@ -1666,6 +1668,7 @@
             }
             completionHandler:^{
                 [touchBarController overviewChanged];
+                [noteToolbarController validateButtons];
                 [[newKeyView window] makeFirstResponder:newKeyView];
                 if (handler)
                     handler();
@@ -1674,6 +1677,7 @@
         [contentView replaceSubview:overviewContentView with:newView];
         [NSLayoutConstraint activateConstraints:constraints];
         [touchBarController overviewChanged];
+        [noteToolbarController validateButtons];
         [[newKeyView window] makeFirstResponder:newKeyView];
         if (handler)
             handler();

Modified: trunk/SKMainWindowController_Actions.h
===================================================================
--- trunk/SKMainWindowController_Actions.h      2025-03-15 17:04:23 UTC (rev 
14974)
+++ trunk/SKMainWindowController_Actions.h      2025-03-16 17:43:38 UTC (rev 
14975)
@@ -107,6 +107,7 @@
 - (IBAction)toggleStatusBar:(nullable id)sender;
 - (IBAction)toggleSplitPDF:(nullable id)sender;
 - (IBAction)toggleOverview:(nullable id)sender;
+- (IBAction)toggleNoteToolbar:(nullable id)sender ;
 - (IBAction)toggleReadingBar:(nullable id)sender;
 - (IBAction)togglePacer:(nullable id)sender;
 - (IBAction)changePacerSpeed:(nullable id)sender;

Modified: trunk/SKMainWindowController_Actions.m
===================================================================
--- trunk/SKMainWindowController_Actions.m      2025-03-15 17:04:23 UTC (rev 
14974)
+++ trunk/SKMainWindowController_Actions.m      2025-03-16 17:43:38 UTC (rev 
14975)
@@ -82,6 +82,7 @@
 #import "SKOverviewView.h"
 #import "SKPresentationView.h"
 #import "NSUserDefaults_SKExtensions.h"
+#import "SKNoteToolbarController.h"
 
 #define STATUSBAR_HEIGHT 22.0
 
@@ -283,6 +284,7 @@
     [notes setValue:wasHidden forKey:@"shouldPrint"];
     [pdfView setHideNotes:[pdfView hideNotes] == NO];
     [touchBarController handleToolModeChangedNotification:nil];
+    [noteToolbarController validateButtons];
 }
 
 - (IBAction)takeSnapshot:(id)sender{
@@ -1137,6 +1139,22 @@
     [[self window] recalculateKeyViewLoop];
 }
 
+- (IBAction)toggleNoteToolbar:(id)sender {
+    if ([self interactionMode] == SKPresentationMode)
+        return;
+    if ([noteToolbarController isVisible]) {
+        NSUInteger i = [[[self window] titlebarAccessoryViewControllers] 
indexOfObject:noteToolbarController];
+        if (i != NSNotFound)
+            [[self window] removeTitlebarAccessoryViewControllerAtIndex:i];
+    } else {
+        if (noteToolbarController == nil) {
+            noteToolbarController = [[SKNoteToolbarController alloc] init];
+            [noteToolbarController setMainController:self];
+        }
+        [[self window] 
addTitlebarAccessoryViewController:noteToolbarController];
+    }
+}
+
 - (IBAction)toggleFullscreen:(id)sender {
     if ([self canExitFullscreen])
         [self exitFullscreen];

Added: trunk/SKNoteToolbarController.h
===================================================================
--- trunk/SKNoteToolbarController.h                             (rev 0)
+++ trunk/SKNoteToolbarController.h     2025-03-16 17:43:38 UTC (rev 14975)
@@ -0,0 +1,65 @@
+//
+//  SKNoteToolbarController.h
+//  Skim
+//
+//  Created by Christiaan Hofman on 16/03/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SKMainWindowController;
+
+@interface SKNoteToolbarController : NSTitlebarAccessoryViewController {
+    __weak SKMainWindowController *mainController;
+    NSSegmentedControl *noteButton;
+    NSSegmentedControl *colorsButton;
+    NSSegmentedControl *fontsButton;
+    NSSegmentedControl *linesButton;
+}
+
+@property (nonatomic, nullable, weak) SKMainWindowController *mainController;
+@property (nonatomic, readonly, getter=isVisible) BOOL visible;
+
+- (void)createNewNote:(nullable id)sender;
+- (void)selectColor:(nullable id)sender;
+- (void)selectFontSize:(nullable id)sender;
+- (void)selectLineWidth:(nullable id)sender;
+
+- (void)validateButtons;
+
+@end
+
+NS_ASSUME_NONNULL_END

Added: trunk/SKNoteToolbarController.m
===================================================================
--- trunk/SKNoteToolbarController.m                             (rev 0)
+++ trunk/SKNoteToolbarController.m     2025-03-16 17:43:38 UTC (rev 14975)
@@ -0,0 +1,225 @@
+//
+//  SKNoteToolbarController.m
+//  Skim
+//
+//  Created by Christiaan Hofman on 16/03/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SKNoteToolbarController.h"
+#import "SKMainWindowController.h"
+#import "SKPDFView.h"
+#import <SkimNotes/SkimNotes.h>
+#import "PDFAnnotation_SKExtensions.h"
+#import "SKApplicationController.h"
+#import "NSImage_SKExtensions.h"
+#import "NSMenu_SKExtensions.h"
+#import "NSUserDefaults_SKExtensions.h"
+#import "NSColor_SKExtensions.h"
+#import "NSSegmentedControl_SKExtensions.h"
+#import "SKStringConstants.h"
+
+static char SKDefaultsObservationContext;
+
+@implementation SKNoteToolbarController
+
+@synthesize mainController;
+@dynamic visible;
+
+- (void)dealloc {
+    if (colorsButton) {
+        @try { [[NSUserDefaults standardUserDefaults] removeObserver:self 
forKeyPath:SKSwatchColorsKey context:&SKDefaultsObservationContext]; }
+        @catch (id e) {}
+    }
+}
+
+- (BOOL)isVisible {
+    return [self isViewLoaded] && [[self view] window] != nil;
+}
+
+- (void)loadView {
+    NSArray *images = @[[NSImage imageNamed:SKImageNameToolbarAddTextNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddAnchoredNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddCircleNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddSquareNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddHighlightNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddUnderlineNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddStrikeOutNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddLineNote],
+                       [NSImage imageNamed:SKImageNameToolbarAddInkNote]];
+    noteButton = [NSSegmentedControl segmentedControlWithImages:images 
trackingMode:NSSegmentSwitchTrackingMomentary target:self 
action:@selector(createNewNote:)];
+    [noteButton setSegmentStyle:NSSegmentStyleSeparated];
+    [noteButton setHelp:NSLocalizedString(@"Add New Text Note", @"Tool tip 
message") forSegment:SKNoteTypeFreeText];
+    [noteButton setHelp:NSLocalizedString(@"Add New Anchored Note", @"Tool tip 
message") forSegment:SKNoteTypeAnchored];
+    [noteButton setHelp:NSLocalizedString(@"Add New Circle", @"Tool tip 
message") forSegment:SKNoteTypeCircle];
+    [noteButton setHelp:NSLocalizedString(@"Add New Box", @"Tool tip message") 
forSegment:SKNoteTypeSquare];
+    [noteButton setHelp:NSLocalizedString(@"Add New Highlight", @"Tool tip 
message") forSegment:SKNoteTypeHighlight];
+    [noteButton setHelp:NSLocalizedString(@"Add New Underline", @"Tool tip 
message") forSegment:SKNoteTypeUnderline];
+    [noteButton setHelp:NSLocalizedString(@"Add New Strike Out", @"Tool tip 
message") forSegment:SKNoteTypeStrikeOut];
+    [noteButton setHelp:NSLocalizedString(@"Add New Line", @"Tool tip 
message") forSegment:SKNoteTypeLine];
+    [noteButton setHelp:NSLocalizedString(@"Add New Freehand", @"Tool tip 
message") forSegment:SKNoteTypeInk];
+    [noteButton setTranslatesAutoresizingMaskIntoConstraints:NO];
+    
+    colorsButton = [NSSegmentedControl segmentedControlWithImages:@[[NSImage 
imageNamed:SKImageNameToolbarColors]] 
trackingMode:NSSegmentSwitchTrackingMomentary target:nil 
action:@selector(orderFrontColorPanel:)];
+    [colorsButton setTranslatesAutoresizingMaskIntoConstraints:NO];
+    NSMenu *menu = [NSMenu menu];
+    [colorsButton setMenu:menu forSegment:0];
+    [self updateColorsMenu];
+    [[NSUserDefaults standardUserDefaults] addObserver:self 
forKeyPath:SKSwatchColorsKey options:0 context:&SKDefaultsObservationContext];
+    
+    fontsButton = [NSSegmentedControl segmentedControlWithImages:@[[NSImage 
imageNamed:SKImageNameToolbarFonts]] 
trackingMode:NSSegmentSwitchTrackingMomentary target:nil 
action:@selector(orderFrontFontPanel:)];
+    [fontsButton setTranslatesAutoresizingMaskIntoConstraints:NO];
+    menu = [NSMenu menu];
+    for (NSInteger i = 9; i < 19; i++) {
+        [menu addItemWithTitle:[NSString stringWithFormat:@"%ld", (long)i] 
action:@selector(selectFontSize:) target:self tag:i];
+    }
+    [fontsButton setMenu:menu forSegment:0];
+    
+    linesButton = [NSSegmentedControl segmentedControlWithImages:@[[NSImage 
imageNamed:SKImageNameToolbarLines]] 
trackingMode:NSSegmentSwitchTrackingMomentary target:nil 
action:@selector(orderFrontLineInspector:)];
+    [linesButton setTranslatesAutoresizingMaskIntoConstraints:NO];
+    menu = [NSMenu menu];
+    NSSize size = NSMakeSize(32.0, 16.0);
+    for (NSInteger i = 1; i < 11; i++) {
+        NSMenuItem *menuItem = [menu addItemWithTitle:@"" 
action:@selector(selectLineWidth:) target:self tag:i];
+        NSImage *image = [NSImage imageWithSize:size drawingHandler:^(NSRect 
r){
+            [[NSColor blackColor] setStroke];
+            NSBezierPath *path = [NSBezierPath bezierPath];
+            [path setLineWidth:i];
+            [path moveToPoint:NSMakePoint(0.0, 8.0 + 0.5 * (i % 2))];
+            [path relativeLineToPoint:NSMakePoint(32.0, 0.0)];
+            [path stroke];
+            return YES;
+        }];
+        [image setAccessibilityDescription:[NSString stringWithFormat:@"%ld", 
(long)i]];
+        [image setTemplate:YES];
+        [menuItem setImage:image];
+    }
+    [linesButton setMenu:menu forSegment:0];
+    
+    [self validateButtons];
+    
+    NSView *view = [[NSView alloc] init];
+    [view addSubview:noteButton];
+    [view addSubview:colorsButton];
+    [view addSubview:fontsButton];
+    [view addSubview:linesButton];
+    
+    NSArray *constraints = @[
+        [[noteButton leadingAnchor] constraintEqualToAnchor:[view 
leadingAnchor] constant:10.0],
+        [[noteButton centerYAnchor] constraintEqualToAnchor:[view 
centerYAnchor]],
+        [[colorsButton leadingAnchor] constraintEqualToAnchor:[noteButton 
trailingAnchor] constant:20.0],
+        [[colorsButton centerYAnchor] constraintEqualToAnchor:[noteButton 
centerYAnchor]],
+        [[fontsButton leadingAnchor] constraintEqualToAnchor:[colorsButton 
trailingAnchor] constant:8.0],
+        [[fontsButton centerYAnchor] constraintEqualToAnchor:[noteButton 
centerYAnchor]],
+        [[linesButton leadingAnchor] constraintEqualToAnchor:[fontsButton 
trailingAnchor] constant:8.0],
+        [[linesButton centerYAnchor] constraintEqualToAnchor:[noteButton 
centerYAnchor]]
+    ];
+    [NSLayoutConstraint activateConstraints:constraints];
+    
+    [self setView:view];
+}
+
+- (void)createNewNote:(id)sender {
+    if ([mainController.pdfView canSelectNote]) {
+        NSInteger type = [sender selectedSegment];
+        [mainController.pdfView addAnnotationWithType:type];
+    } else NSBeep();
+}
+
+- (void)selectColor:(id)sender {
+    PDFAnnotation *annotation = [mainController.pdfView currentAnnotation];
+    NSColor *newColor = [sender respondsToSelector:@selector(color)] ? [sender 
color] : [sender respondsToSelector:@selector(representedObject)] ? [sender 
representedObject] : nil;
+    BOOL isShift = ([NSEvent modifierFlags] & NSEventModifierFlagShift) != 0;
+    BOOL isAlt = ([NSEvent modifierFlags] & NSEventModifierFlagOption) != 0;
+    if (isAlt == NO && [sender respondsToSelector:@selector(isAlternate)])
+        isAlt = [sender isAlternate];
+    if ([annotation isSkimNote]) {
+        [annotation setColor:newColor alternate:isAlt updateDefaults:isShift];
+    } else {
+        NSString *defaultKey = [mainController.pdfView 
currentColorDefaultKeyForAlternate:isAlt];
+        if (defaultKey)
+            [[NSUserDefaults standardUserDefaults] setColor:newColor 
forKey:defaultKey];
+    }
+}
+
+- (void)selectFontSize:(id)sender {
+    PDFAnnotation *annotation = [mainController.pdfView currentAnnotation];
+    if ([mainController hasOverview] == NO && [annotation isSkimNote] && 
[annotation isText]) {
+        NSFont *font = [[NSFontManager sharedFontManager] 
convertFont:[annotation font] toSize:[sender tag]];
+        [annotation setFont:font];
+        if (([NSEvent modifierFlags] & NSEventModifierFlagShift)) {
+            [[NSUserDefaults standardUserDefaults] setDouble:[font pointSize] 
forKey:SKFreeTextNoteFontSizeKey];
+        }
+    }
+}
+
+- (void)selectLineWidth:(id)sender {
+    PDFAnnotation *annotation = [mainController.pdfView currentAnnotation];
+    if ([mainController hasOverview] == NO && [annotation hasBorder]) {
+        BOOL isShift = ([NSEvent modifierFlags] & NSEventModifierFlagShift) != 
0;
+        [annotation setLineWidth:[sender tag] updateDefaults:isShift];
+    }
+}
+
+- (void)updateColorsMenu {
+    NSMenu *menu = [colorsButton menuForSegment:0];
+    
+    [menu removeAllItems];
+    
+    NSSize size = NSMakeSize(16.0, 16.0);
+    for (NSColor *color in [NSColor favoriteColors]) {
+        NSMenuItem *item;
+        NSImage *image = [NSImage imageWithSize:size drawingHandler:^(NSRect 
dstRect){
+            [color drawSwatchInRoundedRect:dstRect];
+            return YES;
+        }];
+        [image setAccessibilityDescription:[color accessibilityValue]];
+        item = [menu addItemWithTitle:@"" action:@selector(selectColor:) 
target:self];
+        [item setRepresentedObject:color];
+        [item setImage:image];
+    }
+}
+
+- (void)validateButtons {
+    [noteButton setEnabled:[mainController hasOverview] == NO && 
[mainController.pdfView canSelectNote]];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
+    if (context == &SKDefaultsObservationContext) {
+        [self updateColorsMenu];
+    } else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
+    }
+}
+
+@end

Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj        2025-03-15 17:04:23 UTC (rev 
14974)
+++ trunk/Skim.xcodeproj/project.pbxproj        2025-03-16 17:43:38 UTC (rev 
14975)
@@ -232,6 +232,7 @@
                CEAE1CA0287C7C39003A77DB /* SKGroupView.m in Sources */ = {isa 
= PBXBuildFile; fileRef = CEAE1C9F287C7C39003A77DB /* SKGroupView.m */; };
                CEAF079D0C4139EB00C3ECBB /* SKStatusBar.m in Sources */ = {isa 
= PBXBuildFile; fileRef = CEAF079B0C4139EB00C3ECBB /* SKStatusBar.m */; };
                CEB402C313EDAD6100851D1B /* SKTemporaryData.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CEB402C213EDAD6100851D1B /* SKTemporaryData.m 
*/; };
+               CEB4EC502D87409100CA01A1 /* SKNoteToolbarController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CEB4EC4F2D87409100CA01A1 /* 
SKNoteToolbarController.m */; };
                CEB735A20C4A8CD6000350F9 /* TransitionShading.tiff in Resources 
*/ = {isa = PBXBuildFile; fileRef = CEB735A10C4A8CD6000350F9 /* 
TransitionShading.tiff */; };
                CEBC0DDD2791C607008686E8 /* NSObject_SKExtensions.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CEBC0DDC2791C607008686E8 /* 
NSObject_SKExtensions.m */; };
                CEBCA4C02868A93A00E6376E /* SKLine.m in Sources */ = {isa = 
PBXBuildFile; fileRef = CEBCA4BF2868A93A00E6376E /* SKLine.m */; };
@@ -1140,6 +1141,8 @@
                CEAF079B0C4139EB00C3ECBB /* SKStatusBar.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKStatusBar.m; sourceTree = "<group>"; };
                CEB402C113EDAD6100851D1B /* SKTemporaryData.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SKTemporaryData.h; sourceTree = "<group>"; };
                CEB402C213EDAD6100851D1B /* SKTemporaryData.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKTemporaryData.m; sourceTree = "<group>"; };
+               CEB4EC4E2D87409100CA01A1 /* SKNoteToolbarController.h */ = {isa 
= PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
SKNoteToolbarController.h; sourceTree = "<group>"; };
+               CEB4EC4F2D87409100CA01A1 /* SKNoteToolbarController.m */ = {isa 
= PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
SKNoteToolbarController.m; sourceTree = "<group>"; };
                CEB53FF20F261D1400723C1F /* zh_TW */ = {isa = PBXFileReference; 
lastKnownFileType = text.rtf; name = zh_TW; path = zh_TW.lproj/Credits.rtf; 
sourceTree = "<group>"; };
                CEB53FF50F261D1400723C1F /* zh_TW */ = {isa = PBXFileReference; 
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_TW; path = 
zh_TW.lproj/InfoPlist.strings; sourceTree = "<group>"; };
                CEB53FF80F261D1500723C1F /* zh_TW */ = {isa = PBXFileReference; 
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = zh_TW; path = 
zh_TW.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -2265,6 +2268,8 @@
                                CEE54F6B0DA3FB060037169F /* 
SKMainToolbarController.m */,
                                CE85D73D2280814B0022C560 /* 
SKMainTouchBarController.h */,
                                CE85D73E2280814B0022C560 /* 
SKMainTouchBarController.m */,
+                               CEB4EC4E2D87409100CA01A1 /* 
SKNoteToolbarController.h */,
+                               CEB4EC4F2D87409100CA01A1 /* 
SKNoteToolbarController.m */,
                                CE8BEFE1115F75590029020F /* 
SKSideViewController.h */,
                                CE8BEFE2115F75590029020F /* 
SKSideViewController.m */,
                                CE8BF025115F7C390029020F /* 
SKLeftSideViewController.h */,
@@ -2899,6 +2904,7 @@
                                CE6DC7BB0D689138003A072F /* 
PDFDocument_SKExtensions.m in Sources */,
                                CE2E9A592C14D2F300044B01 /* 
SKSnapshotConfiguration.m in Sources */,
                                CEA8FCD60D89C34A00E8A6F4 /* 
SKAnimatedBorderlessWindow.m in Sources */,
+                               CEB4EC502D87409100CA01A1 /* 
SKNoteToolbarController.m in Sources */,
                                CE199DFD0D957A16009B2055 /* 
SKAnnotationTypeImageCell.m in Sources */,
                                CEE54D880DA2E37B0037169F /* 
PDFAnnotation_SKExtensions.m in Sources */,
                                CEE54D930DA2E5E10037169F /* 
PDFAnnotationCircle_SKExtensions.m in Sources */,

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to