Revision: 29444
http://sourceforge.net/p/bibdesk/svn/29444
Author: hofman
Date: 2025-08-24 08:18:15 +0000 (Sun, 24 Aug 2025)
Log Message:
-----------
Show number of linked files and URLs in text import
Modified Paths:
--------------
trunk/bibdesk/BDSKTextImportController.h
trunk/bibdesk/BDSKTextImportController.m
trunk/bibdesk/Base.lproj/TextImport.xib
Modified: trunk/bibdesk/BDSKTextImportController.h
===================================================================
--- trunk/bibdesk/BDSKTextImportController.h 2025-08-23 21:26:48 UTC (rev
29443)
+++ trunk/bibdesk/BDSKTextImportController.h 2025-08-24 08:18:15 UTC (rev
29444)
@@ -52,6 +52,10 @@
BDSKTextImportItemTableView *itemTableView;
NSTextField *citeKeyField;
NSTextField *statusLine;
+ NSTextField *linkedFileField1;
+ NSImageView *linkedFileImageView1;
+ NSTextField *linkedFileField2;
+ NSImageView *linkedFileImageView2;
NSButton *addButton;
NSButton *addAndCloseButton;
NSButton *closeButton;
@@ -104,6 +108,10 @@
@property (nonatomic, nullable, strong) IBOutlet BDSKTextImportItemTableView*
itemTableView;
@property (nonatomic, nullable, strong) IBOutlet NSTextField *citeKeyField;
@property (nonatomic, nullable, strong) IBOutlet NSTextField *statusLine;
+@property (nonatomic, nullable, strong) IBOutlet NSTextField *linkedFileField1;
+@property (nonatomic, nullable, strong) IBOutlet NSImageView
*linkedFileImageView1;
+@property (nonatomic, nullable, strong) IBOutlet NSTextField *linkedFileField2;
+@property (nonatomic, nullable, strong) IBOutlet NSImageView
*linkedFileImageView2;
@property (nonatomic, nullable, strong) IBOutlet NSButton *addButton;
@property (nonatomic, nullable, strong) IBOutlet NSButton *addAndCloseButton;
@property (nonatomic, nullable, strong) IBOutlet NSButton *closeButton;
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2025-08-23 21:26:48 UTC (rev
29443)
+++ trunk/bibdesk/BDSKTextImportController.m 2025-08-24 08:18:15 UTC (rev
29444)
@@ -132,6 +132,7 @@
- (void)clearWebView;
- (void)updateTypeAndFields;
- (void)updateColumnWidths;
+- (void)updateLinkedFileUI;
- (void)setLoading:(BOOL)loading;
@@ -149,7 +150,7 @@
@implementation BDSKTextImportController
-@synthesize sourceTextView, itemTableView, citeKeyField, statusLine,
addButton, addAndCloseButton, closeButton, clearButton, itemTypeButton,
actionMenuButton, splitView, sourceView, webViewBox, webViewView,
progressIndicator, backButton, forwardButton, stopOrReloadButton,
citeKeyWarningButton, addedPublications=itemsAdded;
+@synthesize sourceTextView, itemTableView, citeKeyField, statusLine,
linkedFileField1, linkedFileImageView1, linkedFileField2, linkedFileImageView2,
addButton, addAndCloseButton, closeButton, clearButton, itemTypeButton,
actionMenuButton, splitView, sourceView, webViewBox, webViewView,
progressIndicator, backButton, forwardButton, stopOrReloadButton,
citeKeyWarningButton, addedPublications=itemsAdded;
@dynamic publication;
- (instancetype)initForOwner:(id <BDSKOwner>)anOwner {
@@ -194,6 +195,8 @@
[itemTypeButton addItemsWithTitles:[[BDSKTypeManager sharedManager]
types]];
[self updateTypeAndFields];
+ [self updateLinkedFileUI];
+
[sourceTextView setTextColor:[NSColor textColor]];
if (@available(macOS 10.14, *))
[sourceTextView setDrawsBackground:NO];
@@ -268,6 +271,7 @@
[citeKeyField setStringValue:[newItem citeKey]];
[self setCiteKeyDuplicateWarning:[newItem isValidCiteKey:[newItem
citeKey]] == NO];
[itemTableView reloadData];
+ [self updateLinkedFileUI];
}
- (IBAction)closeAction:(id)sender{
@@ -303,6 +307,7 @@
[citeKeyField setStringValue:[newItem citeKey]];
[self setCiteKeyDuplicateWarning:[newItem isValidCiteKey:[newItem
citeKey]] == NO];
[itemTableView reloadData];
+ [self updateLinkedFileUI];
}
- (IBAction)showHelpAction:(id)sender{
@@ -600,7 +605,9 @@
[itemTableView reloadData];
} else if ([changeKey isEqualToString:BDSKPubTypeString]) {
[self updateTypeAndFields];
- } else if ([changeKey isEqualToString:BDSKRemoteURLString] == NO &&
[changeKey isEqualToString:BDSKLocalFileString] == NO) {
+ } else if ([changeKey isEqualToString:BDSKRemoteURLString]|| [changeKey
isEqualToString:BDSKLocalFileString]) {
+ [self updateLinkedFileUI];
+ } else {
[itemTableView reloadData];
}
}
@@ -867,6 +874,44 @@
[itemTableView sizeToFit];
}
+- (void)updateLinkedFileUI {
+ BibItem *pub = [self publication];
+ NSUInteger fileCount = [[pub localFiles] count];
+ NSUInteger urlCount = [[pub remoteURLs] count];
+ NSString *toolTip;
+ if (urlCount > 0) {
+ [linkedFileImageView2 setImage:[NSImage URLImage]];
+ [linkedFileField2 setStringValue:[NSString stringWithFormat:@"%lu",
(unsigned long)urlCount]];
+ toolTip = [[[pub remoteURLs] valueForKeyPath:@"URL.absoluteString"]
componentsJoinedByString:@"\n"];
+ [linkedFileImageView2 setToolTip:toolTip];
+ [linkedFileField2 setToolTip:toolTip];
+ if (fileCount > 0) {
+ [linkedFileImageView1 setImage:[NSImage paperclipImage]];
+ [linkedFileField1 setStringValue:[NSString
stringWithFormat:@"%lu", (unsigned long)fileCount]];
+ toolTip = [[[pub existingLocalFiles] valueForKey:@"path"]
componentsJoinedByString:@"\n"];
+ [linkedFileImageView1 setToolTip:toolTip];
+ [linkedFileField1 setToolTip:toolTip];
+ }
+ } else if (fileCount > 0) {
+ [linkedFileImageView2 setImage:[NSImage paperclipImage]];
+ [linkedFileField2 setStringValue:[NSString stringWithFormat:@"%lu",
(unsigned long)fileCount]];
+ toolTip = [[[pub existingLocalFiles] valueForKey:@"path"]
componentsJoinedByString:@"\n"];
+ [linkedFileImageView2 setToolTip:toolTip];
+ [linkedFileField2 setToolTip:toolTip];
+ } else {
+ [linkedFileImageView2 setImage:nil];
+ [linkedFileField2 setStringValue:@""];
+ [linkedFileImageView2 setToolTip:nil];
+ [linkedFileField2 setToolTip:nil];
+ }
+ if (fileCount == 0 || urlCount == 0) {
+ [linkedFileImageView1 setImage:nil];
+ [linkedFileField1 setStringValue:@""];
+ [linkedFileImageView1 setToolTip:nil];
+ [linkedFileField1 setToolTip:nil];
+ }
+}
+
#pragma mark Page loading methods
- (void)setLoading:(BOOL)loading{
Modified: trunk/bibdesk/Base.lproj/TextImport.xib
===================================================================
--- trunk/bibdesk/Base.lproj/TextImport.xib 2025-08-23 21:26:48 UTC (rev
29443)
+++ trunk/bibdesk/Base.lproj/TextImport.xib 2025-08-24 08:18:15 UTC (rev
29444)
@@ -19,6 +19,10 @@
<outlet property="forwardButton" destination="176" id="185"/>
<outlet property="itemTableView" destination="22" id="31"/>
<outlet property="itemTypeButton" destination="20" id="32"/>
+ <outlet property="linkedFileField1" destination="2Rr-PU-Ymu"
id="8kZ-Vu-U3j"/>
+ <outlet property="linkedFileField2" destination="EIF-pq-DTr"
id="dgw-dB-j3H"/>
+ <outlet property="linkedFileImageView1"
destination="7Cj-T2-zag" id="GTf-2B-xhW"/>
+ <outlet property="linkedFileImageView2"
destination="B2J-hu-16z" id="7Ox-vq-n6i"/>
<outlet property="progressIndicator" destination="178"
id="187"/>
<outlet property="sourceTextView" destination="51" id="57"/>
<outlet property="sourceView" destination="L50-7z-90R"
id="rU0-IF-NPw"/>
@@ -63,7 +67,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750"
preferredMaxLayoutWidth="556" translatesAutoresizingMaskIntoConstraints="NO"
id="13">
- <rect key="frame" x="18" y="60" width="558"
height="14"/>
+ <rect key="frame" x="18" y="60" width="506"
height="14"/>
<textFieldCell key="cell" scrollable="YES"
lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left"
id="305">
<font key="font" metaFont="message" size="11"/>
<color key="textColor" name="controlTextColor"
catalog="System" colorSpace="catalog"/>
@@ -425,35 +429,75 @@
<action selector="clearAction:" target="-2"
id="235"/>
</connections>
</button>
+ <textField horizontalHuggingPriority="251"
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO"
id="EIF-pq-DTr">
+ <rect key="frame" x="572" y="60" width="4"
height="16"/>
+ <textFieldCell key="cell" lineBreakMode="clipping"
id="PbU-uQ-twC">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor"
catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor"
name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField horizontalHuggingPriority="251"
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO"
id="2Rr-PU-Ymu">
+ <rect key="frame" x="546" y="60" width="4"
height="16"/>
+ <textFieldCell key="cell" lineBreakMode="clipping"
id="vua-GF-gax">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="controlTextColor"
catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor"
name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <imageView horizontalHuggingPriority="251"
verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO"
id="B2J-hu-16z">
+ <rect key="frame" x="556" y="60" width="16"
height="16"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="16"
id="DGp-8V-b05"/>
+ <constraint firstAttribute="width" constant="16"
id="O2n-nP-LQu"/>
+ </constraints>
+ <imageCell key="cell" refusesFirstResponder="YES"
alignment="left" imageScaling="proportionallyDown" id="8LZ-yM-cPT"/>
+ </imageView>
+ <imageView horizontalHuggingPriority="251"
verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO"
id="7Cj-T2-zag">
+ <rect key="frame" x="530" y="60" width="16"
height="16"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="16"
id="vl6-Sj-FCE"/>
+ <constraint firstAttribute="width" constant="16"
id="ztV-Bm-tws"/>
+ </constraints>
+ <imageCell key="cell" refusesFirstResponder="YES"
alignment="left" imageScaling="proportionallyDown" id="uan-tC-X6C"/>
+ </imageView>
</subviews>
<constraints>
<constraint firstItem="219" firstAttribute="width"
secondItem="234" secondAttribute="width" id="67V-NA-QeG"/>
<constraint firstItem="195" firstAttribute="firstBaseline"
secondItem="11" secondAttribute="firstBaseline" id="6GB-VF-osz"/>
<constraint firstAttribute="trailing" secondItem="195"
secondAttribute="trailing" constant="20" symbolic="YES" id="8lE-Jq-5DL"/>
+ <constraint firstItem="2Rr-PU-Ymu"
firstAttribute="leading" secondItem="7Cj-T2-zag" secondAttribute="trailing"
constant="2" id="Axd-NV-DLL"/>
<constraint firstItem="195" firstAttribute="leading"
secondItem="10" secondAttribute="trailing" constant="12" symbolic="YES"
id="ETS-E6-ern"/>
+ <constraint firstItem="2Rr-PU-Ymu"
firstAttribute="firstBaseline" secondItem="13" secondAttribute="firstBaseline"
id="Eqf-Wc-bht"/>
<constraint firstItem="13" firstAttribute="leading"
secondItem="24" secondAttribute="leading" constant="20" symbolic="YES"
id="FZb-Cm-gsO"/>
<constraint firstItem="234" firstAttribute="leading"
relation="greaterThanOrEqual" secondItem="11" secondAttribute="trailing"
constant="12" symbolic="YES" id="HRX-39-BoP"/>
<constraint firstItem="219" firstAttribute="leading"
secondItem="234" secondAttribute="trailing" constant="12" symbolic="YES"
id="J9K-UJ-QRo"/>
<constraint firstItem="195" firstAttribute="width"
secondItem="234" secondAttribute="width" id="JN2-Wc-Ase"/>
<constraint firstItem="13" firstAttribute="top"
secondItem="71" secondAttribute="bottom" constant="8" symbolic="YES"
id="Kuv-wl-L2e"/>
+ <constraint firstItem="B2J-hu-16z"
firstAttribute="leading" secondItem="2Rr-PU-Ymu" secondAttribute="trailing"
constant="8" symbolic="YES" id="L7c-iA-RsT"/>
<constraint firstItem="10" firstAttribute="width"
secondItem="234" secondAttribute="width" id="MDu-jB-0az"/>
<constraint firstItem="10" firstAttribute="leading"
secondItem="219" secondAttribute="trailing" constant="12" symbolic="YES"
id="Msz-yQ-YPj"/>
+ <constraint firstAttribute="trailing"
secondItem="EIF-pq-DTr" secondAttribute="trailing" constant="20" symbolic="YES"
id="Ofm-4A-aGj"/>
<constraint firstItem="11" firstAttribute="leading"
secondItem="24" secondAttribute="leading" constant="20" symbolic="YES"
id="Q7E-xa-iDx"/>
- <constraint firstAttribute="trailing" secondItem="13"
secondAttribute="trailing" constant="20" symbolic="YES" id="Z2W-oR-u28"/>
<constraint firstAttribute="trailing" secondItem="71"
secondAttribute="trailing" id="eRb-BR-IgN"/>
<constraint firstItem="71" firstAttribute="leading"
secondItem="24" secondAttribute="leading" id="ewR-05-Mgc"/>
<constraint firstItem="219" firstAttribute="firstBaseline"
secondItem="11" secondAttribute="firstBaseline" id="giY-gb-aXu"/>
<constraint firstItem="71" firstAttribute="top"
secondItem="24" secondAttribute="top" id="gv4-Oc-VaU"/>
+ <constraint firstItem="2Rr-PU-Ymu"
firstAttribute="centerY" secondItem="7Cj-T2-zag" secondAttribute="centerY"
id="i16-eX-xU0"/>
+ <constraint firstItem="EIF-pq-DTr"
firstAttribute="centerY" secondItem="B2J-hu-16z" secondAttribute="centerY"
id="iqM-fz-03F"/>
<constraint firstItem="195" firstAttribute="top"
secondItem="13" secondAttribute="bottom" constant="20" id="jl5-iL-eep"/>
+ <constraint firstItem="EIF-pq-DTr"
firstAttribute="leading" secondItem="B2J-hu-16z" secondAttribute="trailing"
constant="2" id="mTi-FX-Dxd"/>
<constraint firstItem="10" firstAttribute="firstBaseline"
secondItem="11" secondAttribute="firstBaseline" id="p7Q-gd-JOk"/>
<constraint firstItem="234" firstAttribute="firstBaseline"
secondItem="11" secondAttribute="firstBaseline" id="qgg-b5-H7f"/>
<constraint firstAttribute="bottom" secondItem="195"
secondAttribute="bottom" constant="20" symbolic="YES" id="vvW-rS-NUc"/>
+ <constraint firstItem="7Cj-T2-zag"
firstAttribute="leading" secondItem="13" secondAttribute="trailing"
constant="8" symbolic="YES" id="yGn-12-2Za"/>
+ <constraint firstItem="EIF-pq-DTr"
firstAttribute="firstBaseline" secondItem="2Rr-PU-Ymu"
secondAttribute="firstBaseline" id="zSY-9Q-nSu"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="26"/>
</connections>
- <point key="canvasLocation" x="139" y="147"/>
+ <point key="canvasLocation" x="139" y="146.5"/>
</window>
<customView id="95" userLabel="WebViewView">
<rect key="frame" x="0.0" y="0.0" width="293" height="299"/>
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