From 33a9854b0ccaf826a276e0a26d46bcb9883a0704 Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Fri, 12 Aug 2011 02:00:37 +0200 Subject: [PATCH] Added MAAddMediaSheet --- Medianno.xcodeproj/project.pbxproj | 86 ++- Medianno/MAAddMediaSheet.h | 24 + Medianno/MAAddMediaSheet.mm | 63 ++ Medianno/MAAppController.h | 21 + Medianno/MAAppController.mm | 44 ++ Medianno/MADocWindow.mm | 11 +- Medianno/MADocument.h | 2 + Medianno/MADocument.mm | 14 +- Medianno/en.lproj/MAAddMedia.xib | 1025 ++++++++++++++++++++++++++++ 9 files changed, 1270 insertions(+), 20 deletions(-) create mode 100644 Medianno/MAAddMediaSheet.h create mode 100644 Medianno/MAAddMediaSheet.mm create mode 100644 Medianno/MAAppController.h create mode 100644 Medianno/MAAppController.mm create mode 100644 Medianno/en.lproj/MAAddMedia.xib diff --git a/Medianno.xcodeproj/project.pbxproj b/Medianno.xcodeproj/project.pbxproj index d87559c..674de4c 100644 --- a/Medianno.xcodeproj/project.pbxproj +++ b/Medianno.xcodeproj/project.pbxproj @@ -23,6 +23,9 @@ 950BB6A013F2C6B400D8E669 /* MAMedia.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB69F13F2C6B400D8E669 /* MAMedia.mm */; }; 950BB6A313F2C6B400D8E669 /* MATagDescription.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB6A213F2C6B400D8E669 /* MATagDescription.mm */; }; 950BB78613F2D95500D8E669 /* MADocWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB78513F2D95500D8E669 /* MADocWindow.mm */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -52,6 +55,11 @@ 950BB6A213F2C6B400D8E669 /* MATagDescription.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MATagDescription.mm; sourceTree = ""; }; 950BB78413F2D95500D8E669 /* MADocWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MADocWindow.h; sourceTree = ""; }; 950BB78513F2D95500D8E669 /* MADocWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MADocWindow.mm; sourceTree = ""; }; + 950BB7A613F467A400D8E669 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MAAddMedia.xib; sourceTree = ""; }; + 950BB7A813F46BAF00D8E669 /* MAAddMediaSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAAddMediaSheet.h; sourceTree = ""; }; + 950BB7A913F46BAF00D8E669 /* MAAddMediaSheet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAAddMediaSheet.mm; sourceTree = ""; }; + 950BB7AB13F46ECF00D8E669 /* MAAppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAAppController.h; sourceTree = ""; }; + 950BB7AC13F46ECF00D8E669 /* MAAppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAAppController.mm; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -98,23 +106,9 @@ 950BB67013F1F26200D8E669 /* Medianno */ = { isa = PBXGroup; children = ( - 950BB67C13F1F26200D8E669 /* MADocument.h */, - 950BB67D13F1F26200D8E669 /* MADocument.mm */, - 950BB6A113F2C6B400D8E669 /* MATagDescription.h */, - 950BB6A213F2C6B400D8E669 /* MATagDescription.mm */, - 950BB69E13F2C6B400D8E669 /* MAMedia.h */, - 950BB69F13F2C6B400D8E669 /* MAMedia.mm */, - 950BB69B13F2C6B400D8E669 /* MAAnno.h */, - 950BB69C13F2C6B400D8E669 /* MAAnno.mm */, - 950BB69813F2C6B400D8E669 /* MATag.h */, - 950BB69913F2C6B400D8E669 /* MATag.mm */, - 950BB69513F2C6B300D8E669 /* MAFolder.h */, - 950BB69613F2C6B300D8E669 /* MAFolder.mm */, - 950BB67F13F1F26200D8E669 /* MADocument.xib */, - 950BB78413F2D95500D8E669 /* MADocWindow.h */, - 950BB78513F2D95500D8E669 /* MADocWindow.mm */, - 950BB68213F1F26200D8E669 /* MainMenu.xib */, - 950BB68513F1F26200D8E669 /* MADocument.xcdatamodeld */, + 950BB7B013F4803500D8E669 /* Classes */, + 950BB7AF13F4801A00D8E669 /* Data Model */, + 950BB7AE13F47FCA00D8E669 /* Resources */, 950BB67113F1F26200D8E669 /* Supporting Files */, ); path = Medianno; @@ -132,6 +126,50 @@ name = "Supporting Files"; sourceTree = ""; }; + 950BB7AE13F47FCA00D8E669 /* Resources */ = { + isa = PBXGroup; + children = ( + 950BB67F13F1F26200D8E669 /* MADocument.xib */, + 950BB7A513F467A400D8E669 /* MAAddMedia.xib */, + 950BB68213F1F26200D8E669 /* MainMenu.xib */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 950BB7AF13F4801A00D8E669 /* Data Model */ = { + isa = PBXGroup; + children = ( + 950BB68513F1F26200D8E669 /* MADocument.xcdatamodeld */, + ); + name = "Data Model"; + sourceTree = ""; + }; + 950BB7B013F4803500D8E669 /* Classes */ = { + isa = PBXGroup; + children = ( + 950BB67C13F1F26200D8E669 /* MADocument.h */, + 950BB67D13F1F26200D8E669 /* MADocument.mm */, + 950BB6A113F2C6B400D8E669 /* MATagDescription.h */, + 950BB6A213F2C6B400D8E669 /* MATagDescription.mm */, + 950BB69E13F2C6B400D8E669 /* MAMedia.h */, + 950BB69F13F2C6B400D8E669 /* MAMedia.mm */, + 950BB69B13F2C6B400D8E669 /* MAAnno.h */, + 950BB69C13F2C6B400D8E669 /* MAAnno.mm */, + 950BB69813F2C6B400D8E669 /* MATag.h */, + 950BB69913F2C6B400D8E669 /* MATag.mm */, + 950BB7A813F46BAF00D8E669 /* MAAddMediaSheet.h */, + 950BB7A913F46BAF00D8E669 /* MAAddMediaSheet.mm */, + 950BB7AB13F46ECF00D8E669 /* MAAppController.h */, + 950BB7AC13F46ECF00D8E669 /* MAAppController.mm */, + 950BB69513F2C6B300D8E669 /* MAFolder.h */, + 950BB69613F2C6B300D8E669 /* MAFolder.mm */, + 950BB78413F2D95500D8E669 /* MADocWindow.h */, + 950BB78513F2D95500D8E669 /* MADocWindow.mm */, + ); + name = Classes; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -186,6 +224,7 @@ 950BB67B13F1F26200D8E669 /* Credits.rtf in Resources */, 950BB68113F1F26200D8E669 /* MADocument.xib in Resources */, 950BB68413F1F26200D8E669 /* MainMenu.xib in Resources */, + 950BB7A713F467A400D8E669 /* MAAddMedia.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -205,6 +244,8 @@ 950BB6A013F2C6B400D8E669 /* MAMedia.mm in Sources */, 950BB6A313F2C6B400D8E669 /* MATagDescription.mm in Sources */, 950BB78613F2D95500D8E669 /* MADocWindow.mm in Sources */, + 950BB7AA13F46BAF00D8E669 /* MAAddMediaSheet.mm in Sources */, + 950BB7AD13F46ECF00D8E669 /* MAAppController.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -233,6 +274,7 @@ 950BB68013F1F26200D8E669 /* en */, ); name = MADocument.xib; + path = Medianno; sourceTree = ""; }; 950BB68213F1F26200D8E669 /* MainMenu.xib */ = { @@ -241,6 +283,16 @@ 950BB68313F1F26200D8E669 /* en */, ); name = MainMenu.xib; + path = Medianno; + sourceTree = ""; + }; + 950BB7A513F467A400D8E669 /* MAAddMedia.xib */ = { + isa = PBXVariantGroup; + children = ( + 950BB7A613F467A400D8E669 /* en */, + ); + name = MAAddMedia.xib; + path = Medianno; sourceTree = ""; }; /* End PBXVariantGroup section */ diff --git a/Medianno/MAAddMediaSheet.h b/Medianno/MAAddMediaSheet.h new file mode 100644 index 0000000..33ba3d8 --- /dev/null +++ b/Medianno/MAAddMediaSheet.h @@ -0,0 +1,24 @@ +// +// MAAddMediaSheet.h +// Medianno +// +// Created by Matthias Neeracher on 8/11/11. +// Copyright 2011 Apple Computer. All rights reserved. +// + +#import + +typedef void (^MAAddMediaBlock)(NSURL * url, NSDate * date); + +@interface MAAddMediaSheet : NSWindowController { +} + +@property (readonly) NSArray * urls; +@property (readonly) NSArray * dates; +@property BOOL copyMedia; + +- (void)runWithParentWindow:(NSWindow *)win media:(NSArray *)urls addMedia:(MAAddMediaBlock)block; + +- (IBAction)useModificationDates:(id)sender; + +@end diff --git a/Medianno/MAAddMediaSheet.mm b/Medianno/MAAddMediaSheet.mm new file mode 100644 index 0000000..6ca63b5 --- /dev/null +++ b/Medianno/MAAddMediaSheet.mm @@ -0,0 +1,63 @@ +// +// MAAddMediaSheet.mm +// Medianno +// +// Created by Matthias Neeracher on 8/11/11. +// Copyright 2011 Apple Computer. All rights reserved. +// + +#import "MAAddMediaSheet.h" +#import "MAAppController.h" + +@implementation MAAddMediaSheet + +@synthesize urls, dates, copyMedia; + +- (id)init +{ + self = [super initWithWindowNibName:@"MAAddMedia"]; + + copyMedia = YES; + + return self; +} + +- (void)runWithParentWindow:(NSWindow *)win media:(NSArray *)mediaUrls addMedia:(MAAddMediaBlock)block +{ + urls = [mediaUrls retain]; + [self useModificationDates:self]; + [NSApp beginSheet:[self window] modalForWindow:win didEndBlock:^(NSInteger returnCode) { + if (returnCode == NSAlertFirstButtonReturn) { + [urls enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + block(obj, [dates objectAtIndex:idx]); + }]; + } + [[self window] orderOut:self]; + [self autorelease]; + }]; +} + +- (void)dealloc +{ + [urls release]; + [dates release]; +} + +- (IBAction)useModificationDates:(id)sender +{ + NSMutableArray * newDates = [[NSMutableArray alloc] initWithCapacity:[urls count]]; + for (NSURL * url in urls) { + NSDate * modificationDate; + [url getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:nil]; + [newDates addObject:(modificationDate ? modificationDate : [NSDate date])]; + } + [dates release]; + dates = newDates; +} + +- (IBAction)endSheet:(id)sender +{ + [NSApp endSheet:[self window] returnCode:[sender tag]]; +} + +@end diff --git a/Medianno/MAAppController.h b/Medianno/MAAppController.h new file mode 100644 index 0000000..d0312c4 --- /dev/null +++ b/Medianno/MAAppController.h @@ -0,0 +1,21 @@ +// +// MAAppController.h +// Medianno +// +// Created by Matthias Neeracher on 8/11/11. +// Copyright 2011 Apple Computer. All rights reserved. +// + +#import + +typedef void (^MASheetBlock)(NSInteger returnCode); + +@interface NSApplication (SheetAdditions) + +- (void)beginSheet: (NSWindow *)sheet modalForWindow:(NSWindow *)docWindow didEndBlock: (MASheetBlock)block; + +@end + +@interface MAAppController : NSObject + +@end diff --git a/Medianno/MAAppController.mm b/Medianno/MAAppController.mm new file mode 100644 index 0000000..5055f56 --- /dev/null +++ b/Medianno/MAAppController.mm @@ -0,0 +1,44 @@ +// +// MAAppController.mm +// Medianno +// +// Created by Matthias Neeracher on 8/11/11. +// Copyright 2011 Apple Computer. All rights reserved. +// + +#import "MAAppController.h" + + +@implementation NSApplication (SheetAdditions) + +- (void)beginSheet: (NSWindow *)sheet modalForWindow:(NSWindow *)docWindow didEndBlock: (MASheetBlock)block +{ + [self beginSheet: sheet + modalForWindow: docWindow + modalDelegate: self + didEndSelector: @selector(my_blockSheetDidEnd:returnCode:contextInfo:) + contextInfo: [block copy]]; +} + +- (void)my_blockSheetDidEnd: (NSWindow *)sheet returnCode: (NSInteger)returnCode contextInfo: (void *)contextInfo +{ + MASheetBlock block = (MASheetBlock)contextInfo; + block(returnCode); + [block release]; +} + +@end + +@implementation MAAppController + +- (id)init +{ + self = [super init]; + if (self) { + // Initialization code here. + } + + return self; +} + +@end diff --git a/Medianno/MADocWindow.mm b/Medianno/MADocWindow.mm index 0120950..4d2059a 100644 --- a/Medianno/MADocWindow.mm +++ b/Medianno/MADocWindow.mm @@ -6,9 +6,12 @@ // Copyright 2011 Apple Computer. All rights reserved. // -#import "MADocWindow.h" #import +#import "MADocWindow.h" +#import "MAAddMediaSheet.h" +#import "MADocument.h" + @implementation MADocWindow - (id)initWithWindow:(NSWindow *)window @@ -37,6 +40,7 @@ [openPanel setAllowsMultipleSelection:YES]; [openPanel setCanChooseDirectories:YES]; [openPanel beginSheetModalForWindow:[self window] completionHandler:^(NSInteger result) { + [openPanel orderOut:self]; if (result == NSFileHandlingPanelOKButton) [self addMedia:[openPanel URLs]]; }]; @@ -76,7 +80,10 @@ } [expandedURLs addObject:url]; } - NSLog(@"Adding %@\n", expandedURLs); + MADocument * doc = [self document]; + [[[MAAddMediaSheet alloc] init] runWithParentWindow:[self window] media:expandedURLs addMedia:^(NSURL *url,NSDate *date) { + [doc addMediaURL:url date:date]; + }]; } @end diff --git a/Medianno/MADocument.h b/Medianno/MADocument.h index 9ee5de0..bcf1e80 100644 --- a/Medianno/MADocument.h +++ b/Medianno/MADocument.h @@ -12,4 +12,6 @@ } +- (void)addMediaURL:(NSURL *)url date:(NSDate *)date; + @end diff --git a/Medianno/MADocument.mm b/Medianno/MADocument.mm index b0a7fae..5ea2e9f 100644 --- a/Medianno/MADocument.mm +++ b/Medianno/MADocument.mm @@ -9,6 +9,7 @@ #import "MADocument.h" #import "MADocWindow.h" #import "MAFolder.h" +#import "MAMedia.h" #pragma mark NSPersistentDocument file URL hook @@ -160,7 +161,7 @@ static NSString *StoreFileName = @"MediannoDB.sql"; NSString *filePath = [inAbsoluteURL path]; // Depending on the type of save operation: - if (inSaveOperation == NSSaveAsOperation) { + if (inSaveOperation == NSSaveAsOperation || inSaveOperation == NSAutosaveElsewhereOperation) { // Nothing exists at the URL: set up the directory and migrate the Core Data store. filewrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil]; @@ -223,5 +224,16 @@ static NSString *StoreFileName = @"MediannoDB.sql"; return [super revertToContentsOfURL:inAbsoluteURL ofType:inTypeName error:outError]; } +#pragma mark - +#pragma mark Media management + +- (void)addMediaURL:(NSURL *)url date:(NSDate *)date +{ + NSManagedObjectContext *moc = [self managedObjectContext]; + MAMedia * media = [NSEntityDescription insertNewObjectForEntityForName:@"MAMedia" inManagedObjectContext:moc]; + media.media = [url path]; + media.date = [date timeIntervalSince1970]; + [moc processPendingChanges]; +} @end diff --git a/Medianno/en.lproj/MAAddMedia.xib b/Medianno/en.lproj/MAAddMedia.xib new file mode 100644 index 0000000..4f8fd27 --- /dev/null +++ b/Medianno/en.lproj/MAAddMedia.xib @@ -0,0 +1,1025 @@ + + + + 1070 + 11A511 + 1617 + 1138 + 566.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1617 + + + YES + NSTextField + NSUserDefaultsController + NSScroller + NSTableHeaderView + NSButton + NSPopUpButton + NSScrollView + NSTextFieldCell + NSButtonCell + NSMenu + NSMenuItem + NSTableView + NSDateFormatter + NSArrayController + NSCustomObject + NSView + NSWindowTemplate + NSTableColumn + NSPopUpButtonCell + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + + + YES + + MAAddMediaSheet + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{196, 240}, {781, 490}} + 813170688 + Window + NSPanel + + + + + 256 + + YES + + + 289 + {{660, 12}, {107, 32}} + + + + _NS:161 + 1000 + YES + + 67239424 + 134217728 + Add Media + + LucidaGrande + 13 + 1044 + + _NS:161 + + -2038284033 + 129 + + DQ + 200 + 25 + + + + + 289 + {{578, 12}, {82, 32}} + + + + _NS:161 + 1001 + YES + + 67239424 + 134217728 + Cancel + + _NS:161 + + -2038284033 + 129 + + Gw + 200 + 25 + + + + + 268 + + YES + + + 2304 + + YES + + + 256 + {781, 380} + + + + _NS:1197 + YES + + + 256 + {781, 17} + + + + _NS:1199 + + + + + -2147483392 + {{224, 0}, {16, 17}} + _NS:1202 + + + YES + + 636.44140625 + 40 + 1000 + + 75628096 + 2048 + Name + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + + + + 139 + 40 + 1000 + + 75628096 + 2048 + Date + + + + + + 337772096 + -2147481600 + Text Cell + + + + YES + + YES + dateFormat + dateStyle + doesRelativeDateFormatting + formatterBehavior + timeStyle + + + YES + yyyy-MM-dd H:mm + + + + + + + yyyy-MM-dd H:mm + NO + + + + + + 3 + YES + + + + 3 + 2 + + 3 + MQA + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -700448768 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {781, 380}} + + + + _NS:1195 + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + _NS:1214 + + _doScroller: + 37 + 0.1947367936372757 + + + + -2147483392 + {{1, 119}, {223, 15}} + + + + _NS:1216 + 1 + + _doScroller: + 0.57142859697341919 + + + + 2304 + + YES + + + {{1, 0}, {781, 17}} + + + + _NS:1200 + + + 4 + + + {{-1, 54}, {783, 398}} + + + + _NS:1193 + 133682 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{625, 458}, {138, 18}} + + + + _NS:239 + YES + + -2080244224 + 0 + Copy to Collection + + _NS:239 + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{137, 456}, {371, 26}} + + + + _NS:179 + YES + + -2076049856 + 2048 + + _NS:179 + + 109199615 + 129 + + + 400 + 75 + + + Modification Date + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + YES + YES + + + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{17, 462}, {118, 17}} + + + + _NS:3936 + YES + + 68288064 + 272630784 + Derive Date From: + + _NS:3936 + + + 6 + System + controlColor + + + + + + + {781, 490} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + YES + + + + YES + pathExtension + + NSURL + + YES + YES + YES + YES + YES + + + NSDate + + YES + YES + YES + YES + YES + + + + + YES + + + window + + + + 40 + + + + endSheet: + + + + 41 + + + + endSheet: + + + + 42 + + + + contentArray: urls + + + + + + contentArray: urls + contentArray + urls + 2 + + + 46 + + + + contentArray: dates + + + + + + contentArray: dates + contentArray + dates + 2 + + + 49 + + + + value: arrangedObjects + + + + + + value: arrangedObjects + value + arrangedObjects + + YES + + YES + NSAllowsEditingMultipleValuesSelection + NSRaisesForNotApplicableKeys + + + YES + + + + + 2 + + + 65 + + + + value: arrangedObjects.pathExtension + + + + + + value: arrangedObjects.pathExtension + value + arrangedObjects.pathExtension + + YES + + YES + NSAllowsEditingMultipleValuesSelection + NSConditionallySetsEditable + NSRaisesForNotApplicableKeys + + + YES + + + + + + 2 + + + 66 + + + + value: copyMedia + + + + + + value: copyMedia + value + copyMedia + 2 + + + 68 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + + + 2 + + + YES + + + + + + + + + + + 3 + + + YES + + + + + + 4 + + + + + 5 + + + YES + + + + + + 6 + + + + + 7 + + + YES + + + + + + + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + YES + + + + + + + 12 + + + YES + + + + + + 13 + + + YES + + + + + + 14 + + + YES + + + + + + 15 + + + + + 16 + + + YES + + + + + + 17 + + + + + 18 + + + YES + + + + + + 19 + + + YES + + + + + + 20 + + + YES + + + + + + + 21 + + + + + 25 + + + YES + + + + + + 26 + + + + + 27 + + + + + 28 + + + + + 32 + + + + + 43 + + + URLs + + + 44 + + + Dates + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 1.IBPluginDependency + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 10.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 13.IBPluginDependency + 14.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 17.IBPluginDependency + 18.IBPluginDependency + 19.IBPluginDependency + 2.IBPluginDependency + 20.IBPluginDependency + 21.IBPluginDependency + 25.IBPluginDependency + 26.IBPluginDependency + 27.IBPluginDependency + 28.IBDateFormatterBehaviorMetadataKey + 28.IBPluginDependency + 3.IBPluginDependency + 32.IBPluginDependency + 4.IBPluginDependency + 43.IBPluginDependency + 44.IBPluginDependency + 5.IBPluginDependency + 6.IBPluginDependency + 7.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{357, 418}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 68 + + + + YES + + MAAddMediaSheet + NSWindowController + + useModificationDates: + id + + + useModificationDates: + + useModificationDates: + id + + + + IBProjectSource + ./Classes/MAAddMediaSheet.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {9, 8} + {7, 2} + {15, 15} + + + +