Revision: 12358
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12358&view=rev
Author: hofman
Date: 2008-01-08 04:40:53 -0800 (Tue, 08 Jan 2008)
Log Message:
-----------
Rename macroeditor to complexstringeditor to avoid confusion with
macrowindowcontroller
Modified Paths:
--------------
trunk/bibdesk/BDSKEditor.h
trunk/bibdesk/BDSKEditor.m
trunk/bibdesk/BDSKMacroWindowController.h
trunk/bibdesk/BDSKMacroWindowController.m
trunk/bibdesk/BDSKTextImportController.h
trunk/bibdesk/BDSKTextImportController.m
trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj
Added Paths:
-----------
trunk/bibdesk/BDSKComplexStringEditor.h
trunk/bibdesk/BDSKComplexStringEditor.m
Removed Paths:
-------------
trunk/bibdesk/BDSKMacroEditor.h
trunk/bibdesk/BDSKMacroEditor.m
Copied: trunk/bibdesk/BDSKComplexStringEditor.h (from rev 12356,
trunk/bibdesk/BDSKMacroEditor.h)
===================================================================
--- trunk/bibdesk/BDSKComplexStringEditor.h (rev 0)
+++ trunk/bibdesk/BDSKComplexStringEditor.h 2008-01-08 12:40:53 UTC (rev
12358)
@@ -0,0 +1,56 @@
+// BDSKComplexStringEditor.h
+// Created by Michael McCracken, January 2005
+
+// Inspired by and somewhat copied from Calendar, whose author I've
+// lost record of.
+
+/*
+ This software is Copyright (c) 2005-2008
+ Michael O. McCracken. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Michael O. McCracken nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <AppKit/AppKit.h>
+
[EMAIL PROTECTED] BDSKBackgroundView, BDSKComplexStringFormatter;
+
[EMAIL PROTECTED] BDSKComplexStringEditor : NSWindowController {
+ IBOutlet NSTextField *expandedValueTextField;
+ IBOutlet BDSKBackgroundView *backgroundView;
+ NSTableView *tableView;
+ BDSKComplexStringFormatter *formatter;
+ int row;
+ int column;
+}
+
+- (BOOL)attachToTableView:(NSTableView *)aTableView atRow:(int)aRow
column:(int)aColumn withValue:(NSString *)aString
formatter:(BDSKComplexStringFormatter *)aFormatter;
+- (BOOL)isEditing;
+
[EMAIL PROTECTED]
Copied: trunk/bibdesk/BDSKComplexStringEditor.m (from rev 12356,
trunk/bibdesk/BDSKMacroEditor.m)
===================================================================
--- trunk/bibdesk/BDSKComplexStringEditor.m (rev 0)
+++ trunk/bibdesk/BDSKComplexStringEditor.m 2008-01-08 12:40:53 UTC (rev
12358)
@@ -0,0 +1,309 @@
+// BDSKComplexStringEditor.m
+// Created by Michael McCracken, January 2005
+
+/*
+ This software is Copyright (c) 2005-2008
+ Michael O. McCracken. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Michael O. McCracken nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "BDSKComplexStringEditor.h"
+#import "BDSKComplexString.h"
+#import "BDSKComplexStringFormatter.h"
+#import "BDSKBackgroundView.h"
+#import <OmniBase/assertions.h>
+#import "NSWindowController_BDSKExtensions.h"
+
[EMAIL PROTECTED] BDSKComplexStringEditor (Private)
+
+- (void)endEditingAndOrderOut;
+
+- (void)attachWindow;
+- (void)hideWindow;
+
+- (NSRect)currentCellFrame;
+- (id)currentCell;
+
+- (void)setExpandedValue:(NSString *)expandedValue;
+- (void)setErrorReason:(NSString *)reason errorMessage:(NSString *)message;
+
+- (void)cellFrameDidChange:(NSNotification *)notification;
+- (void)cellWindowDidBecomeKey:(NSNotification *)notification;
+- (void)cellWindowDidResignKey:(NSNotification *)notification;
+
+- (void)registerForNotifications;
+- (void)unregisterForNotifications;
+
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] BDSKComplexStringEditor
+
+- (id)init {
+ if (self = [super initWithWindowNibName:[self windowNibName]]) {
+ tableView = nil;
+ formatter = nil;
+ row = -1;
+ column = -1;
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [super dealloc];
+}
+
+- (NSString *)windowNibName {
+ return @"MacroTextFieldWindow";
+}
+
+- (BOOL)attachToTableView:(NSTableView *)aTableView atRow:(int)aRow
column:(int)aColumn withValue:(NSString *)aString
formatter:(BDSKComplexStringFormatter *)aFormatter {
+ if ([self isEditing])
+ return NO; // we are already busy editing
+
+ tableView = [aTableView retain];
+ formatter = [aFormatter retain];
+ row = aRow;
+ column = aColumn;
+
+ [self window]; // make sure we loaded the nib
+
+ [tableView scrollRectToVisible:[self currentCellFrame]];
+ [self setExpandedValue:aString];
+ [self cellWindowDidBecomeKey:nil]; //draw the focus ring we are covering
+ [self cellFrameDidChange:nil]; // reset the frame and show the window
+ // track changes in the text, the frame and the window's key status of the
tableView
+ [self registerForNotifications];
+
+ return YES;
+}
+
+- (BOOL)isEditing {
+ return (tableView != nil);
+}
+
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] BDSKComplexStringEditor (Private)
+
+- (void)registerForNotifications {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ NSWindow *tableViewWindow = [tableView window];
+ NSView *contentView = [[tableView enclosingScrollView] contentView];
+ if (contentView == nil)
+ contentView = tableView;
+
+ [nc addObserver:self
+ selector:@selector(controlTextDidChange:)
+ name:NSControlTextDidChangeNotification
+ object:tableView];
+ [nc addObserver:self
+ selector:@selector(controlTextDidEndEditing:)
+ name:NSControlTextDidEndEditingNotification
+ object:tableView];
+
+ // observe future changes in the frame and the key status of the window
+ // if the target tableView has a scrollview, we should observe its
content view, or we won't notice scrolling
+ [nc addObserver:self
+ selector:@selector(cellFrameDidChange:)
+ name:NSViewFrameDidChangeNotification
+ object:contentView];
+ [nc addObserver:self
+ selector:@selector(cellFrameDidChange:)
+ name:NSViewBoundsDidChangeNotification
+ object:contentView];
+ [nc addObserver:self
+ selector:@selector(cellWindowDidBecomeKey:)
+ name:NSWindowDidBecomeKeyNotification
+ object:tableViewWindow];
+ [nc addObserver:self
+ selector:@selector(cellWindowDidResignKey:)
+ name:NSWindowDidResignKeyNotification
+ object:tableViewWindow];
+ [nc addObserver:self
+ selector:@selector(tableViewColumnDidResize:)
+ name:NSTableViewColumnDidResizeNotification
+ object:tableView];
+ [nc addObserver:self
+ selector:@selector(tableViewColumnDidMove:)
+ name:NSTableViewColumnDidMoveNotification
+ object:tableView];
+}
+
+- (void)unregisterForNotifications {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ NSWindow *tableViewWindow = [tableView window];
+ NSView *contentView = [[tableView enclosingScrollView] contentView];
+ if (contentView == nil)
+ contentView = tableView;
+
+ [nc removeObserver:self name:NSControlTextDidChangeNotification
object:tableView];
+ [nc removeObserver:self name:NSControlTextDidEndEditingNotification
object:tableView];
+ [nc removeObserver:self name:NSViewFrameDidChangeNotification
object:contentView];
+ [nc removeObserver:self name:NSViewBoundsDidChangeNotification
object:contentView];
+ [nc removeObserver:self name:NSWindowDidBecomeKeyNotification
object:tableViewWindow];
+ [nc removeObserver:self name:NSWindowDidResignKeyNotification
object:tableViewWindow];
+ [nc removeObserver:self name:NSTableViewColumnDidResizeNotification
object:tableView];
+ [nc removeObserver:self name:NSTableViewColumnDidMoveNotification
object:tableView];
+}
+
+- (void)endEditingAndOrderOut {
+ // we're going away now, so we can unregister for the notifications we
registered for earlier
+ [self unregisterForNotifications];
+ [self hideWindow];
+
+ // release the temporary objects
+ [tableView release];
+ tableView = nil; // we should set this to nil, as we use this as a flag
that we are editing
+ [formatter release];
+ formatter = nil;
+ row = -1;
+ column = -1;
+}
+
+- (void)attachWindow {
+ [[tableView window] addChildWindow:[self window] ordered:NSWindowAbove];
+ [[self window] orderFront:self];
+}
+
+- (void)hideWindow {
+ [[tableView window] removeChildWindow:[self window]];
+ [[self window] orderOut:self];
+}
+
+- (id)currentCell {
+ return [[[tableView tableColumns] objectAtIndex:column]
dataCellForRow:row];
+}
+
+- (NSRect)currentCellFrame {
+ return [tableView frameOfCellAtColumn:column row:row];
+}
+
+- (void)setExpandedValue:(NSString *)expandedValue {
+ NSColor *color = [NSColor blueColor];
+ if ([expandedValue isInherited])
+ color = [color blendedColorWithFraction:0.4 ofColor:[NSColor
textBackgroundColor]];
+ [expandedValueTextField setTextColor:color];
+ [expandedValueTextField setStringValue:expandedValue];
+ [expandedValueTextField setToolTip:NSLocalizedString(@"This field
contains macros and is being edited as it would appear in a BibTeX file. This
is the expanded value.", @"Tool tip message")];
+}
+
+- (void)setErrorReason:(NSString *)reason errorMessage:(NSString *)message {
+ [expandedValueTextField setTextColor:[NSColor redColor]];
+ [expandedValueTextField setStringValue:reason];
+ [expandedValueTextField setToolTip:message];
+}
+
+#pragma mark Frame change and keywindow notification handlers
+
+- (void)cellFrameDidChange:(NSNotification *)notification {
+ NSRectEdge lowerEdge = [tableView isFlipped] ? NSMaxYEdge : NSMinYEdge;
+ NSRect lowerEdgeRect, ignored;
+ NSRect winFrame = [[self window] frame];
+ float margin = 4.0; // for the shadow and focus ring
+ float minWidth = 16.0; // minimal width of the window without margins,
so subviews won't get shifted
+ NSView *contentView = [[tableView enclosingScrollView] contentView];
+ if (contentView == nil)
+ contentView = tableView;
+
+ NSDivideRect([self currentCellFrame], &lowerEdgeRect, &ignored, 1.0,
lowerEdge);
+ lowerEdgeRect = NSIntersectionRect(lowerEdgeRect, [contentView
visibleRect]);
+ // see if the cell's lower edge is scrolled out of sight
+ if (NSIsEmptyRect(lowerEdgeRect)) {
+ if ([self isWindowVisible] == YES)
+ [self hideWindow];
+ return;
+ }
+
+ lowerEdgeRect = [tableView convertRect:lowerEdgeRect toView:nil]; //
takes into account isFlipped
+ winFrame.origin = [[tableView window]
convertBaseToScreen:lowerEdgeRect.origin];
+ winFrame.origin.y -= NSHeight(winFrame);
+ winFrame.size.width = fmaxf(NSWidth(lowerEdgeRect), minWidth);
+ winFrame = NSInsetRect(winFrame, -margin, 0.0);
+ [[self window] setFrame:winFrame display:YES];
+
+ if ([self isWindowVisible] == NO)
+ [self attachWindow];
+}
+
+- (void)cellWindowDidBecomeKey:(NSNotification *)notification {
+ [backgroundView setShowFocusRing:[[self currentCell] isEditable]];
+}
+
+- (void)cellWindowDidResignKey:(NSNotification *)notification {
+ [backgroundView setShowFocusRing:NO];
+}
+
+#pragma mark Window close delegate method
+
+- (void)windowWillClose:(NSNotification *)notification {
+ // this gets called whenever an editor window closes
+ if ([self isEditing]){
+ OBASSERT_NOT_REACHED("macro textfield window closed while editing");
+ [self endEditingAndOrderOut];
+ }
+}
+
+#pragma mark NSControl notification handlers
+
+- (void)controlTextDidEndEditing:(NSNotification *)notification {
+ [self endEditingAndOrderOut];
+}
+
+- (void)controlTextDidChange:(NSNotification*)notification {
+ NSString *error = [formatter parseError];
+ if (error)
+ [self setErrorReason:error errorMessage:[NSString
stringWithFormat:NSLocalizedString(@"Invalid BibTeX string: [EMAIL PROTECTED]
This change will not be recorded.", @"Tool tip message"),error]];
+ else
+ [self setExpandedValue:[formatter parsedString]];
+}
+
+#pragma mark NSTableView notification handlers
+
+- (void)tableViewColumnDidResize:(NSNotification *)notification {
+ [self cellFrameDidChange:nil];
+}
+
+- (void)tableViewColumnDidMove:(NSNotification *)notification {
+ NSDictionary *userInfo = [notification userInfo];
+ int oldColumn = [[userInfo objectForKey:@"oldColumn"] intValue];
+ int newColumn = [[userInfo objectForKey:@"newColumn"] intValue];
+ if (oldColumn == column) {
+ column = newColumn;
+ } else if (oldColumn < column) {
+ if (newColumn >= column)
+ column--;
+ } else if (oldColumn > column) {
+ if (newColumn < column)
+ column++;
+ }
+ [self cellFrameDidChange:nil];
+}
+
[EMAIL PROTECTED]
Modified: trunk/bibdesk/BDSKEditor.h
===================================================================
--- trunk/bibdesk/BDSKEditor.h 2008-01-08 11:47:03 UTC (rev 12357)
+++ trunk/bibdesk/BDSKEditor.h 2008-01-08 12:40:53 UTC (rev 12358)
@@ -46,7 +46,7 @@
@class BDSKComplexStringFormatter;
@class BDSKCrossrefFormatter;
@class BDSKCitationFormatter;
[EMAIL PROTECTED] BDSKMacroEditor;
[EMAIL PROTECTED] BDSKComplexStringEditor;
@class BDSKImagePopUpButton;
@class BibItem;
@class BDSKStatusBar;
@@ -118,7 +118,7 @@
IBOutlet NSTableView *authorTableView;
// Macro editing stuff
- BDSKMacroEditor *macroEditor;
+ BDSKComplexStringEditor *complexStringEditor;
// edit field stuff
BOOL forceEndEditing;
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2008-01-08 11:47:03 UTC (rev 12357)
+++ trunk/bibdesk/BDSKEditor.m 2008-01-08 12:40:53 UTC (rev 12358)
@@ -56,7 +56,7 @@
#import "BDSKAppController.h"
#import "BDSKImagePopUpButton.h"
#import "BDSKRatingButton.h"
-#import "BDSKMacroEditor.h"
+#import "BDSKComplexStringEditor.h"
#import "BDSKStatusBar.h"
#import "BibAuthor.h"
#import "NSFileManager_BDSKExtensions.h"
@@ -295,7 +295,7 @@
[[NSNotificationCenter defaultCenter] removeObserver:self];
[dragFieldEditor release];
[statusBar release];
- [macroEditor release];
+ [complexStringEditor release];
[tableCellFormatter release];
[crossrefFormatter release];
[citationFormatter release];
@@ -1388,7 +1388,7 @@
if (isEditable == NO)
return NO;
int row = [tableView editedRow];
- return (row != -1 && [macroEditor isEditing] == NO &&
+ return (row != -1 && [complexStringEditor isEditing] == NO &&
[[fields objectAtIndex:row]
isEqualToString:BDSKCrossrefString] == NO && [[fields objectAtIndex:row]
isCitationField] == NO);
}
else if (theAction == @selector(toggleStatusBar:)) {
@@ -1595,10 +1595,10 @@
- (BOOL)editSelectedCellAsMacro{
int row = [tableView selectedRow];
- if ([macroEditor isEditing] || row == -1)
+ if ([complexStringEditor isEditing] || row == -1)
return NO;
- if (macroEditor == nil)
- macroEditor = [[BDSKMacroEditor alloc] init];
+ if (complexStringEditor == nil)
+ complexStringEditor = [[BDSKComplexStringEditor alloc] init];
NSString *value = [publication valueOfField:[fields objectAtIndex:row]];
NSText *fieldEditor = [tableView currentEditor];
[tableCellFormatter setEditAsComplexString:YES];
@@ -1607,7 +1607,7 @@
[[[tableView tableColumnWithIdentifier:@"value"]
dataCellForRow:row] setObjectValue:value];
[fieldEditor selectAll:self];
}
- return [macroEditor attachToTableView:tableView atRow:row column:1
withValue:value formatter:tableCellFormatter];
+ return [complexStringEditor attachToTableView:tableView atRow:row
column:1 withValue:value formatter:tableCellFormatter];
}
- (BOOL)formatter:(BDSKComplexStringFormatter *)formatter
shouldEditAsComplexString:(NSString *)object {
@@ -2167,7 +2167,7 @@
- (NSRange)control:(NSControl *)control textView:(NSTextView *)textView
rangeForUserCompletion:(NSRange)charRange {
if (control != tableView) {
return charRange;
- } else if ([macroEditor isEditing]) {
+ } else if ([complexStringEditor isEditing]) {
return [[NSApp delegate] rangeForUserCompletion:charRange
forBibTeXString:[textView string]];
} else {
@@ -2187,7 +2187,7 @@
- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView
completions:(NSArray *)words forPartialWordRange:(NSRange)charRange
indexOfSelectedItem:(int *)idx{
if (control != tableView) {
return words;
- } else if ([macroEditor isEditing]) {
+ } else if ([complexStringEditor isEditing]) {
return [[NSApp delegate] possibleMatches:[[[publication owner]
macroResolver] allMacroDefinitions]
forBibTeXString:[textView
string]
partialWordRange:charRange
@@ -2538,7 +2538,7 @@
- (void)windowWillClose:(NSNotification *)notification{
// close so it's not hanging around by itself; this works if the doc
window closes, also
- [macroEditor close];
+ [complexStringEditor close];
// this can give errors when the application quits when an editor
window is open
[[BDSKScriptHookManager sharedManager]
runScriptHookWithName:BDSKCloseEditorWindowScriptHookName
Deleted: trunk/bibdesk/BDSKMacroEditor.h
===================================================================
--- trunk/bibdesk/BDSKMacroEditor.h 2008-01-08 11:47:03 UTC (rev 12357)
+++ trunk/bibdesk/BDSKMacroEditor.h 2008-01-08 12:40:53 UTC (rev 12358)
@@ -1,56 +0,0 @@
-// BDSKMacroEditor.h
-// Created by Michael McCracken, January 2005
-
-// Inspired by and somewhat copied from Calendar, whose author I've
-// lost record of.
-
-/*
- This software is Copyright (c) 2005-2008
- Michael O. McCracken. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of Michael O. McCracken nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <AppKit/AppKit.h>
-
[EMAIL PROTECTED] BDSKBackgroundView, BDSKComplexStringFormatter;
-
[EMAIL PROTECTED] BDSKMacroEditor : NSWindowController {
- IBOutlet NSTextField *expandedValueTextField;
- IBOutlet BDSKBackgroundView *backgroundView;
- NSTableView *tableView;
- BDSKComplexStringFormatter *formatter;
- int row;
- int column;
-}
-
-- (BOOL)attachToTableView:(NSTableView *)aTableView atRow:(int)aRow
column:(int)aColumn withValue:(NSString *)aString
formatter:(BDSKComplexStringFormatter *)aFormatter;
-- (BOOL)isEditing;
-
[EMAIL PROTECTED]
Deleted: trunk/bibdesk/BDSKMacroEditor.m
===================================================================
--- trunk/bibdesk/BDSKMacroEditor.m 2008-01-08 11:47:03 UTC (rev 12357)
+++ trunk/bibdesk/BDSKMacroEditor.m 2008-01-08 12:40:53 UTC (rev 12358)
@@ -1,309 +0,0 @@
-// BDSKMacroEditor.m
-// Created by Michael McCracken, January 2005
-
-/*
- This software is Copyright (c) 2005-2008
- Michael O. McCracken. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of Michael O. McCracken nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "BDSKMacroEditor.h"
-#import "BDSKComplexString.h"
-#import "BDSKComplexStringFormatter.h"
-#import "BDSKBackgroundView.h"
-#import <OmniBase/assertions.h>
-#import "NSWindowController_BDSKExtensions.h"
-
[EMAIL PROTECTED] BDSKMacroEditor (Private)
-
-- (void)endEditingAndOrderOut;
-
-- (void)attachWindow;
-- (void)hideWindow;
-
-- (NSRect)currentCellFrame;
-- (id)currentCell;
-
-- (void)setExpandedValue:(NSString *)expandedValue;
-- (void)setErrorReason:(NSString *)reason errorMessage:(NSString *)message;
-
-- (void)cellFrameDidChange:(NSNotification *)notification;
-- (void)cellWindowDidBecomeKey:(NSNotification *)notification;
-- (void)cellWindowDidResignKey:(NSNotification *)notification;
-
-- (void)registerForNotifications;
-- (void)unregisterForNotifications;
-
[EMAIL PROTECTED]
-
[EMAIL PROTECTED] BDSKMacroEditor
-
-- (id)init {
- if (self = [super initWithWindowNibName:[self windowNibName]]) {
- tableView = nil;
- formatter = nil;
- row = -1;
- column = -1;
- }
- return self;
-}
-
-- (void)dealloc {
- [super dealloc];
-}
-
-- (NSString *)windowNibName {
- return @"MacroTextFieldWindow";
-}
-
-- (BOOL)attachToTableView:(NSTableView *)aTableView atRow:(int)aRow
column:(int)aColumn withValue:(NSString *)aString
formatter:(BDSKComplexStringFormatter *)aFormatter {
- if ([self isEditing])
- return NO; // we are already busy editing
-
- tableView = [aTableView retain];
- formatter = [aFormatter retain];
- row = aRow;
- column = aColumn;
-
- [self window]; // make sure we loaded the nib
-
- [tableView scrollRectToVisible:[self currentCellFrame]];
- [self setExpandedValue:aString];
- [self cellWindowDidBecomeKey:nil]; //draw the focus ring we are covering
- [self cellFrameDidChange:nil]; // reset the frame and show the window
- // track changes in the text, the frame and the window's key status of the
tableView
- [self registerForNotifications];
-
- return YES;
-}
-
-- (BOOL)isEditing {
- return (tableView != nil);
-}
-
[EMAIL PROTECTED]
-
[EMAIL PROTECTED] BDSKMacroEditor (Private)
-
-- (void)registerForNotifications {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- NSWindow *tableViewWindow = [tableView window];
- NSView *contentView = [[tableView enclosingScrollView] contentView];
- if (contentView == nil)
- contentView = tableView;
-
- [nc addObserver:self
- selector:@selector(controlTextDidChange:)
- name:NSControlTextDidChangeNotification
- object:tableView];
- [nc addObserver:self
- selector:@selector(controlTextDidEndEditing:)
- name:NSControlTextDidEndEditingNotification
- object:tableView];
-
- // observe future changes in the frame and the key status of the window
- // if the target tableView has a scrollview, we should observe its
content view, or we won't notice scrolling
- [nc addObserver:self
- selector:@selector(cellFrameDidChange:)
- name:NSViewFrameDidChangeNotification
- object:contentView];
- [nc addObserver:self
- selector:@selector(cellFrameDidChange:)
- name:NSViewBoundsDidChangeNotification
- object:contentView];
- [nc addObserver:self
- selector:@selector(cellWindowDidBecomeKey:)
- name:NSWindowDidBecomeKeyNotification
- object:tableViewWindow];
- [nc addObserver:self
- selector:@selector(cellWindowDidResignKey:)
- name:NSWindowDidResignKeyNotification
- object:tableViewWindow];
- [nc addObserver:self
- selector:@selector(tableViewColumnDidResize:)
- name:NSTableViewColumnDidResizeNotification
- object:tableView];
- [nc addObserver:self
- selector:@selector(tableViewColumnDidMove:)
- name:NSTableViewColumnDidMoveNotification
- object:tableView];
-}
-
-- (void)unregisterForNotifications {
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- NSWindow *tableViewWindow = [tableView window];
- NSView *contentView = [[tableView enclosingScrollView] contentView];
- if (contentView == nil)
- contentView = tableView;
-
- [nc removeObserver:self name:NSControlTextDidChangeNotification
object:tableView];
- [nc removeObserver:self name:NSControlTextDidEndEditingNotification
object:tableView];
- [nc removeObserver:self name:NSViewFrameDidChangeNotification
object:contentView];
- [nc removeObserver:self name:NSViewBoundsDidChangeNotification
object:contentView];
- [nc removeObserver:self name:NSWindowDidBecomeKeyNotification
object:tableViewWindow];
- [nc removeObserver:self name:NSWindowDidResignKeyNotification
object:tableViewWindow];
- [nc removeObserver:self name:NSTableViewColumnDidResizeNotification
object:tableView];
- [nc removeObserver:self name:NSTableViewColumnDidMoveNotification
object:tableView];
-}
-
-- (void)endEditingAndOrderOut {
- // we're going away now, so we can unregister for the notifications we
registered for earlier
- [self unregisterForNotifications];
- [self hideWindow];
-
- // release the temporary objects
- [tableView release];
- tableView = nil; // we should set this to nil, as we use this as a flag
that we are editing
- [formatter release];
- formatter = nil;
- row = -1;
- column = -1;
-}
-
-- (void)attachWindow {
- [[tableView window] addChildWindow:[self window] ordered:NSWindowAbove];
- [[self window] orderFront:self];
-}
-
-- (void)hideWindow {
- [[tableView window] removeChildWindow:[self window]];
- [[self window] orderOut:self];
-}
-
-- (id)currentCell {
- return [[[tableView tableColumns] objectAtIndex:column]
dataCellForRow:row];
-}
-
-- (NSRect)currentCellFrame {
- return [tableView frameOfCellAtColumn:column row:row];
-}
-
-- (void)setExpandedValue:(NSString *)expandedValue {
- NSColor *color = [NSColor blueColor];
- if ([expandedValue isInherited])
- color = [color blendedColorWithFraction:0.4 ofColor:[NSColor
textBackgroundColor]];
- [expandedValueTextField setTextColor:color];
- [expandedValueTextField setStringValue:expandedValue];
- [expandedValueTextField setToolTip:NSLocalizedString(@"This field
contains macros and is being edited as it would appear in a BibTeX file. This
is the expanded value.", @"Tool tip message")];
-}
-
-- (void)setErrorReason:(NSString *)reason errorMessage:(NSString *)message {
- [expandedValueTextField setTextColor:[NSColor redColor]];
- [expandedValueTextField setStringValue:reason];
- [expandedValueTextField setToolTip:message];
-}
-
-#pragma mark Frame change and keywindow notification handlers
-
-- (void)cellFrameDidChange:(NSNotification *)notification {
- NSRectEdge lowerEdge = [tableView isFlipped] ? NSMaxYEdge : NSMinYEdge;
- NSRect lowerEdgeRect, ignored;
- NSRect winFrame = [[self window] frame];
- float margin = 4.0; // for the shadow and focus ring
- float minWidth = 16.0; // minimal width of the window without margins,
so subviews won't get shifted
- NSView *contentView = [[tableView enclosingScrollView] contentView];
- if (contentView == nil)
- contentView = tableView;
-
- NSDivideRect([self currentCellFrame], &lowerEdgeRect, &ignored, 1.0,
lowerEdge);
- lowerEdgeRect = NSIntersectionRect(lowerEdgeRect, [contentView
visibleRect]);
- // see if the cell's lower edge is scrolled out of sight
- if (NSIsEmptyRect(lowerEdgeRect)) {
- if ([self isWindowVisible] == YES)
- [self hideWindow];
- return;
- }
-
- lowerEdgeRect = [tableView convertRect:lowerEdgeRect toView:nil]; //
takes into account isFlipped
- winFrame.origin = [[tableView window]
convertBaseToScreen:lowerEdgeRect.origin];
- winFrame.origin.y -= NSHeight(winFrame);
- winFrame.size.width = fmaxf(NSWidth(lowerEdgeRect), minWidth);
- winFrame = NSInsetRect(winFrame, -margin, 0.0);
- [[self window] setFrame:winFrame display:YES];
-
- if ([self isWindowVisible] == NO)
- [self attachWindow];
-}
-
-- (void)cellWindowDidBecomeKey:(NSNotification *)notification {
- [backgroundView setShowFocusRing:[[self currentCell] isEditable]];
-}
-
-- (void)cellWindowDidResignKey:(NSNotification *)notification {
- [backgroundView setShowFocusRing:NO];
-}
-
-#pragma mark Window close delegate method
-
-- (void)windowWillClose:(NSNotification *)notification {
- // this gets called whenever an editor window closes
- if ([self isEditing]){
- OBASSERT_NOT_REACHED("macro textfield window closed while editing");
- [self endEditingAndOrderOut];
- }
-}
-
-#pragma mark NSControl notification handlers
-
-- (void)controlTextDidEndEditing:(NSNotification *)notification {
- [self endEditingAndOrderOut];
-}
-
-- (void)controlTextDidChange:(NSNotification*)notification {
- NSString *error = [formatter parseError];
- if (error)
- [self setErrorReason:error errorMessage:[NSString
stringWithFormat:NSLocalizedString(@"Invalid BibTeX string: [EMAIL PROTECTED]
This change will not be recorded.", @"Tool tip message"),error]];
- else
- [self setExpandedValue:[formatter parsedString]];
-}
-
-#pragma mark NSTableView notification handlers
-
-- (void)tableViewColumnDidResize:(NSNotification *)notification {
- [self cellFrameDidChange:nil];
-}
-
-- (void)tableViewColumnDidMove:(NSNotification *)notification {
- NSDictionary *userInfo = [notification userInfo];
- int oldColumn = [[userInfo objectForKey:@"oldColumn"] intValue];
- int newColumn = [[userInfo objectForKey:@"newColumn"] intValue];
- if (oldColumn == column) {
- column = newColumn;
- } else if (oldColumn < column) {
- if (newColumn >= column)
- column--;
- } else if (oldColumn > column) {
- if (newColumn < column)
- column++;
- }
- [self cellFrameDidChange:nil];
-}
-
[EMAIL PROTECTED]
Modified: trunk/bibdesk/BDSKMacroWindowController.h
===================================================================
--- trunk/bibdesk/BDSKMacroWindowController.h 2008-01-08 11:47:03 UTC (rev
12357)
+++ trunk/bibdesk/BDSKMacroWindowController.h 2008-01-08 12:40:53 UTC (rev
12358)
@@ -37,7 +37,7 @@
*/
#import <Cocoa/Cocoa.h>
[EMAIL PROTECTED] BDSKMacroResolver, BDSKComplexStringFormatter,
BDSKMacroEditor;
[EMAIL PROTECTED] BDSKMacroResolver, BDSKComplexStringFormatter,
BDSKComplexStringEditor;
@interface BDSKMacroWindowController : NSWindowController {
IBOutlet NSArrayController *arrayController;
@@ -48,7 +48,7 @@
BDSKMacroResolver *macroResolver;
NSMutableArray *macros;
BDSKComplexStringFormatter *tableCellFormatter;
- BDSKMacroEditor *macroEditor;
+ BDSKComplexStringEditor *complexStringEditor;
BOOL isEditable;
BOOL showAll;
}
Modified: trunk/bibdesk/BDSKMacroWindowController.m
===================================================================
--- trunk/bibdesk/BDSKMacroWindowController.m 2008-01-08 11:47:03 UTC (rev
12357)
+++ trunk/bibdesk/BDSKMacroWindowController.m 2008-01-08 12:40:53 UTC (rev
12358)
@@ -43,7 +43,7 @@
#import <OmniFoundation/NSUndoManager-OFExtensions.h> // for isUndoingOrRedoing
#import <OmniFoundation/NSString-OFExtensions.h>
#import "OmniFoundation/NSData-OFExtensions.h"
-#import "BDSKMacroEditor.h"
+#import "BDSKComplexStringEditor.h"
#import "NSString_BDSKExtensions.h"
#import "BDSKBibTeXParser.h"
#import "BDSKComplexStringFormatter.h"
@@ -71,7 +71,7 @@
macros = [[NSMutableArray alloc] initWithCapacity:5];
tableCellFormatter = [[BDSKComplexStringFormatter alloc]
initWithDelegate:self macroResolver:aMacroResolver];
- macroEditor = nil;
+ complexStringEditor = nil;
isEditable = (macroResolver == [BDSKMacroResolver
defaultMacroResolver] || [[macroResolver owner] isDocument]);
@@ -105,7 +105,7 @@
[[NSNotificationCenter defaultCenter] removeObserver:self];
[macros release];
[tableCellFormatter release];
- [macroEditor release];
+ [complexStringEditor release];
[macroResolver release];
[super dealloc];
}
@@ -341,10 +341,10 @@
- (BOOL)editSelectedCellAsMacro{
int row = [tableView selectedRow];
- if ([macroEditor isEditing] || row == -1)
+ if ([complexStringEditor isEditing] || row == -1)
return NO;
- if(macroEditor == nil)
- macroEditor = [[BDSKMacroEditor alloc] init];
+ if(complexStringEditor == nil)
+ complexStringEditor = [[BDSKComplexStringEditor alloc] init];
BDSKMacro *macro = [[arrayController arrangedObjects] objectAtIndex:row];
NSString *value = [macro value];
NSText *fieldEditor = [tableView currentEditor];
@@ -354,7 +354,7 @@
[[[tableView tableColumnWithIdentifier:@"value"]
dataCellForRow:row] setObjectValue:value];
[fieldEditor selectAll:self];
}
- return [macroEditor attachToTableView:tableView atRow:row column:1
withValue:value formatter:tableCellFormatter];
+ return [complexStringEditor attachToTableView:tableView atRow:row
column:1 withValue:value formatter:tableCellFormatter];
}
#pragma mark BDSKMacroFormatter delegate
Modified: trunk/bibdesk/BDSKTextImportController.h
===================================================================
--- trunk/bibdesk/BDSKTextImportController.h 2008-01-08 11:47:03 UTC (rev
12357)
+++ trunk/bibdesk/BDSKTextImportController.h 2008-01-08 12:40:53 UTC (rev
12358)
@@ -40,7 +40,7 @@
#import "BDSKSheetController.h"
#import "BDSKOwnerProtocol.h"
[EMAIL PROTECTED] BibDocument, BibItem, BDSKEdgeView, WebView, WebDownload,
BDSKImagePopUpButton, BDSKMacroEditor;
[EMAIL PROTECTED] BibDocument, BibItem, BDSKEdgeView, WebView, WebDownload,
BDSKImagePopUpButton, BDSKComplexStringEditor;
@class BDSKComplexStringFormatter, BDSKCiteKeyFormatter,
BDSKCrossrefFormatter, BDSKCitationFormatter, BDSKTypeSelectHelper;
@interface BDSKTextImportController : BDSKSheetController <BDSKOwner> {
@@ -90,7 +90,7 @@
int receivedContentLength;
int expectedContentLength;
- BDSKMacroEditor *macroEditor;
+ BDSKComplexStringEditor *complexStringEditor;
BOOL temporaryTypeSelectMode;
NSResponder *savedFirstResponder;
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2008-01-08 11:47:03 UTC (rev
12357)
+++ trunk/bibdesk/BDSKTextImportController.m 2008-01-08 12:40:53 UTC (rev
12358)
@@ -40,7 +40,7 @@
#import "BDSKOwnerProtocol.h"
#import "BibItem.h"
#import "BDSKTypeManager.h"
-#import "BDSKMacroEditor.h"
+#import "BDSKComplexStringEditor.h"
#import "BDSKImagePopUpButton.h"
#import <OmniAppKit/OATypeAheadSelectionHelper.h>
#import "BDSKTypeSelectHelper.h"
@@ -125,7 +125,7 @@
tableCellFormatter = [[BDSKComplexStringFormatter alloc]
initWithDelegate:self macroResolver:[doc macroResolver]];
crossrefFormatter = [[BDSKCrossrefFormatter alloc] init];
citationFormatter = [[BDSKCitationFormatter alloc]
initWithDelegate:self];
- macroEditor = nil;
+ complexStringEditor = nil;
}
return self;
}
@@ -143,7 +143,7 @@
[citationFormatter release];
[sourceBox release];
[webViewView release];
- [macroEditor release];
+ [complexStringEditor release];
[webSelection release];
[tableFieldEditor release];
[downloadFileName release];
@@ -991,7 +991,7 @@
return YES;
} else if ([menuItem action] ==
@selector(editSelectedFieldAsRawBibTeX:)) {
int row = [itemTableView selectedRow];
- return (row != -1 && [macroEditor isEditing] == NO && [[fields
objectAtIndex:row] isEqualToString:BDSKCrossrefString] == NO && [[fields
objectAtIndex:row] isCitationField] == NO);
+ return (row != -1 && [complexStringEditor isEditing] == NO &&
[[fields objectAtIndex:row] isEqualToString:BDSKCrossrefString] == NO &&
[[fields objectAtIndex:row] isCitationField] == NO);
} else if ([menuItem action] == @selector(generateCiteKey:)) {
// need to set the title, as the document can change it in the
main menu
[menuItem setTitle: NSLocalizedString(@"Generate Cite Key",
@"Menu item title")];
@@ -1301,7 +1301,7 @@
- (NSRange)control:(NSControl *)control textView:(NSTextView *)textView
rangeForUserCompletion:(NSRange)charRange {
if (control != itemTableView) {
return charRange;
- } else if ([macroEditor isEditing]) {
+ } else if ([complexStringEditor isEditing]) {
return [[NSApp delegate] rangeForUserCompletion:charRange
forBibTeXString:[textView string]];
} else {
@@ -1315,7 +1315,7 @@
- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView
completions:(NSArray *)words forPartialWordRange:(NSRange)charRange
indexOfSelectedItem:(int *)idx{
if (control != itemTableView) {
return words;
- } else if ([macroEditor isEditing]) {
+ } else if ([complexStringEditor isEditing]) {
return [[NSApp delegate] possibleMatches:[[document
macroResolver] allMacroDefinitions]
forBibTeXString:[textView
string]
partialWordRange:charRange
@@ -1348,10 +1348,10 @@
- (BOOL)editSelectedCellAsMacro{
int row = [itemTableView selectedRow];
- if ([macroEditor isEditing] || row == -1 || [[fields objectAtIndex:row]
isEqualToString:BDSKCrossrefString] || [[fields objectAtIndex:row]
isCitationField])
+ if ([complexStringEditor isEditing] || row == -1 || [[fields
objectAtIndex:row] isEqualToString:BDSKCrossrefString] || [[fields
objectAtIndex:row] isCitationField])
return NO;
- if (macroEditor == nil)
- macroEditor = [[BDSKMacroEditor alloc] init];
+ if (complexStringEditor == nil)
+ complexStringEditor = [[BDSKComplexStringEditor alloc] init];
NSString *value = [item valueOfField:[fields objectAtIndex:row]];
NSText *fieldEditor = [itemTableView currentEditor];
[tableCellFormatter setEditAsComplexString:YES];
@@ -1360,7 +1360,7 @@
[[[itemTableView tableColumnWithIdentifier:@"value"]
dataCellForRow:row] setObjectValue:value];
[fieldEditor selectAll:self];
}
- return [macroEditor attachToTableView:itemTableView atRow:row column:2
withValue:value formatter:tableCellFormatter];
+ return [complexStringEditor attachToTableView:itemTableView atRow:row
column:2 withValue:value formatter:tableCellFormatter];
}
#pragma mark BDSKMacroFormatter delegate
Modified: trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj
===================================================================
--- trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2008-01-08 11:47:03 UTC
(rev 12357)
+++ trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2008-01-08 12:40:53 UTC
(rev 12358)
@@ -49,7 +49,7 @@
/* Begin PBXBuildFile section */
2730077E07CF20B500F2E485 /* BDSKBorderlessKeyWindow.m in
Sources */ = {isa = PBXBuildFile; fileRef = 2730077707CF20B500F2E485 /*
BDSKBorderlessKeyWindow.m */; };
2730077F07CF20B500F2E485 /* BDSKComplexString.m in Sources */ =
{isa = PBXBuildFile; fileRef = 2730077807CF20B500F2E485 /* BDSKComplexString.m
*/; };
- 2730078107CF20B500F2E485 /* BDSKMacroEditor.m in Sources */ =
{isa = PBXBuildFile; fileRef = 2730077A07CF20B500F2E485 /* BDSKMacroEditor.m
*/; };
+ 2730078107CF20B500F2E485 /* BDSKComplexStringEditor.m in
Sources */ = {isa = PBXBuildFile; fileRef = 2730077A07CF20B500F2E485 /*
BDSKComplexStringEditor.m */; };
2730078307CF20B500F2E485 /* BDSKMacroWindowController.m in
Sources */ = {isa = PBXBuildFile; fileRef = 2730077C07CF20B500F2E485 /*
BDSKMacroWindowController.m */; };
2730079F07CF214E00F2E485 /* MacroTextFieldWindow.nib in
Resources */ = {isa = PBXBuildFile; fileRef = 2730079B07CF214E00F2E485 /*
MacroTextFieldWindow.nib */; };
273007A007CF214E00F2E485 /* MacroWindow.nib in Resources */ =
{isa = PBXBuildFile; fileRef = 2730079D07CF214E00F2E485 /* MacroWindow.nib */;
};
@@ -890,8 +890,8 @@
2730077607CF20B500F2E485 /* BDSKBorderlessKeyWindow.h */ = {isa
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path
= BDSKBorderlessKeyWindow.h; sourceTree = "<group>"; };
2730077707CF20B500F2E485 /* BDSKBorderlessKeyWindow.m */ = {isa
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc;
path = BDSKBorderlessKeyWindow.m; sourceTree = "<group>"; };
2730077807CF20B500F2E485 /* BDSKComplexString.m */ = {isa =
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc;
path = BDSKComplexString.m; sourceTree = "<group>"; };
- 2730077907CF20B500F2E485 /* BDSKMacroEditor.h */ = {isa =
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path =
BDSKMacroEditor.h; sourceTree = "<group>"; };
- 2730077A07CF20B500F2E485 /* BDSKMacroEditor.m */ = {isa =
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc;
path = BDSKMacroEditor.m; sourceTree = "<group>"; };
+ 2730077907CF20B500F2E485 /* BDSKComplexStringEditor.h */ = {isa
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path
= BDSKComplexStringEditor.h; sourceTree = "<group>"; };
+ 2730077A07CF20B500F2E485 /* BDSKComplexStringEditor.m */ = {isa
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc;
path = BDSKComplexStringEditor.m; sourceTree = "<group>"; };
2730077B07CF20B500F2E485 /* BDSKMacroWindowController.h */ =
{isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h;
path = BDSKMacroWindowController.h; sourceTree = "<group>"; };
2730077C07CF20B500F2E485 /* BDSKMacroWindowController.m */ =
{isa = PBXFileReference; fileEncoding = 30; lastKnownFileType =
sourcecode.c.objc; path = BDSKMacroWindowController.m; sourceTree = "<group>";
};
2730079C07CF214E00F2E485 /* English */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path =
English.lproj/MacroTextFieldWindow.nib; sourceTree = "<group>"; };
@@ -2099,6 +2099,7 @@
CEFA07F30AF0E52100A3B4B1 /* BDSKApplication.m
*/,
CEF83F360C77911F00A3AD51 /*
BDSKBookmarkController.m */,
3D866C2708031CEC00FF1724 /*
BDSKCharacterConversion.m */,
+ 2730077A07CF20B500F2E485 /*
BDSKComplexStringEditor.m */,
CE38FB85091D946A00BCB69D /*
BDSKConditionController.m */,
F95ED68A0B07B87F00000BBF /* BDSKController.m */,
CE7A4A8D0B0B475B00D1B333 /*
BDSKCustomCiteDrawerController.m */,
@@ -2115,7 +2116,6 @@
F9022C6A075802E300C3F701 /* BDSKFiler.m */,
CE38FB8D091D94A100BCB69D /*
BDSKFilterController.m */,
F97965F0086909EA00050427 /*
BDSKFindController.m */,
- 2730077A07CF20B500F2E485 /* BDSKMacroEditor.m
*/,
2730077C07CF20B500F2E485 /*
BDSKMacroWindowController.m */,
CEF71AD90B91BBCB003A2771 /*
BDSKNotesWindowController.m */,
CE22E1CC0A8CCF9C002CEFB8 /*
BDSKOrphanedFilesFinder.m */,
@@ -2431,6 +2431,7 @@
CE6003260AF3E465000B5680 /* BDSKColoredBox.h */,
CE3A0BD50B1634D500233208 /*
BDSKCompletionServerProtocol.h */,
273007A407CF216700F2E485 /* BDSKComplexString.h
*/,
+ 2730077907CF20B500F2E485 /*
BDSKComplexStringEditor.h */,
F9022C480758027800C3F701 /*
BDSKComplexStringFormatter.h */,
CE38FB82091D946900BCB69D /* BDSKCondition.h */,
CE38FB84091D946A00BCB69D /*
BDSKConditionController.h */,
@@ -2495,7 +2496,6 @@
F90B093F0C283B5100144F1B /* BDSKLogUtilities.h
*/,
F9201DFF0B72504C007E45BB /* BDSKMacro.h */,
CE3B5E7A09CEDE470017D339 /* BDSKMacroResolver.h
*/,
- 2730077907CF20B500F2E485 /* BDSKMacroEditor.h
*/,
2730077B07CF20B500F2E485 /*
BDSKMacroWindowController.h */,
CE34A5710B249E0B00755730 /* BDSKMARCParser.h */,
F9D0E5340BF92768001C6C22 /* BDSKMODSParser.h */,
@@ -3590,7 +3590,7 @@
F916E69607A9F9AB009EF011 /*
BDSKThreadSafeMutableDictionary.m in Sources */,
2730077E07CF20B500F2E485 /*
BDSKBorderlessKeyWindow.m in Sources */,
2730077F07CF20B500F2E485 /* BDSKComplexString.m
in Sources */,
- 2730078107CF20B500F2E485 /* BDSKMacroEditor.m
in Sources */,
+ 2730078107CF20B500F2E485 /*
BDSKComplexStringEditor.m in Sources */,
2730078307CF20B500F2E485 /*
BDSKMacroWindowController.m in Sources */,
F9A6742B07D04E8000782ACD /* BDSKFontManager.m
in Sources */,
3D824AA907D099C300FB2F67 /*
BDSKBackgroundView.m in Sources */,
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit