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