Revision: 28847 http://sourceforge.net/p/bibdesk/svn/28847 Author: hofman Date: 2024-04-05 23:06:46 +0000 (Fri, 05 Apr 2024) Log Message: ----------- Add non-empty fields to text import table if they are not standard. Auto size shortcut and field name columns and size table to fit.
Modified Paths: -------------- trunk/bibdesk/BDSKTextImportController.m Modified: trunk/bibdesk/BDSKTextImportController.m =================================================================== --- trunk/bibdesk/BDSKTextImportController.m 2024-04-05 21:51:46 UTC (rev 28846) +++ trunk/bibdesk/BDSKTextImportController.m 2024-04-05 23:06:46 UTC (rev 28847) @@ -91,6 +91,7 @@ - (void)loadFromFileURL:(NSURL *)url; - (void)setShowingWebView:(BOOL)showWebView; - (void)setupTypeUI; +- (void)updateColumnWidths; - (void)setType:(NSString *)type; - (void)setLoading:(BOOL)loading; @@ -364,6 +365,7 @@ NSInteger row = [fields count]; [fields addObject:newField]; + [self updateColumnWidths]; [itemTableView reloadData]; [itemTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; [itemTableView editColumn:2 row:row withEvent:nil select:YES]; @@ -722,8 +724,50 @@ [fields addObjectsFromArray:[typeMan standardFieldsForType:type]]; [fields addNonDuplicateObjectsFromArray:@[BDSKAbstractString, BDSKAnnoteString]]; + + NSMutableArray *extraFields = [NSMutableArray array]; + [[[self publication] pubFields] enumerateKeysAndObjectsUsingBlock:^(NSString *fieldName, NSString *value, BOOL *stop){ + if ([NSString isEmptyAsComplexString:value] == NO && [fields containsObject:fieldName] == NO) + [extraFields addObject:fieldName]; + }]; + if ([extraFields count]) { + [extraFields sortUsingSelector:@selector(caseInsensitiveCompare:)]; + [fields addObjectsFromArray:extraFields]; + } + + [self updateColumnWidths]; } +- (void)updateColumnWidths { + NSTableColumn *tc = [itemTableView tableColumnWithIdentifier:@"FieldName"]; + NSCell *cell = [tc dataCell]; + CGFloat width = 0.0; + NSUInteger i, iMax = [fields count]; + for (i = 0; i < iMax; i++) { + [cell setStringValue:[[fields objectAtIndex:i] localizedFieldName]]; + width = fmax(width, ceil([cell cellSize].width)); + } + [tc setWidth:width]; + [tc setMaxWidth:width]; + [tc setMinWidth:width]; + tc = [itemTableView tableColumnWithIdentifier:@"Num"]; + cell = [tc dataCell]; + width = 0.0; + for (i = 0; i < iMax; i++) { + NSString *value = @""; + if (i < 10) + value = [NSString stringWithFormat:@"%@%ld", [NSString commandKeyIndicatorString], (long)((i + 1) % 10)]; + else if (i < 20) + value = [NSString stringWithFormat:@"%@%@%ld", [NSString alternateKeyIndicatorString], [NSString commandKeyIndicatorString], (long)((i + 1) % 10)]; + [cell setStringValue:value]; + width = fmax(width, ceil([cell cellSize].width)); + } + [tc setWidth:width]; + [tc setMaxWidth:width]; + [tc setMinWidth:width]; + [itemTableView sizeToFit]; +} + #pragma mark Page loading methods - (void)setLoading:(BOOL)loading{ @@ -1426,8 +1470,8 @@ - (void)autoDiscoverFromStringWithPublication:(BibItem *)pub { BibItem *item = [self publication]; - [item setPubType:[pub pubType]]; [item setPubFields:[pub pubFields]]; + [self setType:[pub pubType]]; [itemTableView reloadData]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit