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

Reply via email to