From 992ed818d6d79df39c02202aea21b985a3ce244e Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Thu, 26 Oct 2006 08:21:50 +0000 Subject: [PATCH] Added log and output windows --- Resources/VLLogWindow.nib/classes.nib | 18 +++ Resources/VLLogWindow.nib/info.nib | 16 +++ Resources/VLLogWindow.nib/keyedobjects.nib | Bin 0 -> 4784 bytes Resources/VLPDFWindow.nib/classes.nib | 36 ++++++ Resources/VLPDFWindow.nib/info.nib | 16 +++ Resources/VLPDFWindow.nib/keyedobjects.nib | Bin 0 -> 5468 bytes Resources/console.icns | Bin 0 -> 12548 bytes Resources/music.tiff | Bin 0 -> 69112 bytes Resources/nextpage.tiff | Bin 0 -> 19868 bytes Resources/prevpage.tiff | Bin 0 -> 19856 bytes Resources/run.icns | Bin 0 -> 2887 bytes Resources/zoomin.tiff | Bin 0 -> 19452 bytes Resources/zoomout.tiff | Bin 0 -> 19428 bytes Sources/VLLogWindow.h | 18 +++ Sources/VLLogWindow.mm | 56 ++++++++ Sources/VLPDFView.h | 15 +++ Sources/VLPDFView.mm | 38 ++++++ Sources/VLPDFWindow.h | 21 +++ Sources/VLPDFWindow.mm | 142 +++++++++++++++++++++ Vocalese.xcodeproj/project.pbxproj | 54 ++++++++ 20 files changed, 430 insertions(+) create mode 100644 Resources/VLLogWindow.nib/classes.nib create mode 100644 Resources/VLLogWindow.nib/info.nib create mode 100644 Resources/VLLogWindow.nib/keyedobjects.nib create mode 100644 Resources/VLPDFWindow.nib/classes.nib create mode 100644 Resources/VLPDFWindow.nib/info.nib create mode 100644 Resources/VLPDFWindow.nib/keyedobjects.nib create mode 100644 Resources/console.icns create mode 100644 Resources/music.tiff create mode 100644 Resources/nextpage.tiff create mode 100644 Resources/prevpage.tiff create mode 100644 Resources/run.icns create mode 100644 Resources/zoomin.tiff create mode 100644 Resources/zoomout.tiff create mode 100644 Sources/VLLogWindow.h create mode 100644 Sources/VLLogWindow.mm create mode 100644 Sources/VLPDFView.h create mode 100644 Sources/VLPDFView.mm create mode 100644 Sources/VLPDFWindow.h create mode 100644 Sources/VLPDFWindow.mm diff --git a/Resources/VLLogWindow.nib/classes.nib b/Resources/VLLogWindow.nib/classes.nib new file mode 100644 index 0000000..ef63bd5 --- /dev/null +++ b/Resources/VLLogWindow.nib/classes.nib @@ -0,0 +1,18 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + CLASS = LilypondLogWin; + LANGUAGE = ObjC; + OUTLETS = {fLog = id; }; + SUPERCLASS = NSWindowController; + }, + { + CLASS = VLLogWindow; + LANGUAGE = ObjC; + OUTLETS = {log = id; }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/Resources/VLLogWindow.nib/info.nib b/Resources/VLLogWindow.nib/info.nib new file mode 100644 index 0000000..b61433b --- /dev/null +++ b/Resources/VLLogWindow.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 210 57 356 240 0 0 1024 746 + IBFramework Version + 452.0 + IBOpenObjects + + 5 + + IBSystem Version + 9A283 + + diff --git a/Resources/VLLogWindow.nib/keyedobjects.nib b/Resources/VLLogWindow.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..7f1eb1cf0434806bc74cfbca5d728ec5f82588c0 GIT binary patch literal 4784 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

cFisio Z7-x-h#^?Nr4j>5jFaFy8P5d{${2z8plbZkl literal 0 HcmV?d00001 diff --git a/Resources/VLPDFWindow.nib/classes.nib b/Resources/VLPDFWindow.nib/classes.nib new file mode 100644 index 0000000..905a33c --- /dev/null +++ b/Resources/VLPDFWindow.nib/classes.nib @@ -0,0 +1,36 @@ +{ + IBClasses = ( + { + ACTIONS = {"" = id; }; + CLASS = FirstResponder; + LANGUAGE = ObjC; + SUPERCLASS = NSObject; + }, + { + CLASS = LilypondOutputWin; + LANGUAGE = ObjC; + OUTLETS = { + fNextPageItem = id; + fPDFView = id; + fPrevPageItem = id; + fZoomInItem = id; + fZoomOutItem = id; + }; + SUPERCLASS = NSWindowController; + }, + {CLASS = LilypondPDFView; LANGUAGE = ObjC; SUPERCLASS = PDFView; }, + { + CLASS = VLPDFWindow; + LANGUAGE = ObjC; + OUTLETS = { + PDFView = id; + nextPageItem = id; + prevPageItem = id; + zoomInItem = id; + zoomOutItem = id; + }; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/Resources/VLPDFWindow.nib/info.nib b/Resources/VLPDFWindow.nib/info.nib new file mode 100644 index 0000000..6d5ff79 --- /dev/null +++ b/Resources/VLPDFWindow.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 122 105 356 240 0 0 1024 746 + IBFramework Version + 452.0 + IBOpenObjects + + 11 + + IBSystem Version + 9A283 + + diff --git a/Resources/VLPDFWindow.nib/keyedobjects.nib b/Resources/VLPDFWindow.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..0a2a52897b7bd3759eed815720b14e0fb6d257ea GIT binary patch literal 5468 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 C(Hr3a literal 0 HcmV?d00001 diff --git a/Resources/music.tiff b/Resources/music.tiff new file mode 100644 index 0000000000000000000000000000000000000000..ad38d2066ec9263b157b61dd2544fa14bcc7b511 GIT binary patch literal 69112 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 literal 0 HcmV?d00001 diff --git a/Resources/prevpage.tiff b/Resources/prevpage.tiff new file mode 100644 index 0000000000000000000000000000000000000000..e34543be85f62b0173e5d1791f604916e1e5d1c2 GIT binary patch literal 19856 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 literal 0 HcmV?d00001 diff --git a/Resources/zoomout.tiff b/Resources/zoomout.tiff new file mode 100644 index 0000000000000000000000000000000000000000..0dbe1a67c1ccfe33864d73601a886e1f21fb3024 GIT binary patch literal 19428 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 U_6duZ0T?(2iYE0qV@hxT1ZCxs$N&HU literal 0 HcmV?d00001 diff --git a/Sources/VLLogWindow.h b/Sources/VLLogWindow.h new file mode 100644 index 0000000..7998e49 --- /dev/null +++ b/Sources/VLLogWindow.h @@ -0,0 +1,18 @@ +// +// VLLogWindow.h +// Vocalese +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import + +@interface VLLogWindow : NSWindowController { + IBOutlet id log; + NSMutableString * logText; +} + +- (void) logFromFileHandle:(NSFileHandle *) h; + +@end diff --git a/Sources/VLLogWindow.mm b/Sources/VLLogWindow.mm new file mode 100644 index 0000000..6ade5f1 --- /dev/null +++ b/Sources/VLLogWindow.mm @@ -0,0 +1,56 @@ +// +// VLLogWindow.m +// Lilypond +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import "VLLogWindow.h" + +@implementation VLLogWindow + +- (id)initWithWindow:(NSWindow *)window +{ + self = [super initWithWindow:window]; + logText = [[NSMutableString alloc] initWithCapacity:1000]; + + return self; +} + +- (void)dealloc +{ + [logText autorelease]; + [super dealloc]; +} + +- (IBAction)printDocument:(id)sender +{ + [log print: sender]; +} + +- (NSString *)windowTitleForDocumentDisplayName:(NSString *)displayName +{ + return [displayName stringByAppendingString: @" - Log"]; +} + +- (void) logFromFileHandle:(NSFileHandle *) h +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + NSData * data; + + [logText setString: @""]; + [log setString: logText]; + while ((data = [h availableData]) && [data length]) { + NSString * append = [[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding] autorelease]; + [logText appendString: append]; + [log setString: logText]; + [log scrollRangeToVisible: NSMakeRange([logText length], 0)]; + + [pool release]; + pool = [[NSAutoreleasePool alloc] init]; + } + [pool release]; +} + +@end diff --git a/Sources/VLPDFView.h b/Sources/VLPDFView.h new file mode 100644 index 0000000..c42a4d5 --- /dev/null +++ b/Sources/VLPDFView.h @@ -0,0 +1,15 @@ +// +// VLPDFView.h +// Lilypond +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import +#import + +@interface VLPDFView : PDFView { +} + +@end diff --git a/Sources/VLPDFView.mm b/Sources/VLPDFView.mm new file mode 100644 index 0000000..46b51c0 --- /dev/null +++ b/Sources/VLPDFView.mm @@ -0,0 +1,38 @@ +// +// VLPDFView.m +// Lilypond +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import "VLPDFView.h" + +@implementation VLPDFView + +- (BOOL)tryOpenURL:(NSURL *)url +{ + if ([[url scheme] isEqual: @"textedit"]) { + // + // Handle TextEdit links internally + // + NSString * path = [url path]; + NSArray * components = [[path lastPathComponent] componentsSeparatedByString: @":"]; + unsigned count = [components count]; + if (count > 2) { + int line = [[components objectAtIndex: count-2] intValue]; + int pos = [[components objectAtIndex: count-1] intValue]; + + [[[[self window] windowController] document] selectCharacter:pos inLine:line]; + } + return YES; + } else + return [super tryOpenURL:url] != NULL; +} + +- (BOOL) canBecomeKeyView +{ + return YES; +} + +@end diff --git a/Sources/VLPDFWindow.h b/Sources/VLPDFWindow.h new file mode 100644 index 0000000..db1835b --- /dev/null +++ b/Sources/VLPDFWindow.h @@ -0,0 +1,21 @@ +// +// VLPDFWindow.h +// Vocalese +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import + +@interface VLPDFWindow : NSWindowController { + IBOutlet id pdfView; + IBOutlet id prevPageItem; + IBOutlet id nextPageItem; + IBOutlet id zoomInItem; + IBOutlet id zoomOutItem; +} + +- (void)reloadPDF; + +@end diff --git a/Sources/VLPDFWindow.mm b/Sources/VLPDFWindow.mm new file mode 100644 index 0000000..14499c8 --- /dev/null +++ b/Sources/VLPDFWindow.mm @@ -0,0 +1,142 @@ +// +// VLPDFWindow.m +// Lilypond +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import "VLPDFWindow.h" +#import "VLPDFView.h" + +@implementation VLPDFWindow + +static NSString* sOutputToolbarIdentifier = @"Lilypond Output Toolbar Identifier"; +static NSString* sPrevPageToolbarItemIdentifier = @"Prev Page Toolbar Item Identifier"; +static NSString* sNextPageToolbarItemIdentifier = @"Next Page Toolbar Item Identifier"; +static NSString* sZoomInToolbarItemIdentifier = @"Zoom In Toolbar Item Identifier"; +static NSString* sZoomOutToolbarItemIdentifier = @"Zoom Out Toolbar Item Identifier"; + +- (NSString *)windowTitleForDocumentDisplayName:(NSString *)displayName +{ + return [displayName stringByAppendingString: @" - Output"]; +} + +- (void)synchronizeWindowTitleWithDocumentName +{ + [super synchronizeWindowTitleWithDocumentName]; + [self reloadPDF]; +} + +- (void)reloadPDF +{ + if (pdfView) { + NSString * inString = [[[self document] fileURL] path]; + NSString * baseString = [inString stringByDeletingPathExtension]; + NSString * outString = [baseString stringByAppendingPathExtension: @"pdf"]; + NSURL * pdfURL = [NSURL fileURLWithPath: outString]; + PDFDocument * pdfDoc = [[[PDFDocument alloc] initWithURL: pdfURL] autorelease]; + [(PDFView *)pdfView setDocument: pdfDoc]; + } +} + +- (IBAction)printDocument:(id)sender +{ + [pdfView printWithInfo: [NSPrintInfo sharedPrintInfo] autoRotate: YES]; +} + +- (void)windowDidLoad +{ + // Create a new toolbar instance, and attach it to our document window + NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier: sOutputToolbarIdentifier] autorelease]; + + // Set up toolbar properties: Allow customization, give a default display mode, and remember state in user defaults + [toolbar setAllowsUserCustomization: YES]; + [toolbar setAutosavesConfiguration: YES]; + + // We are the delegate + [toolbar setDelegate: self]; + + // Attach the toolbar to the document window + [[self window] setToolbar: toolbar]; +} + + +- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted { + // Required delegate method: Given an item identifier, this method returns an item + // The toolbar will use this method to obtain toolbar items that can be displayed in the customization sheet, or in the toolbar itself + NSToolbarItem * toolbarItem = nil; + id prototype = nil; + + if ([itemIdent isEqual: sPrevPageToolbarItemIdentifier]) + prototype = prevPageItem; + else if ([itemIdent isEqual: sNextPageToolbarItemIdentifier]) + prototype = nextPageItem; + else if ([itemIdent isEqual: sZoomInToolbarItemIdentifier]) + prototype = zoomInItem; + else if ([itemIdent isEqual: sZoomOutToolbarItemIdentifier]) + prototype = zoomOutItem; + + if (prototype) { + toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdent] autorelease]; + + // Set the text label to be displayed in the toolbar and customization palette + [toolbarItem setLabel: [prototype title]]; + [toolbarItem setPaletteLabel: [prototype alternateTitle]]; + + // Set up a reasonable tooltip, and image Note, these aren't localized, but you will likely want to localize many of the item's properties + [toolbarItem setToolTip: [prototype toolTip]]; + [toolbarItem setImage: [prototype image]]; + + // Tell the item what message to send when it is clicked + [toolbarItem setTarget: [prototype target]]; + [toolbarItem setAction: [prototype action]]; + } else { + // itemIdent refered to a toolbar item that is not provide or supported by us or cocoa + // Returning nil will inform the toolbar this kind of item is not supported + toolbarItem = nil; + } + return toolbarItem; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar { + // Required delegate method: Returns the ordered list of items to be shown in the toolbar by default + // If during the toolbar's initialization, no overriding values are found in the user defaults, or if the + // user chooses to revert to the default items this set will be used + return [NSArray arrayWithObjects: NSToolbarPrintItemIdentifier, NSToolbarSeparatorItemIdentifier, + sPrevPageToolbarItemIdentifier, sNextPageToolbarItemIdentifier, NSToolbarSeparatorItemIdentifier, + sZoomInToolbarItemIdentifier, sZoomOutToolbarItemIdentifier, nil]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar { + // Required delegate method: Returns the list of all allowed items by identifier. By default, the toolbar + // does not assume any items are allowed, even the separator. So, every allowed item must be explicitly listed + // The set of allowed items is used to construct the customization palette + return [NSArray arrayWithObjects: sPrevPageToolbarItemIdentifier, sNextPageToolbarItemIdentifier, + sZoomInToolbarItemIdentifier, sZoomOutToolbarItemIdentifier, + NSToolbarPrintItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, + NSToolbarFlexibleSpaceItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarSeparatorItemIdentifier, nil]; +} + +- (void) toolbarWillAddItem: (NSNotification *) notif { + // Optional delegate method: Before an new item is added to the toolbar, this notification is posted. + // This is the best place to notice a new item is going into the toolbar. For instance, if you need to + // cache a reference to the toolbar item or need to set up some initial state, this is the best place + // to do it. The notification object is the toolbar to which the item is being added. The item being + // added is found by referencing the @"item" key in the userInfo +} + +- (void) toolbarDidRemoveItem: (NSNotification *) notif { + // Optional delegate method: After an item is removed from a toolbar, this notification is sent. This allows + // the chance to tear down information related to the item that may have been cached. The notification object + // is the toolbar from which the item is being removed. The item being added is found by referencing the @"item" + // key in the userInfo +} + +- (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem { + // Optional method: This message is sent to us since we are the target of some toolbar item actions + // (for example: of the save items action) + return YES; +} + +@end diff --git a/Vocalese.xcodeproj/project.pbxproj b/Vocalese.xcodeproj/project.pbxproj index f6f3c1d..9db1099 100644 --- a/Vocalese.xcodeproj/project.pbxproj +++ b/Vocalese.xcodeproj/project.pbxproj @@ -46,6 +46,18 @@ 95E04DCE0AEB4D9B006F30A0 /* Templates in Resources */ = {isa = PBXBuildFile; fileRef = 95E04DCA0AEB4D9B006F30A0 /* Templates */; }; 95F5F50F0ADCC433003980B2 /* VLXMLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */; }; 95F5F5340ADCCFBB003980B2 /* DTD in Resources */ = {isa = PBXBuildFile; fileRef = 95F5F51E0ADCCFBB003980B2 /* DTD */; }; + 95FC668F0AF0A08C003D9C11 /* VLLogWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95FC668E0AF0A08C003D9C11 /* VLLogWindow.mm */; }; + 95FC66960AF0A112003D9C11 /* VLLogWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66950AF0A112003D9C11 /* VLLogWindow.nib */; }; + 95FC66A60AF0A24C003D9C11 /* VLPDFWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95FC66A50AF0A24C003D9C11 /* VLPDFWindow.mm */; }; + 95FC66BA0AF0A3AD003D9C11 /* VLPDFWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66B90AF0A3AD003D9C11 /* VLPDFWindow.nib */; }; + 95FC66C30AF0A4D4003D9C11 /* console.icns in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66BC0AF0A4D4003D9C11 /* console.icns */; }; + 95FC66C40AF0A4D4003D9C11 /* music.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66BD0AF0A4D4003D9C11 /* music.tiff */; }; + 95FC66C50AF0A4D5003D9C11 /* nextpage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66BE0AF0A4D4003D9C11 /* nextpage.tiff */; }; + 95FC66C60AF0A4D5003D9C11 /* prevpage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66BF0AF0A4D4003D9C11 /* prevpage.tiff */; }; + 95FC66C70AF0A4D5003D9C11 /* run.icns in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66C00AF0A4D4003D9C11 /* run.icns */; }; + 95FC66C80AF0A4D5003D9C11 /* zoomin.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66C10AF0A4D4003D9C11 /* zoomin.tiff */; }; + 95FC66C90AF0A4D5003D9C11 /* zoomout.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 95FC66C20AF0A4D4003D9C11 /* zoomout.tiff */; }; + 95FC66CE0AF0A591003D9C11 /* VLPDFView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95FC66CC0AF0A591003D9C11 /* VLPDFView.mm */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -99,6 +111,21 @@ 95F5F50D0ADCC433003980B2 /* VLXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLXMLDocument.h; path = Sources/VLXMLDocument.h; sourceTree = ""; }; 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLXMLDocument.mm; path = Sources/VLXMLDocument.mm; sourceTree = ""; }; 95F5F51E0ADCCFBB003980B2 /* DTD */ = {isa = PBXFileReference; lastKnownFileType = folder; name = DTD; path = Resources/DTD; sourceTree = ""; }; + 95FC668D0AF0A08C003D9C11 /* VLLogWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLLogWindow.h; path = Sources/VLLogWindow.h; sourceTree = ""; }; + 95FC668E0AF0A08C003D9C11 /* VLLogWindow.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLLogWindow.mm; path = Sources/VLLogWindow.mm; sourceTree = ""; }; + 95FC66950AF0A112003D9C11 /* VLLogWindow.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = VLLogWindow.nib; path = Resources/VLLogWindow.nib; sourceTree = ""; }; + 95FC66A40AF0A24C003D9C11 /* VLPDFWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLPDFWindow.h; path = Sources/VLPDFWindow.h; sourceTree = ""; }; + 95FC66A50AF0A24C003D9C11 /* VLPDFWindow.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLPDFWindow.mm; path = Sources/VLPDFWindow.mm; sourceTree = ""; }; + 95FC66B90AF0A3AD003D9C11 /* VLPDFWindow.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = VLPDFWindow.nib; path = Resources/VLPDFWindow.nib; sourceTree = ""; }; + 95FC66BC0AF0A4D4003D9C11 /* console.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = console.icns; path = Resources/console.icns; sourceTree = ""; }; + 95FC66BD0AF0A4D4003D9C11 /* music.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = music.tiff; path = Resources/music.tiff; sourceTree = ""; }; + 95FC66BE0AF0A4D4003D9C11 /* nextpage.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = nextpage.tiff; path = Resources/nextpage.tiff; sourceTree = ""; }; + 95FC66BF0AF0A4D4003D9C11 /* prevpage.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = prevpage.tiff; path = Resources/prevpage.tiff; sourceTree = ""; }; + 95FC66C00AF0A4D4003D9C11 /* run.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = run.icns; path = Resources/run.icns; sourceTree = ""; }; + 95FC66C10AF0A4D4003D9C11 /* zoomin.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = zoomin.tiff; path = Resources/zoomin.tiff; sourceTree = ""; }; + 95FC66C20AF0A4D4003D9C11 /* zoomout.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = zoomout.tiff; path = Resources/zoomout.tiff; sourceTree = ""; }; + 95FC66CC0AF0A591003D9C11 /* VLPDFView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLPDFView.mm; path = Sources/VLPDFView.mm; sourceTree = ""; }; + 95FC66CD0AF0A591003D9C11 /* VLPDFView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLPDFView.h; path = Sources/VLPDFView.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -194,6 +221,12 @@ 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { isa = PBXGroup; children = ( + 95FC66CC0AF0A591003D9C11 /* VLPDFView.mm */, + 95FC66CD0AF0A591003D9C11 /* VLPDFView.h */, + 95FC66A40AF0A24C003D9C11 /* VLPDFWindow.h */, + 95FC66A50AF0A24C003D9C11 /* VLPDFWindow.mm */, + 95FC668D0AF0A08C003D9C11 /* VLLogWindow.h */, + 95FC668E0AF0A08C003D9C11 /* VLLogWindow.mm */, 95498DBB0AE3812F006B5F81 /* VLSoundSched.h */, 95498DBC0AE3812F006B5F81 /* VLSoundSched.mm */, 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */, @@ -233,6 +266,15 @@ 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 95FC66BC0AF0A4D4003D9C11 /* console.icns */, + 95FC66BD0AF0A4D4003D9C11 /* music.tiff */, + 95FC66BE0AF0A4D4003D9C11 /* nextpage.tiff */, + 95FC66BF0AF0A4D4003D9C11 /* prevpage.tiff */, + 95FC66C00AF0A4D4003D9C11 /* run.icns */, + 95FC66C10AF0A4D4003D9C11 /* zoomin.tiff */, + 95FC66C20AF0A4D4003D9C11 /* zoomout.tiff */, + 95FC66B90AF0A3AD003D9C11 /* VLPDFWindow.nib */, + 95FC66950AF0A112003D9C11 /* VLLogWindow.nib */, 95E04DCA0AEB4D9B006F30A0 /* Templates */, 9593E4E60AE0ED1F00035816 /* vlsong.icns */, 9593E4E70AE0ED1F00035816 /* vocalese.icns */, @@ -388,6 +430,15 @@ 9593E4E80AE0ED1F00035816 /* vlsong.icns in Resources */, 9593E4E90AE0ED1F00035816 /* vocalese.icns in Resources */, 95E04DCE0AEB4D9B006F30A0 /* Templates in Resources */, + 95FC66960AF0A112003D9C11 /* VLLogWindow.nib in Resources */, + 95FC66BA0AF0A3AD003D9C11 /* VLPDFWindow.nib in Resources */, + 95FC66C30AF0A4D4003D9C11 /* console.icns in Resources */, + 95FC66C40AF0A4D4003D9C11 /* music.tiff in Resources */, + 95FC66C50AF0A4D5003D9C11 /* nextpage.tiff in Resources */, + 95FC66C60AF0A4D5003D9C11 /* prevpage.tiff in Resources */, + 95FC66C70AF0A4D5003D9C11 /* run.icns in Resources */, + 95FC66C80AF0A4D5003D9C11 /* zoomin.tiff in Resources */, + 95FC66C90AF0A4D5003D9C11 /* zoomout.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -410,6 +461,9 @@ 953722670AE9F0E100B6E483 /* VLLilypondDocument.mm in Sources */, 954BBD860AEDDE5300BBFD5F /* VLAppController.mm in Sources */, 954BBD9A0AEDE81500BBFD5F /* VLPitchTransformer.mm in Sources */, + 95FC668F0AF0A08C003D9C11 /* VLLogWindow.mm in Sources */, + 95FC66A60AF0A24C003D9C11 /* VLPDFWindow.mm in Sources */, + 95FC66CE0AF0A591003D9C11 /* VLPDFView.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };