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
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit