Revision: 29248
          http://sourceforge.net/p/bibdesk/svn/29248
Author:   hofman
Date:     2025-04-30 16:30:40 +0000 (Wed, 30 Apr 2025)
Log Message:
-----------
Support authentication for SRU groups

Modified Paths:
--------------
    trunk/bibdesk/BDSKSRUGroupServer.h
    trunk/bibdesk/BDSKSRUGroupServer.m
    trunk/bibdesk/BDSKSearchGroup.m
    trunk/bibdesk/BDSKSearchGroupSheetController.h
    trunk/bibdesk/BDSKSearchGroupSheetController.m
    trunk/bibdesk/BDSKServerInfo.m
    trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib

Modified: trunk/bibdesk/BDSKSRUGroupServer.h
===================================================================
--- trunk/bibdesk/BDSKSRUGroupServer.h  2025-04-30 15:31:47 UTC (rev 29247)
+++ trunk/bibdesk/BDSKSRUGroupServer.h  2025-04-30 16:30:40 UTC (rev 29248)
@@ -56,6 +56,8 @@
     NSInteger requestedResults;
     NSInteger downloadState;
     NSString *errorMessage;
+    NSString *user;
+    NSString *password;
 }
 
 @property (class, nonatomic, readonly) NSArray *supportedRecordSyntaxes;

Modified: trunk/bibdesk/BDSKSRUGroupServer.m
===================================================================
--- trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-30 15:31:47 UTC (rev 29247)
+++ trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-30 16:30:40 UTC (rev 29248)
@@ -145,11 +145,22 @@
 }
 
 - (void)startDownloadForRange:(NSRange)range {
+    if (needsReset) {
+        NSString *aUser = nil;
+        NSString *aPassword = nil;
+        [[self serverInfo] getUsername:&aUser password:&aPassword];
+        user = aUser;
+        password = aPassword;
+    }
     NSString *query = [self searchQueryWithRange:range];
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[self 
serverURL]];
     [request setHTTPMethod:@"POST"];
     [request setValue:@"application/x-www-form-urlencoded; charset=utf-8" 
forHTTPHeaderField:@"Content-type"];
     [request setHTTPBody:[query dataUsingEncoding:NSUTF8StringEncoding]];
+    if (user && password) {
+        NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, 
password] dataUsingEncoding:NSUTF8StringEncoding] 
base64EncodedStringWithOptions:0];
+        [request setValue:[NSString stringWithFormat:@"Basic %@", authString] 
forHTTPHeaderField:@"Authorization"];
+    }
     [download cancel];
     download = [[BDSKDownloader sharedDownloader] 
startDataDownloadWithRequest:request delegate:self];
 }

Modified: trunk/bibdesk/BDSKSearchGroup.m
===================================================================
--- trunk/bibdesk/BDSKSearchGroup.m     2025-04-30 15:31:47 UTC (rev 29247)
+++ trunk/bibdesk/BDSKSearchGroup.m     2025-04-30 16:30:40 UTC (rev 29248)
@@ -55,10 +55,10 @@
 #import "NSFileManager_BDSKExtensions.h"
 
 NSString *BDSKSearchGroupEntrez = @"entrez";
+NSString *BDSKSearchGroupZoom = @"zoom";
 NSString *BDSKSearchGroupSRU = @"sru";
-NSString *BDSKSearchGroupZoom = @"zoom";
+NSString *BDSKSearchGroupDBLP = @"dblp";
 NSString *BDSKSearchGroupISI = @"isi";
-NSString *BDSKSearchGroupDBLP = @"dblp";
 
 NSString *BDSKSearchGroupURLScheme = @"x-bdsk-search";
 
@@ -419,15 +419,10 @@
     [dictionary setValue:aName ?: aDatabase forKey:@"name"];
     [dictionary setValue:aDatabase forKey:@"database"];
     [dictionary setValue:aSearchTerm forKey:@"search term"];
-    if ([aType isEqualToString:BDSKSearchGroupZoom]) {
+    if ([aType isEqualToString:BDSKSearchGroupZoom] || [aType 
isEqualToString:BDSKSearchGroupSRU]) {
         [dictionary setValue:aHost forKey:@"host"];
         [dictionary setValue:aPort forKey:@"port"];
         [dictionary setValue:options forKey:@"options"];
-    } else if ([aType isEqualToString:BDSKSearchGroupSRU]) {
-        [dictionary setValue:aHost forKey:@"host"];
-        [dictionary setValue:aPort forKey:@"port"];
-        if ([options count] > 0)
-            [dictionary setValue:options forKey:@"options"];
     } else if ([aType isEqualToString:BDSKSearchGroupISI] && [options count] > 
0) {
         [dictionary setValue:options forKey:@"options"];
     }
@@ -442,12 +437,12 @@
         serverClass = [BDSKEntrezGroupServer class];
     else if ([aType isEqualToString:BDSKSearchGroupZoom])
         serverClass = [BDSKZoomGroupServer class];
+    else if ([aType isEqualToString:BDSKSearchGroupSRU])
+        serverClass = [BDSKSRUGroupServer class];
+    else if ([aType isEqualToString:BDSKSearchGroupDBLP])
+        serverClass = [BDSKDBLPGroupServer class];
     else if ([aType isEqualToString:BDSKSearchGroupISI])
         serverClass = [BDSKISIGroupServer class];
-    else if ([aType isEqualToString:BDSKSearchGroupDBLP])
-        serverClass = [BDSKDBLPGroupServer class];
-    else if ([aType isEqualToString:BDSKSearchGroupSRU])
-        serverClass = [BDSKSRUGroupServer class];
     else
         BDSKASSERT_NOT_REACHED("unknown search group type");
     return [[serverClass alloc] initWithGroup:group serverInfo:info];

Modified: trunk/bibdesk/BDSKSearchGroupSheetController.h
===================================================================
--- trunk/bibdesk/BDSKSearchGroupSheetController.h      2025-04-30 15:31:47 UTC 
(rev 29247)
+++ trunk/bibdesk/BDSKSearchGroupSheetController.h      2025-04-30 16:30:40 UTC 
(rev 29248)
@@ -113,10 +113,10 @@
 @property (nonatomic, getter=isEditable) BOOL editable;
 @property (nonatomic, getter=isResettable) BOOL resettable;
 @property (nonatomic, readonly, getter=isZoom) BOOL zoom;
+@property (nonatomic, readonly, getter=isSRU) BOOL SRU;
 @property (nonatomic, readonly, getter=isISI) BOOL ISI;
-@property (nonatomic, readonly, getter=isSRU) BOOL SRU;
-@property (nonatomic, readonly, getter=isZoomOrISI) BOOL zoomOrISI;
 @property (nonatomic, readonly, getter=isZoomOrSRU) BOOL zoomOrSRU;
+@property (nonatomic, readonly, getter=isZoomOrISI) BOOL zoomOrSRUOrISI;
 
 @property (nonatomic, strong) NSString *type;
 

Modified: trunk/bibdesk/BDSKSearchGroupSheetController.m
===================================================================
--- trunk/bibdesk/BDSKSearchGroupSheetController.m      2025-04-30 15:31:47 UTC 
(rev 29247)
+++ trunk/bibdesk/BDSKSearchGroupSheetController.m      2025-04-30 16:30:40 UTC 
(rev 29248)
@@ -55,13 +55,13 @@
 @implementation BDSKSearchGroupSheetController
 
 @synthesize serverPopup, nameField, addressField, portField, databaseField, 
passwordField, userField, syntaxPopup, encodingComboBox, 
removeDiacriticsButton, liteButton, editButton, addRemoveButton, serverView, 
revealButton, okButton, cancelButton, bottomConstraint, objectController, 
custom, editable, resettable;
-@dynamic zoom, ISI, SRU, zoomOrISI, zoomOrSRU, typeTag, databases, serverInfo, 
undoManager;
+@dynamic zoom, SRU, ISI, zoomOrSRU, zoomOrSRUOrISI, typeTag, databases, 
serverInfo, undoManager;
 
 + (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key {
     NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];
     if ([@"type" isEqualToString:key])
         keyPaths = [keyPaths setByAddingObject:@"serverInfo"];
-    else if ([[NSSet setWithObjects:@"typeTag", @"zoom", @"ISI", @"SRU", 
@"zoomOrISI", @"zoomOrSRU", @"databases", nil] containsObject:key])
+    else if ([[NSSet setWithObjects:@"typeTag", @"zoom", @"SRU", @"ISI", 
@"zoomOrSRU", @"zoomOrSRUOrISI", @"databases", nil] containsObject:key])
         keyPaths = [keyPaths setByAddingObject:@"type"];
     return keyPaths;
 }
@@ -338,14 +338,14 @@
 
 - (BOOL)isZoom { return [serverInfo isZoom]; }
 
-- (BOOL)isISI { return [serverInfo isISI]; }
-
 - (BOOL)isSRU { return [serverInfo isSRU]; }
 
-- (BOOL)isZoomOrISI { return [serverInfo isZoom] || [serverInfo isISI]; }
+- (BOOL)isISI { return [serverInfo isISI]; }
 
 - (BOOL)isZoomOrSRU { return [serverInfo isZoom] || [serverInfo isSRU]; }
 
+- (BOOL)isZoomOrSRUOrISI { return [serverInfo isZoom] || [serverInfo isSRU] || 
[serverInfo isISI]; }
+
 - (BDSKServerInfo *)serverInfo { return serverInfo; }
 
 - (void)setServerInfo:(BDSKServerInfo *)info;

Modified: trunk/bibdesk/BDSKServerInfo.m
===================================================================
--- trunk/bibdesk/BDSKServerInfo.m      2025-04-30 15:31:47 UTC (rev 29247)
+++ trunk/bibdesk/BDSKServerInfo.m      2025-04-30 16:30:40 UTC (rev 29248)
@@ -88,15 +88,14 @@
 
 + (instancetype)defaultServerInfoWithType:(NSString *)aType;
 {
-    BOOL isZoom = [aType isEqualToString:BDSKSearchGroupZoom];
-    BOOL isSRU = [aType isEqualToString:BDSKSearchGroupSRU];
+    BOOL isZoomOrSRU = [aType isEqualToString:BDSKSearchGroupZoom] || [aType 
isEqualToString:BDSKSearchGroupSRU];
     
     return [[[self class] alloc] initWithType:aType
                                          name:DEFAULT_NAME
                                      database:DEFAULT_DATABASE
-                                         host:isZoom || isSRU ? DEFAULT_HOST : 
nil
-                                         port:isZoom || isSRU ? DEFAULT_PORT : 
nil
-                                      options:isZoom ? @{} : nil];
+                                         host:isZoomOrSRU ? DEFAULT_HOST : nil
+                                         port:isZoomOrSRU ? DEFAULT_PORT : nil
+                                      options:isZoomOrSRU ? @{} : nil];
 }
 
 - (instancetype)initWithType:(NSString *)aType name:(NSString *)aName 
database:(NSString *)aDbase host:(NSString *)aHost port:(NSString *)aPort 
options:(NSDictionary *)opts;
@@ -115,16 +114,12 @@
             password = [[opts objectForKey:PASSWORD_KEY] copy];
             options = [opts count] > 0 ? [opts mutableCopy] : nil;
             [options removeObjectForKey:PASSWORD_KEY];
-        } else if ([self isZoom]) {
+        } else if ([self isZoom] || [self isSRU]) {
             host = [aHost copy];
             port = [aPort copy];
             password = [[opts objectForKey:PASSWORD_KEY] copy];
             options = [opts mutableCopy];
             [options removeObjectForKey:PASSWORD_KEY];
-        } else if ([self isSRU]) {
-            host = [aHost copy];
-            port = [aPort copy];
-            options = [opts count] > 0 ? [opts mutableCopy] : nil;
         } else {
             self = nil;
         }
@@ -250,7 +245,7 @@
 - (BOOL)isLite { return [[options objectForKey:LITE_KEY] boolValue]; }
 
 - (NSDictionary *)options {
-    return ([self isZoom] || [options count] > 0) ? [options copy] : nil;
+    return ([self isZoom]  || [self isSRU] || [options count] > 0) ? [options 
copy] : nil;
 }
 
 - (BOOL)isEntrez { return [[self type] isEqualToString:BDSKSearchGroupEntrez]; 
}
@@ -264,18 +259,18 @@
         return BDSKServerTypeEntrez;
     if ([self isZoom])
         return BDSKServerTypeZoom;
+    if ([self isSRU])
+        return BDSKServerTypeSRU;
+    if ([self isDBLP])
+        return BDSKServerTypeDBLP;
     if ([self isISI])
         return BDSKServerTypeISI;
-    if ([self isDBLP])
-        return BDSKServerTypeDBLP;
-    if ([self isSRU])
-        return BDSKServerTypeSRU;
     BDSKASSERT_NOT_REACHED("Unknown search type");
     return BDSKServerTypeEntrez;
 }
 
 - (BOOL)getUsername:(NSString **)outUsername password:(NSString **)outPassword 
{
-    if ([self isZoom] == NO && [self isISI] == NO)
+    if ([self isZoom] == NO && [self isSRU] == NO && [self isISI] == NO)
         return NO;
     NSString *user = [self username];
     if (user == nil)
@@ -303,7 +298,7 @@
 }
 
 - (void)savePasswordInKeychain {
-    if ([self isZoom] == NO && [self isISI] == NO)
+    if ([self isZoom] == NO && [self isSRU] == NO && [self isISI] == NO)
         return;
     // don't get the password from the keychain
     [passwordLock lockForReading];
@@ -412,7 +407,7 @@
 - (void)setType:(NSString *)newType {
     if ([type isEqualToString:newType] == NO) {
         type = newType;
-        if ([self isZoom]) {
+        if ([self isZoom] || [self isSRU]) {
             if (host == nil)
                 [self setHost:DEFAULT_HOST];
             if (port == nil)
@@ -419,11 +414,6 @@
                 [self setPort:DEFAULT_PORT];
             password = nil;
             options = [[NSMutableDictionary alloc] init];
-        } else if ([self isSRU]) {
-            if (host == nil)
-                [self setHost:DEFAULT_HOST];
-            if (port == nil)
-                [self setPort:DEFAULT_PORT];
         } else {
             password = nil;
             options = nil;

Modified: trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib
===================================================================
--- trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib   2025-04-30 15:31:47 UTC 
(rev 29247)
+++ trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib   2025-04-30 16:30:40 UTC 
(rev 29248)
@@ -162,15 +162,8 @@
                                         <connections>
                                             <accessibilityConnection 
property="title" destination="200" id="527"/>
                                             <binding destination="-2" 
name="enabled" keyPath="editable" id="463"/>
-                                            <binding destination="569" 
name="value" keyPath="selection.password" id="582">
+                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrSRUOrISI" previousBinding="463" id="kfd-LC-U9b">
                                                 <dictionary key="options">
-                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
-                                                    <string 
key="NSNullPlaceholder">Password</string>
-                                                    <integer 
key="NSValidatesImmediately" value="1"/>
-                                                </dictionary>
-                                            </binding>
-                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrISI" previousBinding="463" id="983">
-                                                <dictionary key="options">
                                                     <integer 
key="NSMultipleValuesPlaceholder" value="-1"/>
                                                     <integer 
key="NSNoSelectionPlaceholder" value="-1"/>
                                                     <integer 
key="NSNotApplicablePlaceholder" value="-1"/>
@@ -177,11 +170,18 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrISI" previousBinding="983" id="984">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRUOrISI" previousBinding="kfd-LC-U9b" 
id="S0U-3a-9WO">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
                                             </binding>
+                                            <binding destination="569" 
name="value" keyPath="selection.password" id="582">
+                                                <dictionary key="options">
+                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
+                                                    <string 
key="NSNullPlaceholder">Password</string>
+                                                    <integer 
key="NSValidatesImmediately" value="1"/>
+                                                </dictionary>
+                                            </binding>
                                             <outlet property="nextKeyView" 
destination="250" id="268"/>
                                         </connections>
                                     </textField>
@@ -193,7 +193,7 @@
                                             <color key="backgroundColor" 
name="controlColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
                                         <connections>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrISI" id="971">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRUOrISI" id="3Ei-Eq-Hn3">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
@@ -240,15 +240,8 @@
                                         <connections>
                                             <accessibilityConnection 
property="title" destination="195" id="526"/>
                                             <binding destination="-2" 
name="enabled" keyPath="editable" id="461"/>
-                                            <binding destination="569" 
name="value" keyPath="selection.username" id="580">
+                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrSRUOrISI" previousBinding="461" id="Jeq-bz-OJp">
                                                 <dictionary key="options">
-                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
-                                                    <string 
key="NSNullPlaceholder">User Name</string>
-                                                    <integer 
key="NSValidatesImmediately" value="1"/>
-                                                </dictionary>
-                                            </binding>
-                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrISI" previousBinding="461" id="981">
-                                                <dictionary key="options">
                                                     <integer 
key="NSMultipleValuesPlaceholder" value="-1"/>
                                                     <integer 
key="NSNoSelectionPlaceholder" value="-1"/>
                                                     <integer 
key="NSNotApplicablePlaceholder" value="-1"/>
@@ -255,11 +248,18 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrISI" previousBinding="981" id="982">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRUOrISI" previousBinding="Jeq-bz-OJp" 
id="5qM-9P-0IQ">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
                                             </binding>
+                                            <binding destination="569" 
name="value" keyPath="selection.username" id="580">
+                                                <dictionary key="options">
+                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
+                                                    <string 
key="NSNullPlaceholder">User Name</string>
+                                                    <integer 
key="NSValidatesImmediately" value="1"/>
+                                                </dictionary>
+                                            </binding>
                                             <outlet property="nextKeyView" 
destination="197" id="203"/>
                                         </connections>
                                     </textField>
@@ -344,7 +344,7 @@
                                             <color key="backgroundColor" 
name="controlColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
                                         <connections>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrISI" id="972">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRUOrISI" id="9qR-dP-YL2">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
@@ -646,8 +646,8 @@
                                         </connections>
                                     </comboBox>
                                     <button toolTip="Use https" 
translatesAutoresizingMaskIntoConstraints="NO" id="nTD-tF-zzg">
-                                        <rect key="frame" x="96" y="67" 
width="58" height="16"/>
-                                        <buttonCell key="cell" type="check" 
title="Secure" bezelStyle="regularSquare" imagePosition="left" alignment="left" 
controlSize="small" state="on" inset="2" id="8yH-PP-g6U">
+                                        <rect key="frame" x="96" y="17" 
width="58" height="16"/>
+                                        <buttonCell key="cell" type="check" 
title="Secure" bezelStyle="regularSquare" imagePosition="left" alignment="left" 
controlSize="small" inset="2" id="8yH-PP-g6U">
                                             <behavior key="behavior" 
changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                             <font key="font" 
metaFont="message" size="11"/>
                                         </buttonCell>
@@ -660,12 +660,12 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="enabled" keyPath="editable" id="7lm-7C-ADf"/>
                                             <binding destination="-2" 
name="hidden" keyPath="SRU" previousBinding="Fuf-uY-G8r" id="Mz7-eb-7dl">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
                                             </binding>
+                                            <binding destination="-2" 
name="enabled" keyPath="editable" id="7lm-7C-ADf"/>
                                             <binding destination="569" 
name="value" keyPath="selection.secure" id="Woe-P1-njP"/>
                                         </connections>
                                     </button>
@@ -683,7 +683,6 @@
                                     <constraint firstItem="250" 
firstAttribute="firstBaseline" secondItem="296" secondAttribute="firstBaseline" 
id="2qw-YB-6Ae"/>
                                     <constraint firstItem="194" 
firstAttribute="leading" secondItem="3BL-J9-tal" secondAttribute="leading" 
id="3BB-IE-AFV"/>
                                     <constraint firstItem="250" 
firstAttribute="top" secondItem="316" secondAttribute="bottom" constant="8" 
symbolic="YES" id="3on-5G-TpL"/>
-                                    <constraint firstItem="nTD-tF-zzg" 
firstAttribute="leading" secondItem="3BL-J9-tal" secondAttribute="leading" 
id="3qP-Bm-ARu"/>
                                     <constraint firstAttribute="bottom" 
secondItem="260" secondAttribute="bottom" constant="8" id="3z6-1F-2WX"/>
                                     <constraint firstItem="201" 
firstAttribute="top" secondItem="194" secondAttribute="bottom" constant="8" 
symbolic="YES" id="4Zv-6g-ZoO"/>
                                     <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="985" secondAttribute="trailing" 
constant="20" symbolic="YES" id="4l5-LZ-0F0"/>
@@ -694,11 +693,11 @@
                                     <constraint firstItem="275" 
firstAttribute="leading" relation="greaterThanOrEqual" secondItem="189" 
secondAttribute="leading" constant="32" id="8lq-5S-qhX"/>
                                     <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="247" secondAttribute="trailing" 
constant="20" symbolic="YES" id="8xy-y2-7Ym"/>
                                     <constraint firstItem="258" 
firstAttribute="top" secondItem="250" secondAttribute="bottom" constant="8" 
symbolic="YES" id="9ip-xN-yVd"/>
-                                    <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="nTD-tF-zzg" 
secondAttribute="trailing" constant="20" symbolic="YES" id="9xE-Gs-7Kh"/>
                                     <constraint firstItem="316" 
firstAttribute="leading" secondItem="189" secondAttribute="leading" 
constant="12" id="Aq1-KC-EzH"/>
                                     <constraint firstItem="201" 
firstAttribute="leading" secondItem="3BL-J9-tal" secondAttribute="leading" 
id="BId-hK-GcU"/>
                                     <constraint firstAttribute="trailing" 
secondItem="260" secondAttribute="trailing" constant="12" id="BVi-Ww-Jq8"/>
                                     <constraint firstItem="305" 
firstAttribute="firstBaseline" secondItem="304" secondAttribute="firstBaseline" 
id="BZM-at-pYv"/>
+                                    <constraint firstItem="nTD-tF-zzg" 
firstAttribute="leading" secondItem="303" secondAttribute="leading" 
id="Bpd-PV-MnA"/>
                                     <constraint firstItem="192" 
firstAttribute="leading" secondItem="190" secondAttribute="trailing" 
constant="8" symbolic="YES" id="DyR-Qs-7KC"/>
                                     <constraint firstItem="190" 
firstAttribute="leading" relation="greaterThanOrEqual" secondItem="189" 
secondAttribute="leading" constant="32" id="E0u-Kl-X2F"/>
                                     <constraint firstItem="uYk-gJ-82e" 
firstAttribute="firstBaseline" secondItem="199" secondAttribute="firstBaseline" 
id="Eb0-nK-vjH"/>
@@ -710,6 +709,7 @@
                                     <constraint firstItem="303" 
firstAttribute="leading" secondItem="304" secondAttribute="trailing" 
constant="8" symbolic="YES" id="IDj-VH-hv1"/>
                                     <constraint firstItem="247" 
firstAttribute="width" secondItem="250" secondAttribute="width" 
id="Ivv-WU-XAN"/>
                                     <constraint firstItem="316" 
firstAttribute="top" secondItem="189" secondAttribute="top" constant="4" 
id="JQx-Np-uyM"/>
+                                    <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="nTD-tF-zzg" 
secondAttribute="trailing" constant="20" symbolic="YES" id="JZL-9S-O07"/>
                                     <constraint firstItem="194" 
firstAttribute="top" secondItem="uYk-gJ-82e" secondAttribute="bottom" 
constant="8" symbolic="YES" id="Lqq-gp-DLz"/>
                                     <constraint firstItem="192" 
firstAttribute="firstBaseline" secondItem="190" secondAttribute="firstBaseline" 
id="N4D-Zj-4Ed"/>
                                     <constraint firstItem="Let-vJ-J5z" 
firstAttribute="firstBaseline" secondItem="753" secondAttribute="firstBaseline" 
id="O6h-Dy-rhd"/>
@@ -730,7 +730,7 @@
                                     <constraint firstItem="277" 
firstAttribute="top" secondItem="201" secondAttribute="bottom" constant="8" 
symbolic="YES" id="Ywb-yl-dZO"/>
                                     <constraint firstItem="258" 
firstAttribute="leading" secondItem="189" secondAttribute="leading" 
constant="12" id="akZ-6M-6Ke"/>
                                     <constraint firstAttribute="trailing" 
secondItem="258" secondAttribute="trailing" constant="12" id="bcf-zK-Eeb"/>
-                                    <constraint firstItem="nTD-tF-zzg" 
firstAttribute="firstBaseline" secondItem="195" secondAttribute="firstBaseline" 
id="dMp-mu-0lU"/>
+                                    <constraint firstItem="nTD-tF-zzg" 
firstAttribute="firstBaseline" secondItem="304" secondAttribute="firstBaseline" 
id="dde-dy-mHp"/>
                                     <constraint firstAttribute="trailing" 
relation="greaterThanOrEqual" secondItem="8U9-Rn-xYX" 
secondAttribute="trailing" constant="20" symbolic="YES" id="esF-2B-ds7"/>
                                     <constraint firstItem="8U9-Rn-xYX" 
firstAttribute="leading" secondItem="RmO-um-4HP" secondAttribute="trailing" 
constant="8" symbolic="YES" id="f2m-Sw-3hc"/>
                                     <constraint firstItem="318" 
firstAttribute="leading" secondItem="189" secondAttribute="leading" 
constant="20" symbolic="YES" id="fDF-1D-GZm"/>
@@ -769,6 +769,7 @@
                             </customView>
                         </subviews>
                         <constraints>
+                            <constraint firstAttribute="trailing" 
secondItem="189" secondAttribute="trailing" id="CZ0-DF-QOP"/>
                             <constraint firstAttribute="bottom" 
secondItem="189" secondAttribute="bottom" id="CgE-6E-jUn"/>
                             <constraint firstItem="189" firstAttribute="top" 
secondItem="myG-64-rV4" secondAttribute="top" id="fOM-21-A4b"/>
                             <constraint firstItem="189" 
firstAttribute="leading" secondItem="myG-64-rV4" secondAttribute="leading" 
id="g0A-I2-CUf"/>

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