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

Reply via email to