Revision: 12976
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12976&view=rev
Author: hofman
Date: 2008-03-05 13:02:15 -0800 (Wed, 05 Mar 2008)
Log Message:
-----------
Move preview views to tab views, which are swapped in when the window is
loaded. Rewrite preview swapping code.
Modified Paths:
--------------
trunk/bibdesk/BibDocument.h
trunk/bibdesk/BibDocument.m
trunk/bibdesk/English.lproj/BibDocument.nib/classes.nib
trunk/bibdesk/English.lproj/BibDocument.nib/info.nib
trunk/bibdesk/English.lproj/BibDocument.nib/keyedobjects.nib
Modified: trunk/bibdesk/BibDocument.h
===================================================================
--- trunk/bibdesk/BibDocument.h 2008-03-05 19:41:18 UTC (rev 12975)
+++ trunk/bibdesk/BibDocument.h 2008-03-05 21:02:15 UTC (rev 12976)
@@ -141,36 +141,32 @@
#pragma mark Side preview variables
+ IBOutlet NSTabView *sidePreviewTabView;
+ IBOutlet NSTextView *sidePreviewTextView;
IBOutlet FileView *sideFileView;
- NSTextView *sidePreviewTextView;
- NSView *currentSidePreviewView;
+
IBOutlet BDSKCollapsibleView *fileCollapsibleView;
IBOutlet BDSKGradientView *fileGradientView;
- BDSKFileMigrationController *migrationController;
+ IBOutlet NSSegmentedControl *sidePreviewButton;
+ NSMenu *sideTemplatePreviewMenu;
int sidePreviewDisplay;
NSString *sidePreviewDisplayTemplate;
- IBOutlet NSSegmentedControl *sidePreviewButton;
- NSMenu *sideTemplatePreviewMenu;
-
#pragma mark Bottom preview variables
+ IBOutlet NSTabView *bottomPreviewTabView;
IBOutlet NSTextView *bottomPreviewTextView;
- IBOutlet NSView *currentBottomPreviewView;
+ IBOutlet FileView *bottomFileView;
BDSKPreviewer *previewer;
- BDSKEdgeView *previewerBox;
- BDSKZoomablePDFView *previewPdfView;
- BDSKEdgeView *previewBox;
- FileView *bottomFileView;
-
- int bottomPreviewDisplay;
- NSString *bottomPreviewDisplayTemplate;
IBOutlet NSSegmentedControl *bottomPreviewButton;
NSMenu *bottomTemplatePreviewMenu;
+ int bottomPreviewDisplay;
+ NSString *bottomPreviewDisplayTemplate;
+
#pragma mark Toolbar variables
NSMutableDictionary *toolbarItems;
@@ -257,6 +253,8 @@
BDSKSearchButtonController *searchButtonController;
BDSKDocumentSearch *documentSearch;
+ BDSKFileMigrationController *migrationController;
+
}
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2008-03-05 19:41:18 UTC (rev 12975)
+++ trunk/bibdesk/BibDocument.m 2008-03-05 21:02:15 UTC (rev 12976)
@@ -305,13 +305,7 @@
[toolbarItems release];
[statusBar release];
[[tableView enclosingScrollView] release];
- [[bottomPreviewTextView enclosingScrollView] release];
- [[bottomFileView enclosingScrollView] release];
- [[sideFileView enclosingScrollView] release];
- [[sidePreviewTextView enclosingScrollView] release];
[previewer release];
- [previewerBox release];
- [previewBox release];
[bottomPreviewDisplayTemplate release];
[sidePreviewDisplayTemplate release];
[macroWC release];
@@ -401,6 +395,12 @@
}
}
+static void replaceSplitViewSubview(NSView *view, NSSplitView *splitView,
NSInteger i) {
+ NSView *placeholderView = [[splitView subviews] objectAtIndex:i];
+ [view setFrame:[placeholderView frame]];
+ [splitView replaceSubview:placeholderView with:view];
+}
+
- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
[super windowControllerDidLoadNib:aController];
@@ -419,6 +419,9 @@
[self setupToolbar];
+ replaceSplitViewSubview(bottomPreviewTabView, splitView, 1);
+ replaceSplitViewSubview([sidePreviewTabView superview], groupSplitView, 2);
+
// First remove the statusbar if we should, as it affects proper resizing
of the window and splitViews
[statusBar retain]; // we need to retain, as we might remove it from
the window
if (![pw boolForKey:BDSKShowStatusBarKey]) {
@@ -489,8 +492,6 @@
[[tableView enclosingScrollView] retain];
[[tableView enclosingScrollView] setFrame:[mainView bounds]];
- [[bottomPreviewTextView enclosingScrollView] retain];
-
// TableView setup
[tableView removeAllTableColumns];
@@ -522,9 +523,6 @@
[sideFileView setAutoScales:YES];
[sideFileView addObserver:self forKeyPath:@"iconScale" options:0
context:NULL];
- currentSidePreviewView = [sideFileView enclosingScrollView];
- [currentSidePreviewView retain];
-
// ImagePopUpButtons setup
[actionMenuButton setShowsMenuWhenIconClicked:YES];
[[actionMenuButton cell] setAltersStateOfSelectedItem:NO];
@@ -697,9 +695,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];
@@ -3049,24 +3047,23 @@
NSDictionary *xatrrDefaults = [self
mainWindowSetupDictionaryFromExtendedAttributes];
[previewer setPDFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewPDFScaleFactorKey defaultValue:0.0]];
[previewer setRTFScaleFactor:[xatrrDefaults
floatForKey:BDSKPreviewRTFScaleFactorKey defaultValue:1.0]];
- previewerBox = [[BDSKEdgeView alloc] init];
+ BDSKEdgeView *previewerBox = [[[BDSKEdgeView alloc] init] autorelease];
[previewerBox setEdges:BDSKEveryEdgeMask];
[previewerBox setColor:[NSColor lightGrayColor] forEdge:NSMaxYEdge];
[previewerBox setContentView:[previewer pdfView]];
+ [[bottomPreviewTabView tabViewItemAtIndex:BDSKPreviewDisplayTeX]
setView:previewerBox];
}
- // may be the pdflatex or latex2rtf generated preview
- NSView *view = (NSView *)previewerBox;
- if(currentBottomPreviewView != view){
- [view setFrame:[currentBottomPreviewView frame]];
- [[currentBottomPreviewView superview]
replaceSubview:currentBottomPreviewView with:view];
- currentBottomPreviewView = view;
- [[previewer progressOverlay] overlayView:currentBottomPreviewView];
+ int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
+ if (bottomPreviewDisplay != tabIndex) {
+ [bottomPreviewTabView selectTabViewItemAtIndex:bottomPreviewDisplay];
+ [[previewer progressOverlay] overlayView:bottomPreviewTabView];
}
- [self updatePreviewer:previewer];
+ [self updatePreviewer:previewer];
}
+/*
- (void)displayErrorMessageInPreviewTextView:(NSString *)errorMessage{
NSParameterAssert(errorMessage != nil);
// make sure we have the correct view in place (NSTextView)
@@ -3189,55 +3186,21 @@
[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];
+ int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
+ if (bottomPreviewDisplay != tabIndex) {
+ if (tabIndex == BDSKPreviewDisplayTeX) {
+ [[previewer progressOverlay] remove];
+ [previewer updateWithBibTeXString:nil];
+ }
+ [bottomPreviewTabView selectTabViewItemAtIndex:bottomPreviewDisplay];
}
-
- NSView *view = [bottomFileView enclosingScrollView];
- if(currentBottomPreviewView != view){
- [[previewer progressOverlay] remove];
- [previewer updateWithBibTeXString:nil];
- [view setFrame:[currentBottomPreviewView frame]];
- [[currentBottomPreviewView superview]
replaceSubview:currentBottomPreviewView with:view];
- currentBottomPreviewView = view;
- }
-
}
-- (void)displayAttributedTextPreviewInPreviewPane{
+- (void)displayTemplatedPreview:(NSString *)templateStyle
inTextView:(NSTextView *)textView{
- //int displayType = [[OFPreferenceWrapper sharedPreferenceWrapper]
integerForKey:BDSKPreviewDisplayKey];
-
- NSView *view = [bottomPreviewTextView enclosingScrollView];
-
- if(currentBottomPreviewView != view){
- [[previewer progressOverlay] remove];
- [previewer updateWithBibTeXString:nil];
- [view setFrame:[currentBottomPreviewView frame]];
- [[currentBottomPreviewView superview]
replaceSubview:currentBottomPreviewView with:view];
- currentBottomPreviewView = view;
- }
-
- if(NSIsEmptyRect([bottomPreviewTextView visibleRect]))
+ if([textView isHidden] || NSIsEmptyRect([textView visibleRect]))
return;
/*
@@ -3260,13 +3223,13 @@
if (maxItems > 0 && [items count] > maxItems)
items = [items subarrayWithRange:NSMakeRange(0, maxItems)];
- NSTextStorage *textStorage = [bottomPreviewTextView 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];
- [bottomPreviewTextView setSelectedRanges:zeroRanges];
+ [textView setSelectedRanges:zeroRanges];
NSLayoutManager *layoutManager = [[textStorage layoutManagers] lastObject];
[layoutManager retain];
@@ -3324,7 +3287,7 @@
case BDSKTemplatePreviewDisplay:
*/
{
- BDSKTemplate *template = [BDSKTemplate
templateForStyle:bottomPreviewDisplayTemplate];
+ BDSKTemplate *template = [BDSKTemplate
templateForStyle:templateStyle];
if (template == nil)
template = [BDSKTemplate templateForStyle:[BDSKTemplate
defaultStyleNameForFileType:@"rtf"]];
NSAttributedString *templateString;
@@ -3352,117 +3315,58 @@
[layoutManager release];
if([NSString isEmptyString:[searchField stringValue]] == NO)
- [bottomPreviewTextView highlightComponentsOfSearchString:[searchField
stringValue]];
+ [textView highlightComponentsOfSearchString:[searchField
stringValue]];
}
-- (void)updatePreviewPane{
- if(bottomPreviewDisplay == BDSKPreviewDisplayTeX){
- [self displayTeXPreviewInPreviewPane];
- }else if(bottomPreviewDisplay == BDSKPreviewDisplayFiles){
- [self displayFileViewInPreviewPane];
- }else{
- [self displayAttributedTextPreviewInPreviewPane];
+- (void)prepareForTeXPreview {
+ if(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 = [sideFileView 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)updatePreviewPane{
+ int tabIndex = [bottomPreviewTabView
indexOfTabViewItem:[bottomPreviewTabView selectedTabViewItem]];
+ if (bottomPreviewDisplay != tabIndex) {
+ if (bottomPreviewDisplay == BDSKPreviewDisplayTeX)
+ [self prepareForTeXPreview];
+ else if (tabIndex == BDSKPreviewDisplayTeX)
+ [self cleanupAfterTeXPreview];
+ [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 == BDSKPreviewDisplayTeX)
+ [self updatePreviewer:previewer];
+ else if (bottomPreviewDisplay == BDSKPreviewDisplayFiles)
+ [bottomFileView reloadIcons];
+ else
+ [self displayTemplatedPreview:bottomPreviewDisplayTemplate
inTextView:bottomPreviewTextView];
}
- (void)updateSidePreviewPane{
- if(sidePreviewDisplay == BDSKPreviewDisplayFiles){
- [self displayFileViewInSidePreviewPane];
- }else{
- [self displayAttributedTextPreviewInSidePreviewPane];
+ int tabIndex = [sidePreviewTabView indexOfTabViewItem:[sidePreviewTabView
selectedTabViewItem]];
+ if (sidePreviewDisplay != tabIndex) {
+ [sidePreviewTabView selectTabViewItemAtIndex:sidePreviewDisplay];
}
+
+ if (sidePreviewDisplay == BDSKPreviewDisplayFiles)
+ [sideFileView reloadIcons];
+ else
+ [self displayTemplatedPreview:sidePreviewDisplayTemplate
inTextView:sidePreviewTextView];
}
#pragma mark FileView
Modified: trunk/bibdesk/English.lproj/BibDocument.nib/classes.nib
===================================================================
--- trunk/bibdesk/English.lproj/BibDocument.nib/classes.nib 2008-03-05
19:41:18 UTC (rev 12975)
+++ trunk/bibdesk/English.lproj/BibDocument.nib/classes.nib 2008-03-05
21:02:15 UTC (rev 12976)
@@ -175,9 +175,10 @@
OUTLETS = {
actionMenu = NSMenu;
actionMenuButton = BDSKImagePopUpButton;
+ bottomFileView = FileView;
bottomPreviewButton = NSSegmentedControl;
+ bottomPreviewTabView = NSTabView;
bottomPreviewTextView = NSTextView;
- currentBottomPreviewView = NSView;
documentWindow = NSWindow;
exportAccessoryView = NSView;
exportSelectionCheckButton = NSButton;
@@ -201,6 +202,8 @@
searchField = NSSearchField;
sideFileView = FileView;
sidePreviewButton = NSSegmentedControl;
+ sidePreviewTabView = NSTabView;
+ sidePreviewTextView = NSTextView;
splitView = BDSKSplitView;
statusBar = BDSKStatusBar;
tableView = BDSKMainTableView;
@@ -218,7 +221,6 @@
OUTLETS = {
dataSource = id;
delegate = id;
- dragDataSource = id;
};
SUPERCLASS = NSView;
},
Modified: trunk/bibdesk/English.lproj/BibDocument.nib/info.nib
===================================================================
--- trunk/bibdesk/English.lproj/BibDocument.nib/info.nib 2008-03-05
19:41:18 UTC (rev 12975)
+++ trunk/bibdesk/English.lproj/BibDocument.nib/info.nib 2008-03-05
21:02:15 UTC (rev 12976)
@@ -3,25 +3,45 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
- <string>69 68 356 240 0 0 1440 938 </string>
+ <string>58 186 356 240 0 0 1440 938 </string>
<key>IBEditorPositions</key>
<dict>
+ <key>101206</key>
+ <string>610 536 220 242 0 0 1440 938 </string>
+ <key>101223</key>
+ <string>610 536 220 242 0 0 1440 938 </string>
<key>433</key>
<string>69 313 241 503 0 0 1440 938 </string>
+ <key>661</key>
+ <string>532 634 376 112 0 0 1440 938 </string>
+ <key>702</key>
+ <string>552 637 336 108 0 0 1440 938 </string>
<key>819</key>
<string>69 313 281 412 0 0 1440 938 </string>
+ <key>923</key>
+ <string>532 611 376 142 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>489.0</string>
<key>IBLastKnownRelativeProjectPath</key>
<string>../../Bibdesk.xcodeproj</string>
+ <key>IBLockedTabItems</key>
+ <array>
+ <integer>101208</integer>
+ <integer>101231</integer>
+ </array>
<key>IBOldestOS</key>
<integer>5</integer>
<key>IBOpenObjects</key>
<array>
+ <integer>923</integer>
+ <integer>5</integer>
+ <integer>661</integer>
<integer>433</integer>
- <integer>5</integer>
+ <integer>702</integer>
+ <integer>101206</integer>
<integer>819</integer>
+ <integer>101223</integer>
</array>
<key>IBSystem Version</key>
<string>9C31</string>
Modified: trunk/bibdesk/English.lproj/BibDocument.nib/keyedobjects.nib
===================================================================
(Binary files differ)
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