Revision: 29310
http://sourceforge.net/p/bibdesk/svn/29310
Author: hofman
Date: 2025-07-20 15:40:27 +0000 (Sun, 20 Jul 2025)
Log Message:
-----------
set identifier for note text views to easliy get the field
Modified Paths:
--------------
trunk/bibdesk/BDSKEditor.m
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2025-07-20 14:20:05 UTC (rev 29309)
+++ trunk/bibdesk/BDSKEditor.m 2025-07-20 15:40:27 UTC (rev 29310)
@@ -128,8 +128,6 @@
- (BOOL)control:(NSControl *)control isValidObject:(id)obj error:(NSError
**)error;
- (BOOL)textShouldEndEditing:(NSText *)aTextObject error:(NSError **)error;
-- (NSString *)currentEditedNoteField;
-
- (void)recordChangingField:(NSString *)fieldName toValue:(NSString *)value;
- (void)openParentItemForField:(NSString *)field;
@@ -252,21 +250,18 @@
// Setup the textviews
[notesView setUsesDefaultFont:YES];
- NSString *currentValue = [publication valueOfField:BDSKAnnoteString
inherit:NO];
- if (currentValue)
- [notesView setString:currentValue];
+ [notesView setIdentifier:BDSKAnnoteString];
+ [notesView setString:[publication valueOfField:BDSKAnnoteString
inherit:NO] ?: @""];
[notesView setEditable:editorFlags.isEditable];
[notesView setTextColor:[NSColor textColor]];
+ [abstractView setIdentifier:BDSKAbstractString];
[abstractView setUsesDefaultFont:YES];
- currentValue = [publication valueOfField:BDSKAbstractString inherit:NO];
- if (currentValue)
- [abstractView setString:currentValue];
+ [abstractView setString:[publication valueOfField:BDSKAbstractString
inherit:NO] ?: @""];
[abstractView setEditable:editorFlags.isEditable];
[abstractView setTextColor:[NSColor textColor]];
+ [rssDescriptionView setIdentifier:BDSKRssDescriptionString];
[rssDescriptionView setUsesDefaultFont:YES];
- currentValue = [publication valueOfField:BDSKRssDescriptionString
inherit:NO];
- if (currentValue)
- [rssDescriptionView setString:currentValue];
+ [rssDescriptionView setString:[publication
valueOfField:BDSKRssDescriptionString inherit:NO] ?: @""];
[rssDescriptionView setEditable:editorFlags.isEditable];
[rssDescriptionView setTextColor:[NSColor textColor]];
if (@available(macOS 10.14, *)) {
@@ -362,9 +357,7 @@
// need some reasonable state for annote et al. textviews
[publication setEditedField:nil];
[publication setEditedValue:nil];
- NSString *field = [self currentEditedNoteField];
- NSParameterAssert(nil != field);
- [currentEditedView setString:[publication valueOfField:field
inherit:NO] ?: @""];
+ [currentEditedView setString:[publication
valueOfField:[currentEditedView identifier] inherit:NO] ?: @""];
// make sure to stop editing
[[self window] makeFirstResponder:[self window]];
}
@@ -2231,25 +2224,11 @@
#pragma mark annote/abstract/rss
-- (NSString *)currentEditedNoteField {
- if (currentEditedView == notesView)
- return BDSKAnnoteString;
- else if (currentEditedView == abstractView)
- return BDSKAbstractString;
- else if (currentEditedView == rssDescriptionView)
- return BDSKRssDescriptionString;
- else
- return nil;
-}
-
- (void)textDidBeginEditing:(NSNotification *)aNotification{
currentEditedView = [aNotification object];
- NSString *field = [self currentEditedNoteField];
- if (field) {
- [publication setEditedField:field];
- [publication setEditedValue:[[currentEditedView textStorage]
mutableString]];
- }
+ [publication setEditedField:[currentEditedView identifier]];
+ [publication setEditedValue:[[currentEditedView textStorage]
mutableString]];
[self setEditing:YES];
}
@@ -2258,15 +2237,12 @@
if (currentEditedView == nil)
return;
- NSString *field = [self currentEditedNoteField];
- if (field) {
- editorFlags.ignoreFieldChange = YES;
- NSDictionary *notifInfo = @{BDSKBibItemKeyKey: field};
- [[NSNotificationCenter defaultCenter]
postNotificationName:BDSKBibItemChangedNotification
- object:publication
- userInfo:notifInfo];
- editorFlags.ignoreFieldChange = NO;
- }
+ editorFlags.ignoreFieldChange = YES;
+ NSDictionary *notifInfo = @{BDSKBibItemKeyKey: [currentEditedView
identifier]};
+ [[NSNotificationCenter defaultCenter]
postNotificationName:BDSKBibItemChangedNotification
+ object:publication
+ userInfo:notifInfo];
+ editorFlags.ignoreFieldChange = NO;
}
// Clear all the undo actions when changing tab items, just in case; otherwise
we
@@ -2312,36 +2288,34 @@
NSParameterAssert([self textShouldEndEditing:currentEditedView
error:NULL]);
- NSString *field = [self currentEditedNoteField];
- if (field) {
- [publication setEditedField:nil];
- [publication setEditedValue:nil];
+ [publication setEditedField:nil];
+ [publication setEditedValue:nil];
+
+ NSString *field = [currentEditedView identifier];
+ NSString *oldValue = [publication valueOfField:field inherit:NO] ?: @"";
+ NSString *value = [currentEditedView string];
+
+ editorFlags.ignoreFieldChange = YES;
+ if (NO == [value isEqualAsComplexString:oldValue]) {
+ NSString *actionName = nil;
+ if (currentEditedView == notesView)
+ actionName = NSLocalizedString(@"Edit Annotation",@"Undo action
name");
+ else if(currentEditedView == abstractView)
+ actionName = NSLocalizedString(@"Edit Abstract",@"Undo action
name");
+ else if(currentEditedView == rssDescriptionView)
+ actionName = NSLocalizedString(@"Edit RSS Description",@"Undo
action name");
- NSString *oldValue = [publication valueOfField:field inherit:NO] ?:
@"";
- NSString *value = [currentEditedView string];
-
- editorFlags.ignoreFieldChange = YES;
- if (NO == [value isEqualAsComplexString:oldValue]) {
- NSString *actionName = nil;
- if (currentEditedView == notesView)
- actionName = NSLocalizedString(@"Edit Annotation",@"Undo
action name");
- else if(currentEditedView == abstractView)
- actionName = NSLocalizedString(@"Edit Abstract",@"Undo action
name");
- else if(currentEditedView == rssDescriptionView)
- actionName = NSLocalizedString(@"Edit RSS Description",@"Undo
action name");
-
- [publication setField:field toValue:value];
- [[self undoManager] setActionName:actionName];
- [self userChangedField:field from:oldValue to:value];
- } else {
- // this is needed to update the search index and previews
- NSDictionary *notifInfo = @{BDSKBibItemKeyKey: field,
BDSKBibItemOldValueKey: oldValue, BDSKBibItemNewValueKey: value};
- [[NSNotificationCenter defaultCenter]
postNotificationName:BDSKBibItemChangedNotification
-
object:publication
-
userInfo:notifInfo];
- }
- editorFlags.ignoreFieldChange = NO;
+ [publication setField:field toValue:value];
+ [[self undoManager] setActionName:actionName];
+ [self userChangedField:field from:oldValue to:value];
+ } else {
+ // this is needed to update the search index and previews
+ NSDictionary *notifInfo = @{BDSKBibItemKeyKey: field,
BDSKBibItemOldValueKey: oldValue, BDSKBibItemNewValueKey: value};
+ [[NSNotificationCenter defaultCenter]
postNotificationName:BDSKBibItemChangedNotification
+ object:publication
+ userInfo:notifInfo];
}
+ editorFlags.ignoreFieldChange = NO;
currentEditedView = nil;
[textViewUndoManager removeAllActions];
@@ -2413,7 +2387,7 @@
}
else if([changeKey isNoteField]){
if(editorFlags.ignoreFieldChange == NO) {
- if (currentEditedView && [[self currentEditedNoteField]
isEqualToString:changeKey]) {
+ if (currentEditedView && [[currentEditedView identifier]
isEqualToString:changeKey]) {
// make sure we are getting the actual current value rather
than the edited value
[publication setEditedField:nil];
[currentEditedView setString:[publication
valueOfField:changeKey inherit:NO] ?: @""];
@@ -2449,7 +2423,7 @@
[authorTableView reloadData];
if (editorFlags.ignoreFieldChange == NO) {
if (currentEditedView) {
- NSString *editedKey = [self currentEditedNoteField];
+ NSString *editedKey = [currentEditedView identifier];
// make sure we are getting the actual current value rather
than the edited value
[publication setEditedField:nil];
[currentEditedView setString:[publication
valueOfField:editedKey inherit:NO] ?: @""];
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