From: <ho...@us...> - 2006-12-31 13:49:12
|
Revision: 8972 http://svn.sourceforge.net/bibdesk/?rev=8972&view=rev Author: hofman Date: 2006-12-31 05:49:10 -0800 (Sun, 31 Dec 2006) Log Message: ----------- Use small UI elements for server settings. Add popups for syntax and encoding options, and support code. Modified Paths: -------------- trunk/bibdesk/BDSKSearchGroupSheetController.h trunk/bibdesk/BDSKSearchGroupSheetController.m trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/classes.nib trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/info.nib trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/keyedobjects.nib Modified: trunk/bibdesk/BDSKSearchGroupSheetController.h =================================================================== --- trunk/bibdesk/BDSKSearchGroupSheetController.h 2006-12-31 11:25:40 UTC (rev 8971) +++ trunk/bibdesk/BDSKSearchGroupSheetController.h 2006-12-31 13:49:10 UTC (rev 8972) @@ -29,6 +29,8 @@ IBOutlet NSTextField *databaseField; IBOutlet NSSecureTextField *passwordField; IBOutlet NSTextField *userField; + IBOutlet NSPopUpButton *syntaxPopup; + IBOutlet NSPopUpButton *encodingPopup; IBOutlet NSButton *editButton; @@ -46,6 +48,9 @@ - (id)initWithGroup:(BDSKSearchGroup *)aGroup; - (IBAction)selectPredefinedServer:(id)sender; +- (IBAction)selectSyntax:(id)sender; +- (IBAction)selectEncoding:(id)sender; + - (IBAction)addServer:(id)sender; - (IBAction)removeServer:(id)sender; - (IBAction)editServer:(id)sender; Modified: trunk/bibdesk/BDSKSearchGroupSheetController.m =================================================================== --- trunk/bibdesk/BDSKSearchGroupSheetController.m 2006-12-31 11:25:40 UTC (rev 8971) +++ trunk/bibdesk/BDSKSearchGroupSheetController.m 2006-12-31 13:49:10 UTC (rev 8972) @@ -11,6 +11,7 @@ #import "BDSKServerInfo.h" #import "BDSKCollapsibleView.h" #import "NSFileManager_BDSKExtensions.h" +#import <yaz/BDSKZoomRecord.h>> #define SERVERS_FILENAME @"SearchGroupServers.plist" @@ -138,6 +139,62 @@ [self selectPredefinedServer:serverPopup]; } +- (void)setupOptionPopups { + [syntaxPopup addItemWithTitle:@"USMarc"]; + [[syntaxPopup lastItem] setRepresentedObject:[BDSKZoomRecord stringWithSyntaxType:USMARC]]; + [syntaxPopup addItemWithTitle:@"XML"]; + [[syntaxPopup lastItem] setRepresentedObject:[BDSKZoomRecord stringWithSyntaxType:XML]]; + /* + [syntaxPopup addItemWithTitle:@"UKMarc"]; + [[syntaxPopup lastItem] setRepresentedObject:[BDSKZoomRecord stringWithSyntaxType:UKMARC]]; + [syntaxPopup addItemWithTitle:@"SUTRS"]; + [[syntaxPopup lastItem] setRepresentedObject:[BDSKZoomRecord stringWithSyntaxType:SUTRS]]; + [syntaxPopup addItemWithTitle:@"GRS-1"]; + [[syntaxPopup lastItem] setRepresentedObject:[BDSKZoomRecord stringWithSyntaxType:GRS1]]; + */ + + [encodingPopup addItemWithTitle:@"Marc-8"]; + [[encodingPopup lastItem] setRepresentedObject:@"marc-8"]; + [encodingPopup addItemWithTitle:@"UTF-8"]; + [[encodingPopup lastItem] setRepresentedObject:@"utf-8"]; + [encodingPopup addItemWithTitle:@"ISO Latin-1"]; + [[encodingPopup lastItem] setRepresentedObject:@"iso-8859-1"]; +} + +- (void)changeOptions { + NSString *value = [[serverInfo options] objectForKey:@"preferredRecordSyntax"]; + int index = 0; + if (value != nil) { + index = [syntaxPopup numberOfItems]; + while (--index) { + if ([[[syntaxPopup itemAtIndex:index] representedObject] isEqualToString:value]) + break; + } + if (index == 0) { + index = [syntaxPopup numberOfItems]; + [syntaxPopup addItemWithTitle:value]; + [[syntaxPopup lastItem] setRepresentedObject:value]; + } + } + [syntaxPopup selectItemAtIndex:index]; + + value = [[serverInfo options] objectForKey:@"charset"]; + index = 0; + if (value != nil) { + index = [encodingPopup numberOfItems]; + while (--index) { + if ([[[encodingPopup itemAtIndex:index] representedObject] isEqualToString:value]) + break; + } + if (index == 0) { + index = [encodingPopup numberOfItems]; + [encodingPopup addItemWithTitle:value]; + [[encodingPopup lastItem] setRepresentedObject:value]; + } + } + [encodingPopup selectItemAtIndex:index]; +} + - (void)awakeFromNib { [serverView retain]; @@ -156,6 +213,7 @@ index = [servers count] + 1; } + [self setupOptionPopups]; [self reloadServersSelectingIndex:index]; } @@ -192,13 +250,16 @@ [editButton setTitle:NSLocalizedString(@"Edit", @"")]; if (i == [sender numberOfItems] - 1) { + BOOL isZoom = [self type] == BDSKSearchGroupZoom; [self setServerInfo:[BDSKServerInfo defaultServerInfoWithType:[self type]]]; [nameField setEnabled:YES]; - [addressField setEnabled:[self type] == BDSKSearchGroupZoom]; - [portField setEnabled:[self type] == BDSKSearchGroupZoom]; + [addressField setEnabled:isZoom]; + [portField setEnabled:isZoom]; [databaseField setEnabled:YES]; - [passwordField setEnabled:[self type] == BDSKSearchGroupZoom]; - [userField setEnabled:[self type] == BDSKSearchGroupZoom]; + [passwordField setEnabled:isZoom]; + [userField setEnabled:isZoom]; + [syntaxPopup setEnabled:isZoom]; + [encodingPopup setEnabled:isZoom]; [self expand:self]; } else { @@ -210,12 +271,30 @@ [databaseField setEnabled:NO]; [passwordField setEnabled:NO]; [userField setEnabled:NO]; + [syntaxPopup setEnabled:NO]; + [encodingPopup setEnabled:NO]; } [self didChangeValueForKey:@"canAddServer"]; [self didChangeValueForKey:@"canRemoveServer"]; [self didChangeValueForKey:@"canEditServer"]; } +- (IBAction)selectSyntax:(id)sender; +{ + NSString *syntax = [sender indexOfSelectedItem] == 0 ? nil : [[sender selectedItem] representedObject]; + NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:[serverInfo options]]; + [options setValue:syntax forKey:@"preferredRecordSyntax"]; + [serverInfo setOptions:[options count] ? options : nil]; +} + +- (IBAction)selectEncoding:(id)sender; +{ + NSString *encoding = [sender indexOfSelectedItem] == 0 ? nil : [[sender selectedItem] representedObject]; + NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:[serverInfo options]]; + [options setValue:encoding forKey:@"charset"]; + [serverInfo setOptions:[options count] ? options : nil]; +} + - (IBAction)addServer:(id)sender; { unsigned index = [serverPopup indexOfSelectedItem]; @@ -262,12 +341,15 @@ } else { [editButton setTitle:NSLocalizedString(@"Set", @"")]; + BOOL isZoom = [self type] == BDSKSearchGroupZoom; [nameField setEnabled:YES]; - [addressField setEnabled:[self type] == BDSKSearchGroupZoom]; - [portField setEnabled:[self type] == BDSKSearchGroupZoom]; + [addressField setEnabled:isZoom]; + [portField setEnabled:isZoom]; [databaseField setEnabled:YES]; - [passwordField setEnabled:[self type] == BDSKSearchGroupZoom]; - [userField setEnabled:[self type] == BDSKSearchGroupZoom]; + [passwordField setEnabled:isZoom]; + [userField setEnabled:isZoom]; + [syntaxPopup setEnabled:isZoom]; + [encodingPopup setEnabled:isZoom]; NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Edit Server Setting", @"Message in alert dialog when editing default search group server") defaultButton:NSLocalizedString(@"OK", @"Button title") @@ -301,17 +383,15 @@ if (isExpanded) return; - NSRect viewRect = [serverView frame]; NSRect winRect = [[self window] frame]; NSSize minSize = [[self window] minSize]; NSSize maxSize = [[self window] maxSize]; - float dh = [serverView minSize].height - 4.0; - viewRect.size.width = NSWidth([[[self window] contentView] frame]); + float dh = [serverView minSize].height; winRect.size.height += dh; winRect.origin.y -= dh; minSize.height += dh; maxSize.height += dh; - [[[self window] contentView] addSubview:serverView]; + [serverView setHidden:NO]; [[self window] setFrame:winRect display:YES animate:YES]; [[self window] setMinSize:minSize]; [[self window] setMaxSize:maxSize]; @@ -328,7 +408,7 @@ NSRect winRect = [[self window] frame]; NSSize minSize = [[self window] minSize]; NSSize maxSize = [[self window] maxSize]; - float dh = [serverView minSize].height - 4.0; + float dh = [serverView minSize].height; winRect.size.height -= dh; winRect.origin.y += dh; minSize.height -= dh; @@ -336,7 +416,7 @@ [[self window] setFrame:winRect display:YES animate:YES]; [[self window] setMinSize:minSize]; [[self window] setMaxSize:maxSize]; - [serverView removeFromSuperview]; + [serverView setHidden:YES]; [revealButton setState:NSOffState]; isExpanded = NO; @@ -375,6 +455,7 @@ { [serverInfo autorelease]; serverInfo = [info copy]; + [self changeOptions]; } - (void)setType:(int)t { Modified: trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/classes.nib =================================================================== --- trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/classes.nib 2006-12-31 11:25:40 UTC (rev 8971) +++ trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/classes.nib 2006-12-31 13:49:10 UTC (rev 8972) @@ -19,7 +19,9 @@ expand = id; removeServer = id; resetServers = id; + selectEncoding = id; selectPredefinedServer = id; + selectSyntax = id; toggle = id; }; CLASS = BDSKSearchGroupSheetController; @@ -28,12 +30,14 @@ addressField = NSTextField; databaseField = NSTextField; editButton = NSButton; + encodingPopup = NSPopUpButton; nameField = NSTextField; passwordField = NSSecureTextField; portField = NSTextField; revealButton = NSButton; serverPopup = NSPopUpButton; serverView = BDSKCollapsibleView; + syntaxPopup = NSPopUpButton; typeMatrix = NSMatrix; userField = NSTextField; }; Modified: trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/info.nib =================================================================== --- trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/info.nib 2006-12-31 11:25:40 UTC (rev 8971) +++ trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/info.nib 2006-12-31 13:49:10 UTC (rev 8972) @@ -3,14 +3,14 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>69 50 356 240 0 0 1280 832 </string> + <string>81 59 356 240 0 0 1440 938 </string> <key>IBFramework Version</key> - <string>454.0</string> + <string>446.1</string> <key>IBOpenObjects</key> <array> <integer>5</integer> </array> <key>IBSystem Version</key> - <string>9A321</string> + <string>8L127</string> </dict> </plist> Modified: trunk/bibdesk/English.lproj/BDSKSearchGroupSheet.nib/keyedobjects.nib =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |