Revision: 26242 http://sourceforge.net/p/bibdesk/svn/26242 Author: hofman Date: 2021-06-16 22:33:56 +0000 (Wed, 16 Jun 2021) Log Message: ----------- Use validation control text delegate method
Modified Paths: -------------- trunk/bibdesk/BDSKDocumentInfoWindowController.m Modified: trunk/bibdesk/BDSKDocumentInfoWindowController.m =================================================================== --- trunk/bibdesk/BDSKDocumentInfoWindowController.m 2021-06-16 15:05:22 UTC (rev 26241) +++ trunk/bibdesk/BDSKDocumentInfoWindowController.m 2021-06-16 22:33:56 UTC (rev 26242) @@ -163,64 +163,68 @@ NSString *key = [keys objectAtIndex:row]; NSString *value = [[[info objectForKey:key] retain] autorelease]; - if([[tableColumn identifier] isEqualToString:@"key"]){ + if ([[tableColumn identifier] isEqualToString:@"key"]) { - if([object isEqualToString:@""]){ - [tv reloadData]; - [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; - [tableView editColumn:0 row:row withEvent:nil select:YES]; - + if ([object isEqualToString:@""] == NO && [key isCaseInsensitiveEqual:object] == NO) { + [info removeObjectForKey:key]; + [info setObject:value forKey:object]; + [self refreshKeys]; + } + + } else { + + if ([value isEqualToString:object] == NO) + [info setObject:object forKey:key]; + } +} + +#pragma mark TableView Delegate methods + +- (void)tableViewSelectionDidChange:(NSNotification *)notification{ + [self updateButtons]; +} + +#pragma mark TableView Control Delegate methods + +- (BOOL)control:(NSControl *)control isValidObject:(id)object { + NSInteger row = [tableView editedRow]; + NSInteger column = [tableView editedColumn]; + NSString *key = [keys objectAtIndex:row]; + NSString *value = [[[info objectForKey:key] retain] autorelease]; + + if (column == 0) { + + if ([object isEqualToString:@""]) { NSAlert *alert = [[[NSAlert alloc] init] autorelease]; [alert setMessageText:NSLocalizedString(@"Empty Key", @"Message in alert dialog when trying to set an empty string for a key")]; [alert setInformativeText:NSLocalizedString(@"The key can not be empty.", @"Informative text in alert dialog when trying to set an empty string for a key")]; [alert beginSheetModalForWindow:[self window] completionHandler:NULL]; - return; - } + return NO; + } - if([info objectForKey:object]){ - if([key isCaseInsensitiveEqual:object] == NO){ - [tv reloadData]; - [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; - [tableView editColumn:0 row:row withEvent:nil select:YES]; - - NSAlert *alert = [[[NSAlert alloc] init] autorelease]; - [alert setMessageText:NSLocalizedString(@"Duplicate Key", @"Message in alert dialog when trying to add a duplicate key")]; - [alert setInformativeText:NSLocalizedString(@"The key must be unique.", @"Informative text in alert dialog when trying to add a duplicate key")]; - [alert beginSheetModalForWindow:[self window] completionHandler:NULL]; - } - return; - } + if ([info objectForKey:object] && [key isCaseInsensitiveEqual:object] == NO) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + [alert setMessageText:NSLocalizedString(@"Duplicate Key", @"Message in alert dialog when trying to add a duplicate key")]; + [alert setInformativeText:NSLocalizedString(@"The key must be unique.", @"Informative text in alert dialog when trying to add a duplicate key")]; + [alert beginSheetModalForWindow:[self window] completionHandler:NULL]; + return NO; + } - [info removeObjectForKey:key]; - [info setObject:value forKey:object]; - [self refreshKeys]; + } else { - }else{ - - if([value isEqualToString:object]) return; - - if([value isStringTeXQuotingBalancedWithBraces:YES connected:NO] == NO){ + if ([value isStringTeXQuotingBalancedWithBraces:YES connected:NO] == NO) { NSAlert *alert = [[[NSAlert alloc] init] autorelease]; [alert setMessageText:NSLocalizedString(@"Unbalanced Braces", @"Message in alert dialog when trying to set a value with unbalanced braces")]; [alert setInformativeText:NSLocalizedString(@"Braces must be balanced within the value.", @"Informative text in alert dialog")]; [alert beginSheetModalForWindow:[self window] completionHandler:NULL]; - - [tv reloadData]; - [tv selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; - [tableView editColumn:0 row:row withEvent:nil select:YES]; - return; - } + return NO; + } - [info setObject:object forKey:key]; } + + return YES; } -#pragma mark TableView Delegate methods - -- (void)tableViewSelectionDidChange:(NSNotification *)notification{ - [self updateButtons]; -} - #pragma mark Touch Bar - (NSTouchBar *)makeTouchBar { 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