Implement Tag (Annotation) panel

This commit is contained in:
Matthias Neeracher 2011-08-21 00:20:38 +02:00
parent 484e5279b3
commit 54cf82b9c6
13 changed files with 911 additions and 17 deletions

View File

@ -30,6 +30,9 @@
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 */; };
95CB69711400112A005A0346 /* MATagWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95CB69701400112A005A0346 /* MATagWindow.mm */; };
95CB6975140012FE005A0346 /* MATag.xib in Resources */ = {isa = PBXBuildFile; fileRef = 95CB6973140012FE005A0346 /* MATag.xib */; };
95CB697814001F26005A0346 /* MAColorForTag.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95CB697714001F26005A0346 /* MAColorForTag.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 */; };
@ -72,6 +75,11 @@
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>"; };
95CB696F1400112A005A0346 /* MATagWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MATagWindow.h; sourceTree = "<group>"; };
95CB69701400112A005A0346 /* MATagWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MATagWindow.mm; sourceTree = "<group>"; };
95CB6974140012FE005A0346 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Medianno/en.lproj/MATag.xib; sourceTree = "<group>"; };
95CB697614001F26005A0346 /* MAColorForTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAColorForTag.h; sourceTree = "<group>"; };
95CB697714001F26005A0346 /* MAColorForTag.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAColorForTag.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>"; };
@ -153,6 +161,7 @@
950BB7A513F467A400D8E669 /* MAAddMedia.xib */,
950BB68213F1F26200D8E669 /* MainMenu.xib */,
95E2027F13FE9C6C00369B31 /* MAMovie.xib */,
95CB6973140012FE005A0346 /* MATag.xib */,
);
name = Resources;
path = ..;
@ -187,10 +196,14 @@
950BB7AC13F46ECF00D8E669 /* MAAppController.mm */,
950BB78413F2D95500D8E669 /* MADocWindow.h */,
950BB78513F2D95500D8E669 /* MADocWindow.mm */,
95CB696F1400112A005A0346 /* MATagWindow.h */,
95CB69701400112A005A0346 /* MATagWindow.mm */,
95BCFA2C13F8A3AD000F650F /* MAShortenQTTime.h */,
95BCFA2D13F8A3AD000F650F /* MAShortenQTTime.mm */,
95E8C26513FD72D2004E9839 /* MAColorForURL.h */,
95E8C26613FD72D2004E9839 /* MAColorForURL.mm */,
95CB697614001F26005A0346 /* MAColorForTag.h */,
95CB697714001F26005A0346 /* MAColorForTag.mm */,
95E2027B13FE9BF500369B31 /* MAMovieWindow.h */,
95E2027C13FE9BF500369B31 /* MAMovieWindow.m */,
);
@ -257,6 +270,7 @@
95BCFA2113F76A04000F650F /* app.icns in Resources */,
95BCFA2213F76A04000F650F /* doc.icns in Resources */,
95E2028113FE9C6C00369B31 /* MAMovie.xib in Resources */,
95CB6975140012FE005A0346 /* MATag.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -281,6 +295,8 @@
95CA841113FC149B00AE5AC4 /* MATokenFieldCell.mm in Sources */,
95E8C26713FD72D2004E9839 /* MAColorForURL.mm in Sources */,
95E2027D13FE9BF500369B31 /* MAMovieWindow.m in Sources */,
95CB69711400112A005A0346 /* MATagWindow.mm in Sources */,
95CB697814001F26005A0346 /* MAColorForTag.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -338,6 +354,14 @@
name = Localizable.strings;
sourceTree = "<group>";
};
95CB6973140012FE005A0346 /* MATag.xib */ = {
isa = PBXVariantGroup;
children = (
95CB6974140012FE005A0346 /* en */,
);
name = MATag.xib;
sourceTree = "<group>";
};
95E2027F13FE9C6C00369B31 /* MAMovie.xib */ = {
isa = PBXVariantGroup;
children = (

View File

@ -12,6 +12,62 @@
#import <vector>
//
// Due to a bug in NSTokenField bindings, key value changes in tag descriptions don't
// propagate properly, because the token arrays are compared, rather than their display strings.
// our solution is to wrap the token arrays in a proxy class that will only compare equal by
// identity, never by structure.
//
@interface MANotAnArray : NSProxy {
NSArray * contents;
}
- (id)initWithArray:(NSArray *)array;
+ (id)arrayWithArray:(NSArray *)array;
- (void)forwardInvocation:(NSInvocation *)invocation;
@end
@implementation MANotAnArray
- (id)initWithArray:(NSArray *)array
{
contents = [array retain];
return self;
}
- (void)dealloc
{
[contents release];
}
+ (id)arrayWithArray:(NSArray *)array
{
return [[[MANotAnArray alloc] initWithArray:array] autorelease];
}
- (BOOL)isEqual:(id)object
{
//
// This is the only purpose of this class
//
return self==object;
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel
{
return [contents methodSignatureForSelector:sel];
}
- (void)forwardInvocation:(NSInvocation *)invocation
{
[invocation setTarget:contents];
[invocation invoke];
}
@end
@implementation MAAnno
@dynamic location;
@dynamic notes;
@ -30,8 +86,8 @@
for (MATag * tag in tags)
descs[[tag seqNo]] = [tag tag];
return [NSArray arrayWithObjects:&descs[0] count:descs.size()];
}
return [MANotAnArray arrayWithArray:[NSArray arrayWithObjects:&descs[0] count:descs.size()]];
}
- (void)setTagDescriptions:(NSArray *)tagDescriptions
{

View File

@ -7,7 +7,10 @@
//
#import <Cocoa/Cocoa.h>
#import "MAMovieWindow.h"
@class MAMovieWindow;
@class MATagWindow;
typedef void (^MASheetBlock)(NSInteger returnCode);
@ -20,6 +23,7 @@ typedef void (^MASheetBlock)(NSInteger returnCode);
@interface MAAppController : NSObject <NSApplicationDelegate> {
}
@property (assign) IBOutlet MAMovieWindow * moviePanel;
@property (assign) IBOutlet MAMovieWindow * moviePanel;
@property (assign) IBOutlet MATagWindow * tagPanel;
@end

View File

@ -10,7 +10,7 @@
@implementation MAAppController
@synthesize moviePanel;
@synthesize moviePanel, tagPanel;
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{

13
Medianno/MAColorForTag.h Normal file
View File

@ -0,0 +1,13 @@
//
// MAColorForTag.h
// Medianno
//
// Created by Matthias Neeracher on 8/20/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface MAColorForTag : NSValueTransformer
@end

32
Medianno/MAColorForTag.mm Normal file
View File

@ -0,0 +1,32 @@
//
// MAColorForTag.mm
// Medianno
//
// Created by Matthias Neeracher on 8/20/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import "MAColorForTag.h"
#import "MATagDescription.h"
@implementation MAColorForTag
+ (Class)transformedValueClass
{
return [NSColor class];
}
+ (BOOL)allowsReverseTransformation
{
return NO;
}
- (id)transformedValue:(id)value
{
if ([[value uses] count] > 0)
return [NSColor blackColor];
else
return [NSColor lightGrayColor];
}
@end

View File

@ -16,6 +16,7 @@
#import "MATag.h"
#import "MATagDescription.h"
#import "MAMovieWindow.h"
#import "MATagWindow.h"
#import "MAAppController.h"
static const char * kMADocWindowObserver = "MADocWindowObserver";
@ -44,11 +45,20 @@ static const char * kMADocWindowObserver = "MADocWindowObserver";
[mediaController addObserver:self forKeyPath:@"selection.name" options:0 context:&kMADocWindowObserver];
}
- (void)dealloc
{
}
- (MAMovieWindow *)moviePanel
{
return [[NSApp delegate] moviePanel];
}
- (MATagWindow *)tagPanel
{
return [[NSApp delegate] tagPanel];
}
- (void)moviePanelDidAppear
{
[movieView setMovie:nil];
@ -59,6 +69,7 @@ static const char * kMADocWindowObserver = "MADocWindowObserver";
- (void)windowDidBecomeMain:(NSNotification *)notification
{
[self moviePanelDidAppear];
[[self tagPanel] setCurrentDocument:[self document]];
}
- (void)moviePanelDidClose
@ -70,6 +81,7 @@ static const char * kMADocWindowObserver = "MADocWindowObserver";
- (void)windowDidResignMain:(NSNotification *)notification
{
[self moviePanelDidClose];
[[self tagPanel] setCurrentDocument:[[NSDocumentController sharedDocumentController] currentDocument]];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

View File

@ -20,4 +20,14 @@
return [NSString stringWithFormat:@"%@\t%@", self.name, self.notes];
}
- (void)setName:(NSString *)name
{
[self willChangeValueForKey:@"name"];
for (MATag * tag in self.uses)
[tag.annotation willChangeValueForKey:@"tags"];
[self setPrimitiveValue:name forKey:@"name"];
for (MATag * tag in self.uses)
[tag.annotation didChangeValueForKey:@"tags"];
[self didChangeValueForKey:@"name"];
}
@end

18
Medianno/MATagWindow.h Normal file
View File

@ -0,0 +1,18 @@
//
// MATagWindow.h
// Medianno
//
// Created by Matthias Neeracher on 8/20/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface MATagWindow : NSWindowController {
}
@property (assign) NSDocument * currentDocument;
- (IBAction)toggleWindow:(id)sender;
@end

38
Medianno/MATagWindow.mm Normal file
View File

@ -0,0 +1,38 @@
//
// MATagWindow.mm
// Medianno
//
// Created by Matthias Neeracher on 8/20/11.
// Copyright 2011 Matthias Neeracher. All rights reserved.
//
#import "MATagWindow.h"
@implementation MATagWindow
@synthesize currentDocument;
- (id)init
{
self = [super initWithWindowNibName:@"MATag"];
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
- (IBAction)toggleWindow:(id)sender
{
if ([self isWindowLoaded] && [[self window] isVisible]) {
[self close];
} else {
[[self window] orderFront:sender];
}
}
@end

View File

@ -52,8 +52,8 @@
<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="NSWindowRect">{{1887, 836}, {640, 496}}</string>
<int key="NSWTFlags">-1540357120</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">MAMovieWin</string>
<nil key="NSViewClass"/>
@ -78,8 +78,6 @@
</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>
@ -93,7 +91,6 @@
</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>
@ -191,6 +188,8 @@
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>3.IBNSWindowAutoPositionCentersHorizontal</string>
<string>3.IBNSWindowAutoPositionCentersVertical</string>
<string>3.IBPluginDependency</string>
<string>3.NSWindowTemplate.visibleAtLaunch</string>
<string>4.IBPluginDependency</string>
@ -201,6 +200,8 @@
<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>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>

602
Medianno/en.lproj/MATag.xib Normal file
View File

@ -0,0 +1,602 @@
<?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">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">1617</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSView</string>
<string>NSTableView</string>
<string>NSScrollView</string>
<string>NSWindowTemplate</string>
<string>NSArrayController</string>
<string>NSTextFieldCell</string>
<string>NSTableHeaderView</string>
<string>NSTableColumn</string>
<string>NSScroller</string>
<string>NSCustomObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</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">NSObject</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="1011577982">
<int key="NSWindowStyleMask">31</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{1636, 136}, {800, 450}}</string>
<int key="NSWTFlags">-1538259968</int>
<string key="NSWindowTitle">Window</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<string key="NSWindowContentMinSize">{250, 100}</string>
<object class="NSView" key="NSWindowView" id="19986666">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSScrollView" id="296418393">
<reference key="NSNextResponder" ref="19986666"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSClipView" id="43006809">
<reference key="NSNextResponder" ref="296418393"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableView" id="212334909">
<reference key="NSNextResponder" ref="43006809"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{806, 432}</string>
<reference key="NSSuperview" ref="43006809"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="233033100"/>
<string key="NSReuseIdentifierKey">_NS:1197</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="818285608">
<reference key="NSNextResponder" ref="687601302"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{806, 17}</string>
<reference key="NSSuperview" ref="687601302"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="43006809"/>
<string key="NSReuseIdentifierKey">_NS:1199</string>
<reference key="NSTableView" ref="212334909"/>
</object>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
<string key="NSReuseIdentifierKey">_NS:1202</string>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="162809630">
<double key="NSWidth">300</double>
<double key="NSMinWidth">150</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Name</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
<int key="NSfFlags">3100</int>
</object>
<object class="NSColor" key="NSBackgroundColor" id="610032441">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
</object>
<object class="NSColor" key="NSTextColor" id="226522986">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">headerTextColor</string>
<object class="NSColor" key="NSColor" id="933876370">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="450240365">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<object class="NSFont" key="NSSupport" id="162626674">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="212334909"/>
<object class="NSColor" key="NSBackgroundColor" id="589747492">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlBackgroundColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="502285848">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<reference key="NSColor" ref="933876370"/>
</object>
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
<bool key="NSIsEditable">YES</bool>
<reference key="NSTableView" ref="212334909"/>
</object>
<object class="NSTableColumn" id="494708966">
<double key="NSWidth">500</double>
<double key="NSMinWidth">100</double>
<double key="NSMaxWidth">100000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Notes</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="610032441"/>
<reference key="NSTextColor" ref="226522986"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="398329343">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="162626674"/>
<reference key="NSControlView" ref="212334909"/>
<reference key="NSBackgroundColor" ref="589747492"/>
<reference key="NSTextColor" ref="502285848"/>
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
<bool key="NSIsEditable">YES</bool>
<reference key="NSTableView" ref="212334909"/>
</object>
</object>
<double key="NSIntercellSpacingWidth">3</double>
<double key="NSIntercellSpacingHeight">2</double>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">gridColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
<double key="NSRowHeight">17</double>
<int key="NSTvFlags">-18841600</int>
<reference key="NSDelegate"/>
<reference key="NSDataSource"/>
<int key="NSGridStyleMask">1</int>
<int key="NSColumnAutoresizingStyle">1</int>
<int key="NSDraggingSourceMaskForLocal">15</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
<int key="NSTableViewDraggingDestinationStyle">0</int>
<int key="NSTableViewGroupRowStyle">1</int>
</object>
</object>
<string key="NSFrame">{{1, 17}, {798, 432}}</string>
<reference key="NSSuperview" ref="296418393"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="212334909"/>
<string key="NSReuseIdentifierKey">_NS:1195</string>
<reference key="NSDocView" ref="212334909"/>
<reference key="NSBGColor" ref="589747492"/>
<int key="NScvFlags">4</int>
</object>
<object class="NSScroller" id="233033100">
<reference key="NSNextResponder" ref="296418393"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="296418393"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="223796514"/>
<string key="NSReuseIdentifierKey">_NS:1214</string>
<reference key="NSTarget" ref="296418393"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">37</double>
<double key="NSPercent">0.1947367936372757</double>
</object>
<object class="NSScroller" id="223796514">
<reference key="NSNextResponder" ref="296418393"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{1, 434}, {798, 15}}</string>
<reference key="NSSuperview" ref="296418393"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:1216</string>
<bool key="NSEnabled">YES</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="296418393"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99007444168734493</double>
</object>
<object class="NSClipView" id="687601302">
<reference key="NSNextResponder" ref="296418393"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="818285608"/>
</object>
<string key="NSFrame">{{1, 0}, {798, 17}}</string>
<reference key="NSSuperview" ref="296418393"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="818285608"/>
<string key="NSReuseIdentifierKey">_NS:1200</string>
<reference key="NSDocView" ref="818285608"/>
<reference key="NSBGColor" ref="589747492"/>
<int key="NScvFlags">4</int>
</object>
</object>
<string key="NSFrameSize">{800, 450}</string>
<reference key="NSSuperview" ref="19986666"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="687601302"/>
<string key="NSReuseIdentifierKey">_NS:1193</string>
<int key="NSsFlags">133810</int>
<reference key="NSVScroller" ref="233033100"/>
<reference key="NSHScroller" ref="223796514"/>
<reference key="NSContentView" ref="43006809"/>
<reference key="NSHeaderClipView" ref="687601302"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
</object>
</object>
<string key="NSFrameSize">{800, 450}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="296418393"/>
<string key="NSReuseIdentifierKey">_NS:2837</string>
</object>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMinSize">{250, 116}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
<object class="NSArrayController" id="800890361">
<bool key="NSEditable">YES</bool>
<bool key="NSAutomaticallyPreparesContent">YES</bool>
<object class="_NSManagedProxy" key="_NSManagedProxy">
<string key="NSEntityName">MATagDescription</string>
</object>
<bool key="_NSIsUsingManagedProxy">YES</bool>
<bool key="NSPreservesSelection">YES</bool>
<bool key="NSSelectsInsertedObjects">YES</bool>
<bool key="NSFilterRestrictsInsertion">YES</bool>
<bool key="NSClearsFilterPredicateOnInsertion">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="IBBindingConnection" key="connection">
<string key="label">value: arrangedObjects.name</string>
<reference key="source" ref="162809630"/>
<reference key="destination" ref="800890361"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="162809630"/>
<reference key="NSDestination" ref="800890361"/>
<string key="NSLabel">value: arrangedObjects.name</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">arrangedObjects.name</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: arrangedObjects.notes</string>
<reference key="source" ref="494708966"/>
<reference key="destination" ref="800890361"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="494708966"/>
<reference key="NSDestination" ref="800890361"/>
<string key="NSLabel">value: arrangedObjects.notes</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">arrangedObjects.notes</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">18</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">displayPatternTitle1: currentDocument.displayName</string>
<reference key="source" ref="1011577982"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="1011577982"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">displayPatternTitle1: currentDocument.displayName</string>
<string key="NSBinding">displayPatternTitle1</string>
<string key="NSKeyPath">currentDocument.displayName</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSDisplayPattern</string>
<string key="NS.object.0">Annotations for %{title1}@</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">31</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">managedObjectContext: currentDocument.managedObjectContext</string>
<reference key="source" ref="800890361"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="800890361"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">managedObjectContext: currentDocument.managedObjectContext</string>
<string key="NSBinding">managedObjectContext</string>
<string key="NSKeyPath">currentDocument.managedObjectContext</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">32</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">textColor: arrangedObjects.self</string>
<reference key="source" ref="162809630"/>
<reference key="destination" ref="800890361"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="162809630"/>
<reference key="NSDestination" ref="800890361"/>
<string key="NSLabel">textColor: arrangedObjects.self</string>
<string key="NSBinding">textColor</string>
<string key="NSKeyPath">arrangedObjects.self</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">MAColorForTag</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">34</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">textColor: arrangedObjects.self</string>
<reference key="source" ref="494708966"/>
<reference key="destination" ref="800890361"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="494708966"/>
<reference key="NSDestination" ref="800890361"/>
<string key="NSLabel">textColor: arrangedObjects.self</string>
<string key="NSBinding">textColor</string>
<string key="NSKeyPath">arrangedObjects.self</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">MAColorForTag</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">37</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="1011577982"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="19986666"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="19986666"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="296418393"/>
</object>
<reference key="parent" ref="1011577982"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="800890361"/>
<reference key="parent" ref="0"/>
<string key="objectName">TagController</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="296418393"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="233033100"/>
<reference ref="818285608"/>
<reference ref="223796514"/>
<reference ref="212334909"/>
</object>
<reference key="parent" ref="19986666"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="233033100"/>
<reference key="parent" ref="296418393"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="818285608"/>
<reference key="parent" ref="296418393"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="223796514"/>
<reference key="parent" ref="296418393"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="212334909"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="162809630"/>
<reference ref="494708966"/>
</object>
<reference key="parent" ref="296418393"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="162809630"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="450240365"/>
</object>
<reference key="parent" ref="212334909"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="494708966"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="398329343"/>
</object>
<reference key="parent" ref="212334909"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="398329343"/>
<reference key="parent" ref="494708966"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="450240365"/>
<reference key="parent" ref="162809630"/>
</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>10.IBPluginDependency</string>
<string>11.IBPluginDependency</string>
<string>12.IBPluginDependency</string>
<string>13.IBPluginDependency</string>
<string>14.IBPluginDependency</string>
<string>15.IBPluginDependency</string>
<string>3.IBNSWindowAutoPositionCentersHorizontal</string>
<string>3.IBNSWindowAutoPositionCentersVertical</string>
<string>3.IBPluginDependency</string>
<string>3.NSWindowTemplate.visibleAtLaunch</string>
<string>4.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>7.IBPluginDependency</string>
<string>8.IBPluginDependency</string>
<string>9.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>
<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>
<boolean value="NO"/>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<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">
<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">37</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<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

@ -898,6 +898,15 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
<object class="NSMenuItem" id="858734773">
<reference key="NSMenu" ref="835318025"/>
<string key="NSTitle">Annotation Panel</string>
<string key="NSKeyEquiv">t</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>
@ -948,6 +957,9 @@
<object class="NSCustomObject" id="594697277">
<string key="NSClassName">MAMovieWindow</string>
</object>
<object class="NSCustomObject" id="627744460">
<string key="NSClassName">MATagWindow</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@ -1424,6 +1436,22 @@
</object>
<int key="connectionID">610</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleWindow:</string>
<reference key="source" ref="627744460"/>
<reference key="destination" ref="858734773"/>
</object>
<int key="connectionID">614</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">tagPanel</string>
<reference key="source" ref="114381833"/>
<reference key="destination" ref="627744460"/>
</object>
<int key="connectionID">615</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -1840,6 +1868,7 @@
<reference ref="575023229"/>
<reference ref="1011231497"/>
<reference ref="801150906"/>
<reference ref="858734773"/>
</object>
<reference key="parent" ref="713487014"/>
</object>
@ -2152,6 +2181,17 @@
<reference key="parent" ref="0"/>
<string key="objectName">Movie Panel</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">611</int>
<reference key="object" ref="858734773"/>
<reference key="parent" ref="835318025"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">613</int>
<reference key="object" ref="627744460"/>
<reference key="parent" ref="0"/>
<string key="objectName">Tag Panel</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -2253,6 +2293,8 @@
<string>596.IBPluginDependency</string>
<string>600.IBPluginDependency</string>
<string>602.IBPluginDependency</string>
<string>611.IBPluginDependency</string>
<string>613.IBPluginDependency</string>
<string>72.IBPluginDependency</string>
<string>73.IBPluginDependency</string>
<string>74.IBPluginDependency</string>
@ -2373,6 +2415,8 @@
<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">
@ -2387,7 +2431,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">610</int>
<int key="maxID">615</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -2414,14 +2458,35 @@
<string key="className">MAAppController</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">moviePanel</string>
<string key="NS.object.0">MAMovieWindow</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>moviePanel</string>
<string>tagPanel</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>MAMovieWindow</string>
<string>MATagWindow</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">moviePanel</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">moviePanel</string>
<string key="candidateClassName">MAMovieWindow</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>moviePanel</string>
<string>tagPanel</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">moviePanel</string>
<string key="candidateClassName">MAMovieWindow</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">tagPanel</string>
<string key="candidateClassName">MATagWindow</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@ -2615,6 +2680,25 @@
<string key="minorKey">./Classes/MAMovieWindow.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MATagWindow</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">toggleWindow:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">toggleWindow:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">toggleWindow:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/MATagWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>