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

Reply via email to