mirror of
https://github.com/microtherion/VocalEasel.git
synced 2024-12-22 11:14:00 +00:00
Implemented groove selection sheet
This commit is contained in:
parent
7c5f28ede9
commit
a5f43d16d1
2
English.lproj/VLDocument.nib/classes.nib
generated
2
English.lproj/VLDocument.nib/classes.nib
generated
|
@ -31,6 +31,7 @@
|
|||
ACTIONS = {
|
||||
endRepeatSheet = id;
|
||||
hideFieldEditor = id;
|
||||
selectGroove = id;
|
||||
setDivisions = id;
|
||||
setKey = id;
|
||||
setTime = id;
|
||||
|
@ -41,6 +42,7 @@
|
|||
fEndingMsg = id;
|
||||
fEndingSheet = id;
|
||||
fFieldEditor = id;
|
||||
fGrooveMenu = id;
|
||||
fRepeatMsg = id;
|
||||
fRepeatSheet = id;
|
||||
};
|
||||
|
|
8
English.lproj/VLDocument.nib/info.nib
generated
8
English.lproj/VLDocument.nib/info.nib
generated
|
@ -1,17 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>427 29 356 240 0 0 1280 778 </string>
|
||||
<key>IBFramework Version</key>
|
||||
<string>454.0</string>
|
||||
<string>460.0</string>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>5</integer>
|
||||
<integer>144</integer>
|
||||
<integer>196</integer>
|
||||
<integer>216</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>9A321</string>
|
||||
<string>9A412</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
BIN
English.lproj/VLDocument.nib/keyedobjects.nib
generated
BIN
English.lproj/VLDocument.nib/keyedobjects.nib
generated
Binary file not shown.
13
English.lproj/VLGroove.nib/classes.nib
generated
Normal file
13
English.lproj/VLGroove.nib/classes.nib
generated
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
IBClasses = (
|
||||
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
|
||||
{
|
||||
ACTIONS = {endSheet = id; updateDescription = id; };
|
||||
CLASS = VLGrooveController;
|
||||
LANGUAGE = ObjC;
|
||||
OUTLETS = {fBrowser = NSBrowser; fDescription = NSTextField; fOKButton = NSButton; };
|
||||
SUPERCLASS = NSWindowController;
|
||||
}
|
||||
);
|
||||
IBVersion = 1;
|
||||
}
|
16
English.lproj/VLGroove.nib/info.nib
generated
Normal file
16
English.lproj/VLGroove.nib/info.nib
generated
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IBDocumentLocation</key>
|
||||
<string>59 9 356 240 0 0 1280 778 </string>
|
||||
<key>IBFramework Version</key>
|
||||
<string>460.0</string>
|
||||
<key>IBOpenObjects</key>
|
||||
<array>
|
||||
<integer>13</integer>
|
||||
</array>
|
||||
<key>IBSystem Version</key>
|
||||
<string>9A412</string>
|
||||
</dict>
|
||||
</plist>
|
BIN
English.lproj/VLGroove.nib/keyedobjects.nib
generated
Normal file
BIN
English.lproj/VLGroove.nib/keyedobjects.nib
generated
Normal file
Binary file not shown.
32
Sources/VLGrooveController.h
Normal file
32
Sources/VLGrooveController.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
//
|
||||
// VLGrooveController.h
|
||||
// Vocalese
|
||||
//
|
||||
// Created by Matthias Neeracher on 2/1/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@class VLSheetView;
|
||||
|
||||
@interface VLGrooveController : NSWindowController {
|
||||
NSDictionary * fGrooves;
|
||||
IBOutlet NSBrowser * fBrowser;
|
||||
IBOutlet NSTextField * fDescription;
|
||||
IBOutlet NSButton * fOKButton;
|
||||
NSString * fStyle;
|
||||
NSDictionary * fSubStyles;
|
||||
NSArray * fSubStyleList;
|
||||
NSPredicate * fSubStyleFilter;
|
||||
}
|
||||
|
||||
- (id) initWithSheetView:(VLSheetView *)view;
|
||||
- (IBAction)endSheet:(id)sender;
|
||||
- (IBAction)updateDescription:(id)sender;
|
||||
|
||||
@end
|
||||
|
||||
// Local Variables:
|
||||
// mode:ObjC
|
||||
// End:
|
111
Sources/VLGrooveController.mm
Normal file
111
Sources/VLGrooveController.mm
Normal file
|
@ -0,0 +1,111 @@
|
|||
//
|
||||
// VLGrooveController.mm
|
||||
// Vocalese
|
||||
//
|
||||
// Created by Matthias Neeracher on 2/1/07.
|
||||
// Copyright 2007 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "VLGrooveController.h"
|
||||
#import "VLSheetView.h"
|
||||
|
||||
@implementation VLGrooveController
|
||||
|
||||
- (id) initWithSheetView:(VLSheetView *)view;
|
||||
{
|
||||
self = [super initWithWindowNibName:@"VLGroove"];
|
||||
fGrooves = [[NSDictionary alloc] initWithContentsOfFile:
|
||||
[[NSBundle mainBundle] pathForResource:@"Grooves" ofType:@"plist"]];
|
||||
fSubStyleFilter =
|
||||
[[NSPredicate predicateWithFormat:
|
||||
@"!(SELF like[c] '.DESC') AND !(SELF matches[c] '.*(Intro|End)\\\\d*$')"]
|
||||
retain];
|
||||
|
||||
[NSApp beginSheet: [self window]
|
||||
modalForWindow: [view window]
|
||||
modalDelegate: self
|
||||
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
|
||||
contextInfo: view];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
[fGrooves release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (IBAction)endSheet:(id)sender
|
||||
{
|
||||
[NSApp endSheet:[self window] returnCode:[sender tag]];
|
||||
}
|
||||
|
||||
- (void)didEndSheet:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
|
||||
{
|
||||
if (returnCode == NSAlertFirstButtonReturn)
|
||||
[(VLSheetView *)contextInfo setGroove:[[fBrowser selectedCellInColumn:1] stringValue]];
|
||||
|
||||
[[self window] orderOut:self];
|
||||
}
|
||||
|
||||
- (NSString *)browser:(NSBrowser *)sender titleOfColumn:(NSInteger)column
|
||||
{
|
||||
if (!column)
|
||||
return @"Style";
|
||||
else
|
||||
return @"Substyle";
|
||||
}
|
||||
|
||||
- (void)updateStyle
|
||||
{
|
||||
[fStyle autorelease];
|
||||
[fSubStyleList release];
|
||||
fStyle = [[[fBrowser selectedCellInColumn:0] stringValue] retain];
|
||||
fSubStyles = [fGrooves objectForKey:fStyle];
|
||||
fSubStyleList = [[[fSubStyles allKeys]
|
||||
filteredArrayUsingPredicate:fSubStyleFilter]
|
||||
retain];
|
||||
}
|
||||
|
||||
- (NSInteger)browser:(NSBrowser *)sender numberOfRowsInColumn:(NSInteger)column
|
||||
{
|
||||
[fBrowser setTakesTitleFromPreviousColumn:NO];
|
||||
[fBrowser setDoubleAction:@selector(endSheet:)];
|
||||
|
||||
if (!column) {
|
||||
return [fGrooves count];
|
||||
} else {
|
||||
[self updateStyle];
|
||||
return [fSubStyleList count];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(NSInteger)row column:(NSInteger)column
|
||||
{
|
||||
if (!column) {
|
||||
[cell setStringValue:
|
||||
[[[fGrooves allKeys]
|
||||
sortedArrayUsingSelector:@selector(compare:)]
|
||||
objectAtIndex:row]];
|
||||
} else {
|
||||
[cell setStringValue:[fSubStyleList objectAtIndex:row]];
|
||||
[cell setLeaf:YES];
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)updateDescription:(id)sender
|
||||
{
|
||||
BOOL validStyle = [fBrowser selectedColumn];
|
||||
[fOKButton setEnabled:validStyle];
|
||||
if (validStyle)
|
||||
[fDescription setStringValue:
|
||||
[NSString stringWithFormat:@"%@\n\n%@",
|
||||
[fSubStyles objectForKey:@".DESC"],
|
||||
[fSubStyles objectForKey:
|
||||
[[fBrowser selectedCellInColumn:1] stringValue]]]];
|
||||
else
|
||||
[fDescription setStringValue:[fSubStyles objectForKey:@".DESC"]];
|
||||
}
|
||||
|
||||
@end
|
|
@ -87,6 +87,7 @@ enum VLRecalc {
|
|||
IBOutlet id fEndingSheet;
|
||||
IBOutlet id fRepeatMsg;
|
||||
IBOutlet id fEndingMsg;
|
||||
IBOutlet id fGrooveMenu;
|
||||
}
|
||||
|
||||
- (IBAction) setKey:(id)sender;
|
||||
|
@ -94,6 +95,7 @@ enum VLRecalc {
|
|||
- (IBAction) setDivisions:(id)sender;
|
||||
- (IBAction) hideFieldEditor:(id)sender;
|
||||
- (IBAction) endRepeatSheet:(id)sender;
|
||||
- (IBAction) selectGroove:(id)sender;
|
||||
|
||||
- (VLDocument *) document;
|
||||
- (VLSong *) song;
|
||||
|
@ -118,6 +120,8 @@ enum VLRecalc {
|
|||
- (void) setEditTarget:(VLEditable *)editable;
|
||||
- (VLRegion) findRegionForEvent:(NSEvent *) event;
|
||||
|
||||
- (void) setGroove:(NSString *)groove;
|
||||
|
||||
@end
|
||||
|
||||
// Local Variables:
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#import "VLSheetViewLyrics.h"
|
||||
#import "VLSheetViewSelection.h"
|
||||
#import "VLSoundOut.h"
|
||||
#import "VLGrooveController.h"
|
||||
|
||||
#import "VLDocument.h"
|
||||
|
||||
|
@ -521,6 +522,17 @@ VLMusicElement sSemi2Accidental[12][12] = {
|
|||
[[self editTarget] highlightCursor];
|
||||
}
|
||||
|
||||
- (void)setKey:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(id)sender
|
||||
{
|
||||
if (returnCode == NSAlertAlternateReturn)
|
||||
return;
|
||||
|
||||
int key = [[sender selectedItem] tag];
|
||||
[[self document] setKey:key transpose:returnCode==NSAlertDefaultReturn];
|
||||
fNeedsRecalc = kRecalc;
|
||||
[self setNeedsDisplay: YES];
|
||||
}
|
||||
|
||||
- (IBAction) setKey:(id)sender
|
||||
{
|
||||
if ([self song]->IsNonEmpty())
|
||||
|
@ -538,17 +550,6 @@ VLMusicElement sSemi2Accidental[12][12] = {
|
|||
[self setKey:nil returnCode:NSAlertOtherReturn contextInfo:sender];
|
||||
}
|
||||
|
||||
- (void)setKey:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(id)sender
|
||||
{
|
||||
if (returnCode == NSAlertAlternateReturn)
|
||||
return;
|
||||
|
||||
int key = [[sender selectedItem] tag];
|
||||
[[self document] setKey:key transpose:returnCode==NSAlertDefaultReturn];
|
||||
fNeedsRecalc = kRecalc;
|
||||
[self setNeedsDisplay: YES];
|
||||
}
|
||||
|
||||
- (IBAction) setTime:(id)sender
|
||||
{
|
||||
int time = [[sender selectedItem] tag];
|
||||
|
@ -892,6 +893,7 @@ static int8_t sSharpAcc[] = {
|
|||
{
|
||||
[[self document] addObserver:self forKeyPath:@"song" options:0 context:nil];
|
||||
[[self document] addObserver:self forKeyPath:@"songKey" options:0 context:nil];
|
||||
[self setGroove:[[self document] valueForKey:@"songGroove"]];
|
||||
}
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)o change:(NSDictionary *)c context:(id)ctx
|
||||
|
@ -906,4 +908,28 @@ static int8_t sSharpAcc[] = {
|
|||
[NSApp endSheet:[sender window] returnCode:[sender tag]];
|
||||
}
|
||||
|
||||
- (IBAction)selectGroove:(id)sender
|
||||
{
|
||||
if ([sender tag])
|
||||
[[VLGrooveController alloc] initWithSheetView:self];
|
||||
else
|
||||
[self setGroove:[sender title]];
|
||||
}
|
||||
|
||||
- (void)setGroove:(NSString *)groove
|
||||
{
|
||||
[[self document] setValue:groove forKey:@"songGroove"];
|
||||
int removeIndex = [fGrooveMenu indexOfItemWithTitle:groove];
|
||||
if (removeIndex < 0 && [fGrooveMenu numberOfItems] > 11)
|
||||
removeIndex = 11;
|
||||
if (removeIndex >= 0)
|
||||
[fGrooveMenu removeItemAtIndex:removeIndex];
|
||||
[[[fGrooveMenu menu] insertItemWithTitle:groove action:@selector(selectGroove:)
|
||||
keyEquivalent:@"" atIndex:2] setTarget:self];
|
||||
[fGrooveMenu selectItemAtIndex:2];
|
||||
NSArray * grooves = [fGrooveMenu itemTitles];
|
||||
grooves = [grooves subarrayWithRange:NSMakeRange(2, [grooves count]-2)];
|
||||
[[NSUserDefaults standardUserDefaults] setObject:grooves forKey:@"VLGrooves"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -260,6 +260,14 @@ const char * sSteps = "C DbD EbE F GbG AbA BbB ";
|
|||
objectForInfoDictionaryKey:@"CFBundleVersion"]]]];
|
||||
[identification addChild:encoding];
|
||||
|
||||
NSXMLElement * misc = [NSXMLNode elementWithName:@"miscellaneous"];
|
||||
NSXMLElement * groove = [NSXMLNode elementWithName:@"miscellaneous-field"
|
||||
stringValue:songGroove];
|
||||
[groove addAttribute: [NSXMLNode attributeWithName:@"name"
|
||||
stringValue:@"VocalEasel-groove"]];
|
||||
[misc addChild: groove];
|
||||
[identification addChild: misc];
|
||||
|
||||
return identification;
|
||||
}
|
||||
|
||||
|
@ -674,6 +682,12 @@ int8_t sStepToPitch[] = {
|
|||
error: outError] retain];
|
||||
songLyricist= [[doc stringForXPath:@".//creator[@type=\"poet\"]"
|
||||
error: outError] retain];
|
||||
id groove = [doc stringForXPath:@".//miscellaneous-field[@name=\"VocalEasel-groove\"]"
|
||||
error: outError];
|
||||
if (groove) {
|
||||
[songGroove autorelease];
|
||||
songGroove = [groove retain];
|
||||
}
|
||||
|
||||
NSXMLElement * chords = [doc nodeForXPath:@".//part[@id=\"HARM\"]"
|
||||
error:outError];
|
||||
|
|
83
Tools/rebuildGrooves
Executable file
83
Tools/rebuildGrooves
Executable file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/ruby
|
||||
#
|
||||
# rebuildGrooves
|
||||
# Vocalese
|
||||
#
|
||||
# Created by Matthias Neeracher on 2/5/07.
|
||||
# Copyright (c) 2007 __MyCompanyName__. All rights reserved.
|
||||
#
|
||||
|
||||
require 'find'
|
||||
|
||||
grooves = {}
|
||||
Find.find(ARGV[0]) do |f|
|
||||
if File.directory?(f)
|
||||
Find.prune if File.exist?("f/MMAIGNORE")
|
||||
elsif f =~ %r|.*/(\S+?).mma$|
|
||||
style = $1
|
||||
g = {}
|
||||
doc = ""
|
||||
groove= ""
|
||||
File.open(f) do |file|
|
||||
inDoc = false
|
||||
inCont= false
|
||||
file.each do |line|
|
||||
if line =~ /^\s*Begin\s+Doc\s*$/
|
||||
inDoc = true
|
||||
elsif inDoc
|
||||
if line =~ /^\s*End\s*$/
|
||||
inDoc = false
|
||||
else
|
||||
doc = doc+" "+line.strip
|
||||
end
|
||||
elsif line =~ /^\s*DefGroove\s+(\S+)\s+(.+?)\s*$/
|
||||
groove = $1
|
||||
gdoc = $2
|
||||
if gdoc =~ /(.*?)\s+\\\s*$/
|
||||
gdoc = $1
|
||||
inCont = true
|
||||
end
|
||||
g[groove] = gdoc
|
||||
elsif inCont
|
||||
if line =~ /^\s*(.*?)\s*(\\)?\s*$/
|
||||
g[groove] = g[groove] + " " + $1
|
||||
inCont = $2 != nil
|
||||
else
|
||||
inCont = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
unless g.empty?
|
||||
g[".DESC"] = doc.lstrip
|
||||
grooves[style] = g
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
OUT = File.new(ARGV[1], "w")
|
||||
|
||||
OUT.print <<'END_HEADER'
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
END_HEADER
|
||||
|
||||
def xmlesc(s)
|
||||
s.gsub('&', '&').gsub('<', '<').gsub('>', '&rt;')
|
||||
end
|
||||
|
||||
grooves.each do |style,grooves|
|
||||
OUT.puts "\t<key>#{xmlesc(style)}</key>"
|
||||
OUT.puts "\t<dict>"
|
||||
grooves.each do |name,desc|
|
||||
OUT.puts "\t\t<key>#{xmlesc(name)}</key>"
|
||||
OUT.puts "\t\t<string>#{xmlesc(desc)}</string>"
|
||||
end
|
||||
OUT.puts "\t</dict>"
|
||||
end
|
||||
|
||||
OUT.puts "</dict>"
|
||||
OUT.puts "</plist>"
|
||||
|
|
@ -46,6 +46,9 @@
|
|||
959408AE096922F7007CCCF8 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; };
|
||||
959420EB0B44E769006BC62C /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 954DD4DA0B44E6000056C504 /* MainMenu.nib */; };
|
||||
959420EC0B44E77A006BC62C /* VLDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = 954DD4DF0B44E61E0056C504 /* VLDocument.nib */; };
|
||||
9599ED960B73185800A6A2F7 /* VLGroove.nib in Resources */ = {isa = PBXBuildFile; fileRef = 9599ED940B73185800A6A2F7 /* VLGroove.nib */; };
|
||||
9599ED9C0B731CC500A6A2F7 /* VLGrooveController.h in Copy MMA Library */ = {isa = PBXBuildFile; fileRef = 9599ED9A0B731CC500A6A2F7 /* VLGrooveController.h */; };
|
||||
9599ED9D0B731CC500A6A2F7 /* VLGrooveController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9599ED9B0B731CC500A6A2F7 /* VLGrooveController.mm */; };
|
||||
95A1C37C0AF1D4370076597D /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95A1C37B0AF1D4370076597D /* Quartz.framework */; };
|
||||
95A1C3860AF2ACE20076597D /* VLSheetWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95A1C3850AF2ACE20076597D /* VLSheetWindow.mm */; };
|
||||
95B3E1A70960E58B000E9C0D /* Music in Resources */ = {isa = PBXBuildFile; fileRef = 95B3E1980960E58B000E9C0D /* Music */; };
|
||||
|
@ -57,6 +60,7 @@
|
|||
95C461FE0B04432700649F92 /* MMA in Copy MMA Library */ = {isa = PBXBuildFile; fileRef = 95C461DD0B04430F00649F92 /* MMA */; };
|
||||
95C462000B04472E00649F92 /* mmaWrapper in Copy Tools */ = {isa = PBXBuildFile; fileRef = 95C461FF0B04472900649F92 /* mmaWrapper */; };
|
||||
95C462830B045CB700649F92 /* lilyWrapper in Copy Tools */ = {isa = PBXBuildFile; fileRef = 95C4627A0B045C8E00649F92 /* lilyWrapper */; };
|
||||
95D0C2FC0B785D020061080E /* rebuildGrooves in Copy Tools */ = {isa = PBXBuildFile; fileRef = 95D0C2FB0B785D020061080E /* rebuildGrooves */; };
|
||||
95E04DA70AEB486E006F30A0 /* TVLLilypond.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95E04DA60AEB486E006F30A0 /* TVLLilypond.mm */; };
|
||||
95E04DA80AEB4878006F30A0 /* VLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */; };
|
||||
95E04DA90AEB487A006F30A0 /* VLLilypondDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 953722660AE9F0E100B6E483 /* VLLilypondDocument.mm */; };
|
||||
|
@ -93,6 +97,7 @@
|
|||
95C461FE0B04432700649F92 /* MMA in Copy MMA Library */,
|
||||
95C461C40B043E8900649F92 /* includes in Copy MMA Library */,
|
||||
95C461C50B043E8900649F92 /* lib in Copy MMA Library */,
|
||||
9599ED9C0B731CC500A6A2F7 /* VLGrooveController.h in Copy MMA Library */,
|
||||
);
|
||||
name = "Copy MMA Library";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -103,6 +108,7 @@
|
|||
dstPath = bin;
|
||||
dstSubfolderSpec = 7;
|
||||
files = (
|
||||
95D0C2FC0B785D020061080E /* rebuildGrooves in Copy Tools */,
|
||||
95C462830B045CB700649F92 /* lilyWrapper in Copy Tools */,
|
||||
95C462000B04472E00649F92 /* mmaWrapper in Copy Tools */,
|
||||
95C461D80B0440A300649F92 /* mma.py in Copy Tools */,
|
||||
|
@ -167,6 +173,9 @@
|
|||
9593E4E70AE0ED1F00035816 /* vocalese.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = vocalese.icns; path = Resources/vocalese.icns; sourceTree = "<group>"; };
|
||||
959408A0096922CA007CCCF8 /* TVLEdit */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLEdit; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
959408AC096922EA007CCCF8 /* TVLEdit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TVLEdit.cpp; path = Tests/TVLEdit.cpp; sourceTree = "<group>"; };
|
||||
9599ED950B73185800A6A2F7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/VLGroove.nib; sourceTree = "<group>"; };
|
||||
9599ED9A0B731CC500A6A2F7 /* VLGrooveController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLGrooveController.h; path = Sources/VLGrooveController.h; sourceTree = "<group>"; };
|
||||
9599ED9B0B731CC500A6A2F7 /* VLGrooveController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLGrooveController.mm; path = Sources/VLGrooveController.mm; sourceTree = "<group>"; };
|
||||
95A1C37B0AF1D4370076597D /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
|
||||
95A1C3840AF2ACE20076597D /* VLSheetWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSheetWindow.h; path = Sources/VLSheetWindow.h; sourceTree = "<group>"; };
|
||||
95A1C3850AF2ACE20076597D /* VLSheetWindow.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetWindow.mm; path = Sources/VLSheetWindow.mm; sourceTree = "<group>"; };
|
||||
|
@ -182,6 +191,7 @@
|
|||
95C461DD0B04430F00649F92 /* MMA */ = {isa = PBXFileReference; lastKnownFileType = folder; name = MMA; path = mma/MMA; sourceTree = "<group>"; };
|
||||
95C461FF0B04472900649F92 /* mmaWrapper */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; name = mmaWrapper; path = Tools/mmaWrapper; sourceTree = "<group>"; };
|
||||
95C4627A0B045C8E00649F92 /* lilyWrapper */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; name = lilyWrapper; path = Tools/lilyWrapper; sourceTree = "<group>"; };
|
||||
95D0C2FB0B785D020061080E /* rebuildGrooves */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; fileEncoding = 4; name = rebuildGrooves; path = Tools/rebuildGrooves; sourceTree = "<group>"; };
|
||||
95E04DA00AEB4837006F30A0 /* TVLLilypond */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLLilypond; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95E04DA60AEB486E006F30A0 /* TVLLilypond.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = TVLLilypond.mm; path = Tests/TVLLilypond.mm; sourceTree = "<group>"; };
|
||||
95E04DCA0AEB4D9B006F30A0 /* Templates */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Templates; path = Resources/Templates; sourceTree = "<group>"; };
|
||||
|
@ -352,6 +362,8 @@
|
|||
955CBA4D0B2366DD001CF4A1 /* VLKeyValueUndo.mm */,
|
||||
954DD4B70B444B220056C504 /* VLSheetViewSelection.h */,
|
||||
954DD4E50B44E67F0056C504 /* VLSheetViewSelection.mm */,
|
||||
9599ED9A0B731CC500A6A2F7 /* VLGrooveController.h */,
|
||||
9599ED9B0B731CC500A6A2F7 /* VLGrooveController.mm */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
|
@ -388,6 +400,7 @@
|
|||
2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */,
|
||||
8D15AC360486D014006FF6A4 /* Info.plist */,
|
||||
089C165FFE840EACC02AAC07 /* InfoPlist.strings */,
|
||||
9599ED940B73185800A6A2F7 /* VLGroove.nib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
|
@ -435,6 +448,7 @@
|
|||
95C4627A0B045C8E00649F92 /* lilyWrapper */,
|
||||
95C461FF0B04472900649F92 /* mmaWrapper */,
|
||||
95C461D50B04406300649F92 /* mma.py */,
|
||||
95D0C2FB0B785D020061080E /* rebuildGrooves */,
|
||||
);
|
||||
name = Tools;
|
||||
sourceTree = "<group>";
|
||||
|
@ -583,6 +597,7 @@
|
|||
959420EB0B44E769006BC62C /* MainMenu.nib in Resources */,
|
||||
959420EC0B44E77A006BC62C /* VLDocument.nib in Resources */,
|
||||
950795E10B4A34D9008911A6 /* stop.tiff in Resources */,
|
||||
9599ED960B73185800A6A2F7 /* VLGroove.nib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -600,7 +615,7 @@
|
|||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "$BUILT_PRODUCTS_DIR/VocalEasel.app/Contents/Resources/bin/mmaWrapper -g\n";
|
||||
shellScript = "$BUILT_PRODUCTS_DIR/VocalEasel.app/Contents/Resources/bin/mmaWrapper -g\n$SRCROOT/Tools/rebuildGrooves $BUILT_PRODUCTS_DIR/VocalEasel.app/Contents/Resources/share/mma/lib $BUILT_PRODUCTS_DIR/VocalEasel.app/Contents/Resources/Grooves.plist\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
|
@ -634,6 +649,7 @@
|
|||
95E299C00B2006F5001977D2 /* VLSheetViewLyrics.mm in Sources */,
|
||||
955CBA4F0B2366DD001CF4A1 /* VLKeyValueUndo.mm in Sources */,
|
||||
954DD4E60B44E67F0056C504 /* VLSheetViewSelection.mm in Sources */,
|
||||
9599ED9D0B731CC500A6A2F7 /* VLGrooveController.mm in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -700,6 +716,14 @@
|
|||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9599ED940B73185800A6A2F7 /* VLGroove.nib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
9599ED950B73185800A6A2F7 /* English */,
|
||||
);
|
||||
name = VLGroove.nib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
|
|
Loading…
Reference in New Issue
Block a user