Much simpler, better, media control UI

This commit is contained in:
Matthias Neeracher 2011-08-14 00:52:20 +02:00
parent fa0018a23a
commit 3d0a156816
6 changed files with 278 additions and 398 deletions

View File

@ -26,6 +26,7 @@
950BB7A713F467A400D8E669 /* MAAddMedia.xib in Resources */ = {isa = PBXBuildFile; fileRef = 950BB7A513F467A400D8E669 /* MAAddMedia.xib */; };
950BB7AA13F46BAF00D8E669 /* MAAddMediaSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB7A913F46BAF00D8E669 /* MAAddMediaSheet.mm */; };
950BB7AD13F46ECF00D8E669 /* MAAppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB7AC13F46ECF00D8E669 /* MAAppController.mm */; };
95C534E013F732A200A07932 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95C534DE13F732A200A07932 /* Localizable.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -60,6 +61,7 @@
950BB7A913F46BAF00D8E669 /* MAAddMediaSheet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAAddMediaSheet.mm; sourceTree = "<group>"; };
950BB7AB13F46ECF00D8E669 /* MAAppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAAppController.h; sourceTree = "<group>"; };
950BB7AC13F46ECF00D8E669 /* MAAppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAAppController.mm; sourceTree = "<group>"; };
95C534DF13F732A200A07932 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -122,6 +124,7 @@
950BB67613F1F26200D8E669 /* main.m */,
950BB67813F1F26200D8E669 /* Medianno-Prefix.pch */,
950BB67913F1F26200D8E669 /* Credits.rtf */,
95C534DE13F732A200A07932 /* Localizable.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
@ -225,6 +228,7 @@
950BB68113F1F26200D8E669 /* MADocument.xib in Resources */,
950BB68413F1F26200D8E669 /* MainMenu.xib in Resources */,
950BB7A713F467A400D8E669 /* MAAddMedia.xib in Resources */,
95C534E013F732A200A07932 /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -295,6 +299,14 @@
path = Medianno;
sourceTree = "<group>";
};
95C534DE13F732A200A07932 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
95C534DF13F732A200A07932 /* en */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */

View File

@ -21,15 +21,8 @@
- (IBAction)addMediaFiles:(id)sender;
- (void)addMedia:(NSArray *)urls;
- (IBAction)addAnnotation:(id)sender;
- (IBAction)hugeSkipBackward:(id)sender;
- (IBAction)largeSkipBackward:(id)sender;
- (IBAction)smallSkipBackward:(id)sender;
- (IBAction)tinySkipBackward:(id)sender;
- (IBAction)hugeSkipForward:(id)sender;
- (IBAction)largeSkipForward:(id)sender;
- (IBAction)smallSkipForward:(id)sender;
- (IBAction)tinySkipForward:(id)sender;
- (IBAction)mediaSkipBackward:(id)sender;
- (IBAction)mediaSkipForward:(id)sender;
- (IBAction)toggleMediaPlay:(id)sender;
@end

View File

@ -105,57 +105,53 @@
[movieView play:sender];
}
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
{
if ([item action] == @selector(toggleMediaPlay:)) {
NSMenuItem * menuItem = (NSMenuItem *)item;
if ([[movieView movie] rate] > 0.0f)
[menuItem setTitle:NSLocalizedString(@"Pause", @"Pause playback")];
else
[menuItem setTitle:NSLocalizedString(@"Play", @"Start playback")];
}
return YES;
}
#pragma mark Media navigation
- (void)skipTimeInterval:(NSTimeInterval)timeInterval
static NSTimeInterval sLastSkip = 0.0;
- (void)resetSkipFactor:(id)sender
{
QTTime interval= QTMakeTimeWithTimeInterval(abs(timeInterval));
sLastSkip = 0.0;
}
- (void)skipTimeInterval
{
QTTime interval= QTMakeTimeWithTimeInterval(abs(sLastSkip));
QTTime current = [[movieView movie] currentTime];
if (timeInterval > 0)
if (sLastSkip > 0)
current = QTTimeIncrement(current, interval);
else
current = QTTimeDecrement(current, interval);
[[movieView movie] setCurrentTime:current];
sLastSkip *= 1.1;
[NSRunLoop cancelPreviousPerformRequestsWithTarget:self selector:@selector(resetSkipFactor:) object:self];
[self performSelector:@selector(resetSkipFactor:) withObject:self afterDelay:1.0];
}
- (IBAction)hugeSkipBackward:(id)sender
- (IBAction)mediaSkipBackward:(id)sender
{
[self skipTimeInterval:-15.0*60.0];
if (sLastSkip >= 0)
sLastSkip = -1.0;
[self skipTimeInterval];
}
- (IBAction)largeSkipBackward:(id)sender
- (IBAction)mediaSkipForward:(id)sender
{
[self skipTimeInterval:-5.0*60.0];
}
- (IBAction)smallSkipBackward:(id)sender
{
[self skipTimeInterval:-60.0];
}
- (IBAction)tinySkipBackward:(id)sender
{
[self skipTimeInterval:-10.0];
}
- (IBAction)tinySkipForward:(id)sender
{
[self skipTimeInterval:10.0];
}
- (IBAction)smallSkipForward:(id)sender
{
[self skipTimeInterval:60.0];
}
- (IBAction)largeSkipForward:(id)sender
{
[self skipTimeInterval:5.0*60.0];
}
- (IBAction)hugeSkipForward:(id)sender
{
[self skipTimeInterval:15.0*60.0];
if (sLastSkip <= 0)
sLastSkip = 1.0;
[self skipTimeInterval];
}
#pragma mark Tag token manipulation
@ -199,47 +195,9 @@
- (void)sendEvent:(NSEvent *)event
{
if ([event type] == NSKeyDown && [event modifierFlags] & NSNumericPadKeyMask) {
MADocWindow * controller = [self windowController];
switch ([[event characters] characterAtIndex:0]) {
case '0':
case '5':
[controller toggleMediaPlay:self];
return;
case '+':
case 3:
[controller addAnnotation:self];
return;
case '9':
[controller hugeSkipBackward:self];
return;
case '8':
[controller largeSkipBackward:self];
return;
case '7':
[controller smallSkipBackward:self];
return;
case '4':
[controller tinySkipBackward:self];
return;
case '6':
[controller tinySkipForward:self];
return;
case '1':
[controller smallSkipForward:self];
return;
case '2':
[controller largeSkipForward:self];
return;
case '3':
[controller hugeSkipForward:self];
return;
default:
NSBeep();
return;
}
}
if ([event type] == NSKeyDown && [[event characters] characterAtIndex:0]==3)
[[self windowController] addAnnotation:self];
else
[super sendEvent:event];
}

View File

@ -0,0 +1,10 @@
/*
Localizable.strings
Medianno
Created by Matthias Neeracher on 8/14/11.
Copyright 2011 Apple Computer. All rights reserved.
*/
"Play" = "Play";
"Pause"= "Pause";

View File

@ -1469,14 +1469,8 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addAnnotation:</string>
<string>addMediaFiles:</string>
<string>hugeSkipBackward:</string>
<string>hugeSkipForward:</string>
<string>largeSkipBackward:</string>
<string>largeSkipForward:</string>
<string>smallSkipBackward:</string>
<string>smallSkipForward:</string>
<string>tinySkipBackward:</string>
<string>tinySkipForward:</string>
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
</object>
<object class="NSMutableArray" key="dict.values">
@ -1486,12 +1480,6 @@
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@ -1500,14 +1488,8 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addAnnotation:</string>
<string>addMediaFiles:</string>
<string>hugeSkipBackward:</string>
<string>hugeSkipForward:</string>
<string>largeSkipBackward:</string>
<string>largeSkipForward:</string>
<string>smallSkipBackward:</string>
<string>smallSkipForward:</string>
<string>tinySkipBackward:</string>
<string>tinySkipForward:</string>
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
</object>
<object class="NSMutableArray" key="dict.values">
@ -1521,35 +1503,11 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">hugeSkipBackward:</string>
<string key="name">mediaSkipBackward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">hugeSkipForward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">largeSkipBackward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">largeSkipForward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">smallSkipBackward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">smallSkipForward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">tinySkipBackward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">tinySkipForward:</string>
<string key="name">mediaSkipForward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">

View File

@ -767,12 +767,12 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="352060197">
<object class="NSMenu" key="NSSubmenu" id="313736841">
<string key="NSTitle">Media</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="590509802">
<reference key="NSMenu" ref="352060197"/>
<object class="NSMenuItem" id="327910007">
<reference key="NSMenu" ref="313736841"/>
<string key="NSTitle">Add Annotation</string>
<string key="NSKeyEquiv">t</string>
<int key="NSKeyEquivModMask">1048576</int>
@ -780,8 +780,8 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="96409883">
<reference key="NSMenu" ref="352060197"/>
<object class="NSMenuItem" id="361648399">
<reference key="NSMenu" ref="313736841"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
@ -790,112 +790,32 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="394358484">
<reference key="NSMenu" ref="352060197"/>
<object class="NSMenuItem" id="67914996">
<reference key="NSMenu" ref="313736841"/>
<string key="NSTitle">Play</string>
<string type="base64-UTF8" key="NSKeyEquiv">IA</string>
<int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="770724623">
<reference key="NSMenu" ref="352060197"/>
<string key="NSTitle">Skip</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="490865031">
<string key="NSTitle">Skip</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMenuItem" id="260561249">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Back 15m</string>
<string key="NSKeyEquiv">1</string>
<object class="NSMenuItem" id="958279512">
<reference key="NSMenu" ref="313736841"/>
<string key="NSTitle">Skip Backward</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="622472264">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Back 5m</string>
<string key="NSKeyEquiv">2</string>
<object class="NSMenuItem" id="892425776">
<reference key="NSMenu" ref="313736841"/>
<string key="NSTitle">Skip Forward</string>
<string key="NSKeyEquiv"></string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="262416802">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Back 1m</string>
<string key="NSKeyEquiv">3</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="986186069">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Back 10s</string>
<string key="NSKeyEquiv">4</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="366351407">
<reference key="NSMenu" ref="490865031"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="285265177">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Forward 10s</string>
<string key="NSKeyEquiv">5</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="407154048">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Forward 1m</string>
<string key="NSKeyEquiv">6</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="671896418">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Forward 5m</string>
<string key="NSKeyEquiv">7</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="156672349">
<reference key="NSMenu" ref="490865031"/>
<string key="NSTitle">Forward 15m</string>
<string key="NSKeyEquiv">8</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
@ -985,6 +905,9 @@
<object class="NSCustomObject" id="739804602">
<string key="NSClassName">NSFontManager</string>
</object>
<object class="NSCustomObject" id="114381833">
<string key="NSClassName">MAAppController</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@ -1385,81 +1308,41 @@
<object class="IBActionConnection" key="connection">
<string key="label">addAnnotation:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="590509802"/>
<reference key="destination" ref="327910007"/>
</object>
<int key="connectionID">542</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">hugeSkipBackward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="260561249"/>
</object>
<int key="connectionID">546</int>
<int key="connectionID">578</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleMediaPlay:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="394358484"/>
<reference key="destination" ref="67914996"/>
</object>
<int key="connectionID">564</int>
<int key="connectionID">579</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">largeSkipBackward:</string>
<string key="label">mediaSkipBackward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="622472264"/>
<reference key="destination" ref="958279512"/>
</object>
<int key="connectionID">565</int>
<int key="connectionID">581</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">smallSkipBackward:</string>
<string key="label">mediaSkipForward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="262416802"/>
<reference key="destination" ref="892425776"/>
</object>
<int key="connectionID">566</int>
<int key="connectionID">582</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">tinySkipBackward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="986186069"/>
<object class="IBOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="1050"/>
<reference key="destination" ref="114381833"/>
</object>
<int key="connectionID">567</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">tinySkipForward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="285265177"/>
</object>
<int key="connectionID">568</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">smallSkipForward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="407154048"/>
</object>
<int key="connectionID">569</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">largeSkipForward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="671896418"/>
</object>
<int key="connectionID">570</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">hugeSkipForward:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="156672349"/>
</object>
<int key="connectionID">571</int>
<int key="connectionID">584</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@ -2101,22 +1984,10 @@
<reference key="object" ref="610990130"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="352060197"/>
<reference ref="313736841"/>
</object>
<reference key="parent" ref="649796088"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">537</int>
<reference key="object" ref="352060197"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="590509802"/>
<reference ref="770724623"/>
<reference ref="96409883"/>
<reference ref="394358484"/>
</object>
<reference key="parent" ref="610990130"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">540</int>
<reference key="object" ref="906148750"/>
@ -2128,90 +1999,48 @@
<reference key="parent" ref="720053764"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">541</int>
<reference key="object" ref="590509802"/>
<reference key="parent" ref="352060197"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">543</int>
<reference key="object" ref="770724623"/>
<int key="objectID">573</int>
<reference key="object" ref="313736841"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="490865031"/>
<reference ref="958279512"/>
<reference ref="67914996"/>
<reference ref="361648399"/>
<reference ref="327910007"/>
<reference ref="892425776"/>
</object>
<reference key="parent" ref="352060197"/>
<reference key="parent" ref="610990130"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">544</int>
<reference key="object" ref="490865031"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="260561249"/>
<reference ref="622472264"/>
<reference ref="262416802"/>
<reference ref="986186069"/>
<reference ref="366351407"/>
<reference ref="285265177"/>
<reference ref="407154048"/>
<reference ref="671896418"/>
<reference ref="156672349"/>
</object>
<reference key="parent" ref="770724623"/>
<int key="objectID">574</int>
<reference key="object" ref="958279512"/>
<reference key="parent" ref="313736841"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">545</int>
<reference key="object" ref="260561249"/>
<reference key="parent" ref="490865031"/>
<int key="objectID">575</int>
<reference key="object" ref="67914996"/>
<reference key="parent" ref="313736841"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">547</int>
<reference key="object" ref="622472264"/>
<reference key="parent" ref="490865031"/>
<int key="objectID">576</int>
<reference key="object" ref="361648399"/>
<reference key="parent" ref="313736841"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">549</int>
<reference key="object" ref="262416802"/>
<reference key="parent" ref="490865031"/>
<int key="objectID">577</int>
<reference key="object" ref="327910007"/>
<reference key="parent" ref="313736841"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">551</int>
<reference key="object" ref="986186069"/>
<reference key="parent" ref="490865031"/>
<int key="objectID">580</int>
<reference key="object" ref="892425776"/>
<reference key="parent" ref="313736841"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">553</int>
<reference key="object" ref="366351407"/>
<reference key="parent" ref="490865031"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">554</int>
<reference key="object" ref="285265177"/>
<reference key="parent" ref="490865031"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">556</int>
<reference key="object" ref="407154048"/>
<reference key="parent" ref="490865031"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">558</int>
<reference key="object" ref="671896418"/>
<reference key="parent" ref="490865031"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">560</int>
<reference key="object" ref="156672349"/>
<reference key="parent" ref="490865031"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">562</int>
<reference key="object" ref="96409883"/>
<reference key="parent" ref="352060197"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">563</int>
<reference key="object" ref="394358484"/>
<reference key="parent" ref="352060197"/>
<int key="objectID">583</int>
<reference key="object" ref="114381833"/>
<reference key="parent" ref="0"/>
<string key="objectName">AppController</string>
</object>
</object>
</object>
@ -2297,26 +2126,18 @@
<string>5.IBPluginDependency</string>
<string>532.IBPluginDependency</string>
<string>536.IBPluginDependency</string>
<string>537.IBPluginDependency</string>
<string>538.IBPluginDependency</string>
<string>540.IBPluginDependency</string>
<string>541.IBPluginDependency</string>
<string>543.IBPluginDependency</string>
<string>544.IBPluginDependency</string>
<string>545.IBPluginDependency</string>
<string>547.IBPluginDependency</string>
<string>549.IBPluginDependency</string>
<string>551.IBPluginDependency</string>
<string>553.IBPluginDependency</string>
<string>554.IBPluginDependency</string>
<string>556.IBPluginDependency</string>
<string>558.IBPluginDependency</string>
<string>56.IBPluginDependency</string>
<string>560.IBPluginDependency</string>
<string>562.IBPluginDependency</string>
<string>563.IBPluginDependency</string>
<string>57.IBPluginDependency</string>
<string>573.IBPluginDependency</string>
<string>574.IBPluginDependency</string>
<string>575.IBPluginDependency</string>
<string>576.IBPluginDependency</string>
<string>577.IBPluginDependency</string>
<string>58.IBPluginDependency</string>
<string>580.IBPluginDependency</string>
<string>583.IBPluginDependency</string>
<string>72.IBPluginDependency</string>
<string>73.IBPluginDependency</string>
<string>74.IBPluginDependency</string>
@ -2432,14 +2253,6 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@ -2454,7 +2267,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">571</int>
<int key="maxID">589</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -2477,6 +2290,142 @@
<string key="minorKey"/>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MAAppController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MAAppController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MADocWindow</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addAnnotation:</string>
<string>addMediaFiles:</string>
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addAnnotation:</string>
<string>addMediaFiles:</string>
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">addAnnotation:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">addMediaFiles:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">mediaSkipBackward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">mediaSkipForward:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">toggleMediaPlay:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>annotationController</string>
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>movieView</string>
<string>tokenColumn</string>
<string>tokenFieldProto</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>QTMovieView</string>
<string>NSTableColumn</string>
<string>NSTokenField</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>annotationController</string>
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>movieView</string>
<string>tokenColumn</string>
<string>tokenFieldProto</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">annotationController</string>
<string key="candidateClassName">NSArrayController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">annotationTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">mediaController</string>
<string key="candidateClassName">NSArrayController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">mediaTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">movieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">tokenColumn</string>
<string key="candidateClassName">NSTableColumn</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">tokenFieldProto</string>
<string key="candidateClassName">NSTokenField</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MADocWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>