Date parsing works, but too many false positives

This commit is contained in:
Matthias Neeracher 2011-08-24 18:25:23 +02:00
parent e9e87825ed
commit 5f00a54b60
7 changed files with 376 additions and 50 deletions

View File

@ -26,6 +26,7 @@
950BB7AA13F46BAF00D8E669 /* MAAddMediaSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB7A913F46BAF00D8E669 /* MAAddMediaSheet.mm */; };
950BB7AD13F46ECF00D8E669 /* MAAppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 950BB7AC13F46ECF00D8E669 /* MAAppController.mm */; };
9556F185140426EB00B81D2E /* MAToolbarButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9556F184140426EB00B81D2E /* MAToolbarButton.mm */; };
958AAE3414052FC600365087 /* DateHypotheses.plist in Resources */ = {isa = PBXBuildFile; fileRef = 958AAE3314052FC600365087 /* DateHypotheses.plist */; };
95BCFA2113F76A04000F650F /* app.icns in Resources */ = {isa = PBXBuildFile; fileRef = 95BCFA1F13F76A04000F650F /* app.icns */; };
95BCFA2213F76A04000F650F /* doc.icns in Resources */ = {isa = PBXBuildFile; fileRef = 95BCFA2013F76A04000F650F /* doc.icns */; };
95BCFA2E13F8A3AD000F650F /* MAShortenQTTime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95BCFA2D13F8A3AD000F650F /* MAShortenQTTime.mm */; };
@ -80,6 +81,7 @@
950BB7AC13F46ECF00D8E669 /* MAAppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAAppController.mm; sourceTree = "<group>"; };
9556F183140426EB00B81D2E /* MAToolbarButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAToolbarButton.h; sourceTree = "<group>"; };
9556F184140426EB00B81D2E /* MAToolbarButton.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MAToolbarButton.mm; sourceTree = "<group>"; };
958AAE3314052FC600365087 /* DateHypotheses.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = DateHypotheses.plist; path = Medianno/Resources/DateHypotheses.plist; sourceTree = "<group>"; };
95BCFA1F13F76A04000F650F /* app.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = app.icns; path = Resources/app.icns; sourceTree = "<group>"; };
95BCFA2013F76A04000F650F /* doc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = doc.icns; path = Resources/doc.icns; sourceTree = "<group>"; };
95BCFA2C13F8A3AD000F650F /* MAShortenQTTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MAShortenQTTime.h; sourceTree = "<group>"; };
@ -164,16 +166,6 @@
950BB67113F1F26200D8E669 /* Supporting Files */ = {
isa = PBXGroup;
children = (
95D803AE140355E6000C0779 /* custom.icns */,
95D803AF140355E6000C0779 /* print.icns */,
95D803AC1403505F000C0779 /* del.icns */,
95D803AA14034E5F000C0779 /* anno.icns */,
95D803A1140344CF000C0779 /* fwd.icns */,
95D803A2140344CF000C0779 /* pause.icns */,
95D803A3140344CF000C0779 /* play.icns */,
95D803A4140344CF000C0779 /* rev.icns */,
95BCFA1F13F76A04000F650F /* app.icns */,
95BCFA2013F76A04000F650F /* doc.icns */,
950BB67213F1F26200D8E669 /* Medianno-Info.plist */,
950BB67313F1F26200D8E669 /* InfoPlist.strings */,
950BB67613F1F26200D8E669 /* main.m */,
@ -187,11 +179,13 @@
950BB7AE13F47FCA00D8E669 /* Resources */ = {
isa = PBXGroup;
children = (
958AAE3214052F7400365087 /* Icons */,
950BB67F13F1F26200D8E669 /* MADocument.xib */,
950BB7A513F467A400D8E669 /* MAAddMedia.xib */,
950BB68213F1F26200D8E669 /* MainMenu.xib */,
95E2027F13FE9C6C00369B31 /* MAMovie.xib */,
95CB6973140012FE005A0346 /* MATag.xib */,
958AAE3314052FC600365087 /* DateHypotheses.plist */,
);
name = Resources;
path = ..;
@ -244,6 +238,24 @@
name = Classes;
sourceTree = "<group>";
};
958AAE3214052F7400365087 /* Icons */ = {
isa = PBXGroup;
children = (
95D803AE140355E6000C0779 /* custom.icns */,
95D803AF140355E6000C0779 /* print.icns */,
95D803AC1403505F000C0779 /* del.icns */,
95D803AA14034E5F000C0779 /* anno.icns */,
95D803A1140344CF000C0779 /* fwd.icns */,
95D803A2140344CF000C0779 /* pause.icns */,
95D803A3140344CF000C0779 /* play.icns */,
95D803A4140344CF000C0779 /* rev.icns */,
95BCFA1F13F76A04000F650F /* app.icns */,
95BCFA2013F76A04000F650F /* doc.icns */,
);
name = Icons;
path = Medianno;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -313,6 +325,7 @@
95D803AD1403505F000C0779 /* del.icns in Resources */,
95D803B0140355E6000C0779 /* custom.icns in Resources */,
95D803B1140355E6000C0779 /* print.icns in Resources */,
958AAE3414052FC600365087 /* DateHypotheses.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -9,12 +9,16 @@
#import <Cocoa/Cocoa.h>
@interface MAAddMediaSheet : NSWindowController {
IBOutlet NSMenu * dateFormatMenu;
}
@property (readonly) NSArray * media;
@property (readonly) NSArray * media;
@property (readonly) NSArray * dateFormats;
@property (assign) NSDictionary * selectedDateFormat;
- (void)runWithParentWindow:(NSWindowController *)parent media:(NSArray *)urls;
- (IBAction)useModificationDates:(id)sender;
- (IBAction)useFileNameDates:(id)sender;
@end

View File

@ -12,17 +12,62 @@
@implementation MAAddMediaSheet
@synthesize media;
static NSArray * sDateHypotheses;
@synthesize media, dateFormats, selectedDateFormat;
- (id)init
{
self = [super initWithWindowNibName:@"MAAddMedia"];
if (!sDateHypotheses)
sDateHypotheses = [[NSArray alloc] initWithContentsOfURL:
[[NSBundle mainBundle] URLForResource:@"DateHypotheses" withExtension:@"plist"]];
return self;
}
- (void)guessDateFormats:(NSArray *)urls
{
[self window];
[self willChangeValueForKey:@"dateFormats"];
[dateFormats release];
dateFormats = nil;
while ([dateFormatMenu numberOfItems] > 2)
[dateFormatMenu removeItemAtIndex:2];
if (![urls count])
return;
NSMutableArray * formats = [NSMutableArray array];
NSString * fileName = [[[urls objectAtIndex:0] lastPathComponent] stringByDeletingPathExtension];
NSRange nameRange= NSMakeRange(0, [fileName length]);
for (NSDictionary * hypo in sDateHypotheses) {
NSRegularExpression * regexp =
[NSRegularExpression regularExpressionWithPattern:[hypo objectForKey:@"regexp"] options:0 error:nil];
NSTextCheckingResult* match = [regexp firstMatchInString:fileName options:0 range:nameRange];
if (match && [match range].location != NSNotFound) {
for (NSString * format in [hypo objectForKey:@"formats"]) {
NSString * dateFormat = [regexp replacementStringForResult:match inString:fileName offset:0 template:format];
NSString * dateTitle = [NSString stringWithFormat:NSLocalizedString(@"File Name Date", @"File Name yyyy-mm-dd"), dateFormat];
NSMenuItem * item = [dateFormatMenu addItemWithTitle:dateTitle action:@selector(useFileNameDates:) keyEquivalent:@""];
[item setTag:[formats count]];
[formats addObject:[NSDictionary dictionaryWithObjectsAndKeys:
dateFormat, @"format",
regexp, @"regexp",
nil]];
}
}
}
if ([formats count] > 0)
dateFormats = [formats retain];
[self didChangeValueForKey:@"dateFormats"];
}
- (void)runWithParentWindow:(NSWindowController *)parent media:(NSArray *)mediaUrls
{
[self guessDateFormats:mediaUrls];
NSMutableArray * m = [[NSMutableArray alloc] initWithCapacity:[mediaUrls count]];
for (NSURL * url in mediaUrls)
[m addObject:[NSMutableDictionary dictionaryWithObject:url forKey:@"url"]];
@ -47,11 +92,46 @@
- (IBAction)useModificationDates:(id)sender
{
[self setSelectedDateFormat:nil];
[self willChangeValueForKey:@"media"];
for (NSMutableDictionary * m in media) {
NSDate * modificationDate;
[[m objectForKey:@"url"] getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:nil];
if (![[m objectForKey:@"url"] getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:nil])
modificationDate = nil;
[m setObject:(modificationDate ? modificationDate : [NSDate date]) forKey:@"date"];
}
[self didChangeValueForKey:@"media"];
}
- (IBAction)useFileNameDates:(id)sender
{
[self setSelectedDateFormat:[dateFormats objectAtIndex:[sender tag]]];
NSRegularExpression * regexp = [selectedDateFormat objectForKey:@"regexp"];
NSString * format = [selectedDateFormat objectForKey:@"format"];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:format];
[self willChangeValueForKey:@"media"];
for (NSMutableDictionary * m in media) {
NSString * name = [[[m objectForKey:@"url"] lastPathComponent] stringByDeletingPathExtension];
NSTextCheckingResult * match= [regexp firstMatchInString:name options:0 range:NSMakeRange(0, [name length])];
NSDate * modificationDate = nil;
if (match && [match range].location != NSNotFound) {
//
// First and last capture is for leading and trailing context
//
NSRange dateRange = [match rangeAtIndex:1];
dateRange.location += dateRange.length;
dateRange.length = [match rangeAtIndex:[match numberOfRanges]-1].location - dateRange.location;
NSString * dateString = [name substringWithRange:dateRange];
modificationDate = [formatter dateFromString:dateString];
}
if (!modificationDate)
if (![[m objectForKey:@"url"] getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:nil])
modificationDate = nil;
[m setObject:(modificationDate ? modificationDate : [NSDate date]) forKey:@"date"];
}
[self didChangeValueForKey:@"media"];
}
- (IBAction)endSheet:(id)sender

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d\d\d(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D?)\d\d(\s+)[APap][mM](\W.*|)$</string>
<key>comment</key>
<string>4 digit year, seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yyyy$2dd$3mm$4hh$5mm$6ss$7a</string>
<string>yyyy$2mm$3dd$4hh$5mm$6ss$7a</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d\d\d(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\s+)[APap][mM](\W.*|)$</string>
<key>comment</key>
<string>4 digit year, no seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yyyy$2dd$3mm$4hh$5mm$6a</string>
<string>yyyy$2mm$3dd$4hh$5mm$6a</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d\d\d(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D?)\d\d(\D.*|)$</string>
<key>comment</key>
<string>4 digit year, seconds, no AM/PM</string>
<key>formats</key>
<array>
<string>yyyy$2dd$3mm$4hh$5mm$6ss</string>
<string>yyyy$2mm$3dd$4hh$5mm$6ss</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d\d\d(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D.*|)$</string>
<key>comment</key>
<string>4 digit year, no seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yyyy$2dd$3mm$4hh$5mm</string>
<string>yyyy$2mm$3dd$4hh$5mm</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d\d\d(\D{0,2})\d\d(\D{0,2})\d\d(\D.*|)$</string>
<key>comment</key>
<string>4 digit year, date only</string>
<key>formats</key>
<array>
<string>yyyy$2dd$3mm</string>
<string>yyyy$2mm$3dd</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d?(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D?)\d\d(\s+)[APap][mM](\W.*|)$</string>
<key>comment</key>
<string>2 digit year, seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yy$2dd$3mm$4hh$5mm$6ss$7a</string>
<string>yy$2mm$3dd$4hh$5mm$6ss$7a</string>
<string>mm$2dd$3yy$4hh$5mm$6ss$7a</string>
<string>dd$2mm$3yy$4hh$5mm$6ss$7a</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d?(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\s+)[APap][mM](\W.*|)$</string>
<key>comment</key>
<string>2 digit year, no seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yy$2dd$3mm$4hh$5mm$6a</string>
<string>yy$2mm$3dd$4hh$5mm$6a</string>
<string>mm$2dd$3yy$4hh$5mm$6a</string>
<string>dd$2mm$3yy$4hh$5mm$6a</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d?(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D?)\d\d(\D.*|)$</string>
<key>comment</key>
<string>2 digit year, seconds, no AM/PM</string>
<key>formats</key>
<array>
<string>yy$2dd$3mm$4hh$5mm$6ss</string>
<string>yy$2mm$3dd$4hh$5mm$6ss</string>
<string>mm$2dd$3yy$4hh$5mm$6ss</string>
<string>dd$2mm$3yy$4hh$5mm$6ss</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d?(\D{0,2})\d\d?(\D{0,2})\d\d?(\D?\s\D?)\d\d?(\D?)\d\d(\D.*|)$</string>
<key>comment</key>
<string>2 digit year, no seconds, AM/PM</string>
<key>formats</key>
<array>
<string>yy$2dd$3mm$4hh$5mm</string>
<string>yy$2mm$3dd$4hh$5mm</string>
<string>mm$2dd$3yy$4hh$5mm</string>
<string>dd$2mm$3yy$4hh$5mm</string>
</array>
</dict>
<dict>
<key>regexp</key>
<string>^(.*\D|)\d\d?(\D{0,2})\d\d(\D{0,2})\d\d(\D.*|)$</string>
<key>comment</key>
<string>2 digit year, date only</string>
<key>formats</key>
<array>
<string>yy$2dd$3mm</string>
<string>yy$2mm$3dd</string>
<string>mm$2dd$3yy</string>
<string>dd$2mm$3yy</string>
</array>
</dict>
</array>
</plist>

View File

@ -6,5 +6,6 @@
Copyright 2011 Matthias Neeracher. All rights reserved.
*/
"Play" = "Play";
"Pause"= "Pause";
"Play" = "Play";
"Pause" = "Pause";
"File Name Date" = "File Name <%@>";

View File

@ -74,6 +74,7 @@
<string key="NSFrame">{{660, 12}, {107, 32}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:161</string>
<int key="NSTag">1000</int>
<bool key="NSEnabled">YES</bool>
@ -137,7 +138,7 @@
<string key="NSFrameSize">{781, 380}</string>
<reference key="NSSuperview" ref="482978525"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="106724295"/>
<reference key="NSNextKeyView" ref="635678385"/>
<string key="NSReuseIdentifierKey">_NS:1197</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="678384619">
@ -340,7 +341,7 @@
<string key="NSFrame">{{-1, 54}, {783, 398}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="482978525"/>
<reference key="NSNextKeyView" ref="106724295"/>
<string key="NSReuseIdentifierKey">_NS:1193</string>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="635678385"/>
@ -352,10 +353,10 @@
<object class="NSPopUpButton" id="19618719">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{137, 456}, {371, 26}}</string>
<string key="NSFrame">{{137, 456}, {468, 26}}</string>
<reference key="NSSuperview" ref="1006"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="333350533"/>
<string key="NSReuseIdentifierKey">_NS:179</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="247335376">
@ -370,34 +371,34 @@
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="1014844797">
<reference key="NSMenu" ref="694863336"/>
<string key="NSTitle">Modification Date</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
<object class="NSCustomResource" key="NSOnImage" id="218087945">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="207621535">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="247335376"/>
</object>
<nil key="NSMenuItem"/>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="694863336">
<string key="NSTitle">OtherViews</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="1014844797"/>
<object class="NSMenuItem" id="1014844797">
<reference key="NSMenu" ref="694863336"/>
<string key="NSTitle">Modification Date</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="218087945">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="207621535">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="247335376"/>
</object>
<object class="NSMenuItem" id="398634218">
<reference key="NSMenu" ref="694863336"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<bool key="NSIsHidden">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
@ -409,6 +410,7 @@
</object>
<reference key="NSMenuFont" ref="706852951"/>
</object>
<int key="NSSelectedIndex">-1</int>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
@ -560,6 +562,75 @@
</object>
<int key="connectionID">76</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: dateFormats</string>
<reference key="source" ref="398634218"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="398634218"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">hidden: dateFormats</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">dateFormats</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSIsNil</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">87</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: selectedDateFormat</string>
<reference key="source" ref="1014844797"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="1014844797"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">value: selectedDateFormat</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">selectedDateFormat</string>
<object class="NSDictionary" key="NSOptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSAllowsEditingMultipleValuesSelection</string>
<string>NSConditionallySetsEnabled</string>
<string>NSRaisesForNotApplicableKeys</string>
<string>NSValueTransformerName</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<boolean value="NO"/>
<boolean value="NO"/>
<boolean value="NO"/>
<string>NSIsNil</string>
</object>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">93</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">useModificationDates:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1014844797"/>
</object>
<int key="connectionID">97</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">dateFormatMenu</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="694863336"/>
</object>
<int key="connectionID">101</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -860,7 +931,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">76</int>
<int key="maxID">101</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -869,14 +940,46 @@
<string key="className">MAAddMediaSheet</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">useModificationDates:</string>
<string key="NS.object.0">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>useFileNameDates:</string>
<string>useModificationDates:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">useModificationDates:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">useModificationDates:</string>
<string key="candidateClassName">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>useFileNameDates:</string>
<string>useModificationDates:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">useFileNameDates:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">useModificationDates:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">dateFormatMenu</string>
<string key="NS.object.0">NSMenu</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">dateFormatMenu</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">dateFormatMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">

View File

@ -550,7 +550,7 @@
<string key="NSFrameSize">{1279, 183}</string>
<reference key="NSSuperview" ref="204692115"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="332479500"/>
<reference key="NSNextKeyView" ref="502749411"/>
<string key="NSReuseIdentifierKey">_NS:1197</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="117432108">
@ -775,7 +775,7 @@
<string key="NSFrameSize">{1281, 201}</string>
<reference key="NSSuperview" ref="196617426"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="502749411"/>
<reference key="NSNextKeyView" ref="204692115"/>
<string key="NSReuseIdentifierKey">_NS:1193</string>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="332479500"/>
@ -837,7 +837,7 @@
<string key="NSFrameSize">{1278, 565}</string>
<reference key="NSSuperview" ref="51131752"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="742629842"/>
<reference key="NSNextKeyView" ref="794153134"/>
<string key="NSReuseIdentifierKey">_NS:1197</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="995480265">
@ -984,7 +984,6 @@
<string key="NSFrame">{{1, 566}, {1279, 15}}</string>
<reference key="NSSuperview" ref="1054473103"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:1216</string>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="1054473103"/>
@ -1010,7 +1009,7 @@
<string key="NSFrameSize">{1280, 583}</string>
<reference key="NSSuperview" ref="1058980817"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="794153134"/>
<reference key="NSNextKeyView" ref="51131752"/>
<string key="NSReuseIdentifierKey">_NS:1193</string>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="715872882"/>