Revision: 13437
          http://sourceforge.net/p/skim-app/code/13437
Author:   hofman
Date:     2023-05-11 14:47:00 +0000 (Thu, 11 May 2023)
Log Message:
-----------
Add context menu item to normal bookmark items to choose the file

Modified Paths:
--------------
    trunk/SKBookmark.h
    trunk/SKBookmark.m
    trunk/SKBookmarkController.m
    trunk/de.lproj/Localizable.strings
    trunk/en.lproj/Localizable.strings
    trunk/es.lproj/Localizable.strings
    trunk/fr.lproj/Localizable.strings
    trunk/it.lproj/Localizable.strings
    trunk/ja.lproj/Localizable.strings
    trunk/nl.lproj/Localizable.strings
    trunk/pl.lproj/Localizable.strings
    trunk/ru.lproj/Localizable.strings
    trunk/zh_CN.lproj/Localizable.strings
    trunk/zh_TW.lproj/Localizable.strings

Modified: trunk/SKBookmark.h
===================================================================
--- trunk/SKBookmark.h  2023-05-11 13:58:51 UTC (rev 13436)
+++ trunk/SKBookmark.h  2023-05-11 14:47:00 UTC (rev 13437)
@@ -71,7 +71,7 @@
 @property (nonatomic, readonly) SKBookmarkType bookmarkType;
 @property (nonatomic, retain) NSString *label;
 @property (nonatomic, readonly) NSImage *icon, *alternateIcon;
-@property (nonatomic, readonly) NSURL *fileURL;
+@property (nonatomic, copy) NSURL *fileURL;
 @property (nonatomic, readonly) NSURL *fileURLToOpen;
 @property (nonatomic, readonly) NSString *fileDescription;
 @property (nonatomic, readonly) NSString *toolTip;

Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m  2023-05-11 13:58:51 UTC (rev 13436)
+++ trunk/SKBookmark.m  2023-05-11 14:47:00 UTC (rev 13437)
@@ -215,6 +215,7 @@
 - (void)setLabel:(NSString *)newLabel {}
 
 - (NSURL *)fileURL { return nil; }
+- (void)setFileURL:(NSURL *)fileURL {}
 - (NSURL *)fileURLToOpen { return nil; }
 - (NSString *)fileDescription { return nil; }
 - (NSString *)toolTip { return nil; }
@@ -538,6 +539,14 @@
     return [alias fileURLNoUI];
 }
 
+- (void)setFileURL:(NSURL *)fileURL {
+    SKAlias *newAlias = [[SKAlias alloc] initWithURL:fileURL];
+    if (newAlias) {
+        [alias release];
+        alias = newAlias;
+    }
+}
+
 - (NSURL *)fileURLToOpen {
     NSURL *fileURL = [alias fileURL];
     if (fileURL == nil && setup) {

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2023-05-11 13:58:51 UTC (rev 13436)
+++ trunk/SKBookmarkController.m        2023-05-11 14:47:00 UTC (rev 13437)
@@ -576,6 +576,24 @@
     }
 }
 
+- (IBAction)chooseFile:(id)sender {
+    SKBookmark *bm = [[self clickedBookmarks] firstObject];
+    NSURL *fileURL = [bm fileURL];
+    NSOpenPanel *oPanel = [NSOpenPanel openPanel];
+    [oPanel setAllowedFileTypes:@[SKPDFDocumentType, SKPDFBundleDocumentType, 
SKPostScriptDocumentType, SKEncapsulatedPostScriptDocumentType, 
SKDVIDocumentType, SKXDVDocumentType, SKNotesDocumentType]];
+    if (fileURL)
+        [oPanel setDirectoryURL:[fileURL URLByDeletingLastPathComponent]];
+    [oPanel beginSheetModalForWindow:[self window] 
completionHandler:^(NSInteger result){
+            if (result == NSModalResponseOK) {
+                NSURL *fileURL = [[oPanel URLs] firstObject];
+                if (fileURL) {
+                    [bm setFileURL:fileURL];
+                    [outlineView reloadDataForRowIndexes:[NSIndexSet 
indexSetWithIndex:[outlineView rowForItem:bm]] columnIndexes:[NSIndexSet 
indexSetWithIndex:1]];
+                }
+            }
+        }];
+}
+
 - (IBAction)copyURL:(id)sender {
     NSArray *selectedBookmarks = minimumCoverForBookmarks([outlineView 
selectedItems]);
     NSMutableArray *skimURLs = [NSMutableArray array];
@@ -630,7 +648,8 @@
         [menu removeAllItems];
         if (row != -1) {
             [menu addItemWithTitle:NSLocalizedString(@"Remove", @"Menu item 
title") action:@selector(deleteBookmarks:) target:self];
-            for (SKBookmark *bm in [self clickedBookmarks]) {
+            NSArray *clickedBookmarks = [self clickedBookmarks];
+            for (SKBookmark *bm in clickedBookmarks) {
                 if ([bm bookmarkType] != SKBookmarkTypeSeparator) {
                     [menu addItemWithTitle:NSLocalizedString(@"Open", @"Menu 
item title") action:@selector(openBookmarks:) target:self];
                     [menu addItemWithTitle:NSLocalizedString(@"Quick Look", 
@"Menu item title") action:@selector(previewBookmarks:) target:self];
@@ -637,6 +656,8 @@
                     break;
                 }
             }
+            if ([clickedBookmarks count] == 1 && [[clickedBookmarks 
firstObject] bookmarkType] == SKBookmarkTypeBookmark)
+                [menu addItemWithTitle:NSLocalizedString(@"Choose File", 
@"Menu item title") action:@selector(chooseFile:) target:self];
             [menu addItem:[NSMenuItem separatorItem]];
         }
         [menu addItemWithTitle:NSLocalizedString(@"New Folder", @"Menu item 
title") action:@selector(insertBookmarkFolder:) target:self];

Modified: trunk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/es.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/it.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ja.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/nl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/pl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ru.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_CN.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_TW.lproj/Localizable.strings
===================================================================
(Binary files differ)

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