Revision: 27663
http://sourceforge.net/p/bibdesk/svn/27663
Author: hofman
Date: 2022-06-30 23:30:50 +0000 (Thu, 30 Jun 2022)
Log Message:
-----------
Reorganize conditions to avoid multiple checks of setting
Modified Paths:
--------------
trunk/bibdesk/BibDocument_DataSource.m
trunk/bibdesk/BibDocument_UI.m
Modified: trunk/bibdesk/BibDocument_DataSource.m
===================================================================
--- trunk/bibdesk/BibDocument_DataSource.m 2022-06-30 23:06:15 UTC (rev
27662)
+++ trunk/bibdesk/BibDocument_DataSource.m 2022-06-30 23:30:50 UTC (rev
27663)
@@ -108,6 +108,79 @@
#pragma mark TableView delegate
+- (void)reloadView:(NSTableCellView *)view forField:(NSString *)tcID
ofItem:(BibItem *)pub {
+ id value = [pub displayValueOfField:tcID];
+ NSTextField *textField = [view textField];
+ NSImageView *imageView = [view imageView];
+ if (textField == nil && imageView == nil) {
+ // special field types displayed using a button or level indicator
+ BDSKASSERT([view isKindOfClass:[BDSKControlTableCellView class]]);
+ BDSKASSERT(value == nil || [value isKindOfClass:[NSNumber class]] ||
[value isKindOfClass:[NSColor class]]);
+ NSControl *control = [(BDSKControlTableCellView *)view control];
+ if ([tcID isEqualToString:BDSKImportOrderString]) {
+ if ([pub isImported]) {
+ [control setEnabled:NO];
+ [control setToolTip:nil];
+ } else {
+ [control setEnabled:YES];
+ [control setToolTip:NSLocalizedString(@"Click to import this
item", @"Tool tip message")];
+ }
+ } else if ([tcID isEqualToString:BDSKCrossrefString]) {
+ BibItem *parent = [pub crossrefParent];
+ if (parent) {
+ [control setEnabled:YES];
+ [(NSButton *)control setImage:[NSImage
imageNamed:NSImageNameFollowLinkFreestandingTemplate]];
+ } else {
+ [control setEnabled:NO];
+ [(NSButton *)control setImage:nil];
+ }
+ [control setToolTip:[parent citeKey]];
+ } else if ([tcID isBooleanField] || [tcID isTriStateField]) {
+ [control setEnabled:[self
hasGroupTypeSelected:BDSKExternalGroupType] == NO];
+ }
+ [control setObjectValue:value];
+ } else if (imageView == nil) {
+ // generic text field
+ // value can be an NSNumber for Item Number
+ // possibly reset red color from invalid cite key, can be reused for
any text field
+ if ([tcID isEqualToString:BDSKCiteKeyString] && [pub
isValidCiteKey:[pub citeKey]] == NO)
+ [textField setTextColor:[NSColor systemRedColor]];
+ else
+ [textField setTextColor:[NSColor controlTextColor]];
+ [textField setObjectValue:value];
+ } else if (textField == nil) {
+ NSImage *image = nil;
+ if ([value isNotEmpty]) {
+ image = [tableView cellImageForField:tcID];
+ BDSKASSERT(image != nil || [value isKindOfClass:[NSURL class]]);
+ if ([value isKindOfClass:[NSURL class]]) {
+ // URL field
+ [imageView setToolTip:[value isFileURL] ? [[value path]
stringByAbbreviatingWithTildeInPath] : [value absoluteString]];
+ if (image == nil) {
+ if ([value isFileURL] == NO)
+ image = [NSImage imageForURL:value];
+ else if ((value = [value
fileURLByStrictlyResolvingAliases]))
+ image = [[NSWorkspace sharedWorkspace]
iconForFileType:[value pathExtension]];
+ else
+ image = [NSImage missingFileImage];
+ }
+ } else {
+ // field with custom cell image, e.g. a note field
+ [imageView setToolTip:[value isKindOfClass:[NSString class]] ?
value : [value isKindOfClass:[NSDictionary class]] ? [value
objectForKey:@"toolTip"] : nil];
+ }
+ } else {
+ [imageView setToolTip:nil];
+ }
+ [imageView setObjectValue:image];
+ } 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"]];
+ }
+}
+
- (NSView *)tableView:(NSTableView *)tv viewForTableColumn:(NSTableColumn
*)tableColumn row:(NSInteger)row {
NSString *tcID = [tableColumn identifier];
if (tv == tableView) {
Modified: trunk/bibdesk/BibDocument_UI.m
===================================================================
--- trunk/bibdesk/BibDocument_UI.m 2022-06-30 23:06:15 UTC (rev 27662)
+++ trunk/bibdesk/BibDocument_UI.m 2022-06-30 23:30:50 UTC (rev 27663)
@@ -1336,7 +1336,9 @@
}
static BOOL groupFieldsDependOnKey(NSArray *groupFields, NSString *key) {
- if ([groupFields containsObject:key])
+ if ([groupFields count] == 0)
+ return NO;
+ else if (key == nil || [groupFields containsObject:key])
return YES;
else if ([key isEqualToString:BDSKColorString])
return [groupFields containsObject:BDSKColorLabelString];
@@ -1357,9 +1359,7 @@
[self previewURLs:nil];
}
- BOOL shouldUpdateGroups = [[self currentGroupFields] count] > 0 &&
(docFlags.itemChangeMask & BDSKItemChangedGroupFieldMask) != 0;
-
- if(shouldUpdateGroups){
+ if((docFlags.itemChangeMask & BDSKItemChangedGroupFieldMask) != 0){
// this handles all UI updates if we call it, so don't bother with any
others
[self updateFilteringGroups];
} else {
@@ -1366,12 +1366,12 @@
// allow updating a smart group if it's selected
[[groups smartGroups]
makeObjectsPerformSelector:@selector(invalidateCount)];
[self updateSmartGroups];
- if (displayingLocal && (docFlags.itemChangeMask &
BDSKItemChangedSearchKeyMask) != 0) {
- // this handles all UI updates if we call it, so don't bother with
any others
- [self search:nil];
- } else if (displayingLocal) {
- // groups and quicksearch won't update for us
- if ((docFlags.itemChangeMask & BDSKItemChangedSortKeyMask) != 0) {
+ if (displayingLocal) {
+ if ((docFlags.itemChangeMask & BDSKItemChangedSearchKeyMask) != 0)
{
+ // this handles all UI updates if we call it, so don't bother
with any others
+ [self search:nil];
+ } else if ((docFlags.itemChangeMask & BDSKItemChangedSortKeyMask)
!= 0) {
+ // groups and quicksearch won't update for us
[self sortPubsByKey:nil];
} else {
// @@ DON'T RETURN WITHOUT RESETTING THIS!
@@ -1483,7 +1483,7 @@
}
}
- if (changedKey == nil || groupFieldsDependOnKey([self currentGroupFields],
changedKey))
+ if (groupFieldsDependOnKey([self currentGroupFields], changedKey))
docFlags.itemChangeMask |= BDSKItemChangedGroupFieldMask;
if ((tmpSortKey && sortKeyDependsOnKey(tmpSortKey, changedKey)) ||
sortKeyDependsOnKey(sortKey, changedKey) ||
sortKeyDependsOnKey(previousSortKey, changedKey))
docFlags.itemChangeMask |= BDSKItemChangedSortKeyMask;
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