Implement movie panel

This commit is contained in:
Matthias Neeracher 2011-08-20 00:03:36 +02:00
parent c388a81fac
commit c8b70d0a37
10 changed files with 643 additions and 55 deletions

View File

@ -30,6 +30,8 @@
95BCFA2E13F8A3AD000F650F /* MAShortenQTTime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95BCFA2D13F8A3AD000F650F /* MAShortenQTTime.mm */; };
95C534E013F732A200A07932 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 95C534DE13F732A200A07932 /* Localizable.strings */; };
95CA841113FC149B00AE5AC4 /* MATokenFieldCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95CA841013FC149B00AE5AC4 /* MATokenFieldCell.mm */; };
95E2027D13FE9BF500369B31 /* MAMovieWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 95E2027C13FE9BF500369B31 /* MAMovieWindow.m */; };
95E2028113FE9C6C00369B31 /* MAMovie.xib in Resources */ = {isa = PBXBuildFile; fileRef = 95E2027F13FE9C6C00369B31 /* MAMovie.xib */; };
95E8C26713FD72D2004E9839 /* MAColorForURL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95E8C26613FD72D2004E9839 /* MAColorForURL.mm */; };
/* End PBXBuildFile section */
@ -70,6 +72,9 @@
95C534DF13F732A200A07932 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
95CA840F13FC149B00AE5AC4 /* MATokenFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MATokenFieldCell.h; sourceTree = "<group>"; };
95CA841013FC149B00AE5AC4 /* MATokenFieldCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MATokenFieldCell.mm; sourceTree = "<group>"; };
95E2027B13FE9BF500369B31 /* MAMovieWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAMovieWindow.h; sourceTree = "<group>"; };
95E2027C13FE9BF500369B31 /* MAMovieWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MAMovieWindow.m; sourceTree = "<group>"; };
95E2028013FE9C6C00369B31 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Medianno/en.lproj/MAMovie.xib; sourceTree = "<group>"; };
95E8C26513FD72D2004E9839 /* MAColorForURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAColorForURL.h; sourceTree = "<group>"; };
95E8C26613FD72D2004E9839 /* MAColorForURL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAColorForURL.mm; sourceTree = "<group>"; };
/* End PBXFileReference section */
@ -147,6 +152,7 @@
950BB67F13F1F26200D8E669 /* MADocument.xib */,
950BB7A513F467A400D8E669 /* MAAddMedia.xib */,
950BB68213F1F26200D8E669 /* MainMenu.xib */,
95E2027F13FE9C6C00369B31 /* MAMovie.xib */,
);
name = Resources;
path = ..;
@ -185,6 +191,8 @@
95BCFA2D13F8A3AD000F650F /* MAShortenQTTime.mm */,
95E8C26513FD72D2004E9839 /* MAColorForURL.h */,
95E8C26613FD72D2004E9839 /* MAColorForURL.mm */,
95E2027B13FE9BF500369B31 /* MAMovieWindow.h */,
95E2027C13FE9BF500369B31 /* MAMovieWindow.m */,
);
name = Classes;
sourceTree = "<group>";
@ -248,6 +256,7 @@
95C534E013F732A200A07932 /* Localizable.strings in Resources */,
95BCFA2113F76A04000F650F /* app.icns in Resources */,
95BCFA2213F76A04000F650F /* doc.icns in Resources */,
95E2028113FE9C6C00369B31 /* MAMovie.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -271,6 +280,7 @@
95BCFA2E13F8A3AD000F650F /* MAShortenQTTime.mm in Sources */,
95CA841113FC149B00AE5AC4 /* MATokenFieldCell.mm in Sources */,
95E8C26713FD72D2004E9839 /* MAColorForURL.mm in Sources */,
95E2027D13FE9BF500369B31 /* MAMovieWindow.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -328,6 +338,14 @@
name = Localizable.strings;
sourceTree = "<group>";
};
95E2027F13FE9C6C00369B31 /* MAMovie.xib */ = {
isa = PBXVariantGroup;
children = (
95E2028013FE9C6C00369B31 /* en */,
);
name = MAMovie.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */

View File

@ -7,14 +7,19 @@
//
#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>
@interface MADocWindow : NSWindowController <NSTokenFieldCellDelegate,NSTableViewDelegate> {
@class MAMovieWindow;
@interface MADocWindow : NSWindowController <NSWindowDelegate,NSTokenFieldCellDelegate,NSTableViewDelegate> {
IBOutlet NSArrayController* mediaController;
IBOutlet NSArrayController* annotationController;
IBOutlet QTMovieView * movieView;
IBOutlet NSTableView * mediaTable;
IBOutlet NSTableView * annotationTable;
IBOutlet NSView * textExportAccessoryView;
IBOutlet MAMovieWindow * moviePanel;
QTMovie * currentMovie;
QTTime lastMovieTime;
}
@ -30,6 +35,7 @@
- (IBAction)mediaSkipBackward:(id)sender;
- (IBAction)mediaSkipForward:(id)sender;
- (IBAction)toggleMediaPlay:(id)sender;
- (IBAction)toggleMoviePanel:(id)sender;
- (QTTime)currentMovieTime;
@end

View File

@ -15,6 +15,9 @@
#import "MAAnno.h"
#import "MATag.h"
#import "MATagDescription.h"
#import "MAMovieWindow.h"
static const char * kMADocWindowObserver = "MADocWindowObserver";
@implementation MADocWindow
@ -35,18 +38,39 @@
[mediaController setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]]];
[annotationController setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"location" ascending:YES]]];
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(updateMovieTime:) userInfo:nil repeats:YES];
[mediaController addObserver:self forKeyPath:@"selection.media" options:0 context:&kMADocWindowObserver];
[moviePanel addObserver:self forKeyPath:@"showMovieInPanel" options:0 context:&kMADocWindowObserver];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == &kMADocWindowObserver) {
if (object == mediaController) {
//
// Current movie changed
//
MAMedia * currentMedia = [mediaController selection];
currentMovie = [[QTMovie alloc] initWithFile:[currentMedia valueForKey:@"media"] error:nil];
}
[moviePanel setMovie:currentMovie];
}
}
- (void)windowDidBecomeMain:(NSNotification *)notification
{
[moviePanel setMainWindowIsFront:YES];
}
- (void)windowDidResignMain:(NSNotification *)notification
{
[moviePanel setMainWindowIsFront:NO];
}
#pragma mark Media management
- (QTMovie *)currentMovie
{
return [movieView movie];
}
- (QTTime)currentMovieTime
{
return [[movieView movie] currentTime];
return [currentMovie currentTime];
}
- (void)updateMovieTime:(NSTimer *)timer
@ -111,7 +135,6 @@
- (void)exportMediaToURL:(NSURL *)url
{
QTMovie * currentMovie = [self currentMovie];
NSIndexSet * selection = [annotationController selectionIndexes];
NSArray * annotations = [annotationController arrangedObjects];
//
@ -161,7 +184,6 @@
- (IBAction)exportMedia:(id)sender
{
QTMovie * currentMovie = [self currentMovie];
NSSavePanel * savePanel = [NSSavePanel savePanel];
NSDictionary *attrs = [currentMovie movieAttributes];
BOOL hasVideo = [[attrs objectForKey:QTMovieHasVideoAttribute] boolValue];
@ -195,10 +217,15 @@
- (IBAction)toggleMediaPlay:(id)sender
{
if ([[self currentMovie] rate] > 0.0f)
[movieView pause:sender];
if ([currentMovie rate] > 0.0f)
[currentMovie stop];
else
[movieView play:sender];
[currentMovie play];
}
- (IBAction)toggleMoviePanel:(id)sender
{
[moviePanel setMoviePanelEnabled:![moviePanel moviePanelEnabled]];
}
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
@ -209,9 +236,14 @@
)
return YES;
NSMenuItem * menuItem = (NSMenuItem *)item;
if ([item action] == @selector(toggleMoviePanel:)) {
[menuItem setState:[moviePanel moviePanelEnabled]];
return YES;
}
if ([item action] == @selector(toggleMediaPlay:)) {
NSMenuItem * menuItem = (NSMenuItem *)item;
if ([[self currentMovie] rate] > 0.0f)
if ([currentMovie rate] > 0.0f)
[menuItem setTitle:NSLocalizedString(@"Pause", @"Pause playback")];
else
[menuItem setTitle:NSLocalizedString(@"Play", @"Start playback")];
@ -230,7 +262,6 @@ static NSTimeInterval sLastSkip = 0.0;
- (void)skipTimeInterval
{
QTMovie * currentMovie = [self currentMovie];
QTTime interval = QTMakeTimeWithTimeInterval(abs(sLastSkip));
QTTime current = [currentMovie currentTime];
if (sLastSkip > 0)
@ -301,13 +332,13 @@ static NSTimeInterval sLastSkip = 0.0;
NSArray * selection = [annotationController selectedObjects];
if ([selection count])
if (MAAnno * firstSelectedAnno = [selection objectAtIndex:0])
[[self currentMovie] setCurrentTime:[firstSelectedAnno qtLocation]];
[currentMovie setCurrentTime:[firstSelectedAnno qtLocation]];
}
- (IBAction)addAnnotation:(id)sender
{
[movieView pause:sender];
QTTime location = [[self currentMovie] currentTime];
QTTime location = [self currentMovieTime];
MAAnno * anno = [[self document] addAnnotationForMedia:[[mediaController selectedObjects] objectAtIndex:0] location:location];
[annotationController setSelectedObjects:[NSArray arrayWithObject:anno]];
[annotationTable editColumn:[annotationTable columnWithIdentifier:@"tags"]

View File

@ -14,6 +14,7 @@
@interface MAMedia : NSManagedObject {
@private
QTMovie * cachedMovie;
}
@property (nonatomic, retain) NSString * media;
@property (nonatomic, retain) NSString * name;
@ -22,9 +23,6 @@
@property (nonatomic, retain) NSSet *annotations;
@property (nonatomic) int64_t size;
- (QTMovie *)movie;
+ (NSSet *)keyPathsForValuesAffectingMovie;
@end
@interface MAMedia (CoreDataGeneratedAccessors)

View File

@ -16,14 +16,4 @@
@dynamic annotations;
@dynamic size;
+ (NSSet *)keyPathsForValuesAffectingMovie
{
return [NSSet setWithObject:@"media"];
}
- (QTMovie *)movie
{
return [QTMovie movieWithFile:self.media error:nil];
}
@end

29
Medianno/MAMovieWindow.h Normal file
View File

@ -0,0 +1,29 @@
//
// MAMovieWindow.h
// Medianno
//
// Created by Matthias Neeracher on 8/19/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>
@interface MAMovieWindow : NSWindowController {
IBOutlet NSWindow * mainWindow;
IBOutlet QTMovieView * mainMovieView;
IBOutlet QTMovieView * panelMovieView;
}
@property BOOL mainWindowIsFront, moviePanelEnabled;
- (BOOL)showMovieInPanel;
+ (NSSet *)keyPathsForValuesAffectingShowMovieInPanel;
- (void)setMovie:(QTMovie *)movie;
@end
@interface MAMovieWin : NSPanel {
}
@end

69
Medianno/MAMovieWindow.m Normal file
View File

@ -0,0 +1,69 @@
//
// MAMovieWindow.m
// Medianno
//
// Created by Matthias Neeracher on 8/19/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import "MAMovieWindow.h"
@implementation MAMovieWindow
@synthesize moviePanelEnabled, mainWindowIsFront;
- (id)init
{
self = [super initWithWindowNibName:@"MAMovie"];
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
}
- (void)setMoviePanelEnabled:(BOOL)enabled
{
if ((self->moviePanelEnabled = enabled))
[self loadWindow];
[self setMainWindowIsFront:[mainWindow isMainWindow]];
}
- (BOOL)showMovieInPanel
{
return moviePanelEnabled && mainWindowIsFront;
}
- (void)setShowMovieInPanel:(BOOL)showIt
{
moviePanelEnabled = showIt;
}
+ (NSSet *)keyPathsForValuesAffectingShowMovieInPanel
{
return [NSSet setWithObjects:@"moviePanelEnabled", @"mainWindowIsFront", nil];
}
- (void)setMovie:(QTMovie *)movie
{
if ([self showMovieInPanel]) {
[panelMovieView setMovie:movie];
[mainMovieView setMovie:nil];
} else {
[mainMovieView setMovie:movie];
[panelMovieView setMovie:nil];
}
}
@end
@implementation MAMovieWin
- (BOOL)canBecomeKeyWindow
{
return NO;
}
@end

View File

@ -376,9 +376,12 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1054473103"/>
<string key="NSReuseIdentifierKey">_NS:46</string>
<reference key="kCoderFillColor" ref="1064784368"/>
<object class="NSColor" key="kCoderFillColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEgMAA</bytes>
</object>
<boolean value="YES" key="kCoderControllerVisible"/>
<boolean value="YES" key="kCoderPreservesAspectRatio"/>
<boolean value="NO" key="kCoderPreservesAspectRatio"/>
<nil key="kCoderMovie"/>
<boolean value="NO" key="kCoderEditable"/>
</object>
@ -693,7 +696,7 @@
<bool key="NSAutomaticallyRearrangesObjects">YES</bool>
</object>
<object class="NSBox" id="572125044">
<reference key="NSNextResponder"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">34</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -737,7 +740,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 20}, {98, 18}}</string>
<reference key="NSSuperview" ref="910416729"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:239</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="397127771">
@ -765,7 +767,6 @@
</object>
</object>
<string key="NSFrameSize">{166, 65}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="910416729"/>
<string key="NSReuseIdentifierKey">_NS:630</string>
<string key="NSOffsets">{0, 0}</string>
@ -786,6 +787,9 @@
<int key="NSTitlePosition">0</int>
<bool key="NSTransparent">NO</bool>
</object>
<object class="NSCustomObject" id="779371356">
<string key="NSClassName">MAMovieWindow</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@ -858,22 +862,6 @@
</object>
<int key="connectionID">100093</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">movie: selection.movie</string>
<reference key="source" ref="56699403"/>
<reference key="destination" ref="261388520"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="56699403"/>
<reference key="NSDestination" ref="261388520"/>
<string key="NSLabel">movie: selection.movie</string>
<string key="NSBinding">movie</string>
<string key="NSKeyPath">selection.movie</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">100104</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">contentSet: selection.annotations</string>
@ -1347,6 +1335,38 @@
</object>
<int key="connectionID">100248</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">moviePanel</string>
<reference key="source" ref="512844837"/>
<reference key="destination" ref="779371356"/>
</object>
<int key="connectionID">100250</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">mainWindow</string>
<reference key="source" ref="779371356"/>
<reference key="destination" ref="275939982"/>
</object>
<int key="connectionID">100252</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">mediaController</string>
<reference key="source" ref="779371356"/>
<reference key="destination" ref="261388520"/>
</object>
<int key="connectionID">100255</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">mainMovieView</string>
<reference key="source" ref="779371356"/>
<reference key="destination" ref="56699403"/>
</object>
<int key="connectionID">100260</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -1735,6 +1755,12 @@
<reference key="object" ref="397127771"/>
<reference key="parent" ref="1023793026"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">100249</int>
<reference key="object" ref="779371356"/>
<reference key="parent" ref="0"/>
<string key="objectName">Movie Panel</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -1799,6 +1825,7 @@
<string>100237.IBPluginDependency</string>
<string>100238.IBPluginDependency</string>
<string>100239.IBPluginDependency</string>
<string>100249.IBPluginDependency</string>
<string>5.IBNSWindowAutoPositionCentersHorizontal</string>
<string>5.IBNSWindowAutoPositionCentersVertical</string>
<string>5.IBPluginDependency</string>
@ -1874,6 +1901,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO"/>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -1893,7 +1921,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">100248</int>
<int key="maxID">100260</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -1913,6 +1941,7 @@
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
<string>toggleMoviePanel:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -1924,6 +1953,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@ -1938,6 +1968,7 @@
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
<string>toggleMoviePanel:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -1973,6 +2004,10 @@
<string key="name">toggleMediaPlay:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">toggleMoviePanel:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@ -1983,6 +2018,7 @@
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>moviePanel</string>
<string>movieView</string>
<string>textExportAccessoryView</string>
</object>
@ -1992,6 +2028,7 @@
<string>NSTableView</string>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>MAMovieWindow</string>
<string>QTMovieView</string>
<string>NSView</string>
</object>
@ -2004,6 +2041,7 @@
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>moviePanel</string>
<string>movieView</string>
<string>textExportAccessoryView</string>
</object>
@ -2025,6 +2063,10 @@
<string key="name">mediaTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">moviePanel</string>
<string key="candidateClassName">MAMovieWindow</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">movieView</string>
<string key="candidateClassName">QTMovieView</string>
@ -2048,6 +2090,53 @@
<string key="minorKey">./Classes/MADocumentWindow.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MAMovieWindow</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>mainMovieView</string>
<string>mainWindow</string>
<string>panelMovieView</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>QTMovieView</string>
<string>NSWindow</string>
<string>QTMovieView</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>mainMovieView</string>
<string>mainWindow</string>
<string>panelMovieView</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">mainMovieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">mainWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">panelMovieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MAMovieWindow.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MATokenFieldCell</string>
<string key="superclassName">NSTokenFieldCell</string>

View File

@ -0,0 +1,300 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11B26</string>
<string key="IBDocument.InterfaceBuilderVersion">1617</string>
<string key="IBDocument.AppKitVersion">1138</string>
<string key="IBDocument.HIToolboxVersion">566.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.QTKitIBPlugin</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>1617</string>
<string>518</string>
</object>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSWindowTemplate</string>
<string>NSView</string>
<string>QTMovieView</string>
<string>NSCustomObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.QTKitIBPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="dict.values" ref="0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="1001">
<string key="NSClassName">MAMovieWindow</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSWindowTemplate" id="633460828">
<int key="NSWindowStyleMask">95</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{272, 172}, {640, 496}}</string>
<int key="NSWTFlags">-1535638528</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">MAMovieWin</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="607284987">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="QTMovieView" id="187692734">
<reference key="NSNextResponder" ref="607284987"/>
<int key="NSvFlags">274</int>
<object class="NSMutableSet" key="NSDragTypes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="set.sortedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>Apple URL pasteboard type</string>
<string>CorePasteboardFlavorType 0x6D6F6F76</string>
<string>NSFilenamesPboardType</string>
<string>QTMoviePasteboardType</string>
</object>
</object>
<string key="NSFrameSize">{640, 496}</string>
<reference key="NSSuperview" ref="607284987"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:46</string>
<object class="NSColor" key="kCoderFillColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<boolean value="YES" key="kCoderControllerVisible"/>
<boolean value="YES" key="kCoderPreservesAspectRatio"/>
<nil key="kCoderMovie"/>
<boolean value="NO" key="kCoderEditable"/>
</object>
</object>
<string key="NSFrameSize">{640, 496}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="187692734"/>
<string key="NSReuseIdentifierKey">_NS:2837</string>
</object>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="633460828"/>
</object>
<int key="connectionID">5</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">visible: showMovieInPanel</string>
<reference key="source" ref="633460828"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="633460828"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">visible: showMovieInPanel</string>
<string key="NSBinding">visible</string>
<string key="NSKeyPath">showMovieInPanel</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">panelMovieView</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="187692734"/>
</object>
<int key="connectionID">12</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="633460828"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="607284987"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="607284987"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="187692734"/>
</object>
<reference key="parent" ref="633460828"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="187692734"/>
<reference key="parent" ref="607284987"/>
<string key="objectName">Movie View</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>3.IBPluginDependency</string>
<string>3.NSWindowTemplate.visibleAtLaunch</string>
<string>4.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.QTKitIBPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<reference key="dict.values" ref="0"/>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">12</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">MAMovieWin</string>
<string key="superclassName">NSPanel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MAMovieWin.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MAMovieWindow</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>mainMovieView</string>
<string>mainWindow</string>
<string>panelMovieView</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>QTMovieView</string>
<string>NSWindow</string>
<string>QTMovieView</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>mainMovieView</string>
<string>mainWindow</string>
<string>panelMovieView</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">mainMovieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">mainWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">panelMovieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MAMovieWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>

View File

@ -889,6 +889,15 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="801150906">
<reference key="NSMenu" ref="835318025"/>
<string key="NSTitle">Movie Panel</string>
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">262144</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="625202149">
<reference key="NSMenu" ref="835318025"/>
<string key="NSTitle">Bring All to Front</string>
@ -1396,6 +1405,14 @@
</object>
<int key="connectionID">598</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleMoviePanel:</string>
<reference key="source" ref="1014"/>
<reference key="destination" ref="801150906"/>
</object>
<int key="connectionID">601</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -1433,9 +1450,9 @@
<reference ref="694149608"/>
<reference ref="952259628"/>
<reference ref="379814623"/>
<reference ref="586577488"/>
<reference ref="1050483726"/>
<reference ref="610990130"/>
<reference ref="586577488"/>
</object>
<reference key="parent" ref="0"/>
</object>
@ -1811,6 +1828,7 @@
<reference ref="625202149"/>
<reference ref="575023229"/>
<reference ref="1011231497"/>
<reference ref="801150906"/>
</object>
<reference key="parent" ref="713487014"/>
</object>
@ -2112,6 +2130,11 @@
<reference key="object" ref="627623477"/>
<reference key="parent" ref="720053764"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">600</int>
<reference key="object" ref="801150906"/>
<reference key="parent" ref="835318025"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -2211,6 +2234,7 @@
<string>590.IBPluginDependency</string>
<string>593.IBPluginDependency</string>
<string>596.IBPluginDependency</string>
<string>600.IBPluginDependency</string>
<string>72.IBPluginDependency</string>
<string>73.IBPluginDependency</string>
<string>74.IBPluginDependency</string>
@ -2329,6 +2353,7 @@
<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">
@ -2343,7 +2368,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">598</int>
<int key="maxID">601</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -2389,6 +2414,7 @@
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
<string>toggleMoviePanel:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -2400,6 +2426,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@ -2414,6 +2441,7 @@
<string>mediaSkipBackward:</string>
<string>mediaSkipForward:</string>
<string>toggleMediaPlay:</string>
<string>toggleMoviePanel:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -2449,6 +2477,10 @@
<string key="name">toggleMediaPlay:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">toggleMoviePanel:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@ -2459,6 +2491,7 @@
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>moviePanel</string>
<string>movieView</string>
<string>textExportAccessoryView</string>
</object>
@ -2468,6 +2501,7 @@
<string>NSTableView</string>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>MAMovieWindow</string>
<string>QTMovieView</string>
<string>NSView</string>
</object>
@ -2480,6 +2514,7 @@
<string>annotationTable</string>
<string>mediaController</string>
<string>mediaTable</string>
<string>moviePanel</string>
<string>movieView</string>
<string>textExportAccessoryView</string>
</object>
@ -2501,6 +2536,10 @@
<string key="name">mediaTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">moviePanel</string>
<string key="candidateClassName">MAMovieWindow</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">movieView</string>
<string key="candidateClassName">QTMovieView</string>
@ -2516,6 +2555,25 @@
<string key="minorKey">./Classes/MADocWindow.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MAMovieWindow</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">mainMovieView</string>
<string key="NS.object.0">QTMovieView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">mainMovieView</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">mainMovieView</string>
<string key="candidateClassName">QTMovieView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MAMovieWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>