Revision: 27437
http://sourceforge.net/p/bibdesk/svn/27437
Author: hofman
Date: 2022-05-19 14:33:02 +0000 (Thu, 19 May 2022)
Log Message:
-----------
Remember initial value fioredit in complex string formatter, and return it when
the returned value should be equal as a complext string. This will preserve
inherited status of the string, sowe don't have to explicitly reset the value
of the text field when editing ends or is aborted.
Modified Paths:
--------------
trunk/bibdesk/BDSKComplexStringCell.m
trunk/bibdesk/BDSKComplexStringEditor.h
trunk/bibdesk/BDSKComplexStringEditor.m
trunk/bibdesk/BDSKComplexStringFormatter.h
trunk/bibdesk/BDSKComplexStringFormatter.m
trunk/bibdesk/BDSKEditor.m
trunk/bibdesk/BDSKTextImportController.m
Modified: trunk/bibdesk/BDSKComplexStringCell.m
===================================================================
--- trunk/bibdesk/BDSKComplexStringCell.m 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKComplexStringCell.m 2022-05-19 14:33:02 UTC (rev
27437)
@@ -78,23 +78,15 @@
}
- (void)editWithFrame:(NSRect)rect inView:(NSView *)controlView editor:(NSText
*)textObj delegate:(id)delegate event:(NSEvent *)event {
- BOOL notifyFormatter = [[self formatter]
respondsToSelector:@selector(didStartEditor:withObjectValue:)];
- id value = notifyFormatter ? [[self objectValue] retain] : nil;
[super editWithFrame:rect inView:controlView editor:textObj
delegate:delegate event:event];
- if (notifyFormatter) {
- [(BDSKComplexStringFormatter *)[self formatter] didStartEditor:textObj
withObjectValue:value];
- [value release];
- }
+ if ([[self formatter] respondsToSelector:@selector(didStartEditor:)])
+ [(BDSKComplexStringFormatter *)[self formatter]
didStartEditor:textObj];
}
- (void)selectWithFrame:(NSRect)rect inView:(NSView *)controlView
editor:(NSText *)textObj delegate:(id)delegate start:(NSInteger)selStart
length:(NSInteger)selLength {
- BOOL notifyFormatter = [[self formatter]
respondsToSelector:@selector(didStartEditor:withObjectValue:)];
- id value = notifyFormatter ? [[self objectValue] retain] : nil;
[super selectWithFrame:rect inView:controlView editor:textObj
delegate:delegate start:selStart length:selLength];
- if (notifyFormatter) {
- [(BDSKComplexStringFormatter *)[self formatter] didStartEditor:textObj
withObjectValue:value];
- [value release];
- }
+ if ([[self formatter] respondsToSelector:@selector(didStartEditor:)])
+ [(BDSKComplexStringFormatter *)[self formatter]
didStartEditor:textObj];
}
@end
Modified: trunk/bibdesk/BDSKComplexStringEditor.h
===================================================================
--- trunk/bibdesk/BDSKComplexStringEditor.h 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKComplexStringEditor.h 2022-05-19 14:33:02 UTC (rev
27437)
@@ -39,14 +39,18 @@
#import <Cocoa/Cocoa.h>
+@class BDSKComplexStringFormatter;
@interface BDSKComplexStringEditor : NSWindowController {
NSTextField *expandedValueTextField;
NSImageView *focusRingView;
NSBox *box;
+ BDSKComplexStringFormatter *formatter;
NSText *editor;
}
+- (id)initWithFormatter:(BDSKComplexStringFormatter *)aFormatter;
+
- (void)attachToEditor:(NSText *)textObj withValue:(NSString *)value;
- (void)remove;
Modified: trunk/bibdesk/BDSKComplexStringEditor.m
===================================================================
--- trunk/bibdesk/BDSKComplexStringEditor.m 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKComplexStringEditor.m 2022-05-19 14:33:02 UTC (rev
27437)
@@ -64,15 +64,21 @@
@synthesize expandedValueTextField, focusRingView, box;
@dynamic attached;
+- (id)initWithFormatter:(BDSKComplexStringFormatter *)aFormatter {
+ self = [self initWithWindowNibName:@"ComplexStringEditor"];
+ if (self) {
+ // don't retain as it owns us
+ formatter = aFormatter;
+ }
+ return self;
+}
+
- (void)dealloc {
+ formatter = nil;
BDSKDESTROY(editor);
[super dealloc];
}
-- (NSString *)windowNibName {
- return @"ComplexStringEditor";
-}
-
- (void)attachToEditor:(NSText *)textObj withValue:(NSString *)value {
if ([self isAttached])
[self remove];
@@ -290,7 +296,7 @@
- (void)editorTextDidChange:(NSNotification *)notification {
NSString *string = [editor string];
NSString *error = nil;
- if ([[expandedValueTextField formatter] getObjectValue:&string
forString:string errorDescription:&error])
+ if ([formatter getObjectValue:&string forString:string
errorDescription:&error])
[self displayValue:string isError:NO];
else
[self displayValue:error isError:YES];
Modified: trunk/bibdesk/BDSKComplexStringFormatter.h
===================================================================
--- trunk/bibdesk/BDSKComplexStringFormatter.h 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKComplexStringFormatter.h 2022-05-19 14:33:02 UTC (rev
27437)
@@ -41,6 +41,7 @@
@interface BDSKComplexStringFormatter : NSFormatter {
BDSKMacroResolver *macroResolver;
BOOL editAsComplexString;
+ NSString *editedValue;
BDSKComplexStringEditor *complexStringEditor;
}
@@ -48,6 +49,6 @@
@property (nonatomic) BOOL editAsComplexString;
-- (void)didStartEditor:(NSText *)textObj withObjectValue:(id)value;
+- (void)didStartEditor:(NSText *)textObj;
@end
Modified: trunk/bibdesk/BDSKComplexStringFormatter.m
===================================================================
--- trunk/bibdesk/BDSKComplexStringFormatter.m 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKComplexStringFormatter.m 2022-05-19 14:33:02 UTC (rev
27437)
@@ -70,6 +70,7 @@
[complexStringEditor remove];
BDSKDESTROY(complexStringEditor);
BDSKDESTROY(macroResolver);
+ BDSKDESTROY(editedValue);
[super dealloc];
}
@@ -83,6 +84,8 @@
NSString *string = [self stringForObjectValue:obj];
if ([obj isComplex])
editAsComplexString = YES;
+ [editedValue release];
+ editedValue = [obj retain];
return editAsComplexString && [NSString isEmptyAsComplexString:string] ==
NO ? [string stringAsBibTeXString] : string;
}
@@ -130,6 +133,9 @@
*error = NSLocalizedString(@"Unbalanced braces", @"error
description");
}
+ if ([string isEqualAsComplexString:editedValue])
+ string = editedValue;
+
if (string == nil)
return NO;
else if (obj)
@@ -147,11 +153,11 @@
}
}
-- (void)didStartEditor:(NSText *)textObj withObjectValue:(id)value {
+- (void)didStartEditor:(NSText *)textObj {
if (editAsComplexString) {
if (complexStringEditor == nil)
- complexStringEditor = [[BDSKComplexStringEditor alloc] init];
- [complexStringEditor attachToEditor:textObj withValue:value];
+ complexStringEditor = [[BDSKComplexStringEditor alloc]
initWithFormatter:self];
+ [complexStringEditor attachToEditor:textObj withValue:editedValue];
}
}
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2022-05-19 09:19:34 UTC (rev 27436)
+++ trunk/bibdesk/BDSKEditor.m 2022-05-19 14:33:02 UTC (rev 27437)
@@ -365,12 +365,9 @@
- (void)abortEditingControl:(NSControl *)control atRow:(NSInteger)row {
[control abortEditing];
- if (row != -1) {
+ if (row != -1)
// controlTextDidEndEditing: is not called when calling abortEditing
[tableCellFormatter setEditAsComplexString:NO];
- // restore the value,in case it was inherited
- [control setObjectValue:[publication valueOfField:[fields
objectAtIndex:row]] ?: @""];
- }
[self setEditing:NO];
}
@@ -1156,6 +1153,9 @@
}
- (IBAction)changeValue:(id)sender {
+ if (editorFlags.isEditable == NO)
+ return;
+
NSInteger row = [tableView rowForView:sender];
if (row == -1)
return;
@@ -1164,12 +1164,9 @@
NSString *oldValue = [publication valueOfField:field] ?: @"";
NSString *value = [sender objectValue] ?: @"";
- if (editorFlags.isEditable && NO == [value
isEqualAsComplexString:oldValue]) {
+ if (NO == [value isEqualAsComplexString:oldValue]) {
[self recordChangingField:field toValue:value];
// button should be update implicitly by the bibDidChange notification
- } else if ([oldValue isInherited]) {
- // just selecting also changes the objectValue
- [sender setObjectValue:oldValue];
}
}
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2022-05-19 09:19:34 UTC (rev
27436)
+++ trunk/bibdesk/BDSKTextImportController.m 2022-05-19 14:33:02 UTC (rev
27437)
@@ -396,8 +396,6 @@
NSString *oldValue = [[self publication] valueOfField:key];
if (NO == [value isEqualAsComplexString:oldValue])
[self recordChangingField:key toValue:value];
- else if ([oldValue isInherited])
- [sender setObjectValue:oldValue];
}
- (IBAction)editSelectedFieldAsRawBibTeX:(id)sender{
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit