From 4f92948d6d707938ca3b90504a73e908b945a94c Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Sat, 28 Oct 2006 09:18:55 +0000 Subject: [PATCH] Implement toolbars, typesetting, titles --- English.lproj/MainMenu.nib/info.nib | 6 +- English.lproj/MainMenu.nib/keyedobjects.nib | Bin 20957 -> 21601 bytes English.lproj/VLDocument.nib/classes.nib | 25 ++- English.lproj/VLDocument.nib/info.nib | 7 +- English.lproj/VLDocument.nib/keyedobjects.nib | Bin 14718 -> 18426 bytes Resources/VLLogWindow.nib/info.nib | 4 +- Resources/VLLogWindow.nib/keyedobjects.nib | Bin 4784 -> 4778 bytes Resources/VLPDFWindow.nib/classes.nib | 3 +- Resources/VLPDFWindow.nib/info.nib | 7 +- Resources/VLPDFWindow.nib/keyedobjects.nib | Bin 5468 -> 5581 bytes Resources/lilyWrapper | 8 + Sources/VLAppController.mm | 3 +- Sources/VLDocument.h | 36 ++-- Sources/VLDocument.mm | 177 +++++++++++++----- Sources/VLModel.h | 4 +- Sources/VLPDFWindow.mm | 6 + Sources/VLSheetView.h | 5 + Sources/VLSheetView.mm | 22 ++- Sources/VLSheetViewChords.h | 3 +- Sources/VLSheetViewChords.mm | 3 +- Sources/VLSheetViewNotes.mm | 3 - Sources/VLSheetWindow.h | 35 ++++ Sources/VLSheetWindow.mm | 125 +++++++++++++ Sources/VLXMLDocument.mm | 47 ++++- Vocalese.xcodeproj/project.pbxproj | 14 ++ 25 files changed, 445 insertions(+), 98 deletions(-) create mode 100755 Resources/lilyWrapper create mode 100644 Sources/VLSheetWindow.h create mode 100644 Sources/VLSheetWindow.mm diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index 4d563ef..f1c65c1 100644 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -7,16 +7,16 @@ IBEditorPositions 29 - 150 476 301 44 0 0 1024 746 + 214 402 301 44 0 0 1024 746 IBFramework Version - 452.0 + 453.0 IBOpenObjects 29 217 IBSystem Version - 9A283 + 9A294 diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index 8a1fe5faa985b9a9f2b489e648c1a9f799ce7373..70a5b891d465f641255baa450db26668a950d055 100644 GIT binary patch literal 21601 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 LxqrR?7PtH#U69xn literal 20957 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%0DvAK)&c(U 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 RC&cqxsq_5y{w$dI{{ZCv?T7#X diff --git a/English.lproj/VLDocument.nib/classes.nib b/English.lproj/VLDocument.nib/classes.nib index 28b8ef2..5bb4969 100644 --- a/English.lproj/VLDocument.nib/classes.nib +++ b/English.lproj/VLDocument.nib/classes.nib @@ -1,14 +1,37 @@ { IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {engrave = id; showLog = id; showOutput = id; }; + CLASS = FirstResponder; + LANGUAGE = ObjC; + SUPERCLASS = NSObject; + }, {CLASS = VLDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, {CLASS = VLEditable; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + CLASS = VLPDFWindow; + LANGUAGE = ObjC; + OUTLETS = { + nextPageItem = id; + pdfView = id; + prevPageItem = id; + zoomInItem = id; + zoomOutItem = id; + }; + SUPERCLASS = NSWindowController; + }, { ACTIONS = {hideFieldEditor = id; setDivisions = id; setKey = id; setTime = id; }; CLASS = VLSheetView; LANGUAGE = ObjC; OUTLETS = {fFieldEditor = id; }; SUPERCLASS = NSView; + }, + { + CLASS = VLSheetWindow; + LANGUAGE = ObjC; + OUTLETS = {logToolItem = id; outputToolItem = id; runToolItem = id; }; + SUPERCLASS = NSWindowController; } ); IBVersion = 1; diff --git a/English.lproj/VLDocument.nib/info.nib b/English.lproj/VLDocument.nib/info.nib index fa0cb16..9ce18dc 100644 --- a/English.lproj/VLDocument.nib/info.nib +++ b/English.lproj/VLDocument.nib/info.nib @@ -3,14 +3,15 @@ IBDocumentLocation - 36 103 356 240 0 0 1024 746 + 31 27 356 240 0 0 1024 746 IBFramework Version - 452.0 + 453.0 IBOpenObjects + 144 5 IBSystem Version - 9A283 + 9A294 diff --git a/English.lproj/VLDocument.nib/keyedobjects.nib b/English.lproj/VLDocument.nib/keyedobjects.nib index 4191aa7bb3fbf335a83da21dfd2b0c743a053913..bc635eb2ea367b2b984a93ca7132c9c6f9eecdac 100644 GIT binary patch literal 18426 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 ZT=-h}750kYAH#(IDl)=<+pof<{{uCi{I&o9 diff --git a/Resources/VLLogWindow.nib/info.nib b/Resources/VLLogWindow.nib/info.nib index b61433b..3d79bd0 100644 --- a/Resources/VLLogWindow.nib/info.nib +++ b/Resources/VLLogWindow.nib/info.nib @@ -5,12 +5,12 @@ IBDocumentLocation 210 57 356 240 0 0 1024 746 IBFramework Version - 452.0 + 453.0 IBOpenObjects 5 IBSystem Version - 9A283 + 9A294 diff --git a/Resources/VLLogWindow.nib/keyedobjects.nib b/Resources/VLLogWindow.nib/keyedobjects.nib index 7f1eb1cf0434806bc74cfbca5d728ec5f82588c0..2a25b4233feb8e029ef18b6b60a8a1ed234077bb 100644 GIT binary patch delta 2874 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 delta 2869 zcmY*bdtB7j5}#pz@5f;md?A^OCPEsa@(2<`6eLp=0TEFVVWZ7;7nb#{?RdR)udjS8 zR_4`YQ7kL-L1~%xsm!dr=2a;xtDD)w9%f}`snywC>2`mA>^Z+PGvE2noSFIUwmv)h ztm>X(I0^5-Dfkl3 z!}o9zPQwMbh60Kxp^6NnF$TNyvo?&!p4ba}<4t%o_QO;hfP*jthhiQM!x1=^uf;eH z%WynSz=~X)h?O`6r(qp>upWIl7w6$3T#QR`H9i76p&ZxYqqqS#;Wli;XYo1QgL|PB zpT`&RC46Of4{Sgj8CV(BoOx$6_f z@`lqeV#m248(c7h;+w%u(I0TtdVbcxmA%jiK9~u!U^b^c7v{lySO5#*KK@3q2o?oq ziB***4WT@13|VamG?YxrCL7s0aPO!17OqM#m!D?SkPv=|%2HSs_OKjQa38b44J%<4 ztcEoZfF@WA5Al<=fmA7}IGVC3oieNf#n@D!Sn5g96x)HnKE!)1#YS*9!eg*0%sU^N zIc|`<-V9ry6}H0T@C0mwCpqgUq}+5HrBP?AL^s;h80tg=X%OcJ74y?F2KBcONL$zr zJ2=msunTrW8$8Py?SZ|48|8rsJt($!?t%*tdZHwz6I@)yMX$iCkVtXVjUdE4bUCk+J~nc1Z@|9I9O6xQE6^@yb#uYdP*7W_b42_f zINrjoP6QH_o|)~iJIErLMLcR0orXXB_ ztJH^*LutFfo&N^E!`Fzsm7>s6c^$Z@dWK^%-&gypU7oto8`&v|`ch)xkeckjP8k)l z-<6t@5qYxU{~&qft!SWy8z#`rlvri8H9B058lR)K)G@~w<{ypzjj9us!N(o{&%!;F1DV1|AbJse&E~ncOP6Xb-^Vo(rmKBwZ z8<9u$f>e8|{d(%qjtN0b2yE5TSs&Qh3Og|o`(hF%2fosV`TOH7n1Z)L8}IExkFTWO z;|tx!OmCydTROMiLAOz6`TVs0_FK{yMo15Yr9s|8kt)D6Oy7*@AvnmK$PHc2`cT)O zf?CYvfjGd6w}B6{cuTo)Fy_EQ9Kv_Ge0-Evd+T~Re0(=F9DB%orgwa`Yo>#DSv2L) z?KGI814s2VV>sq-!F((T^JYd|P6vELhXX9U?qU@0nT0qy1=#$2gmM!l=r=ZGYs3a7T< zRICoXmoxo#B69kS&iS$r79&Cf$9(Ol*a8wR)#n{X{Ygb!00ji+*&FsZ=l za`bJqkD2XuczI)#)ObBESLlidc3}RCiZ^xaAN$KbNX1+6?r;tq+@qWGF5>>8c#>i{ zE6zT`_bDna--=J;c3$8+a3}7<-87k|@Jg?usZ>qVtcF#zYF5P>2?JcXkK+GydEhTD zUk>m2z`$4WU=R-m-e%n_ujApsS8SO-&5~iMv-m8FEGsSREL$yYmIIb!ma~@gmR~Jb zEx!pML3c6ql(Sl8g6*>#4LZ*-_j1)!*Wx^D}A$`oiA%&~ z;u^6@d`Nsmd`&zmo)XW9--zeM3*ryrMe&k&S-c`%6MvUbvPg!+B%2f~E zTGbe}s~V@qt9HNIOT9_WQuEakwM;EnE7VGLno8;lb)~vq-J$MM+tlaOz3LIQU438u zLcOS7Qm?4j)ZaBhlQc!^q$Oy5wPY<-%hHBuW!f}ty5`dsX)ClQZN0WtJD|O#wQFaz zv)bp{dF^NIsxInGkJGdDVfrY&T=!S#mHK48O0U*ybeH~jeYO6mzD3`mzo37rf2)6| zf3N?j|D^w{|6)WLJ&Yt{fRSyCFs2xFhTC|+SZ!=K_82c3ZyTqKkBx7PAB-!;H8aW- zOv&tO_Ayh;4D&WK+Z=2TG4stLv&?jv^UdYvgXSu8joD;A;y0Vk7V{}{ySc;MWwx37 z%~#B~%zvBjn5WG5&C}*b<`?EU^9S>ydC9zN{>m&&WQ`pe0m9iS>xYDUT4QxJ3GtHvGeR|_%8)SMMYM8BeHh5?w diff --git a/Resources/VLPDFWindow.nib/classes.nib b/Resources/VLPDFWindow.nib/classes.nib index 905a33c..3f0835d 100644 --- a/Resources/VLPDFWindow.nib/classes.nib +++ b/Resources/VLPDFWindow.nib/classes.nib @@ -19,12 +19,13 @@ SUPERCLASS = NSWindowController; }, {CLASS = LilypondPDFView; LANGUAGE = ObjC; SUPERCLASS = PDFView; }, + {CLASS = VLPDFView; LANGUAGE = ObjC; SUPERCLASS = PDFView; }, { CLASS = VLPDFWindow; LANGUAGE = ObjC; OUTLETS = { - PDFView = id; nextPageItem = id; + pdfView = id; prevPageItem = id; zoomInItem = id; zoomOutItem = id; diff --git a/Resources/VLPDFWindow.nib/info.nib b/Resources/VLPDFWindow.nib/info.nib index 6d5ff79..d614701 100644 --- a/Resources/VLPDFWindow.nib/info.nib +++ b/Resources/VLPDFWindow.nib/info.nib @@ -3,14 +3,15 @@ IBDocumentLocation - 122 105 356 240 0 0 1024 746 + 57 42 356 240 0 0 1024 746 IBFramework Version - 452.0 + 453.0 IBOpenObjects 11 + 5 IBSystem Version - 9A283 + 9A294 diff --git a/Resources/VLPDFWindow.nib/keyedobjects.nib b/Resources/VLPDFWindow.nib/keyedobjects.nib index 0a2a52897b7bd3759eed815720b14e0fb6d257ea..34d87eef6bd39594ceb7df308e26e73433ea6fd9 100644 GIT binary patch delta 3738 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 diff --git a/Resources/lilyWrapper b/Resources/lilyWrapper new file mode 100755 index 0000000..8284470 --- /dev/null +++ b/Resources/lilyWrapper @@ -0,0 +1,8 @@ +#!/bin/bash -l + +export PATH=`dirname $1`:$PATH +echo PATH=$PATH +$* + + + diff --git a/Sources/VLAppController.mm b/Sources/VLAppController.mm index 238a44a..750299e 100644 --- a/Sources/VLAppController.mm +++ b/Sources/VLAppController.mm @@ -59,6 +59,7 @@ toolPath = nil; appPath = nil; } + return self; } - (NSString*)getLineFromCommand:(NSString*)command @@ -82,7 +83,7 @@ { NSString * cmd = [NSString stringWithFormat: - @"%@ --version | awk '{ print $3 }'", + @"%@ --version | head -1 | awk '{ print $3 }'", path]; return [self getLineFromCommand:cmd]; } diff --git a/Sources/VLDocument.h b/Sources/VLDocument.h index 62049d4..19d6197 100644 --- a/Sources/VLDocument.h +++ b/Sources/VLDocument.h @@ -9,28 +9,22 @@ #import "VLModel.h" #import -@interface VLEditable : NSObject -{ -} - -- (NSString *) stringValue; -- (void) setStringValue:(NSString*)val; -- (BOOL) validValue:(NSString*)val; -- (void) moveToNext; -- (void) moveToPrev; -- (void) highlightCursor; - -@end +@class VLSheetWindow; +@class VLPDFWindow; +@class VLLogWindow; @interface VLDocument : NSDocument { - VLSong * song; - VLEditable *editTarget; - NSString * lilypondTemplate; - NSString * songTitle; - NSString * songLyricist; - NSString * songComposer; - NSString * songArranger; + VLSong * song; + NSString * lilypondTemplate; + NSString * songTitle; + NSString * songLyricist; + NSString * songComposer; + NSString * songArranger; + + VLSheetWindow * sheetWin; + VLLogWindow * logWin; + VLPDFWindow * pdfWin; } - (VLSong *) song; @@ -42,4 +36,8 @@ - (void) setTimeNum:(int)num denom:(int)denom; - (void) setDivisions:(int)divisions; +- (IBAction) engrave:(id)sender; +- (IBAction) showOutput:(id)sender; +- (IBAction) showLog:(id)sender; + @end diff --git a/Sources/VLDocument.mm b/Sources/VLDocument.mm index 1a55fa2..89d805c 100644 --- a/Sources/VLDocument.mm +++ b/Sources/VLDocument.mm @@ -1,5 +1,5 @@ // -// MyDocument.m +// VLDocument.mm // Vocalese // // Created by Matthias Neeracher on 12/17/05. @@ -9,36 +9,9 @@ #import "VLDocument.h" #import "VLXMLDocument.h" #import "VLLilypondDocument.h" - -@implementation VLEditable - -- (NSString *) stringValue -{ - return @""; -} - -- (void) setStringValue:(NSString*)val -{ -} - -- (BOOL) validValue:(NSString*)val -{ - return YES; -} - -- (void) moveToNext -{ -} - -- (void) moveToPrev -{ -} - -- (void) highlightCursor -{ -} - -@end +#import "VLPDFWindow.h" +#import "VLLogWindow.h" +#import "VLSheetWindow.h" @implementation VLDocument @@ -46,27 +19,71 @@ { self = [super init]; if (self) { - - // Add your subclass-specific initialization here. - // If an error occurs here, send a [self release] message and return nil. - song = new VLSong; - editTarget = nil; lilypondTemplate = @"default"; songTitle = @""; songLyricist = @""; songComposer = @""; songArranger = @""; + sheetWin = nil; + pdfWin = nil; + logWin = nil; } return self; } +- (void) close +{ + [logWin close]; + [pdfWin close]; + + [super close]; +} + - (void) dealloc { delete song; + [super dealloc]; } +- (VLLogWindow *)logWin +{ + if (!logWin) { + logWin = [[VLLogWindow alloc] initWithWindowNibName: @"VLLogWindow"]; + [self addWindowController: logWin]; + [logWin release]; + } + return logWin; +} + +- (VLPDFWindow *)pdfWin +{ + if (!pdfWin) { + pdfWin = [[VLPDFWindow alloc] initWithWindowNibName: @"VLPDFWindow"]; + [self addWindowController: pdfWin]; + [pdfWin release]; + } + return pdfWin; +} + +- (void)makeWindowControllers +{ + sheetWin = [[VLSheetWindow alloc] initWithWindowNibName: @"VLDocument"]; + [self addWindowController: sheetWin]; + [sheetWin setShouldCloseDocument:YES]; + [sheetWin release]; +} + +- (void)showWindows +{ + [sheetWin showWindow: self]; + if ([pdfWin isWindowLoaded]) + [pdfWin showWindow: self]; + if ([logWin isWindowLoaded]) + [logWin showWindow: self]; +} + - (VLSong *) song { return song; @@ -124,17 +141,6 @@ [self updateChangeCount:NSChangeDone]; } -- (NSString *)windowNibName -{ - return @"VLDocument"; -} - -- (void)windowControllerDidLoadNib:(NSWindowController *) controller -{ - [super windowControllerDidLoadNib:controller]; - [controller setShouldCloseDocument:YES]; -} - - (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError { if ([typeName isEqual:@"VLNativeType"]) { @@ -163,4 +169,81 @@ } } + +- (IBAction) engrave:(id)sender +{ + NSTask * lilypondTask = [[NSTask alloc] init]; + NSString * path = [[self fileURL] path]; + NSString * root = + [[path lastPathComponent] stringByDeletingPathExtension]; + NSString * tmpDir = @"/var/tmp"; + NSBundle * mainBundle = [NSBundle mainBundle]; + + // + // Convert to Lilypond format + // + NSError * err; + [self writeToURL: + [NSURL fileURLWithPath: + [[tmpDir stringByAppendingPathComponent:root] + stringByAppendingPathExtension:@"ly"]] + ofType:@"VLLilypondType" error:&err]; + NSPipe * pipe = [NSPipe pipe]; + NSString * tool = + [[NSUserDefaults standardUserDefaults] + stringForKey:@"VLLilypondPath"]; + NSArray * arguments = [NSArray arrayWithObjects:tool, root, nil]; + + [[NSNotificationCenter defaultCenter] + addObserver:self selector:@selector(engraveDone:) + name:NSTaskDidTerminateNotification object:lilypondTask]; + + [lilypondTask setCurrentDirectoryPath:tmpDir]; + [lilypondTask setStandardOutput: pipe]; + [lilypondTask setStandardError: pipe]; + [lilypondTask setArguments: arguments]; + [lilypondTask setLaunchPath: + [mainBundle pathForResource:@"lilyWrapper" ofType:@""]]; + [lilypondTask launch]; + + [[self logWin] showWindow: self]; + + [NSThread detachNewThreadSelector:@selector(logFromFileHandle:) toTarget:logWin + withObject:[pipe fileHandleForReading]]; +} + +- (void)engraveDone:(NSNotification *)notification { + [[NSNotificationCenter defaultCenter] removeObserver: self]; + int status = [[notification object] terminationStatus]; + if (!status) { + NSFileManager * fileManager = [NSFileManager defaultManager]; + NSString * path = [[self fileURL] path]; + NSString * root = + [[path lastPathComponent] stringByDeletingPathExtension]; + NSString * tmpDir = @"/var/tmp"; + NSString * dstDir = [path stringByDeletingLastPathComponent]; + NSString * pdf = + [root stringByAppendingPathExtension:@"pdf"]; + [fileManager + removeFileAtPath:[dstDir stringByAppendingPathComponent:pdf] + handler:nil]; + [fileManager + movePath:[tmpDir stringByAppendingPathComponent:pdf] + toPath:[dstDir stringByAppendingPathComponent:pdf] + handler:nil]; + [[self pdfWin] showWindow: self]; + [pdfWin reloadPDF]; + } +} + +- (IBAction) showOutput:(id)sender +{ + [[self pdfWin] showWindow:sender]; +} + +- (IBAction) showLog:(id)sender +{ + [[self logWin] showWindow:sender]; +} + @end diff --git a/Sources/VLModel.h b/Sources/VLModel.h index 14cdd35..f9a15f8 100644 --- a/Sources/VLModel.h +++ b/Sources/VLModel.h @@ -14,8 +14,8 @@ const int kVLSharpChar = 0x266F; const int kVLFlatChar = 0x266D; -const char *kVLSharpStr = "\xE2\x99\xAF"; -const char *kVLFlatStr = "\xE2\x99\xAD"; +#define kVLSharpStr "\xE2\x99\xAF" +#define kVLFlatStr "\xE2\x99\xAD" struct VLFract { uint16_t fNum; // Numerator diff --git a/Sources/VLPDFWindow.mm b/Sources/VLPDFWindow.mm index 14499c8..0402545 100644 --- a/Sources/VLPDFWindow.mm +++ b/Sources/VLPDFWindow.mm @@ -28,6 +28,11 @@ static NSString* sZoomOutToolbarItemIdentifier = @"Zoom Out Toolbar Item Identif [self reloadPDF]; } +- (IBAction)showWindow:(id)sender +{ + [super showWindow:sender]; +} + - (void)reloadPDF { if (pdfView) { @@ -37,6 +42,7 @@ static NSString* sZoomOutToolbarItemIdentifier = @"Zoom Out Toolbar Item Identif NSURL * pdfURL = [NSURL fileURLWithPath: outString]; PDFDocument * pdfDoc = [[[PDFDocument alloc] initWithURL: pdfURL] autorelease]; [(PDFView *)pdfView setDocument: pdfDoc]; + [pdfView setNeedsDisplay:YES]; } } diff --git a/Sources/VLSheetView.h b/Sources/VLSheetView.h index bd7c7dd..d7a102b 100644 --- a/Sources/VLSheetView.h +++ b/Sources/VLSheetView.h @@ -52,6 +52,8 @@ enum VLRecalc { kFirstRecalc }; +@class VLEditable; + @interface VLSheetView : NSView { VLRecalc fNeedsRecalc; char fClickMode; @@ -99,6 +101,9 @@ enum VLRecalc { - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor; +- (VLEditable *) editTarget; +- (void) setEditTarget:(VLEditable *)editable; + @end // Local Variables: diff --git a/Sources/VLSheetView.mm b/Sources/VLSheetView.mm index a45ec63..2db8842 100644 --- a/Sources/VLSheetView.mm +++ b/Sources/VLSheetView.mm @@ -102,6 +102,16 @@ static float sFlatPos[] = { return [[[self window] windowController] document]; } +- (VLEditable *) editTarget +{ + return [[[self window] windowController] editTarget]; +} + +- (void) setEditTarget:(VLEditable *)editable +{ + [[[self window] windowController] setEditTarget:editable]; +} + - (VLSong *) song { return [[self document] song]; @@ -210,7 +220,7 @@ VLMusicElement sSemi2Accidental[12][12] = { fCursorTracking = [self addTrackingRect:r owner:self userData:nil assumeInside:within]; [[self window] setAcceptsMouseMovedEvents:within]; - if (within && ![[self document] valueForKey: @"editTarget"]) + if (within && ![self editTarget]) [[self window] makeFirstResponder:self]; } @@ -390,8 +400,7 @@ VLMusicElement sSemi2Accidental[12][12] = { [self drawNotesForSystem:system]; [self drawChordsForSystem:system]; } - VLEditable * editable = [[self document] valueForKey: @"editTarget"]; - [editable highlightCursor]; + [[self editTarget] highlightCursor]; } - (IBAction) setKey:(id)sender @@ -675,13 +684,12 @@ static int8_t sSharpAcc[] = { - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor { - VLEditable * editable = [[self document] valueForKey: @"editTarget"]; - return [editable validValue:[fFieldEditor stringValue]]; + return [[self editTarget] validValue:[fFieldEditor stringValue]]; } - (void)controlTextDidEndEditing:(NSNotification *)note { - VLEditable * editable = [[self document] valueForKey: @"editTarget"]; + VLEditable * editable = [self editTarget]; switch ([[[note userInfo] objectForKey:@"NSTextMovement"] intValue]) { case NSTabTextMovement: [editable moveToNext]; @@ -693,7 +701,7 @@ static int8_t sSharpAcc[] = { [editable autorelease]; editable = nil; } - [[self document] setValue:editable forKey: @"editTarget"]; + [self setEditTarget:editable]; if (editable) [fFieldEditor selectText:self]; [[self window] performSelectorOnMainThread:@selector(makeFirstResponder:) diff --git a/Sources/VLSheetViewChords.h b/Sources/VLSheetViewChords.h index 70d1e53..35efc1a 100644 --- a/Sources/VLSheetViewChords.h +++ b/Sources/VLSheetViewChords.h @@ -6,8 +6,7 @@ // Copyright 2006 __MyCompanyName__. All rights reserved. // -#import "VLDocument.h" - +#import "VLSheetWindow.h" @interface VLChordEditable : VLEditable { VLSheetView * fView; diff --git a/Sources/VLSheetViewChords.mm b/Sources/VLSheetViewChords.mm index f316463..38c2e3e 100644 --- a/Sources/VLSheetViewChords.mm +++ b/Sources/VLSheetViewChords.mm @@ -242,14 +242,13 @@ std::string NormalizeName(NSString* rawName) - (void) editChord { - VLDocument * doc= [self document]; VLEditable * e = [[VLChordEditable alloc] initWithView:self song:[self song] measure:fCursorMeasure at:fCursorAt]; - [doc setValue:e forKey:@"editTarget"]; + [self setEditTarget:e]; [fFieldEditor selectText:self]; } diff --git a/Sources/VLSheetViewNotes.mm b/Sources/VLSheetViewNotes.mm index a92ad0d..7896939 100644 --- a/Sources/VLSheetViewNotes.mm +++ b/Sources/VLSheetViewNotes.mm @@ -247,9 +247,6 @@ { const VLSong * song = [self song]; const VLProperties & prop = song->fProperties.front(); - BOOL swing= !(prop.fDivisions % 3); // In swing mode? - VLFraction swung(3, prop.fDivisions*8, true); // Which notes to swing - VLFraction swingGrid(2*swung); // Alignment of swing notes float kSystemY = [self systemY:system]; for (int m = 0; m + +@interface VLEditable : NSObject +{ +} + +- (NSString *) stringValue; +- (void) setStringValue:(NSString*)val; +- (BOOL) validValue:(NSString*)val; +- (void) moveToNext; +- (void) moveToPrev; +- (void) highlightCursor; + +@end + +@interface VLSheetWindow : NSWindowController { + VLEditable * editTarget; + + IBOutlet id runToolItem; + IBOutlet id outputToolItem; + IBOutlet id logToolItem; +} + +- (VLEditable *) editTarget; +- (void) setEditTarget:(VLEditable *)editable; + +@end diff --git a/Sources/VLSheetWindow.mm b/Sources/VLSheetWindow.mm new file mode 100644 index 0000000..cb31518 --- /dev/null +++ b/Sources/VLSheetWindow.mm @@ -0,0 +1,125 @@ +// +// LilypondInputWin.m +// Lilypond +// +// Created by Matthias Neeracher on 5/29/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import "VLSheetWindow.h" +#import "VLDocument.h" + + +@implementation VLEditable + +- (NSString *) stringValue +{ + return @""; +} + +- (void) setStringValue:(NSString*)val +{ +} + +- (BOOL) validValue:(NSString*)val +{ + return YES; +} + +- (void) moveToNext +{ +} + +- (void) moveToPrev +{ +} + +- (void) highlightCursor +{ +} + +@end + +@implementation VLSheetWindow + +static NSString* sInputToolbarIdentifier = @"Vocalese Sheet Window Toolbar Identifier"; +static NSString* sOutputToolbarItemIdentifier = @"Output Toolbar Item Identifier"; +static NSString* sLogToolbarItemIdentifier = @"Log Toolbar Item Identifier"; +static NSString* sRunToolbarItemIdentifier = @"Run Toolbar Item Identifier"; + +- (id)initWithWindow:(NSWindow *)window +{ + if (self = [super initWithWindow:window]) { + editTarget = nil; + } + return self; +} + +- (VLEditable *)editTarget +{ + return editTarget; +} + +- (void)setEditTarget:(VLEditable *)editable +{ + editTarget = editable; +} + +- (void)windowDidLoad +{ + NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier: sInputToolbarIdentifier] autorelease]; + + [toolbar setAllowsUserCustomization: YES]; + [toolbar setAutosavesConfiguration: YES]; + [toolbar setDelegate: self]; + + [[self window] setToolbar: toolbar]; +} + + +- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted { + NSToolbarItem * toolbarItem = nil; + id prototype = nil; + + if ([itemIdent isEqual: sOutputToolbarItemIdentifier]) + prototype = outputToolItem; + else if ([itemIdent isEqual: sLogToolbarItemIdentifier]) + prototype = logToolItem; + else if ([itemIdent isEqual: sRunToolbarItemIdentifier]) + prototype = runToolItem; + + if (prototype) { + toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdent] autorelease]; + + [toolbarItem setLabel: [prototype title]]; + [toolbarItem setPaletteLabel: [prototype alternateTitle]]; + [toolbarItem setToolTip: [prototype toolTip]]; + [toolbarItem setImage: [prototype image]]; + [toolbarItem setTarget: [prototype target]]; + [toolbarItem setAction: [prototype action]]; + } else { + toolbarItem = nil; + } + return toolbarItem; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar { + return [NSArray arrayWithObjects: + sRunToolbarItemIdentifier, + NSToolbarFlexibleSpaceItemIdentifier, + sOutputToolbarItemIdentifier, + sLogToolbarItemIdentifier, nil]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar { + return [NSArray arrayWithObjects: + sRunToolbarItemIdentifier, + sOutputToolbarItemIdentifier, + sLogToolbarItemIdentifier, + NSToolbarCustomizeToolbarItemIdentifier, + NSToolbarFlexibleSpaceItemIdentifier, + NSToolbarSpaceItemIdentifier, + NSToolbarSeparatorItemIdentifier, nil]; +} + +@end diff --git a/Sources/VLXMLDocument.mm b/Sources/VLXMLDocument.mm index 2239b3d..9d5813e 100644 --- a/Sources/VLXMLDocument.mm +++ b/Sources/VLXMLDocument.mm @@ -194,8 +194,45 @@ const char * sSteps = "C DbD EbE F GbG AbA BbB "; } } +- (NSXMLElement *) identificationElement +{ + NSXMLElement * identification = [NSXMLNode elementWithName:@"identification"]; + NSXMLElement * composer = [NSXMLNode elementWithName:@"creator" + stringValue:songComposer]; + [composer addAttribute: [NSXMLNode attributeWithName:@"type" + stringValue:@"composer"]]; + [identification addChild:composer]; + NSXMLElement * poet = [NSXMLNode elementWithName:@"creator" + stringValue:songLyricist]; + [poet addAttribute: [NSXMLNode attributeWithName:@"type" + stringValue:@"poet"]]; + [identification addChild:poet]; + + NSXMLElement * encoding = [NSXMLNode elementWithName:@"encoding"]; + [encoding addChild: + [NSXMLNode elementWithName:@"encoding-date" + stringValue: + [[NSDate date] + descriptionWithCalendarFormat:@"%Y-%m-%d" + timeZone:nil locale:nil]]]; + [encoding addChild: + [NSXMLNode elementWithName:@"software" + stringValue: [NSString stringWithFormat:@"VocalEasel %@", + [[NSBundle mainBundle] + objectForInfoDictionaryKey:@"CFBundleVersion"]]]]; + [identification addChild:encoding]; + + return identification; +} + - (NSData *)XMLDataWithError:(NSError **)outError { + NSXMLElement * work = [NSXMLNode elementWithName:@"work"]; + [work addChild: [NSXMLNode elementWithName:@"work-title" + stringValue:songTitle]]; + + NSXMLElement * identification = [self identificationElement]; + NSXMLElement * partList = [NSXMLNode elementWithName:@"part-list"]; [partList addChild: [self scorePartWithID:@"HARM" name:@"Chords"]]; [partList addChild: [self scorePartWithID:@"MELO" name:@"Melody"]]; @@ -230,8 +267,8 @@ const char * sSteps = "C DbD EbE F GbG AbA BbB "; NSXMLElement * score = [NSXMLNode elementWithName:@"score-partwise" - children:[NSArray arrayWithObjects: - partList, chords, melody, nil] + children:[NSArray arrayWithObjects: work, identification, + partList, chords, melody, nil] attributes:[NSArray arrayWithObject: [NSXMLNode attributeWithName:@"version" stringValue:@"1.1"]]]; @@ -368,6 +405,12 @@ int8_t sStepToPitch[] = { // For now, in gross violation of MusicXML spirit, we're only reading // our own input. // + songTitle = [[doc stringForXPath:@".//work-title" error:outError] retain]; + songComposer= [[doc stringForXPath:@".//creator[@type=\"composer\"]" + error: outError] retain]; + songLyricist= [[doc stringForXPath:@".//creator[@type=\"poet\"]" + error: outError] retain]; + NSXMLElement * chords = [doc nodeForXPath:@".//part[@id=\"HARM\"]" error:outError]; NSXMLElement * melody = [doc nodeForXPath:@".//part[@id=\"MELO\"]" diff --git a/Vocalese.xcodeproj/project.pbxproj b/Vocalese.xcodeproj/project.pbxproj index 9db1099..e45010a 100644 --- a/Vocalese.xcodeproj/project.pbxproj +++ b/Vocalese.xcodeproj/project.pbxproj @@ -34,6 +34,8 @@ 9593E4E90AE0ED1F00035816 /* vocalese.icns in Resources */ = {isa = PBXBuildFile; fileRef = 9593E4E70AE0ED1F00035816 /* vocalese.icns */; }; 959408AD096922EA007CCCF8 /* TVLEdit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 959408AC096922EA007CCCF8 /* TVLEdit.cpp */; }; 959408AE096922F7007CCCF8 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 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 */; }; 95B66658096BCA1F00FE18C9 /* VLSheetViewNotes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */; }; 95BDA15909540BF1009F9D65 /* VLSheetView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95BDA15809540BF1009F9D65 /* VLSheetView.mm */; }; @@ -44,6 +46,7 @@ 95E04DAB0AEB4886006F30A0 /* VLXMLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95F5F50E0ADCC433003980B2 /* VLXMLDocument.mm */; }; 95E04DC70AEB4B57006F30A0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; 95E04DCE0AEB4D9B006F30A0 /* Templates in Resources */ = {isa = PBXBuildFile; fileRef = 95E04DCA0AEB4D9B006F30A0 /* Templates */; }; + 95ECE6590AF3324300FE3E98 /* lilyWrapper in Resources */ = {isa = PBXBuildFile; fileRef = 95ECE6580AF3324300FE3E98 /* lilyWrapper */; }; 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 */; }; @@ -99,6 +102,9 @@ 9593E4E70AE0ED1F00035816 /* vocalese.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = vocalese.icns; path = Resources/vocalese.icns; sourceTree = ""; }; 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 = ""; }; + 95A1C37B0AF1D4370076597D /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = ""; }; + 95A1C3840AF2ACE20076597D /* VLSheetWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSheetWindow.h; path = Sources/VLSheetWindow.h; sourceTree = ""; }; + 95A1C3850AF2ACE20076597D /* VLSheetWindow.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetWindow.mm; path = Sources/VLSheetWindow.mm; sourceTree = ""; }; 95B3E1980960E58B000E9C0D /* Music */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Music; path = Resources/Music; sourceTree = ""; }; 95B66653096BC6A100FE18C9 /* VLSheetViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSheetViewInternal.h; path = Sources/VLSheetViewInternal.h; sourceTree = ""; }; 95B66656096BCA1F00FE18C9 /* VLSheetViewNotes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetViewNotes.h; path = Sources/VLSheetViewNotes.h; sourceTree = ""; }; @@ -108,6 +114,7 @@ 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 = ""; }; 95E04DCA0AEB4D9B006F30A0 /* Templates */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Templates; path = Resources/Templates; sourceTree = ""; }; + 95ECE6580AF3324300FE3E98 /* lilyWrapper */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; name = lilyWrapper; path = Resources/lilyWrapper; sourceTree = ""; }; 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 = ""; }; @@ -136,6 +143,7 @@ 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, 95932B91096527700008B0DB /* AudioUnit.framework in Frameworks */, 95932B92096527710008B0DB /* AudioToolbox.framework in Frameworks */, + 95A1C37C0AF1D4370076597D /* Quartz.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -176,6 +184,7 @@ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( + 95A1C37B0AF1D4370076597D /* Quartz.framework */, 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, 952CBBB2095FD34F00434E43 /* AudioToolbox.framework */, 952CBBB3095FD34F00434E43 /* AudioUnit.framework */, @@ -221,6 +230,8 @@ 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { isa = PBXGroup; children = ( + 95A1C3840AF2ACE20076597D /* VLSheetWindow.h */, + 95A1C3850AF2ACE20076597D /* VLSheetWindow.mm */, 95FC66CC0AF0A591003D9C11 /* VLPDFView.mm */, 95FC66CD0AF0A591003D9C11 /* VLPDFView.h */, 95FC66A40AF0A24C003D9C11 /* VLPDFWindow.h */, @@ -266,6 +277,7 @@ 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 95ECE6580AF3324300FE3E98 /* lilyWrapper */, 95FC66BC0AF0A4D4003D9C11 /* console.icns */, 95FC66BD0AF0A4D4003D9C11 /* music.tiff */, 95FC66BE0AF0A4D4003D9C11 /* nextpage.tiff */, @@ -439,6 +451,7 @@ 95FC66C70AF0A4D5003D9C11 /* run.icns in Resources */, 95FC66C80AF0A4D5003D9C11 /* zoomin.tiff in Resources */, 95FC66C90AF0A4D5003D9C11 /* zoomout.tiff in Resources */, + 95ECE6590AF3324300FE3E98 /* lilyWrapper in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -464,6 +477,7 @@ 95FC668F0AF0A08C003D9C11 /* VLLogWindow.mm in Sources */, 95FC66A60AF0A24C003D9C11 /* VLPDFWindow.mm in Sources */, 95FC66CE0AF0A591003D9C11 /* VLPDFView.mm in Sources */, + 95A1C3860AF2ACE20076597D /* VLSheetWindow.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };