Revision: 12973
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12973&view=rev
Author: hofman
Date: 2008-03-05 06:58:09 -0800 (Wed, 05 Mar 2008)
Log Message:
-----------
Rewrite preview updating code. Collapse some code.
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:55:26 UTC (rev 12972)
+++ trunk/bibdesk/BibDocument+Menus.m 2008-03-05 14:58:09 UTC (rev 12973)
@@ -280,14 +280,12 @@
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([currentPreviewView isEqual:previewerBox])
+ else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
return [[previewer pdfView] document] != nil;
- else if ([currentPreviewView isEqual:previewBox])
- return [previewPdfView document] != nil;
- else if ([[previewer textView] isEqual:previewBox])
- return [[previewer textView] textStorage] != nil;
+ else if (bottomPreviewDisplay == BDSKPreviewDisplayText)
+ return [bottomPreviewTextView textStorage] != nil;
else
- return [previewTextView textStorage] != nil;
+ return NO;
}
- (BOOL) validateToggleToggleCustomCiteDrawerMenuItem:(NSMenuItem*) menuItem {
@@ -532,10 +530,10 @@
- (BOOL)validateChangePreviewDisplayMenuItem:(NSMenuItem *)menuItem {
int tag = [menuItem tag], state = NSOffState;
NSString *style = [menuItem representedObject];
- if (tag == previewDisplay && tag != BDSKPreviewDisplayText) {
+ if (tag == bottomPreviewDisplay && tag != BDSKPreviewDisplayText) {
state = NSOnState;
- } else if (tag == BDSKPreviewDisplayText && [style
isEqualToString:previewDisplayTemplate]) {
- if (tag == previewDisplay || [menuItem menu] == templatePreviewMenu)
+ } else if (tag == BDSKPreviewDisplayText && [style
isEqualToString:bottomPreviewDisplayTemplate]) {
+ if (tag == bottomPreviewDisplay || [menuItem menu] ==
bottomTemplatePreviewDisplayMenu)
state = NSOnState;
}
[menuItem setState:state];
Modified: trunk/bibdesk/BibDocument+Scripting.m
===================================================================
--- trunk/bibdesk/BibDocument+Scripting.m 2008-03-05 14:55:26 UTC (rev
12972)
+++ trunk/bibdesk/BibDocument+Scripting.m 2008-03-05 14:58:09 UTC (rev
12973)
@@ -138,15 +138,14 @@
}
- (id)handlePrintScriptCommand:(NSScriptCommand *)command {
- if([currentPreviewView isEqual:previewerBox] || [currentPreviewView
isEqual:previewBox]) {
- // we let the PDFView handle printing
+ if (bottomPreviewDisplay == BDSKPreviewDisplayTeX) {
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 = (PDFView *)[(NSBox *)currentPreviewView
contentView];
+ PDFView *pdfView = [previewer pdfView];
if ([settings isKindOfClass:[NSDictionary class]]) {
settings = [[settings mutableCopy] autorelease];
Modified: trunk/bibdesk/BibDocument.h
===================================================================
--- trunk/bibdesk/BibDocument.h 2008-03-05 14:55:26 UTC (rev 12972)
+++ trunk/bibdesk/BibDocument.h 2008-03-05 14:58:09 UTC (rev 12973)
@@ -139,37 +139,34 @@
IBOutlet BDSKGradientView *groupGradientView;
NSString *currentGroupField;
-#pragma mark File pane variables
+#pragma mark Side preview variables
- IBOutlet FileView *fileView;
- NSTextView *sidePreviewTextView;
- NSView *currentSidePreviewView;
+ IBOutlet NSTabView *sidePreviewTabView;
+ IBOutlet NSView *sidePreviewView;
+ IBOutlet NSTextView *sidePreviewTextView;
+ IBOutlet FileView *sideFileView;
IBOutlet BDSKCollapsibleView *fileCollapsibleView;
IBOutlet BDSKGradientView *fileGradientView;
- BDSKFileMigrationController *migrationController;
-
int sidePreviewDisplay;
NSString *sidePreviewDisplayTemplate;
IBOutlet NSSegmentedControl *sidePreviewButton;
NSMenu *sideTemplatePreviewMenu;
-#pragma mark Preview variables
+#pragma mark Bottom preview variables
- IBOutlet NSTextView *previewTextView;
- IBOutlet NSView *currentPreviewView;
+ IBOutlet NSTabView *bottomPreviewTabView;
+ IBOutlet NSView *bottomPreviewView;
+ IBOutlet NSTextView *bottomPreviewTextView;
+ IBOutlet FileView *bottomFileView;
BDSKPreviewer *previewer;
- BDSKEdgeView *previewerBox;
- BDSKZoomablePDFView *previewPdfView;
- BDSKEdgeView *previewBox;
- FileView *bottomFileView;
- int previewDisplay;
- NSString *previewDisplayTemplate;
+ int bottomPreviewDisplay;
+ NSString *bottomPreviewDisplayTemplate;
- IBOutlet NSSegmentedControl *previewButton;
- NSMenu *templatePreviewMenu;
+ IBOutlet NSSegmentedControl *bottomPreviewButton;
+ NSMenu *bottomTemplatePreviewDisplayMenu;
#pragma mark Toolbar variables
@@ -257,6 +254,8 @@
BDSKSearchButtonController *searchButtonController;
BDSKDocumentSearch *documentSearch;
+ BDSKFileMigrationController *migrationController;
+
}
@@ -324,12 +323,12 @@
- (void)updatePreviewer:(BDSKPreviewer *)aPreviewer;
/*!
- @method updatePreviewPane
+ @method updateBottomPreviewPane
@abstract Handles writing the preview pane. (Not the PDF Preview)
@discussion -
*/
-- (void)updatePreviewPane;
+- (void)updateBottomPreviewPane;
- (void)updateSidePreviewPane;
/*!
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2008-03-05 14:55:26 UTC (rev 12972)
+++ trunk/bibdesk/BibDocument.m 2008-03-05 14:58:09 UTC (rev 12973)
@@ -225,8 +225,8 @@
pboardHelper = [[BDSKItemPasteboardHelper alloc] init];
[pboardHelper setDelegate:self];
- previewDisplay = BDSKPreviewDisplayText;
- previewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
+ bottomPreviewDisplay = BDSKPreviewDisplayText;
+ bottomPreviewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
sidePreviewDisplay = BDSKPreviewDisplayFiles;
sidePreviewDisplayTemplate = [[[OFPreferenceWrapper
sharedPreferenceWrapper] stringForKey:BDSKPreviewTemplateStyleKey] retain];
@@ -305,14 +305,8 @@
[toolbarItems release];
[statusBar release];
[[tableView enclosingScrollView] release];
- [[previewTextView enclosingScrollView] release];
- [[bottomFileView enclosingScrollView] release];
- [[fileView enclosingScrollView] release];
- [[sidePreviewTextView enclosingScrollView] release];
[previewer release];
- [previewerBox release];
- [previewBox release];
- [previewDisplayTemplate release];
+ [bottomPreviewDisplayTemplate release];
[sidePreviewDisplayTemplate release];
[macroWC release];
[infoWC release];
@@ -429,14 +423,20 @@
[[mainBox superview] addSubview:statusBar
positioned:NSWindowBelow relativeTo:nil];
}
[statusBar
setProgressIndicatorStyle:BDSKProgressIndicatorSpinningStyle];
- [statusBar setTextOffset:NSMaxX([previewButton frame]) - 2.0];
+ [statusBar setTextOffset:NSMaxX([bottomPreviewButton frame]) - 2.0];
- 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];
+ [bottomPreviewTabView setFrame:[bottomPreviewView frame]];
+ [[bottomPreviewView superview] replaceSubview:bottomPreviewView
with:bottomPreviewTabView];
+ 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,8 +489,6 @@
[[tableView enclosingScrollView] retain];
[[tableView enclosingScrollView] setFrame:[mainView bounds]];
- [[previewTextView enclosingScrollView] retain];
-
// TableView setup
[tableView removeAllTableColumns];
@@ -511,20 +509,19 @@
[tableView registerForDraggedTypes:dragTypes];
[groupTableView registerForDraggedTypes:dragTypes];
- [fileView setBackgroundColor:[[fileView enclosingScrollView]
backgroundColor]];
+ [bottomFileView setBackgroundColor:[[bottomFileView 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]];
- [fileView setIconScale:[[OFPreferenceWrapper sharedPreferenceWrapper]
floatForKey:BDSKMainFileViewIconScaleKey]];
- [fileView setAutoScales:YES];
- [fileView addObserver:self forKeyPath:@"iconScale" options:0 context:NULL];
+ [sideFileView setIconScale:[[OFPreferenceWrapper sharedPreferenceWrapper]
floatForKey:BDSKMainFileViewIconScaleKey]];
+ [sideFileView setAutoScales:YES];
+ [sideFileView addObserver:self forKeyPath:@"iconScale" options:0
context:NULL];
- currentSidePreviewView = [fileView enclosingScrollView];
- [currentSidePreviewView retain];
-
// ImagePopUpButtons setup
[actionMenuButton setShowsMenuWhenIconClicked:YES];
[[actionMenuButton cell] setAltersStateOfSelectedItem:NO];
@@ -632,9 +629,9 @@
[pboardHelper release];
pboardHelper = nil;
- [fileView removeObserver:self forKeyPath:@"iconScale"];
- [fileView setDataSource:nil];
- [fileView setDelegate:nil];
+ [sideFileView removeObserver:self forKeyPath:@"iconScale"];
+ [sideFileView setDataSource:nil];
+ [sideFileView 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];
@@ -697,9 +694,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];
@@ -2725,7 +2722,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 updatePreviewPane];
+ [self updateBottomPreviewPane];
[self updateSidePreviewPane];
int tag = [[OFPreferenceWrapper sharedPreferenceWrapper]
integerForKey:BDSKPreviewDisplayKey];
@@ -2733,7 +2730,7 @@
tag = BDSKDetailsPreviewDisplay;
else if (tag == BDSKRTFPreviewDisplay)
tag = BDSKPDFPreviewDisplay;
- [previewButton selectSegmentWithTag:tag];
+ [bottomPreviewButton selectSegmentWithTag:tag];
}
*/
}
@@ -2748,7 +2745,7 @@
}
- (void)handleUsesTeXChangedNotification:(NSNotification *)notification{
- [previewButton setEnabled:[[OFPreferenceWrapper sharedPreferenceWrapper]
boolForKey:BDSKUsesTeXKey] forSegment:BDSKPreviewDisplayTeX];
+ [bottomPreviewButton setEnabled:[[OFPreferenceWrapper
sharedPreferenceWrapper] boolForKey:BDSKUsesTeXKey]
forSegment:BDSKPreviewDisplayTeX];
}
- (void)handleBibItemAddDelNotification:(NSNotification *)notification{
@@ -2999,8 +2996,8 @@
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
- if (object == fileView && [keyPath isEqualToString:@"iconScale"]) {
- [[OFPreferenceWrapper sharedPreferenceWrapper] setFloat:[fileView
iconScale] forKey:BDSKMainFileViewIconScaleKey];
+ if (object == sideFileView && [keyPath isEqualToString:@"iconScale"]) {
+ [[OFPreferenceWrapper sharedPreferenceWrapper] setFloat:[sideFileView
iconScale] forKey:BDSKMainFileViewIconScaleKey];
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
}
@@ -3017,7 +3014,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 updatePreviewPane];
+ [self updateBottomPreviewPane];
[self updateSidePreviewPane];
if([[OFPreferenceWrapper sharedPreferenceWrapper]
boolForKey:BDSKUsesTeXKey] &&
@@ -3040,52 +3037,28 @@
[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)
- 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;
+ int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
+ if (tabIndex != BDSKPreviewDisplayText) {
+ if (tabIndex == BDSKPreviewDisplayTeX) {
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+ }
+ [bottomPreviewTabView selectTabViewItemAtIndex:BDSKPreviewDisplayText];
}
+
NSFont *font = [NSFontManager bodyFontForFamily:[[OFPreferenceWrapper
sharedPreferenceWrapper] objectForKey:BDSKPreviewPaneFontFamilyKey]];
NSAttributedString *attrString = [[NSAttributedString alloc]
initWithString:errorMessage attributeName:NSFontAttributeName
attributeValue:font];
- [[previewTextView textStorage] setAttributedString:attrString];
+ [[bottomPreviewTextView textStorage] setAttributedString:attrString];
[attrString release];
}
- (void)displayLinkedFileInPreviewPane{
- NSView *view = [previewTextView enclosingScrollView];
+ NSView *view = [bottomPreviewTextView enclosingScrollView];
[[previewer progressOverlay] remove];
[previewer updateWithBibTeXString:nil];
@@ -3109,10 +3082,10 @@
[previewPdfView release];
}
view = previewBox;
- if(currentPreviewView != view){
- [view setFrame:[currentPreviewView frame]];
- [[currentPreviewView superview]
replaceSubview:currentPreviewView with:view];
- currentPreviewView = view;
+ if(bottomPreviewView != view){
+ [view setFrame:[bottomPreviewView frame]];
+ [[bottomPreviewView superview]
replaceSubview:bottomPreviewView with:view];
+ bottomPreviewView = view;
}
// if it's an image, first convert it to PDF
@@ -3167,10 +3140,10 @@
} else {
// if it's not PDF/PS or an image, try reading it with
NSAttributedString, which handles a variety of common formats
- if(currentPreviewView != view){
- [view setFrame:[currentPreviewView frame]];
- [[currentPreviewView superview]
replaceSubview:currentPreviewView with:view];
- currentPreviewView = view;
+ if(bottomPreviewView != view){
+ [view setFrame:[bottomPreviewView frame]];
+ [[bottomPreviewView superview]
replaceSubview:bottomPreviewView with:view];
+ bottomPreviewView = view;
}
NSError *nsError;
@@ -3178,7 +3151,7 @@
if (nil == attrString) {
[self displayErrorMessageInPreviewTextView:([nsError
localizedFailureReason] ? [nsError localizedFailureReason] : [nsError
localizedDescription])];
} else {
- [[previewTextView textStorage] setAttributedString:attrString];
+ [[bottomPreviewTextView textStorage]
setAttributedString:attrString];
[attrString release];
}
}
@@ -3189,55 +3162,11 @@
[self displayErrorMessageInPreviewTextView:errString];
}
}
+*/
-- (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];
- }
+- (void)displayTemplatedPreview:(NSString *)templateName
inTextView:(NSTextView *)textView {
- 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]))
+ if([textView isHidden] || NSIsEmptyRect([textView visibleRect]))
return;
/*
@@ -3260,13 +3189,13 @@
if (maxItems > 0 && [items count] > maxItems)
items = [items subarrayWithRange:NSMakeRange(0, maxItems)];
- NSTextStorage *textStorage = [previewTextView textStorage];
+ NSTextStorage *textStorage = [textView 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];
- [previewTextView setSelectedRanges:zeroRanges];
+ [textView setSelectedRanges:zeroRanges];
NSLayoutManager *layoutManager = [[textStorage layoutManagers] lastObject];
[layoutManager retain];
@@ -3324,7 +3253,7 @@
case BDSKTemplatePreviewDisplay:
*/
{
- BDSKTemplate *template = [BDSKTemplate
templateForStyle:previewDisplayTemplate];
+ BDSKTemplate *template = [BDSKTemplate
templateForStyle:templateName];
if (template == nil)
template = [BDSKTemplate templateForStyle:[BDSKTemplate
defaultStyleNameForFileType:@"rtf"]];
NSAttributedString *templateString;
@@ -3352,117 +3281,53 @@
[layoutManager release];
if([NSString isEmptyString:[searchField stringValue]] == NO)
- [previewTextView highlightComponentsOfSearchString:[searchField
stringValue]];
+ [textView highlightComponentsOfSearchString:[searchField
stringValue]];
}
-- (void)updatePreviewPane{
- if(previewDisplay == BDSKPreviewDisplayTeX){
- [self displayTeXPreviewInPreviewPane];
- }else if(previewDisplay == BDSKPreviewDisplayFiles){
- [self displayFileViewInPreviewPane];
- }else{
- [self displayAttributedTextPreviewInPreviewPane];
+- (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];
}
+ [[previewer progressOverlay] overlayView:bottomPreviewTabView];
}
-- (void)displayFileViewInSidePreviewPane{
- NSView *view = [fileView enclosingScrollView];
- if(currentSidePreviewView != view){
- [view setFrame:[currentSidePreviewView frame]];
- [[currentSidePreviewView superview]
replaceSubview:currentSidePreviewView with:view];
- currentSidePreviewView = view;
- }
-}
+- (void)cleanupAfterTeXPreview {
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+}
-- (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];
+- (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];
}
-
- NSView *view = [sidePreviewTextView enclosingScrollView];
-
- if(currentSidePreviewView != view){
- [view setFrame:[currentSidePreviewView frame]];
- [[currentSidePreviewView superview]
replaceSubview:currentSidePreviewView with:view];
- currentSidePreviewView = view;
- }
- 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]];
+ if (bottomPreviewDisplay == BDSKPreviewDisplayText)
+ [self displayTemplatedPreview:bottomPreviewDisplayTemplate
inTextView:bottomPreviewTextView];
+ else if (bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ [self updatePreviewer:previewer];
}
- (void)updateSidePreviewPane{
- if(sidePreviewDisplay == BDSKPreviewDisplayFiles){
- [self displayFileViewInSidePreviewPane];
- }else{
- [self displayAttributedTextPreviewInSidePreviewPane];
+ int tabIndex = [sidePreviewTabView indexOfTabViewItem:[sidePreviewTabView
selectedTabViewItem]];
+ if (tabIndex != sidePreviewDisplay) {
+ [sidePreviewTabView selectTabViewItemAtIndex:sidePreviewDisplay];
}
+
+ if (sidePreviewDisplay == BDSKPreviewDisplayText)
+ [self displayTemplatedPreview:sidePreviewDisplayTemplate
inTextView:sidePreviewTextView];
}
#pragma mark FileView
@@ -3511,7 +3376,7 @@
[shownFiles release];
shownFiles = nil;
- [fileView reloadIcons];
+ [sideFileView reloadIcons];
[bottomFileView reloadIcons];
}
@@ -3786,7 +3651,7 @@
#pragma mark Template Menu
- (void)menuNeedsUpdate:(NSMenu *)menu {
- if (menu == templatePreviewMenu || menu == sideTemplatePreviewMenu) {
+ if (menu == bottomTemplatePreviewDisplayMenu || menu ==
sideTemplatePreviewMenu) {
NSMutableArray *styles = [NSMutableArray arrayWithArray:[BDSKTemplate
allStyleNamesForFileType:@"rtf"]];
[styles addObjectsFromArray:[BDSKTemplate
allStyleNamesForFileType:@"rtfd"]];
[styles addObjectsFromArray:[BDSKTemplate
allStyleNamesForFileType:@"doc"]];
@@ -3798,7 +3663,7 @@
NSEnumerator *styleEnum = [styles objectEnumerator];
NSString *style;
NSMenuItem *item;
- SEL action = menu == templatePreviewMenu ?
@selector(changePreviewDisplay:) : @selector(changeSidePreviewDisplay:);
+ SEL action = menu == bottomTemplatePreviewDisplayMenu ?
@selector(changePreviewDisplay:) : @selector(changeSidePreviewDisplay:);
while (style = [styleEnum nextObject]) {
item = [menu addItemWithTitle:style action:action
keyEquivalent:@""];
@@ -3813,31 +3678,29 @@
#pragma mark Printing support
- (IBAction)printDocument:(id)sender{
- if([currentPreviewView isEqual:previewerBox])
+ if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
[[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(previewDisplay == BDSKPreviewDisplayTeX){
+ if(bottomPreviewDisplay == BDSKPreviewDisplayTeX){
// we don't reach this, we let the pdfView do the printing
printableView = [previewer pdfView];
- }else if(previewDisplay == BDSKPreviewDisplayText || sidePreviewDisplay ==
BDSKPreviewDisplayText){
+ }else if(bottomPreviewDisplay == BDSKPreviewDisplayText ||
sidePreviewDisplay == BDSKPreviewDisplayText){
printableView = [[[BDSKPrintableView alloc] initForScreenDisplay:NO]
autorelease];
NSTextStorage *ts = nil;
- if (previewDisplay == BDSKPreviewDisplayText)
- ts = [previewTextView textStorage];
+ if (bottomPreviewDisplay == BDSKPreviewDisplayText)
+ ts = [bottomPreviewTextView 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:[previewTextView textStorage]];
+ [printableView setAttributedString:[bottomPreviewTextView
textStorage]];
}
return printableView;
}
Modified: trunk/bibdesk/BibDocument_Actions.m
===================================================================
--- trunk/bibdesk/BibDocument_Actions.m 2008-03-05 14:55:26 UTC (rev 12972)
+++ trunk/bibdesk/BibDocument_Actions.m 2008-03-05 14:58:09 UTC (rev 12973)
@@ -1087,19 +1087,19 @@
NSString *style = [sender respondsToSelector:@selector(representedObject)]
? [sender representedObject] : nil;
BOOL changed = NO;
- if (previewDisplay != tag) {
- previewDisplay = tag;
+ if (bottomPreviewDisplay != tag) {
+ bottomPreviewDisplay = tag;
changed = YES;
}
- if (tag == BDSKPreviewDisplayText && style && NO == [style
isEqualToString:previewDisplayTemplate]) {
- [previewDisplayTemplate release];
- previewDisplayTemplate = [style retain];
+ if (tag == BDSKPreviewDisplayText && style && NO == [style
isEqualToString:bottomPreviewDisplayTemplate]) {
+ [bottomPreviewDisplayTemplate release];
+ bottomPreviewDisplayTemplate = [style retain];
changed = YES;
}
if (changed) {
- [self updatePreviewPane];
- if ([sender isEqual:previewButton] == NO)
- [previewButton selectSegmentWithTag:previewDisplay];
+ [self updateBottomPreviewPane];
+ if ([sender isEqual:bottomPreviewButton] == NO)
+ [bottomPreviewButton selectSegmentWithTag:bottomPreviewDisplay];
}
}
@@ -1127,12 +1127,12 @@
- (void)pageDownInPreview:(id)sender{
NSScrollView *scrollView = nil;
- if([currentPreviewView isEqual:previewerBox])
+ if(bottomPreviewDisplay == BDSKPreviewDisplayText)
+ scrollView = [bottomPreviewTextView enclosingScrollView];
+ else if(bottomPreviewDisplay == BDSKPreviewDisplayFiles)
+ scrollView = [bottomFileView enclosingScrollView];
+ else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
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([currentPreviewView isEqual:previewerBox])
+ if(bottomPreviewDisplay == BDSKPreviewDisplayText)
+ scrollView = [bottomPreviewTextView enclosingScrollView];
+ else if(bottomPreviewDisplay == BDSKPreviewDisplayFiles)
+ scrollView = [bottomFileView enclosingScrollView];
+ else if(bottomPreviewDisplay == BDSKPreviewDisplayTeX)
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:55:26 UTC (rev 12972)
+++ trunk/bibdesk/BibDocument_Search.m 2008-03-05 14:58:09 UTC (rev 12973)
@@ -359,14 +359,11 @@
- (NSString *)selectedStringForFind;
{
- if([currentPreviewView isHidden])
- return nil;
- if([currentPreviewView isEqual:previewerBox]){
+ // @@ should check hidden?
+ if (bottomPreviewDisplay == BDSKPreviewDisplayTeX) {
return [[[previewer pdfView] currentSelection] string];
- }else if([currentPreviewView isEqual:previewBox]){
- return [[previewPdfView currentSelection] string];
- }else{
- NSTextView *textView = (NSTextView *)[(NSScrollView
*)currentPreviewView documentView];
+ } else if(bottomPreviewDisplay == BDSKPreviewDisplayText ||
sidePreviewDisplay == BDSKPreviewDisplayText) {
+ NSTextView *textView = bottomPreviewDisplay == BDSKPreviewDisplayText
? bottomPreviewTextView : sidePreviewTextView;
NSRange selRange = [textView selectedRange];
if (selRange.location == NSNotFound)
return nil;
@@ -378,8 +375,11 @@
// OAFindControllerAware informal protocol
- (id <OAFindControllerTarget>)omniFindControllerTarget;
{
- if([currentPreviewView isKindOfClass:[NSScrollView class]] &&
[currentPreviewView isHidden] == NO)
- return [(NSScrollView *)currentPreviewView documentView];
+ // @@ should check hidden?
+ if (bottomPreviewDisplay == BDSKPreviewDisplayText)
+ return bottomPreviewTextView;
+ else if (sidePreviewDisplay == BDSKPreviewDisplayText)
+ return sidePreviewTextView;
else
return nil;
}
@@ -391,8 +391,10 @@
case NSFindPanelActionShowFindPanel:
case NSFindPanelActionNext:
case NSFindPanelActionPrevious:
- if([currentPreviewView isKindOfClass:[NSScrollView class]] &&
[currentPreviewView isHidden] == NO)
- [(NSTextView *)[(NSScrollView *)currentPreviewView
documentView] performFindPanelAction:sender];
+ if(bottomPreviewDisplay == BDSKPreviewDisplayText)
+ [bottomPreviewTextView performFindPanelAction:sender];
+ else if(sidePreviewDisplay == BDSKPreviewDisplayText)
+ [sidePreviewTextView performFindPanelAction:sender];
else
NSBeep();
break;
@@ -406,7 +408,10 @@
[searchField selectText:nil];
} else {
[[BDSKFindController sharedFindController]
setFindString:selString];
- [previewTextView performFindPanelAction:sender];
+ if(bottomPreviewDisplay == BDSKPreviewDisplayText)
+ [bottomPreviewTextView performFindPanelAction:sender];
+ else if(sidePreviewDisplay == BDSKPreviewDisplayText)
+ [sidePreviewTextView 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