Revision: 12974
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12974&view=rev
Author: hofman
Date: 2008-03-05 11:12:47 -0800 (Wed, 05 Mar 2008)
Log Message:
-----------
Revert previous commit, as it was somewhere messed up and incomplete.
Modified Paths:
--------------
trunk/bibdesk/BibDocument+Menus.m
trunk/bibdesk/BibDocument+Scripting.m
trunk/bibdesk/BibDocument.h
trunk/bibdesk/BibDocument.m
trunk/bibdesk/BibDocument_Actions.m
trunk/bibdesk/BibDocument_Search.m
Modified: trunk/bibdesk/BibDocument+Menus.m
===================================================================
--- trunk/bibdesk/BibDocument+Menus.m 2008-03-05 14:58:09 UTC (rev 12973)
+++ trunk/bibdesk/BibDocument+Menus.m 2008-03-05 19:12:47 UTC (rev 12974)
@@ -280,12 +280,14 @@
return NO;
// even if there is a selection, we may have an error condition with
nothing to print
// see comments on exception in -printableView, which is the main
motivation for this validation
- else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ else if([currentPreviewView isEqual:previewerBox])
return [[previewer pdfView] document] != nil;
- else if (bottomPreviewDisplay == BDSKPreviewDisplayText)
- return [bottomPreviewTextView textStorage] != nil;
+ else if ([currentPreviewView isEqual:previewBox])
+ return [previewPdfView document] != nil;
+ else if ([[previewer textView] isEqual:previewBox])
+ return [[previewer textView] textStorage] != nil;
else
- return NO;
+ return [previewTextView textStorage] != nil;
}
- (BOOL) validateToggleToggleCustomCiteDrawerMenuItem:(NSMenuItem*) menuItem {
@@ -530,10 +532,10 @@
- (BOOL)validateChangePreviewDisplayMenuItem:(NSMenuItem *)menuItem {
int tag = [menuItem tag], state = NSOffState;
NSString *style = [menuItem representedObject];
- if (tag == bottomPreviewDisplay && tag != BDSKPreviewDisplayText) {
+ if (tag == previewDisplay && tag != BDSKPreviewDisplayText) {
state = NSOnState;
- } else if (tag == BDSKPreviewDisplayText && [style
isEqualToString:bottomPreviewDisplayTemplate]) {
- if (tag == bottomPreviewDisplay || [menuItem menu] ==
bottomTemplatePreviewDisplayMenu)
+ } else if (tag == BDSKPreviewDisplayText && [style
isEqualToString:previewDisplayTemplate]) {
+ if (tag == previewDisplay || [menuItem menu] == templatePreviewMenu)
state = NSOnState;
}
[menuItem setState:state];
Modified: trunk/bibdesk/BibDocument+Scripting.m
===================================================================
--- trunk/bibdesk/BibDocument+Scripting.m 2008-03-05 14:58:09 UTC (rev
12973)
+++ trunk/bibdesk/BibDocument+Scripting.m 2008-03-05 19:12:47 UTC (rev
12974)
@@ -138,14 +138,15 @@
}
- (id)handlePrintScriptCommand:(NSScriptCommand *)command {
- if (bottomPreviewDisplay == BDSKPreviewDisplayTeX) {
+ if([currentPreviewView isEqual:previewerBox] || [currentPreviewView
isEqual:previewBox]) {
+ // we let the PDFView handle printing
NSDictionary *args = [command evaluatedArguments];
id settings = [args objectForKey:@"PrintSettings"];
// PDFView does not allow printing without showing the dialog, so we
just ignore that setting
NSPrintInfo *printInfo = [self printInfo];
- PDFView *pdfView = [previewer pdfView];
+ PDFView *pdfView = (PDFView *)[(NSBox *)currentPreviewView
contentView];
if ([settings isKindOfClass:[NSDictionary class]]) {
settings = [[settings mutableCopy] autorelease];
Modified: trunk/bibdesk/BibDocument.h
===================================================================
--- trunk/bibdesk/BibDocument.h 2008-03-05 14:58:09 UTC (rev 12973)
+++ trunk/bibdesk/BibDocument.h 2008-03-05 19:12:47 UTC (rev 12974)
@@ -139,34 +139,37 @@
IBOutlet BDSKGradientView *groupGradientView;
NSString *currentGroupField;
-#pragma mark Side preview variables
+#pragma mark File pane variables
- IBOutlet NSTabView *sidePreviewTabView;
- IBOutlet NSView *sidePreviewView;
- IBOutlet NSTextView *sidePreviewTextView;
- IBOutlet FileView *sideFileView;
+ IBOutlet FileView *fileView;
+ NSTextView *sidePreviewTextView;
+ NSView *currentSidePreviewView;
IBOutlet BDSKCollapsibleView *fileCollapsibleView;
IBOutlet BDSKGradientView *fileGradientView;
+ BDSKFileMigrationController *migrationController;
+
int sidePreviewDisplay;
NSString *sidePreviewDisplayTemplate;
IBOutlet NSSegmentedControl *sidePreviewButton;
NSMenu *sideTemplatePreviewMenu;
-#pragma mark Bottom preview variables
+#pragma mark Preview variables
- IBOutlet NSTabView *bottomPreviewTabView;
- IBOutlet NSView *bottomPreviewView;
- IBOutlet NSTextView *bottomPreviewTextView;
- IBOutlet FileView *bottomFileView;
+ IBOutlet NSTextView *previewTextView;
+ IBOutlet NSView *currentPreviewView;
BDSKPreviewer *previewer;
+ BDSKEdgeView *previewerBox;
+ BDSKZoomablePDFView *previewPdfView;
+ BDSKEdgeView *previewBox;
+ FileView *bottomFileView;
- int bottomPreviewDisplay;
- NSString *bottomPreviewDisplayTemplate;
+ int previewDisplay;
+ NSString *previewDisplayTemplate;
- IBOutlet NSSegmentedControl *bottomPreviewButton;
- NSMenu *bottomTemplatePreviewDisplayMenu;
+ IBOutlet NSSegmentedControl *previewButton;
+ NSMenu *templatePreviewMenu;
#pragma mark Toolbar variables
@@ -254,8 +257,6 @@
BDSKSearchButtonController *searchButtonController;
BDSKDocumentSearch *documentSearch;
- BDSKFileMigrationController *migrationController;
-
}
@@ -323,12 +324,12 @@
- (void)updatePreviewer:(BDSKPreviewer *)aPreviewer;
/*!
- @method updateBottomPreviewPane
+ @method updatePreviewPane
@abstract Handles writing the preview pane. (Not the PDF Preview)
@discussion -
*/
-- (void)updateBottomPreviewPane;
+- (void)updatePreviewPane;
- (void)updateSidePreviewPane;
/*!
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2008-03-05 14:58:09 UTC (rev 12973)
+++ trunk/bibdesk/BibDocument.m 2008-03-05 19:12:47 UTC (rev 12974)
@@ -225,8 +225,8 @@
pboardHelper = [[BDSKItemPasteboardHelper alloc] init];
[pboardHelper setDelegate:self];
- bottomPreviewDisplay = BDSKPreviewDisplayText;
- bottomPreviewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
+ previewDisplay = BDSKPreviewDisplayText;
+ previewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
sidePreviewDisplay = BDSKPreviewDisplayFiles;
sidePreviewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
@@ -305,8 +305,14 @@
[toolbarItems release];
[statusBar release];
[[tableView enclosingScrollView] release];
+ [[previewTextView enclosingScrollView] release];
+ [[bottomFileView enclosingScrollView] release];
+ [[fileView enclosingScrollView] release];
+ [[sidePreviewTextView enclosingScrollView] release];
[previewer release];
- [bottomPreviewDisplayTemplate release];
+ [previewerBox release];
+ [previewBox release];
+ [previewDisplayTemplate release];
[sidePreviewDisplayTemplate release];
[macroWC release];
[infoWC release];
@@ -423,20 +429,14 @@
[[mainBox superview] addSubview:statusBar
positioned:NSWindowBelow relativeTo:nil];
}
[statusBar
setProgressIndicatorStyle:BDSKProgressIndicatorSpinningStyle];
- [statusBar setTextOffset:NSMaxX([bottomPreviewButton frame]) - 2.0];
+ [statusBar setTextOffset:NSMaxX([previewButton frame]) - 2.0];
- [bottomPreviewTabView setFrame:[bottomPreviewView frame]];
- [[bottomPreviewView superview] replaceSubview:bottomPreviewView
with:bottomPreviewTabView];
+ templatePreviewMenu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init]
autorelease];
+ [templatePreviewMenu setDelegate:self];
+ [previewButton setMenu:templatePreviewMenu forSegment:0];
+ [previewButton setEnabled:[pw boolForKey:BDSKUsesTeXKey]
forSegment:BDSKPreviewDisplayTeX];
+ [previewButton selectSegmentWithTag:previewDisplay];
- bottomTemplatePreviewDisplayMenu = [[[NSMenu allocWithZone:[NSMenu
menuZone]] init] autorelease];
- [bottomTemplatePreviewDisplayMenu setDelegate:self];
- [bottomPreviewButton setMenu:bottomTemplatePreviewDisplayMenu
forSegment:0];
- [bottomPreviewButton setEnabled:[pw boolForKey:BDSKUsesTeXKey]
forSegment:BDSKPreviewDisplayTeX];
- [bottomPreviewButton selectSegmentWithTag:bottomPreviewDisplay];
-
- [sidePreviewTabView setFrame:[sidePreviewView frame]];
- [[sidePreviewView superview] replaceSubview:sidePreviewView
with:sidePreviewTabView];
-
sideTemplatePreviewMenu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init]
autorelease];
[sideTemplatePreviewMenu setDelegate:self];
[sidePreviewButton setMenu:sideTemplatePreviewMenu forSegment:0];
@@ -489,6 +489,8 @@
[[tableView enclosingScrollView] retain];
[[tableView enclosingScrollView] setFrame:[mainView bounds]];
+ [[previewTextView enclosingScrollView] retain];
+
// TableView setup
[tableView removeAllTableColumns];
@@ -509,19 +511,20 @@
[tableView registerForDraggedTypes:dragTypes];
[groupTableView registerForDraggedTypes:dragTypes];
- [bottomFileView setBackgroundColor:[[bottomFileView enclosingScrollView]
backgroundColor]];
+ [fileView setBackgroundColor:[[fileView enclosingScrollView]
backgroundColor]];
- [[sideFileView enclosingScrollView] setBackgroundColor:[sideFileView
backgroundColor]];
-
[fileCollapsibleView setCollapseEdges:BDSKMaxXEdgeMask];
[fileCollapsibleView setMinSize:NSMakeSize(65.0, 20.0)];
[fileGradientView setUpperColor:[NSColor colorWithCalibratedWhite:0.9
alpha:1.0]];
[fileGradientView setLowerColor:[NSColor colorWithCalibratedWhite:0.75
alpha:1.0]];
- [sideFileView setIconScale:[[OFPreferenceWrapper sharedPreferenceWrapper]
floatForKey:BDSKMainFileViewIconScaleKey]];
- [sideFileView setAutoScales:YES];
- [sideFileView addObserver:self forKeyPath:@"iconScale" options:0
context:NULL];
+ [fileView setIconScale:[[OFPreferenceWrapper sharedPreferenceWrapper]
floatForKey:BDSKMainFileViewIconScaleKey]];
+ [fileView setAutoScales:YES];
+ [fileView addObserver:self forKeyPath:@"iconScale" options:0 context:NULL];
+ currentSidePreviewView = [fileView enclosingScrollView];
+ [currentSidePreviewView retain];
+
// ImagePopUpButtons setup
[actionMenuButton setShowsMenuWhenIconClicked:YES];
[[actionMenuButton cell] setAltersStateOfSelectedItem:NO];
@@ -629,9 +632,9 @@
[pboardHelper release];
pboardHelper = nil;
- [sideFileView removeObserver:self forKeyPath:@"iconScale"];
- [sideFileView setDataSource:nil];
- [sideFileView setDelegate:nil];
+ [fileView removeObserver:self forKeyPath:@"iconScale"];
+ [fileView setDataSource:nil];
+ [fileView setDelegate:nil];
// safety call here, in case the pasteboard is retaining the document; we
don't want notifications after the window closes, since all the pointers to UI
elements will be garbage
[[NSNotificationCenter defaultCenter] removeObserver:self];
@@ -694,9 +697,9 @@
[dictionary setFloatValue:[previewer PDFScaleFactor]
forKey:BDSKPreviewPDFScaleFactorKey];
[dictionary setFloatValue:[previewer RTFScaleFactor]
forKey:BDSKPreviewRTFScaleFactorKey];
}
- //if(previewPdfView){
- // [dictionary setFloatValue:[previewPdfView autoScales] ? 0.0 :
[previewPdfView scaleFactor] forKey:BDSKPreviewLinkedFileScaleFactorKey];
- //}
+ if(previewPdfView){
+ [dictionary setFloatValue:[previewPdfView autoScales] ? 0.0 :
[previewPdfView scaleFactor] forKey:BDSKPreviewLinkedFileScaleFactorKey];
+ }
if(fileSearchController){
[dictionary setObject:[fileSearchController sortDescriptorData]
forKey:BDSKFileContentSearchSortDescriptorKey];
@@ -2722,7 +2725,7 @@
// don't update if the note was posted by editors that don't belong to us
/*
if ([notification object] == self || [notification object] == nil) {
- [self updateBottomPreviewPane];
+ [self updatePreviewPane];
[self updateSidePreviewPane];
int tag = [[OFPreferenceWrapper sharedPreferenceWrapper]
integerForKey:BDSKPreviewDisplayKey];
@@ -2730,7 +2733,7 @@
tag = BDSKDetailsPreviewDisplay;
else if (tag == BDSKRTFPreviewDisplay)
tag = BDSKPDFPreviewDisplay;
- [bottomPreviewButton selectSegmentWithTag:tag];
+ [previewButton selectSegmentWithTag:tag];
}
*/
}
@@ -2745,7 +2748,7 @@
}
- (void)handleUsesTeXChangedNotification:(NSNotification *)notification{
- [bottomPreviewButton setEnabled:[[OFPreferenceWrapper
sharedPreferenceWrapper] boolForKey:BDSKUsesTeXKey]
forSegment:BDSKPreviewDisplayTeX];
+ [previewButton setEnabled:[[OFPreferenceWrapper sharedPreferenceWrapper]
boolForKey:BDSKUsesTeXKey] forSegment:BDSKPreviewDisplayTeX];
}
- (void)handleBibItemAddDelNotification:(NSNotification *)notification{
@@ -2996,8 +2999,8 @@
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
- if (object == sideFileView && [keyPath isEqualToString:@"iconScale"]) {
- [[OFPreferenceWrapper sharedPreferenceWrapper] setFloat:[sideFileView
iconScale] forKey:BDSKMainFileViewIconScaleKey];
+ if (object == fileView && [keyPath isEqualToString:@"iconScale"]) {
+ [[OFPreferenceWrapper sharedPreferenceWrapper] setFloat:[fileView
iconScale] forKey:BDSKMainFileViewIconScaleKey];
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
}
@@ -3014,7 +3017,7 @@
OBASSERT([NSThread inMainThread]);
//take care of the preview field (NSTextView below the pub table); if the
enumerator is nil, the view will get cleared out
- [self updateBottomPreviewPane];
+ [self updatePreviewPane];
[self updateSidePreviewPane];
if([[OFPreferenceWrapper sharedPreferenceWrapper]
boolForKey:BDSKUsesTeXKey] &&
@@ -3037,28 +3040,52 @@
[aPreviewer updateWithBibTeXString:bibString citeKeys:[items
valueForKey:@"citeKey"]];
}
-/*
+- (void)displayTeXPreviewInPreviewPane{
+ if([[OFPreferenceWrapper sharedPreferenceWrapper]
boolForKey:BDSKUsesTeXKey] == NO)
+ return;
+
+ if(previewer == nil){
+ previewer = [[BDSKPreviewer alloc] init];
+ NSDictionary *xatrrDefaults = [self
mainWindowSetupDictionaryFromExtendedAttributes];
+ [previewer setPDFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewPDFScaleFactorKey defaultValue:0.0]];
+ [previewer setRTFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewRTFScaleFactorKey defaultValue:1.0]];
+ previewerBox = [[BDSKEdgeView alloc] init];
+ [previewerBox setEdges:BDSKEveryEdgeMask];
+ [previewerBox setColor:[NSColor lightGrayColor] forEdge:NSMaxYEdge];
+ [previewerBox setContentView:[previewer pdfView]];
+ }
+
+ // may be the pdflatex or latex2rtf generated preview
+ NSView *view = (NSView *)previewerBox;
+ if(currentPreviewView != view){
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview] replaceSubview:currentPreviewView
with:view];
+ currentPreviewView = view;
+ [[previewer progressOverlay] overlayView:currentPreviewView];
+ }
+ [self updatePreviewer:previewer];
+
+}
+
- (void)displayErrorMessageInPreviewTextView:(NSString *)errorMessage{
NSParameterAssert(errorMessage != nil);
-
// make sure we have the correct view in place (NSTextView)
- int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
- if (tabIndex != BDSKPreviewDisplayText) {
- if (tabIndex == BDSKPreviewDisplayTeX) {
- [[previewer progressOverlay] remove];
- [previewer updateWithBibTeXString:nil];
- }
- [bottomPreviewTabView selectTabViewItemAtIndex:BDSKPreviewDisplayText];
+ NSView *view = [previewTextView enclosingScrollView];
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+ if(currentPreviewView != view){
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview] replaceSubview:currentPreviewView
with:view];
+ currentPreviewView = view;
}
-
NSFont *font = [NSFontManager bodyFontForFamily:[[OFPreferenceWrapper
sharedPreferenceWrapper] objectForKey:BDSKPreviewPaneFontFamilyKey]];
NSAttributedString *attrString = [[NSAttributedString alloc]
initWithString:errorMessage attributeName:NSFontAttributeName
attributeValue:font];
- [[bottomPreviewTextView textStorage] setAttributedString:attrString];
+ [[previewTextView textStorage] setAttributedString:attrString];
[attrString release];
}
- (void)displayLinkedFileInPreviewPane{
- NSView *view = [bottomPreviewTextView enclosingScrollView];
+ NSView *view = [previewTextView enclosingScrollView];
[[previewer progressOverlay] remove];
[previewer updateWithBibTeXString:nil];
@@ -3082,10 +3109,10 @@
[previewPdfView release];
}
view = previewBox;
- if(bottomPreviewView != view){
- [view setFrame:[bottomPreviewView frame]];
- [[bottomPreviewView superview]
replaceSubview:bottomPreviewView with:view];
- bottomPreviewView = view;
+ if(currentPreviewView != view){
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview]
replaceSubview:currentPreviewView with:view];
+ currentPreviewView = view;
}
// if it's an image, first convert it to PDF
@@ -3140,10 +3167,10 @@
} else {
// if it's not PDF/PS or an image, try reading it with
NSAttributedString, which handles a variety of common formats
- if(bottomPreviewView != view){
- [view setFrame:[bottomPreviewView frame]];
- [[bottomPreviewView superview]
replaceSubview:bottomPreviewView with:view];
- bottomPreviewView = view;
+ if(currentPreviewView != view){
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview]
replaceSubview:currentPreviewView with:view];
+ currentPreviewView = view;
}
NSError *nsError;
@@ -3151,7 +3178,7 @@
if (nil == attrString) {
[self displayErrorMessageInPreviewTextView:([nsError
localizedFailureReason] ? [nsError localizedFailureReason] : [nsError
localizedDescription])];
} else {
- [[bottomPreviewTextView textStorage]
setAttributedString:attrString];
+ [[previewTextView textStorage] setAttributedString:attrString];
[attrString release];
}
}
@@ -3162,11 +3189,55 @@
[self displayErrorMessageInPreviewTextView:errString];
}
}
-*/
-- (void)displayTemplatedPreview:(NSString *)templateName
inTextView:(NSTextView *)textView {
+- (void)displayFileViewInPreviewPane{
+ // set up the view hierarchy
+ if (bottomFileView == nil) {
+ bottomFileView = [[FileView alloc] init];
+ [bottomFileView setBackgroundColor:[NSColor controlBackgroundColor]];
+ [bottomFileView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
+
+ NSScrollView *scrollView = [[NSScrollView alloc] init];
+ [scrollView setHasHorizontalScroller:YES];
+ [scrollView setHasVerticalScroller:YES];
+ [scrollView setAutohidesScrollers:YES];
+ [scrollView setBorderType:NSBezelBorder];
+ [scrollView setDrawsBackground:YES];
+ [scrollView setBackgroundColor:[NSColor controlBackgroundColor]];
+ [scrollView setDocumentView:bottomFileView];
+ [scrollView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
+ [bottomFileView release];
+
+ [bottomFileView setDataSource:self];
+ [bottomFileView setDelegate:self];
+ }
- if([textView isHidden] || NSIsEmptyRect([textView visibleRect]))
+ NSView *view = [bottomFileView enclosingScrollView];
+ if(currentPreviewView != view){
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview] replaceSubview:currentPreviewView
with:view];
+ currentPreviewView = view;
+ }
+
+}
+
+- (void)displayAttributedTextPreviewInPreviewPane{
+
+ //int displayType = [[OFPreferenceWrapper sharedPreferenceWrapper]
integerForKey:BDSKPreviewDisplayKey];
+
+ NSView *view = [previewTextView enclosingScrollView];
+
+ if(currentPreviewView != view){
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+ [view setFrame:[currentPreviewView frame]];
+ [[currentPreviewView superview] replaceSubview:currentPreviewView
with:view];
+ currentPreviewView = view;
+ }
+
+ if(NSIsEmptyRect([previewTextView visibleRect]))
return;
/*
@@ -3189,13 +3260,13 @@
if (maxItems > 0 && [items count] > maxItems)
items = [items subarrayWithRange:NSMakeRange(0, maxItems)];
- NSTextStorage *textStorage = [textView textStorage];
+ NSTextStorage *textStorage = [previewTextView textStorage];
// do this _before_ messing with the text storage; otherwise you can have
a leftover selection that ends up being out of range
NSRange zeroRange = NSMakeRange(0, 0);
static NSArray *zeroRanges = nil;
if(!zeroRanges) zeroRanges = [[NSArray alloc] initWithObjects:[NSValue
valueWithRange:zeroRange], nil];
- [textView setSelectedRanges:zeroRanges];
+ [previewTextView setSelectedRanges:zeroRanges];
NSLayoutManager *layoutManager = [[textStorage layoutManagers] lastObject];
[layoutManager retain];
@@ -3253,7 +3324,7 @@
case BDSKTemplatePreviewDisplay:
*/
{
- BDSKTemplate *template = [BDSKTemplate
templateForStyle:templateName];
+ BDSKTemplate *template = [BDSKTemplate
templateForStyle:previewDisplayTemplate];
if (template == nil)
template = [BDSKTemplate templateForStyle:[BDSKTemplate
defaultStyleNameForFileType:@"rtf"]];
NSAttributedString *templateString;
@@ -3281,53 +3352,117 @@
[layoutManager release];
if([NSString isEmptyString:[searchField stringValue]] == NO)
- [textView highlightComponentsOfSearchString:[searchField
stringValue]];
+ [previewTextView highlightComponentsOfSearchString:[searchField
stringValue]];
}
-- (void)prepareForTeXPreview {
- if(bottomPreviewDisplay == BDSKPreviewDisplayTeX && previewer == nil &&
[[OFPreferenceWrapper sharedPreferenceWrapper] boolForKey:BDSKUsesTeXKey]){
- previewer = [[BDSKPreviewer alloc] init];
- NSDictionary *xatrrDefaults = [self
mainWindowSetupDictionaryFromExtendedAttributes];
- [previewer setPDFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewPDFScaleFactorKey defaultValue:0.0]];
- [previewer setRTFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewRTFScaleFactorKey defaultValue:1.0]];
- BDSKEdgeView *previewerBox = [[[BDSKEdgeView alloc] init] autorelease];
- [previewerBox setEdges:BDSKEveryEdgeMask];
- [previewerBox setColor:[NSColor lightGrayColor] forEdge:NSMaxYEdge];
- [previewerBox setContentView:[previewer pdfView]];
- [[bottomPreviewTabView tabViewItemAtIndex:BDSKPreviewDisplayTeX]
setView:previewerBox];
+- (void)updatePreviewPane{
+ if(previewDisplay == BDSKPreviewDisplayTeX){
+ [self displayTeXPreviewInPreviewPane];
+ }else if(previewDisplay == BDSKPreviewDisplayFiles){
+ [self displayFileViewInPreviewPane];
+ }else{
+ [self displayAttributedTextPreviewInPreviewPane];
}
- [[previewer progressOverlay] overlayView:bottomPreviewTabView];
}
-- (void)cleanupAfterTeXPreview {
- [[previewer progressOverlay] remove];
- [previewer updateWithBibTeXString:nil];
-}
+- (void)displayFileViewInSidePreviewPane{
+ NSView *view = [fileView enclosingScrollView];
+ if(currentSidePreviewView != view){
+ [view setFrame:[currentSidePreviewView frame]];
+ [[currentSidePreviewView superview]
replaceSubview:currentSidePreviewView with:view];
+ currentSidePreviewView = view;
+ }
+}
-- (void)updateBottomPreviewPane{
- int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
- if (tabIndex != bottomPreviewDisplay) {
- if (tabIndex == BDSKPreviewDisplayTeX)
- [self cleanupAfterTeXPreview];
- else if (bottomPreviewDisplay == BDSKPreviewDisplayTeX)
- [self prepareForTeXPreview];
- [bottomPreviewTabView selectTabViewItemAtIndex:bottomPreviewDisplay];
+- (void)displayAttributedTextPreviewInSidePreviewPane{
+
+ if (sidePreviewTextView == nil) {
+ sidePreviewTextView = [[BDSKPreviewTextView alloc] init];
+ [sidePreviewTextView setBackgroundColor:[NSColor
controlBackgroundColor]];
+ [sidePreviewTextView setEditable:NO];
+ [sidePreviewTextView setSelectable:YES];
+ [sidePreviewTextView setRichText:YES];
+ [sidePreviewTextView setUsesFontPanel:YES];
+ [sidePreviewTextView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
+
+ NSScrollView *scrollView = [[NSScrollView alloc] init];
+ [scrollView setHasHorizontalScroller:YES];
+ [scrollView setHasVerticalScroller:YES];
+ [scrollView setAutohidesScrollers:YES];
+ [scrollView setBorderType:NSBezelBorder];
+ [scrollView setDrawsBackground:YES];
+ [scrollView setBackgroundColor:[NSColor controlBackgroundColor]];
+ [scrollView setDocumentView:sidePreviewTextView];
+ [scrollView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
+ [sidePreviewTextView release];
+
+ [sidePreviewTextView setDelegate:self];
}
+
+ NSView *view = [sidePreviewTextView enclosingScrollView];
+
+ if(currentSidePreviewView != view){
+ [view setFrame:[currentSidePreviewView frame]];
+ [[currentSidePreviewView superview]
replaceSubview:currentSidePreviewView with:view];
+ currentSidePreviewView = view;
+ }
- if (bottomPreviewDisplay == BDSKPreviewDisplayText)
- [self displayTemplatedPreview:bottomPreviewDisplayTemplate
inTextView:bottomPreviewTextView];
- else if (bottomPreviewDisplay == BDSKPreviewDisplayTeX)
- [self updatePreviewer:previewer];
+ if(NSIsEmptyRect([sidePreviewTextView visibleRect]))
+ return;
+
+ NSArray *items = [self selectedPublications];
+ unsigned int maxItems = [[OFPreferenceWrapper sharedPreferenceWrapper]
integerForKey:BDSKPreviewMaxNumberKey];
+
+ if (maxItems > 0 && [items count] > maxItems)
+ items = [items subarrayWithRange:NSMakeRange(0, maxItems)];
+
+ NSTextStorage *textStorage = [sidePreviewTextView textStorage];
+
+ // do this _before_ messing with the text storage; otherwise you can have
a leftover selection that ends up being out of range
+ NSRange zeroRange = NSMakeRange(0, 0);
+ static NSArray *zeroRanges = nil;
+ if(!zeroRanges) zeroRanges = [[NSArray alloc] initWithObjects:[NSValue
valueWithRange:zeroRange], nil];
+ [sidePreviewTextView setSelectedRanges:zeroRanges];
+
+ NSLayoutManager *layoutManager = [[textStorage layoutManagers] lastObject];
+ [layoutManager retain];
+ [textStorage removeLayoutManager:layoutManager]; // optimization: make
sure the layout manager doesn't do any work while we're loading
+
+ [textStorage beginEditing];
+ [[textStorage mutableString] setString:@""];
+
+ BDSKTemplate *template = [BDSKTemplate
templateForStyle:sidePreviewDisplayTemplate];
+ if (template == nil)
+ template = [BDSKTemplate templateForStyle:[BDSKTemplate
defaultStyleNameForFileType:@"rtf"]];
+ NSAttributedString *templateString;
+
+ // make sure this is really one of the attributed string types...
+ if([template templateFormat] & BDSKRichTextTemplateFormat){
+ templateString = [BDSKTemplateObjectProxy
attributedStringByParsingTemplate:template withObject:self publications:items
documentAttributes:NULL];
+ [textStorage appendAttributedString:templateString];
+ } else if([template templateFormat] & BDSKTextTemplateFormat){
+ // parse as plain text, so the HTML is interpreted properly by
NSAttributedString
+ NSString *str = [BDSKTemplateObjectProxy
stringByParsingTemplate:template withObject:self publications:items];
+ // we generally assume UTF-8 encoding for all template-related files
+ templateString = [[NSAttributedString alloc] initWithHTML:[str
dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:NULL];
+ [textStorage appendAttributedString:templateString];
+ [templateString release];
+ }
+
+ [textStorage endEditing];
+ [textStorage addLayoutManager:layoutManager];
+ [layoutManager release];
+
+ if([NSString isEmptyString:[searchField stringValue]] == NO)
+ [sidePreviewTextView highlightComponentsOfSearchString:[searchField
stringValue]];
}
- (void)updateSidePreviewPane{
- int tabIndex = [sidePreviewTabView indexOfTabViewItem:[sidePreviewTabView
selectedTabViewItem]];
- if (tabIndex != sidePreviewDisplay) {
- [sidePreviewTabView selectTabViewItemAtIndex:sidePreviewDisplay];
+ if(sidePreviewDisplay == BDSKPreviewDisplayFiles){
+ [self displayFileViewInSidePreviewPane];
+ }else{
+ [self displayAttributedTextPreviewInSidePreviewPane];
}
-
- if (sidePreviewDisplay == BDSKPreviewDisplayText)
- [self displayTemplatedPreview:sidePreviewDisplayTemplate
inTextView:sidePreviewTextView];
}
#pragma mark FileView
@@ -3376,7 +3511,7 @@
[shownFiles release];
shownFiles = nil;
- [sideFileView reloadIcons];
+ [fileView reloadIcons];
[bottomFileView reloadIcons];
}
@@ -3651,7 +3786,7 @@
#pragma mark Template Menu
- (void)menuNeedsUpdate:(NSMenu *)menu {
- if (menu == bottomTemplatePreviewDisplayMenu || menu ==
sideTemplatePreviewMenu) {
+ if (menu == templatePreviewMenu || menu == sideTemplatePreviewMenu) {
NSMutableArray *styles = [NSMutableArray arrayWithArray:[BDSKTemplate
allStyleNamesForFileType:@"rtf"]];
[styles addObjectsFromArray:[BDSKTemplate
allStyleNamesForFileType:@"rtfd"]];
[styles addObjectsFromArray:[BDSKTemplate
allStyleNamesForFileType:@"doc"]];
@@ -3663,7 +3798,7 @@
NSEnumerator *styleEnum = [styles objectEnumerator];
NSString *style;
NSMenuItem *item;
- SEL action = menu == bottomTemplatePreviewDisplayMenu ?
@selector(changePreviewDisplay:) : @selector(changeSidePreviewDisplay:);
+ SEL action = menu == templatePreviewMenu ?
@selector(changePreviewDisplay:) : @selector(changeSidePreviewDisplay:);
while (style = [styleEnum nextObject]) {
item = [menu addItemWithTitle:style action:action
keyEquivalent:@""];
@@ -3678,29 +3813,31 @@
#pragma mark Printing support
- (IBAction)printDocument:(id)sender{
- if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ if([currentPreviewView isEqual:previewerBox])
[[previewer pdfView] printWithInfo:[self printInfo] autoRotate:NO];
+ else if([currentPreviewView isEqual:previewBox])
+ [previewPdfView printWithInfo:[self printInfo] autoRotate:NO];
else
[super printDocument:sender];
}
- (NSView *)printableView{
id printableView = nil;
- if(bottomPreviewDisplay == BDSKPreviewDisplayTeX){
+ if(previewDisplay == BDSKPreviewDisplayTeX){
// we don't reach this, we let the pdfView do the printing
printableView = [previewer pdfView];
- }else if(bottomPreviewDisplay == BDSKPreviewDisplayText ||
sidePreviewDisplay == BDSKPreviewDisplayText){
+ }else if(previewDisplay == BDSKPreviewDisplayText || sidePreviewDisplay ==
BDSKPreviewDisplayText){
printableView = [[[BDSKPrintableView alloc] initForScreenDisplay:NO]
autorelease];
NSTextStorage *ts = nil;
- if (bottomPreviewDisplay == BDSKPreviewDisplayText)
- ts = [bottomPreviewTextView textStorage];
+ if (previewDisplay == BDSKPreviewDisplayText)
+ ts = [previewTextView textStorage];
else
ts = [sidePreviewTextView textStorage];
if (ts)
[printableView setAttributedString:ts];
else
[printableView setString:NSLocalizedString(@"Error: nothing to
print from document preview", @"printing error")];
- [printableView setAttributedString:[bottomPreviewTextView
textStorage]];
+ [printableView setAttributedString:[previewTextView textStorage]];
}
return printableView;
}
Modified: trunk/bibdesk/BibDocument_Actions.m
===================================================================
--- trunk/bibdesk/BibDocument_Actions.m 2008-03-05 14:58:09 UTC (rev 12973)
+++ trunk/bibdesk/BibDocument_Actions.m 2008-03-05 19:12:47 UTC (rev 12974)
@@ -1087,19 +1087,19 @@
NSString *style = [sender respondsToSelector:@selector(representedObject)]
? [sender representedObject] : nil;
BOOL changed = NO;
- if (bottomPreviewDisplay != tag) {
- bottomPreviewDisplay = tag;
+ if (previewDisplay != tag) {
+ previewDisplay = tag;
changed = YES;
}
- if (tag == BDSKPreviewDisplayText && style && NO == [style
isEqualToString:bottomPreviewDisplayTemplate]) {
- [bottomPreviewDisplayTemplate release];
- bottomPreviewDisplayTemplate = [style retain];
+ if (tag == BDSKPreviewDisplayText && style && NO == [style
isEqualToString:previewDisplayTemplate]) {
+ [previewDisplayTemplate release];
+ previewDisplayTemplate = [style retain];
changed = YES;
}
if (changed) {
- [self updateBottomPreviewPane];
- if ([sender isEqual:bottomPreviewButton] == NO)
- [bottomPreviewButton selectSegmentWithTag:bottomPreviewDisplay];
+ [self updatePreviewPane];
+ if ([sender isEqual:previewButton] == NO)
+ [previewButton selectSegmentWithTag:previewDisplay];
}
}
@@ -1127,12 +1127,12 @@
- (void)pageDownInPreview:(id)sender{
NSScrollView *scrollView = nil;
- if(bottomPreviewDisplay == BDSKPreviewDisplayText)
- scrollView = [bottomPreviewTextView enclosingScrollView];
- else if(bottomPreviewDisplay == BDSKPreviewDisplayFiles)
- scrollView = [bottomFileView enclosingScrollView];
- else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ if([currentPreviewView isEqual:previewerBox])
scrollView = [(BDSKZoomablePDFView *)[previewer pdfView] scrollView];
+ else if([currentPreviewView isEqual:previewBox])
+ scrollView = [previewPdfView scrollView];
+ else
+ scrollView = (NSScrollView *)currentPreviewView;
NSPoint p = [[scrollView documentView] scrollPositionAsPercentage];
@@ -1152,12 +1152,12 @@
- (void)pageUpInPreview:(id)sender{
NSScrollView *scrollView = nil;
- if(bottomPreviewDisplay == BDSKPreviewDisplayText)
- scrollView = [bottomPreviewTextView enclosingScrollView];
- else if(bottomPreviewDisplay == BDSKPreviewDisplayFiles)
- scrollView = [bottomFileView enclosingScrollView];
- else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ if([currentPreviewView isEqual:previewerBox])
scrollView = [(BDSKZoomablePDFView *)[previewer pdfView] scrollView];
+ else if([currentPreviewView isEqual:previewBox])
+ scrollView = [previewPdfView scrollView];
+ else
+ scrollView = (NSScrollView *)currentPreviewView;
NSPoint p = [[scrollView documentView] scrollPositionAsPercentage];
Modified: trunk/bibdesk/BibDocument_Search.m
===================================================================
--- trunk/bibdesk/BibDocument_Search.m 2008-03-05 14:58:09 UTC (rev 12973)
+++ trunk/bibdesk/BibDocument_Search.m 2008-03-05 19:12:47 UTC (rev 12974)
@@ -359,11 +359,14 @@
- (NSString *)selectedStringForFind;
{
- // @@ should check hidden?
- if (bottomPreviewDisplay == BDSKPreviewDisplayTeX) {
+ if([currentPreviewView isHidden])
+ return nil;
+ if([currentPreviewView isEqual:previewerBox]){
return [[[previewer pdfView] currentSelection] string];
- } else if(bottomPreviewDisplay == BDSKPreviewDisplayText ||
sidePreviewDisplay == BDSKPreviewDisplayText) {
- NSTextView *textView = bottomPreviewDisplay == BDSKPreviewDisplayText
? bottomPreviewTextView : sidePreviewTextView;
+ }else if([currentPreviewView isEqual:previewBox]){
+ return [[previewPdfView currentSelection] string];
+ }else{
+ NSTextView *textView = (NSTextView *)[(NSScrollView
*)currentPreviewView documentView];
NSRange selRange = [textView selectedRange];
if (selRange.location == NSNotFound)
return nil;
@@ -375,11 +378,8 @@
// OAFindControllerAware informal protocol
- (id <OAFindControllerTarget>)omniFindControllerTarget;
{
- // @@ should check hidden?
- if (bottomPreviewDisplay == BDSKPreviewDisplayText)
- return bottomPreviewTextView;
- else if (sidePreviewDisplay == BDSKPreviewDisplayText)
- return sidePreviewTextView;
+ if([currentPreviewView isKindOfClass:[NSScrollView class]] &&
[currentPreviewView isHidden] == NO)
+ return [(NSScrollView *)currentPreviewView documentView];
else
return nil;
}
@@ -391,10 +391,8 @@
case NSFindPanelActionShowFindPanel:
case NSFindPanelActionNext:
case NSFindPanelActionPrevious:
- if(bottomPreviewDisplay == BDSKPreviewDisplayText)
- [bottomPreviewTextView performFindPanelAction:sender];
- else if(sidePreviewDisplay == BDSKPreviewDisplayText)
- [sidePreviewTextView performFindPanelAction:sender];
+ if([currentPreviewView isKindOfClass:[NSScrollView class]] &&
[currentPreviewView isHidden] == NO)
+ [(NSTextView *)[(NSScrollView *)currentPreviewView
documentView] performFindPanelAction:sender];
else
NSBeep();
break;
@@ -408,10 +406,7 @@
[searchField selectText:nil];
} else {
[[BDSKFindController sharedFindController]
setFindString:selString];
- if(bottomPreviewDisplay == BDSKPreviewDisplayText)
- [bottomPreviewTextView performFindPanelAction:sender];
- else if(sidePreviewDisplay == BDSKPreviewDisplayText)
- [sidePreviewTextView performFindPanelAction:sender];
+ [previewTextView performFindPanelAction:sender];
}
break;
default:
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit