Revision: 26156 http://sourceforge.net/p/bibdesk/svn/26156 Author: hofman Date: 2021-06-07 16:00:28 +0000 (Mon, 07 Jun 2021) Log Message: ----------- Some more validation before editing as complext string
Modified Paths: -------------- trunk/bibdesk/BDSKEditor.m trunk/bibdesk/BDSKMacroWindowController.m trunk/bibdesk/BDSKTextImportController.m Modified: trunk/bibdesk/BDSKEditor.m =================================================================== --- trunk/bibdesk/BDSKEditor.m 2021-06-07 15:12:26 UTC (rev 26155) +++ trunk/bibdesk/BDSKEditor.m 2021-06-07 16:00:28 UTC (rev 26156) @@ -2050,8 +2050,7 @@ - (void)formatter:(BDSKComplexStringFormatter *)formatter willEditAsComplexString:(NSString *)object { NSInteger row = [tableView selectedRow]; - // this should never happen - if (row == -1) + if (row == -1 || [complexStringEditor isAttached] || [[fields objectAtIndex:row] isEqualToString:BDSKCrossrefString] || [[fields objectAtIndex:row] isCitationField]) return; if (complexStringEditor == nil) complexStringEditor = [[BDSKComplexStringEditor alloc] initWithMacroResolver:[publication macroResolver] enabled:editorFlags.isEditable]; Modified: trunk/bibdesk/BDSKMacroWindowController.m =================================================================== --- trunk/bibdesk/BDSKMacroWindowController.m 2021-06-07 15:12:26 UTC (rev 26155) +++ trunk/bibdesk/BDSKMacroWindowController.m 2021-06-07 16:00:28 UTC (rev 26156) @@ -361,8 +361,11 @@ - (IBAction)editSelectedFieldAsRawBibTeX:(id)sender{ NSInteger row = [tableView selectedRow]; - if (row == -1) + if (row == -1 || [complexStringEditor isAttached]) return; + NSString *field = [[[arrayController arrangedObjects] objectAtIndex:row] name]; + if ([field isEqualToString:BDSKCrossrefString] || [field isCitationField]) + return; BDSKMacro *macro = [[arrayController arrangedObjects] objectAtIndex:row]; NSString *value = [macro value]; NSText *fieldEditor = [tableView currentEditor]; @@ -379,12 +382,28 @@ } } +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + if ([menuItem action] == @selector(editSelectedFieldAsRawBibTeX:)) { + if ([complexStringEditor isAttached]) + return NO; + NSInteger row = [tableView editedRow]; + if (row == -1) + return NO; + NSString *field = [[[arrayController arrangedObjects] objectAtIndex:row] name]; + return ([field + isEqualToString:BDSKCrossrefString] == NO && [field isCitationField] == NO); + } else if ([[BDSKMacroWindowController superclass] instanceMethodForSelector:_cmd]) { + return [super validateMenuItem:menuItem]; + } else { + return YES; + } +} + #pragma mark BDSKMacroFormatter delegate - (void)formatter:(BDSKComplexStringFormatter *)formatter willEditAsComplexString:(NSString *)object { NSInteger row = [tableView selectedRow]; - // this should never happen - if (row == -1) + if (row == -1 || [complexStringEditor isAttached]) return; if (complexStringEditor == nil) complexStringEditor = [[BDSKComplexStringEditor alloc] initWithMacroResolver:macroResolver enabled:isEditable]; Modified: trunk/bibdesk/BDSKTextImportController.m =================================================================== --- trunk/bibdesk/BDSKTextImportController.m 2021-06-07 15:12:26 UTC (rev 26155) +++ trunk/bibdesk/BDSKTextImportController.m 2021-06-07 16:00:28 UTC (rev 26156) @@ -390,7 +390,6 @@ - (IBAction)editSelectedFieldAsRawBibTeX:(id)sender{ NSInteger row = [itemTableView selectedRow]; - // this should never happen if (row == -1 || [complexStringEditor isAttached] || [[fields objectAtIndex:row] isEqualToString:BDSKCrossrefString] || [[fields objectAtIndex:row] isCitationField]) return; NSString *value = [[self publication] valueOfField:[fields objectAtIndex:row]]; @@ -1075,8 +1074,7 @@ - (void)formatter:(BDSKComplexStringFormatter *)formatter willEditAsComplexString:(NSString *)object { NSInteger row = [itemTableView selectedRow]; - // this should never happen - if (row == -1 || [[fields objectAtIndex:row] isEqualToString:BDSKCrossrefString] || [[fields objectAtIndex:row] isCitationField]) + if (row == -1 || [complexStringEditor isAttached] || [[fields objectAtIndex:row] isEqualToString:BDSKCrossrefString] || [[fields objectAtIndex:row] isCitationField]) return; if (complexStringEditor == nil) complexStringEditor = [[BDSKComplexStringEditor alloc] initWithMacroResolver:[self macroResolver] enabled:YES]; 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