Revision: 29204
          http://sourceforge.net/p/bibdesk/svn/29204
Author:   hofman
Date:     2025-04-26 15:52:14 +0000 (Sat, 26 Apr 2025)
Log Message:
-----------
set record schema from recordSyntax option. Allow setting recordSyntax for SRU 
in UI. Enable some fields for SRU.

Modified Paths:
--------------
    trunk/bibdesk/BDSKSRUGroupServer.h
    trunk/bibdesk/BDSKSRUGroupServer.m
    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-26 15:29:41 UTC (rev 29203)
+++ trunk/bibdesk/BDSKSRUGroupServer.h  2025-04-26 15:52:14 UTC (rev 29204)
@@ -58,6 +58,7 @@
     NSString *errorMessage;
 }
 
+@property (class, nonatomic, readonly) NSArray *supportedRecordSyntaxes;
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/bibdesk/BDSKSRUGroupServer.m
===================================================================
--- trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-26 15:29:41 UTC (rev 29203)
+++ trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-26 15:52:14 UTC (rev 29204)
@@ -86,6 +86,8 @@
     return self;
 }
 
++ (NSArray *)supportedRecordSyntaxes { return @[@"marcxml", @"dc", @"mods"]; }
+
 #pragma mark URLs
 
 - (NSURLComponents *)baseURLComponents {

Modified: trunk/bibdesk/BDSKSearchGroupSheetController.m
===================================================================
--- trunk/bibdesk/BDSKSearchGroupSheetController.m      2025-04-26 15:29:41 UTC 
(rev 29203)
+++ trunk/bibdesk/BDSKSearchGroupSheetController.m      2025-04-26 15:52:14 UTC 
(rev 29204)
@@ -39,6 +39,7 @@
 #import "BDSKSearchGroupSheetController.h"
 #import "BDSKSearchGroup.h"
 #import "BDSKZoomGroupServer.h"
+#import "BDSKSRUGroupServer.h"
 #import "BDSKServerInfo.h"
 #import "BDSKSearchGroupServerManager.h"
 #import "NSString_BDSKExtensions.h"
@@ -100,6 +101,13 @@
 }
 
 - (void)changeOptions {
+    while ([syntaxPopup numberOfItems] > 1)
+        [syntaxPopup removeItemAtIndex:1];
+    if ([[self type] isEqualToString:BDSKSearchGroupZoom])
+        [syntaxPopup addItemsWithTitles:[BDSKZoomGroupServer 
supportedRecordSyntaxes]];
+    else if ([[self type] isEqualToString:BDSKSearchGroupSRU])
+        [syntaxPopup addItemsWithTitles:[BDSKSRUGroupServer 
supportedRecordSyntaxes]];
+    
     NSString *value = [serverInfo recordSyntax];
     if (value == nil) {
         [syntaxPopup selectItemAtIndex:0];
@@ -146,8 +154,6 @@
         name = DEFAULT_SERVER_NAME;
     }
     
-    [syntaxPopup addItemsWithTitles:[BDSKZoomGroupServer 
supportedRecordSyntaxes]];
-    
     [self reloadServersSelectingServerNamed:name];
     [self changeOptions];
     
@@ -348,8 +354,10 @@
 - (NSString *)type { return [serverInfo type] ?: BDSKSearchGroupEntrez; }
 
 - (void)setType:(NSString *)newType {
-    if ([newType isEqualToString:[serverInfo type]] == NO)
+    if ([newType isEqualToString:[serverInfo type]] == NO) {
         [serverInfo setType:newType];
+        [self changeOptions];
+    }
 }
  
 - (NSInteger)typeTag {

Modified: trunk/bibdesk/BDSKServerInfo.m
===================================================================
--- trunk/bibdesk/BDSKServerInfo.m      2025-04-26 15:29:41 UTC (rev 29203)
+++ trunk/bibdesk/BDSKServerInfo.m      2025-04-26 15:52:14 UTC (rev 29204)
@@ -192,13 +192,10 @@
         [[self type] isEqualToString:[(BDSKServerInfo *)other type]] == NO ||
         isEqualOrBothNil([self database], [other database]) == NO)
         isEqual = NO;
-    else if ([self isZoom])
+    else if ([self isZoom] || [self isSRU])
         isEqual = isEqualOrBothNil([self host], [other host]) &&
                   isEqualOrBothNil([self port], [(BDSKServerInfo *)other 
port]) &&
                   isEqualOrBothEmpty(options, [(BDSKServerInfo *)other 
options]);
-    else if ([self isSRU])
-        isEqual = isEqualOrBothNil([self host], [other host]) &&
-                  isEqualOrBothNil([self port], [(BDSKServerInfo *)other 
port]);
     else if ([self isISI])
         isEqual = isEqualOrBothEmpty(options, [(BDSKServerInfo *)other 
options]);
     return isEqual;
@@ -211,7 +208,7 @@
         hash = prime * hash + [[self host] hash];
         hash = prime * hash + [[self port] hash];
     }
-    if ([self isZoom] || [self isISI]) {
+    if ([self isZoom] || [self isSRU] || [self isISI]) {
         if ([options count])
             hash = prime * hash + [options hash];
     }
@@ -224,13 +221,9 @@
     [info setValue:[self type] forKey:TYPE_KEY];
     [info setValue:[self name] forKey:NAME_KEY];
     [info setValue:[self database] forKey:DATABASE_KEY];
-    if ([self isZoom]) {
+    if ([self isZoom] || [self isSRU]) {
         [info setValue:[self host] forKey:HOST_KEY];
         [info setValue:[self port] forKey:PORT_KEY];
-        [info setValue:[self options] forKey:OPTIONS_KEY];
-    } else if ([self isSRU]) {
-        [info setValue:[self host] forKey:HOST_KEY];
-        [info setValue:[self port] forKey:PORT_KEY];
     } else if ([self isISI] && [options count] > 0) {
         [info setValue:[self options] forKey:OPTIONS_KEY];
     }
@@ -373,10 +366,15 @@
         }];
         if ([query count])
             [components setPercentEncodedQuery:[query 
componentsJoinedByString:@"&"]];
+    } else if ([self isSRU]) {
+        NSMutableArray *query = [NSMutableArray arrayWithObject:@"type=sru"];
+        [options enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString 
*value, BOOL *stop){
+            if ([key isEqualToString:USERNAME_KEY] == NO)
+                [query addObject:[NSString stringWithFormat:@"%@=%@", key, 
[value stringByAddingPercentEscapesForQueryTerm]]];
+        }];
+        [components setPercentEncodedQuery:[query 
componentsJoinedByString:@"&"]];
     } else if ([self isISI] && [self isLite]) {
         [components setPercentEncodedQuery:@"lite=1"];
-    } else if ([self isSRU]) {
-        [components setPercentEncodedQuery:@"type=sru"];
     }
     NSURL *url = [components URL];
     return url;

Modified: trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib
===================================================================
--- trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib   2025-04-26 15:29:41 UTC 
(rev 29203)
+++ trunk/bibdesk/Base.lproj/BDSKSearchGroupSheet.xib   2025-04-26 15:52:14 UTC 
(rev 29204)
@@ -215,7 +215,7 @@
                                             <accessibilityConnection 
property="title" destination="275" id="528"/>
                                             <action selector="selectSyntax:" 
target="-2" id="285"/>
                                             <binding destination="-2" 
name="enabled" keyPath="editable" id="470"/>
-                                            <binding destination="-2" 
name="enabled2" keyPath="zoom" previousBinding="470" id="471">
+                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrSRU" previousBinding="470" id="OoG-ed-vKz">
                                                 <dictionary key="options">
                                                     <integer 
key="NSMultipleValuesPlaceholder" value="-1"/>
                                                     <integer 
key="NSNoSelectionPlaceholder" value="-1"/>
@@ -223,7 +223,7 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoom" previousBinding="471" id="946">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRU" previousBinding="OoG-ed-vKz" id="CR4-3V-vAv">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
@@ -276,15 +276,8 @@
                                         <connections>
                                             <accessibilityConnection 
property="title" destination="191" id="525"/>
                                             <binding destination="-2" 
name="enabled" keyPath="editable" id="468"/>
-                                            <binding destination="569" 
name="value" keyPath="selection.port" id="578">
+                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrSRU" previousBinding="468" id="ShO-ZW-JH7">
                                                 <dictionary key="options">
-                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
-                                                    <string 
key="NSNullPlaceholder">Port</string>
-                                                    <integer 
key="NSValidatesImmediately" value="1"/>
-                                                </dictionary>
-                                            </binding>
-                                            <binding destination="-2" 
name="enabled2" keyPath="zoom" previousBinding="468" id="979">
-                                                <dictionary key="options">
                                                     <integer 
key="NSMultipleValuesPlaceholder" value="-1"/>
                                                     <integer 
key="NSNoSelectionPlaceholder" value="-1"/>
                                                     <integer 
key="NSNotApplicablePlaceholder" value="-1"/>
@@ -291,11 +284,18 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRU" previousBinding="979" id="zmn-bc-vkQ">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRU" previousBinding="ShO-ZW-JH7" id="szp-hH-uho">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
                                             </binding>
+                                            <binding destination="569" 
name="value" keyPath="selection.port" id="578">
+                                                <dictionary key="options">
+                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
+                                                    <string 
key="NSNullPlaceholder">Port</string>
+                                                    <integer 
key="NSValidatesImmediately" value="1"/>
+                                                </dictionary>
+                                            </binding>
                                             <outlet property="nextKeyView" 
destination="201" id="293"/>
                                         </connections>
                                     </textField>
@@ -376,15 +376,8 @@
                                         <connections>
                                             <accessibilityConnection 
property="title" destination="196" id="524"/>
                                             <binding destination="-2" 
name="enabled" keyPath="editable" id="480"/>
-                                            <binding destination="569" 
name="value" keyPath="selection.host" id="576">
+                                            <binding destination="-2" 
name="enabled2" keyPath="zoomOrSRU" previousBinding="480" id="niH-KC-ox0">
                                                 <dictionary key="options">
-                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
-                                                    <string 
key="NSNullPlaceholder">Host Address</string>
-                                                    <integer 
key="NSValidatesImmediately" value="1"/>
-                                                </dictionary>
-                                            </binding>
-                                            <binding destination="-2" 
name="enabled2" keyPath="zoom" previousBinding="480" id="977">
-                                                <dictionary key="options">
                                                     <integer 
key="NSMultipleValuesPlaceholder" value="-1"/>
                                                     <integer 
key="NSNoSelectionPlaceholder" value="-1"/>
                                                     <integer 
key="NSNotApplicablePlaceholder" value="-1"/>
@@ -391,11 +384,18 @@
                                                     <integer 
key="NSNullPlaceholder" value="-1"/>
                                                 </dictionary>
                                             </binding>
-                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRU" previousBinding="977" id="XIN-vT-kNF">
+                                            <binding destination="-2" 
name="hidden" keyPath="zoomOrSRU" previousBinding="niH-KC-ox0" id="XB0-uM-FgW">
                                                 <dictionary key="options">
                                                     <string 
key="NSValueTransformerName">NSNegateBoolean</string>
                                                 </dictionary>
                                             </binding>
+                                            <binding destination="569" 
name="value" keyPath="selection.host" id="576">
+                                                <dictionary key="options">
+                                                    <integer 
key="NSConditionallySetsEditable" value="0"/>
+                                                    <string 
key="NSNullPlaceholder">Host Address</string>
+                                                    <integer 
key="NSValidatesImmediately" value="1"/>
+                                                </dictionary>
+                                            </binding>
                                             <outlet property="nextKeyView" 
destination="198" id="212"/>
                                         </connections>
                                     </textField>

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