Revision: 27324
          http://sourceforge.net/p/bibdesk/svn/27324
Author:   hofman
Date:     2022-03-26 18:59:10 +0000 (Sat, 26 Mar 2022)
Log Message:
-----------
Add new hidden preference to display a custom image in the cells of the main 
table indicating a non empty field

Modified Paths:
--------------
    trunk/bibdesk/BDSKMainTableView.h
    trunk/bibdesk/BDSKMainTableView.m
    trunk/bibdesk/BDSKStringConstants.h
    trunk/bibdesk/BDSKStringConstants.m
    trunk/bibdesk/BibDocument_DataSource.m

Modified: trunk/bibdesk/BDSKMainTableView.h
===================================================================
--- trunk/bibdesk/BDSKMainTableView.h   2022-03-26 06:30:21 UTC (rev 27323)
+++ trunk/bibdesk/BDSKMainTableView.h   2022-03-26 18:59:10 UTC (rev 27324)
@@ -71,6 +71,8 @@
 - (void)removeTableColumnWithIdentifier:(NSString *)identifier;
 - (void)updateTableColumnTypes;
 
+- (NSImage *)cellImageForField:(NSString *)field;
+
 - (NSTableCellView *)makeViewForTableColumn:(NSTableColumn *)tableColumn 
owner:(id)owner;
 
 @property (nonatomic, readonly) NSArray *tableColumnIdentifiers;

Modified: trunk/bibdesk/BDSKMainTableView.m
===================================================================
--- trunk/bibdesk/BDSKMainTableView.m   2022-03-26 06:30:21 UTC (rev 27323)
+++ trunk/bibdesk/BDSKMainTableView.m   2022-03-26 18:59:10 UTC (rev 27324)
@@ -194,7 +194,7 @@
 
 - (BDSKColumnType)columnTypeForField:(NSString *)colName {
     BDSKColumnType type = 0;
-    if([colName isURLField])
+    if([colName isURLField] || [self cellImageForField:colName])
         type = BDSKColumnTypeURL;
     else if([colName isEqualToString:BDSKLocalFileString] || [colName 
isEqualToString:BDSKRemoteURLString])
         type = BDSKColumnTypeLinkedFile;
@@ -350,6 +350,33 @@
     return [menu autorelease];
 }
 
+- (NSImage *)cellImageForField:(NSString *)field {
+    static NSDictionary *cellImageCache = nil;
+    
+    if (cellImageCache == nil) {
+        NSMutableDictionary *tmpDict = [[NSMutableDictionary alloc] init];
+        NSDictionary *imagePaths = [[NSUserDefaults standardUserDefaults] 
objectForKey:BDSKTableCellImagesKey];
+        [imagePaths enumerateKeysAndObjectsUsingBlock:^(NSString *key, 
NSString *imagePath, BOOL *stop){
+            if ([imagePath isKindOfClass:[NSString class]]) {
+                NSImage *image;
+                if ([imagePath isEqualToString:@""]) {
+                    [tmpDict removeObjectForKey:key];
+                } else if ([[NSFileManager defaultManager] 
fileExistsAtPath:imagePath] &&
+                    (image = [[NSImage alloc] 
initWithContentsOfFile:imagePath])) {
+                    if ([[[imagePath lastPathComponent] 
stringByDeletingPathExtension] hasSuffix:@"Template"])
+                        [image setTemplate:YES];
+                    [tmpDict setObject:image forKey:key];
+                    [image release];
+                }
+            }
+        }];
+        cellImageCache = [tmpDict copy];
+        [tmpDict release];
+    }
+    
+    return [cellImageCache objectForKey:field];
+}
+
 #pragma mark Convenience methods
 
 - (NSArray *)tableColumnIdentifiers { return [[self tableColumns] 
valueForKey:@"identifier"]; }
@@ -498,7 +525,7 @@
                     [tmpDict removeObjectForKey:key];
                 } else if ([[NSFileManager defaultManager] 
fileExistsAtPath:imagePath] &&
                     (image = [[NSImage alloc] 
initWithContentsOfFile:imagePath])) {
-                    if ([[[imagePath lastPathComponent] 
stringByDeletingLastPathComponent] rangeOfString:@"Template" 
options:NSBackwardsSearch | NSAnchoredSearch].location != NSNotFound)
+                    if ([[[imagePath lastPathComponent] 
stringByDeletingPathExtension] hasSuffix:@"Template"])
                         [image setTemplate:YES];
                     [tmpDict setObject:image forKey:key];
                     [image release];

Modified: trunk/bibdesk/BDSKStringConstants.h
===================================================================
--- trunk/bibdesk/BDSKStringConstants.h 2022-03-26 06:30:21 UTC (rev 27323)
+++ trunk/bibdesk/BDSKStringConstants.h 2022-03-26 18:59:10 UTC (rev 27324)
@@ -173,6 +173,7 @@
 extern NSString *BDSKGroupFieldSeparatorCharactersKey;
 extern NSString *BDSKTableHeaderImagesKey;
 extern NSString *BDSKTableHeaderTitlesKey;
+extern NSString *BDSKTableCellImagesKey;
 extern NSString *BDSKCiteseerHostKey;
 extern NSString *BDSKShouldShareFilesKey;
 extern NSString *BDSKShouldLookForSharedFilesKey;

Modified: trunk/bibdesk/BDSKStringConstants.m
===================================================================
--- trunk/bibdesk/BDSKStringConstants.m 2022-03-26 06:30:21 UTC (rev 27323)
+++ trunk/bibdesk/BDSKStringConstants.m 2022-03-26 18:59:10 UTC (rev 27324)
@@ -208,6 +208,7 @@
 
 NSString *BDSKTableHeaderImagesKey = @"BDSKTableHeaderImages";
 NSString *BDSKTableHeaderTitlesKey = @"BDSKTableHeaderTitles";
+NSString *BDSKTableCellImagesKey = @"BDSKTableCellImages";
 NSString *BDSKCiteseerHostKey = @"BDSKCiteseerHostKey";
 
 NSString *BDSKAuthorNameDisplayKey = @"BDSKAuthorNameDisplayKey";

Modified: trunk/bibdesk/BibDocument_DataSource.m
===================================================================
--- trunk/bibdesk/BibDocument_DataSource.m      2022-03-26 06:30:21 UTC (rev 
27323)
+++ trunk/bibdesk/BibDocument_DataSource.m      2022-03-26 18:59:10 UTC (rev 
27324)
@@ -153,7 +153,13 @@
             else
                 [textField setTextColor:[NSColor controlTextColor]];
             [textField setObjectValue:value];
-        } else if (textField == nil) {
+        } else if (textField != nil){
+            // linked files and URLs
+            BDSKASSERT(value == nil || [value isKindOfClass:[NSDictionary 
class]]);
+            [view setToolTip:[value valueForKey:@"toolTip"]];
+            [textField setObjectValue:[value valueForKey:@"string"]];
+            [imageView setObjectValue:[value valueForKey:@"image"]];
+        } else if ([tcID isURLField]) {
             // URL field
             BDSKASSERT(value == nil || [value isKindOfClass:[NSImage class]]);
             NSURL *url = [pub URLForField:tcID];
@@ -160,11 +166,9 @@
             [imageView setToolTip:[url isFileURL] ? [[url path] 
stringByAbbreviatingWithTildeInPath] : [url absoluteString]];
             [imageView setObjectValue:value];
         } else {
-            // linked files and URLs
-            BDSKASSERT(value == nil || [value isKindOfClass:[NSDictionary 
class]]);
-            [view setToolTip:[value valueForKey:@"toolTip"]];
-            [textField setObjectValue:[value valueForKey:@"string"]];
-            [imageView setObjectValue:[value valueForKey:@"image"]];
+            // content is overridden by cell image
+            [imageView setToolTip:[value isKindOfClass:[NSString class]] ? 
value : nil];
+            [imageView setObjectValue:[value isNotEmpty] ? [tableView 
cellImageForField:tcID] : nil];
         }
         return view;
     } else {

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



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to