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