Revision: 14518
          http://sourceforge.net/p/skim-app/code/14518
Author:   hofman
Date:     2024-10-05 15:40:50 +0000 (Sat, 05 Oct 2024)
Log Message:
-----------
Implement presentationOptions propety in document class

Modified Paths:
--------------
    trunk/SKMainDocument.h
    trunk/SKMainDocument.m
    trunk/SKMainWindowController.h
    trunk/SKMainWindowController.m

Modified: trunk/SKMainDocument.h
===================================================================
--- trunk/SKMainDocument.h      2024-10-05 14:46:04 UTC (rev 14517)
+++ trunk/SKMainDocument.h      2024-10-05 15:40:50 UTC (rev 14518)
@@ -82,6 +82,8 @@
 
 @property (nonatomic, nullable, readonly) SKPDFView *pdfView;
 
+@property (nonatomic, nullable, copy) NSDictionary<NSString *, id> 
*presentationOptions;
+
 - (void)savePasswordInKeychain:(NSString *)password;
 
 @property (nonatomic, readonly) SKPDFSynchronizer *synchronizer;

Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m      2024-10-05 14:46:04 UTC (rev 14517)
+++ trunk/SKMainDocument.m      2024-10-05 15:40:50 UTC (rev 14518)
@@ -50,6 +50,8 @@
 #import "NSUserDefaultsController_SKExtensions.h"
 #import "SKStringConstants.h"
 #import "SKPDFView.h"
+#import "SKTransitionInfo.h"
+#import "SKTransitionController.h"
 #import "SKNoteWindowController.h"
 #import "SKPDFSynchronizer.h"
 #import "NSString_SKExtensions.h"
@@ -106,6 +108,8 @@
 #define SKLastExportedTypeKey @"SKLastExportedType"
 #define SKLastExportedOptionKey @"SKLastExportedOption"
 
+#define PAGETRANSITIONS_KEY @"pageTransitions"
+
 #define NOTIFYPATH_KEY       @"notifyPath"
 #define WANTSUPDATECHECK_KEY @"wantsUpdateCheck"
 #define CALLBACK_KEY         @"callback"
@@ -158,7 +162,7 @@
 @implementation SKMainDocument
 
 @synthesize mainWindowController;
-@dynamic pdfDocument, pdfView, synchronizer, snapshots, tags, rating, notes, 
currentPage, activeNote, richText, selectionSpecifier, selectionQDRect, 
selectionPage, pdfViewSettings;
+@dynamic pdfDocument, pdfView, synchronizer, snapshots, presentationOptions, 
tags, rating, notes, currentPage, activeNote, richText, selectionSpecifier, 
selectionQDRect, selectionPage, pdfViewSettings;
 
 + (BOOL)isPDFDocument { return YES; }
 
@@ -193,7 +197,7 @@
     [[self mainWindowController] setPdfDocument:pdfDoc 
addAnnotationsFromDictionaries:[tmpData noteDicts]];
     
     if ([tmpData presentationOptions])
-        [[self mainWindowController] setPresentationOptions:[tmpData 
presentationOptions]];
+        [self setPresentationOptions:[tmpData presentationOptions]];
     
     [[self mainWindowController] setTags:[tmpData openMetaTags]];
     
@@ -456,7 +460,7 @@
     
     BOOL success = [fm writeSkimNotes:[self SkimNoteProperties] 
textNotes:[self notesString] richTextNotes:[self notesRTFData] 
toExtendedAttributesAtURL:absoluteURL options:writeOptions error:NULL];
     
-    NSDictionary *options = [[self mainWindowController] presentationOptions];
+    NSDictionary *options = [self presentationOptions];
     SKNExtendedAttributeManager *eam = [SKNExtendedAttributeManager 
sharedNoSplitManager];
     [eam removeExtendedAttributeNamed:PRESENTATION_OPTIONS_KEY 
atPath:[absoluteURL path] traverseLink:YES error:NULL];
     if (options)
@@ -617,7 +621,7 @@
     NSData *data;
     NSFileWrapper *fileWrapper = [[NSFileWrapper alloc] 
initDirectoryWithFileWrappers:@{}];
     NSDictionary *info = [[SKInfoWindowController sharedInstance] 
infoForDocument:self];
-    NSDictionary *options = [[self mainWindowController] presentationOptions];
+    NSDictionary *options = [self presentationOptions];
     if (options) {
         info = [info mutableCopy];
         [(NSMutableDictionary *)info setObject:options 
forKey:SKPresentationOptionsKey];
@@ -1249,7 +1253,7 @@
 }
 
 - (IBAction)share:(id)sender {
-    BOOL shouldArchive = ([self hasNotes] || [[[self mainWindowController] 
presentationOptions] count] > 0 || [[[self mainWindowController] 
widgetProperties] count] > 0);
+    BOOL shouldArchive = ([self hasNotes] || [[self presentationOptions] 
count] > 0 || [[[self mainWindowController] widgetProperties] count] > 0);
     
     NSString *typeName = [self fileType];
     if (shouldArchive == NO && [typeName 
isEqualToString:SKPDFBundleDocumentType])
@@ -1570,6 +1574,24 @@
     return [[self mainWindowController] pdfView];
 }
 
+- (NSDictionary *)presentationOptions {
+    SKTransitionController *transitions = [[self mainWindowController] 
transitionControllerCreating:NO];
+    SKTransitionInfo *transition = [transitions transition];
+    NSArray *pageTransitions = [transitions pageTransitions];
+    NSMutableDictionary *options = nil;
+    if ([transition style] != SKNoTransition || [pageTransitions count]) {
+        options = [NSMutableDictionary dictionaryWithDictionary:[transition 
properties]];
+        [options setValue:pageTransitions forKey:PAGETRANSITIONS_KEY];
+    }
+    return options;
+}
+
+- (void)setPresentationOptions:(NSDictionary *)dictionary {
+    SKTransitionController *transitions = [[self mainWindowController] 
transitionControllerCreating:YES];
+    [transitions setTransition:[[SKTransitionInfo alloc] 
initWithProperties:dictionary]];
+    [transitions setPageTransitions:[dictionary 
objectForKey:PAGETRANSITIONS_KEY]];
+}
+
 - (NSArray *)snapshots {
     return [[self mainWindowController] snapshots];
 }

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2024-10-05 14:46:04 UTC (rev 14517)
+++ trunk/SKMainWindowController.h      2024-10-05 15:40:50 UTC (rev 14518)
@@ -261,8 +261,6 @@
 
 @property (nonatomic, nullable, copy) NSArray<SKGroupedSearchResult *> 
*groupedSearchResults;
 
-@property (nonatomic, nullable, copy) NSDictionary<NSString *, id> 
*presentationOptions;
-
 @property (nonatomic, nullable, weak) NSDocument *presentationNotesDocument;
 @property (nonatomic) NSInteger presentationNotesOffset;
 

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2024-10-05 14:46:04 UTC (rev 14517)
+++ trunk/SKMainWindowController.m      2024-10-05 15:40:50 UTC (rev 14518)
@@ -72,7 +72,6 @@
 #import "SKLineInspector.h"
 #import "SKStatusBar.h"
 #import "SKTransitionController.h"
-#import "SKTransitionInfo.h"
 #import "SKPresentationOptionsSheetController.h"
 #import "SKTypeSelectHelper.h"
 #import "NSGeometry_SKExtensions.h"
@@ -216,7 +215,7 @@
 @implementation SKMainWindowController
 
 @synthesize mainWindow, splitView, topConstraint, centerContentView, 
pdfSplitView, pdfContentView, findBarTopConstraint, statusBar, pdfView, 
secondaryPdfView, leftSideController, rightSideController, leftSideContentView, 
rightSideContentView, presentationNotesDocument, presentationNotesOffset, 
notes, thumbnails, snapshots, searchResults, groupedSearchResults, tags, 
rating, pageLabel, interactionMode, placeholderPdfDocument;
-@dynamic pdfDocument, presentationOptions, presentationUndoManager, 
selectedNotes, hasNotes, widgetProperties, currentPage, leftSidePaneState, 
rightSidePaneState, findPaneState, displaysFindPane, leftSidePaneIsOpen, 
rightSidePaneIsOpen, recentInfoNeedsUpdate, searchString, hasOverview, 
notesMenu;
+@dynamic pdfDocument, presentationUndoManager, selectedNotes, hasNotes, 
widgetProperties, currentPage, leftSidePaneState, rightSidePaneState, 
findPaneState, displaysFindPane, leftSidePaneIsOpen, rightSidePaneIsOpen, 
recentInfoNeedsUpdate, searchString, hasOverview, notesMenu;
 
 + (BOOL)automaticallyNotifiesObserversOfPageLabel { return NO; }
 
@@ -1430,24 +1429,6 @@
     return transitionController;
 }
 
-- (NSDictionary *)presentationOptions {
-    SKTransitionController *transitions = [self 
transitionControllerCreating:NO];
-    SKTransitionInfo *transition = [transitions transition];
-    NSArray *pageTransitions = [transitions pageTransitions];
-    NSMutableDictionary *options = nil;
-    if ([transition style] != SKNoTransition || [pageTransitions count]) {
-        options = [NSMutableDictionary dictionaryWithDictionary:[transition 
properties]];
-        [options setValue:pageTransitions forKey:PAGETRANSITIONS_KEY];
-    }
-    return options;
-}
-
-- (void)setPresentationOptions:(NSDictionary *)dictionary {
-    SKTransitionController *transitions = [self 
transitionControllerCreating:YES];
-    [transitions setTransition:[[SKTransitionInfo alloc] 
initWithProperties:dictionary]];
-    [transitions setPageTransitions:[dictionary 
objectForKey:PAGETRANSITIONS_KEY]];
-}
-
 - (void)setPresentationNotesDocument:(NSDocument *)newDocument {
     [self removePresentationNotesNavigation];
     if (presentationNotesDocument != newDocument) {

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



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to