]> granicus.if.org Git - transmission/commitdiff
#1220 Initial Mac support for changing file and folder names. Not fully complete.
authorMitchell Livingston <livings124@transmissionbt.com>
Tue, 22 Jan 2013 00:09:48 +0000 (00:09 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Tue, 22 Jan 2013 00:09:48 +0000 (00:09 +0000)
17 files changed:
Transmission.xcodeproj/project.pbxproj
macosx/Controller.h
macosx/Controller.m
macosx/FileListNode.h
macosx/FileListNode.m
macosx/FileOutlineController.h
macosx/FileOutlineController.m
macosx/FileRenameSheetController.h [new file with mode: 0644]
macosx/FileRenameSheetController.m [new file with mode: 0644]
macosx/FileRenameSheetController.xib [new file with mode: 0644]
macosx/FileRenameViewController.h [new file with mode: 0644]
macosx/FileRenameViewController.m [new file with mode: 0644]
macosx/FileRenameViewController.xib [new file with mode: 0644]
macosx/Makefile.am
macosx/Torrent.h
macosx/Torrent.m
macosx/en.lproj/MainMenu.xib

index 7d65846c5c19eb39894f35764ca86f453d1b95f3..2c3dcf854fcb2e472accd4c509dddd6ad1adfd2f 100644 (file)
                A242AD9315F05D23002B3A6C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A242AD9115F05D23002B3A6C /* Localizable.strings */; };
                A245030C0D6A1FB000B49D00 /* UpArrowGroupTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = A245030B0D6A1FB000B49D00 /* UpArrowGroupTemplate.png */; };
                A245030E0D6A1FBC00B49D00 /* DownArrowGroupTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = A245030D0D6A1FBC00B49D00 /* DownArrowGroupTemplate.png */; };
+               A2451E6916ACE4EB00586E0E /* FileRenameSheetController.m in Sources */ = {isa = PBXBuildFile; fileRef = A2451E6716ACE4EB00586E0E /* FileRenameSheetController.m */; };
+               A2451E6A16ACE4EB00586E0E /* FileRenameSheetController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A2451E6816ACE4EB00586E0E /* FileRenameSheetController.xib */; };
                A24621410C769D0900088E81 /* trevent.h in Headers */ = {isa = PBXBuildFile; fileRef = A24621350C769CF400088E81 /* trevent.h */; };
                A24621420C769D0900088E81 /* trevent.c in Sources */ = {isa = PBXBuildFile; fileRef = A24621360C769CF400088E81 /* trevent.c */; };
                A247A443114C701800547DFC /* InfoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = A247A442114C701800547DFC /* InfoViewController.h */; };
                A242AD9215F05D23002B3A6C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = macosx/QuickLookPlugin/en.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
                A245030B0D6A1FB000B49D00 /* UpArrowGroupTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = UpArrowGroupTemplate.png; path = macosx/Images/UpArrowGroupTemplate.png; sourceTree = "<group>"; };
                A245030D0D6A1FBC00B49D00 /* DownArrowGroupTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = DownArrowGroupTemplate.png; path = macosx/Images/DownArrowGroupTemplate.png; sourceTree = "<group>"; };
+               A2451E6616ACE4EB00586E0E /* FileRenameSheetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileRenameSheetController.h; path = macosx/FileRenameSheetController.h; sourceTree = "<group>"; };
+               A2451E6716ACE4EB00586E0E /* FileRenameSheetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileRenameSheetController.m; path = macosx/FileRenameSheetController.m; sourceTree = "<group>"; };
+               A2451E6816ACE4EB00586E0E /* FileRenameSheetController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileRenameSheetController.xib; path = macosx/FileRenameSheetController.xib; sourceTree = "<group>"; };
                A24621350C769CF400088E81 /* trevent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = trevent.h; path = libtransmission/trevent.h; sourceTree = "<group>"; };
                A24621360C769CF400088E81 /* trevent.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = trevent.c; path = libtransmission/trevent.c; sourceTree = "<group>"; };
                A247A442114C701800547DFC /* InfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoViewController.h; path = macosx/InfoViewController.h; sourceTree = "<group>"; };
                29B97314FDCFA39411CA2CEA /* Transmission */ = {
                        isa = PBXGroup;
                        children = (
+                               A2451E6616ACE4EB00586E0E /* FileRenameSheetController.h */,
+                               A2451E6716ACE4EB00586E0E /* FileRenameSheetController.m */,
+                               A2451E6816ACE4EB00586E0E /* FileRenameSheetController.xib */,
                                4DDBB70A09E16B3200284745 /* GUI */,
                                A2F35BC315C5A0A100EBF632 /* QuickLookPlugin */,
                                4D1838DC09DEC04A0047D688 /* libtransmission */,
                                A2DC49C2158430CB00758FF1 /* YellowDot@2x.png in Resources */,
                                A2DC49C4158430E200758FF1 /* YingYangGroupTemplate@2x.png in Resources */,
                                A2DC49C6158430FB00758FF1 /* YingYangTemplate@2x.png in Resources */,
+                               A2451E6A16ACE4EB00586E0E /* FileRenameSheetController.xib in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                A2966E8713DAF74C007B52DF /* GlobalOptionsPopoverViewController.m in Sources */,
                                A234EA541453563B000F3E97 /* NSImageAdditions.m in Sources */,
                                A2AB883E16A399A6008FAD50 /* VDKQueue.m in Sources */,
+                               A2451E6916ACE4EB00586E0E /* FileRenameSheetController.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index c725f69b969c1c43223d8cc7ea6761c6511cfaa7..0ea5f43b55cde9dfee7d0bb6824cb758c0f98f4a 100644 (file)
@@ -173,6 +173,8 @@ typedef enum
 
 - (void) revealFile: (id) sender;
 
+- (IBAction) renameSelected: (id) sender;
+
 - (void) announceSelectedTorrents: (id) sender;
 
 - (void) verifySelectedTorrents: (id) sender;
index 6e3c33c49c77206bcaf295217562b6cf49c5bbeb..a286b338ed7dd96410d01b2f9eb9606bbd4ab54f 100644 (file)
@@ -47,6 +47,7 @@
 #import "BlocklistDownloader.h"
 #import "StatusBarController.h"
 #import "FilterBarController.h"
+#import "FileRenameSheetController.h"
 #import "BonjourController.h"
 #import "Badger.h"
 #import "DragOverlayWindow.h"
@@ -1740,6 +1741,17 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: paths];
 }
 
+- (IBAction) renameSelected: (id) sender
+{
+    NSArray * selected = [fTableView selectedTorrents];
+    NSAssert([selected count] == 1, @"1 transfer needs to be selected to rename, but %ld are selected", [selected count]);
+    Torrent * torrent = selected[0];
+    
+    [FileRenameSheetController presentSheetForTorrent:torrent modalForWindow: fWindow completionHandler: ^(BOOL didRename) {
+        NSLog(@"finished");
+    }];
+}
+
 - (void) announceSelectedTorrents: (id) sender
 {
     for (Torrent * torrent in [fTableView selectedTorrents])
@@ -4285,6 +4297,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     //enable reveal in finder
     if (action == @selector(revealFile:))
         return canUseTable && [fTableView numberOfSelectedRows] > 0;
+    
+    //enable renaming file/folder
+    if (action == @selector(renameSelectedTorrent:))
+        return canUseTable && [fTableView numberOfSelectedRows] == 1;
 
     //enable remove items
     if (action == @selector(removeNoDelete:) || action == @selector(removeDeleteData:))
index 518c2f622b91d5d144e3fdd7e1fa1d19706ec2c4..901ba7908738e1cd1cf0b07001479236c4f8f834 100644 (file)
     BOOL fIsFolder;
 }
 
-@property (nonatomic, readonly) NSString * name;
-@property (nonatomic, readonly) NSString * path;
+@property (nonatomic, copy, readonly) NSString * name;
+@property (nonatomic, copy, readonly) NSString * path;
 
 @property (nonatomic, readonly) Torrent * torrent;
 
 @property (nonatomic, readonly) uint64_t size;
-@property (nonatomic, readonly) NSImage * icon;
+@property (nonatomic, retain, readonly) NSImage * icon;
 @property (nonatomic, readonly) BOOL isFolder;
 
+@property (nonatomic, retain, readonly) NSIndexSet * indexes;
+
 - (id) initWithFolderName: (NSString *) name path: (NSString *) path torrent: (Torrent *) torrent;
 - (id) initWithFileName: (NSString *) name path: (NSString *) path size: (uint64_t) size index: (NSUInteger) index torrent: (Torrent *) torrent;
 
@@ -57,8 +59,8 @@
 
 - (NSString *) description;
 
-- (NSIndexSet *) indexes;
-
 - (NSMutableArray *) children;
 
+- (BOOL) updateFromOldName: (NSString *) oldName toNewName: (NSString *) newName inPath: (NSString *) path;
+
 @end
index c7d8f9deee7f7f383c040c62b9fa43e6514db166..61a14ce3fe999081587fe1eebc51d428d83b8afb 100644 (file)
@@ -39,6 +39,7 @@
 @synthesize size = fSize;
 @synthesize icon = fIcon;
 @synthesize isFolder = fIsFolder;
+@synthesize indexes = fIndexes;
 
 - (id) initWithFolderName: (NSString *) name path: (NSString *) path torrent: (Torrent *) torrent
 {
         return [NSString stringWithFormat: @"%@ (folder: %@)", fName, fIndexes];
 }
 
-- (NSIndexSet *) indexes
-{
-    return fIndexes;
-}
-
 - (NSImage *) icon
 {
     if (!fIcon)
     return fChildren;
 }
 
+- (BOOL) updateFromOldName: (NSString *) oldName toNewName: (NSString *) newName inPath: (NSString *) path
+{
+    NSParameterAssert(oldName != nil);
+    NSParameterAssert(newName != nil);
+    NSParameterAssert(path != nil);
+    
+    NSArray * lookupPathComponents = [path pathComponents];
+    NSArray * thesePathComponents = [self.path pathComponents];
+    
+    if ([lookupPathComponents isEqualToArray: thesePathComponents]) //this node represents what's being renamed
+    {
+        if ([oldName isEqualToString: self.name])
+        {
+            [fName release];
+            fName = [newName copy];
+            return YES;
+        }
+    }
+    else if ([lookupPathComponents count] < [thesePathComponents count]) //what's being renamed is part of this node's path
+    {
+        lookupPathComponents = [lookupPathComponents arrayByAddingObject: oldName];
+        const BOOL allSame = NSNotFound == [lookupPathComponents indexOfObjectWithOptions: NSEnumerationConcurrent passingTest: ^BOOL(NSString * name, NSUInteger idx, BOOL * stop) {
+            return ![name isEqualToString: thesePathComponents[idx]];
+        }];
+        
+        if (allSame)
+        {
+            NSString * oldPathPrefix = [path stringByAppendingPathComponent: oldName];
+            NSString * newPathPrefix = [path stringByAppendingPathComponent: newName];
+            
+            [fPath autorelease];
+            fPath = [[fPath stringByReplacingCharactersInRange: NSMakeRange(0, [oldPathPrefix length]) withString: newPathPrefix] retain];
+            return YES;
+        }
+    }
+    
+    return NO;
+}
+
 @end
 
 @implementation FileListNode (Private)
     if ((self = [super init]))
     {
         fIsFolder = isFolder;
-        fName = [name retain];
-        fPath = [path retain];
+        fName = [name copy];
+        fPath = [path copy];
         
         fIndexes = [[NSMutableIndexSet alloc] init];
         
index 6d6f119c6c9991a5e34d184b2ed9624959e93d5d..2038f20ec5b532814fa6a259ca115a62165d732e 100644 (file)
@@ -53,4 +53,6 @@
 
 - (void) revealFile: (id) sender;
 
+- (IBAction) renameSelected: (id) sender;
+
 @end
index 163144e9f392bda2109ce59df9e9fa5ec6161722..8e278f4fa1f2f91182ef06288690e1eae268a9ca 100644 (file)
 
 #import "FileOutlineController.h"
 #import "Torrent.h"
+#import "FileListNode.h"
 #import "FileOutlineView.h"
 #import "FilePriorityCell.h"
-#import "FileListNode.h"
+#import "FileRenameSheetController.h"
 #import "NSApplicationAdditions.h"
 #import "NSMutableArrayAdditions.h"
 #import "NSStringAdditions.h"
@@ -431,6 +432,31 @@ typedef enum
         [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: paths];
 }
 
+- (IBAction) renameSelected: (id) sender
+{
+    NSIndexSet * indexes = [fOutline selectedRowIndexes];
+    NSAssert([indexes count] == 1, @"1 file needs to be selected to rename, but %ld are selected", [indexes count]);
+    
+    FileListNode * node = [fOutline itemAtRow: [indexes firstIndex]];
+    Torrent * torrent = [node torrent];
+    if (![torrent isFolder])
+    {
+        [FileRenameSheetController presentSheetForTorrent: torrent modalForWindow: [fOutline window] completionHandler: ^(BOOL didRename) {
+#warning need to re-sort
+            if (didRename)
+                [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateUI" object: nil];
+        }];
+    }
+    else
+    {
+        [FileRenameSheetController presentSheetForFileListNode: node modalForWindow: [fOutline window] completionHandler: ^(BOOL didRename) {
+#warning need to re-sort
+            if (didRename)
+                [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateUI" object: nil];
+        }];
+    }
+}
+
 #warning make real view controller (Leopard-only) so that Command-R will work
 - (BOOL) validateMenuItem: (NSMenuItem *) menuItem
 {
@@ -518,6 +544,11 @@ typedef enum
         return canChange;
     }
     
+    if (action == @selector(renameSelected:))
+    {
+        return [fOutline numberOfSelectedRows] == 1;
+    }
+    
     return YES;
 }
 
@@ -529,9 +560,18 @@ typedef enum
 {
     NSMenu * menu = [[NSMenu alloc] initWithTitle: @"File Outline Menu"];
     
+    //rename
+    NSMenuItem * item = [[NSMenuItem alloc] initWithTitle: [NSLocalizedString(@"Rename", "File Outline -> Menu") stringByAppendingEllipsis]
+                                                   action: @selector(renameSelected:) keyEquivalent: @""];
+    [item setTarget: self];
+    [menu addItem: item];
+    [item release];
+    
+    [menu addItem: [NSMenuItem separatorItem]];
+    
     //check and uncheck
-    NSMenuItem * item = [[NSMenuItem alloc] initWithTitle: NSLocalizedString(@"Check Selected", "File Outline -> Menu")
-                            action: @selector(setCheck:) keyEquivalent: @""];
+    item = [[NSMenuItem alloc] initWithTitle: NSLocalizedString(@"Check Selected", "File Outline -> Menu")
+            action: @selector(setCheck:) keyEquivalent: @""];
     [item setTarget: self];
     [item setTag: FILE_CHECK_TAG];
     [menu addItem: item];
diff --git a/macosx/FileRenameSheetController.h b/macosx/FileRenameSheetController.h
new file mode 100644 (file)
index 0000000..f1034b7
--- /dev/null
@@ -0,0 +1,27 @@
+//
+//  FileRenameSheetController.h
+//  Transmission
+//
+//  Created by Mitchell Livingston on 1/20/13.
+//  Copyright (c) 2013 The Transmission Project. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class FileListNode;
+@class Torrent;
+
+@interface FileRenameSheetController : NSWindowController
+
++ (void) presentSheetForTorrent: (Torrent *) torrent modalForWindow: (NSWindow *) window completionHandler: (void (^)(BOOL didRename)) completionHandler;
++ (void) presentSheetForFileListNode: (FileListNode *) node modalForWindow: (NSWindow *) window completionHandler: (void (^)(BOOL didRename)) completionHandler;
+
+@property (assign) IBOutlet NSTextField * labelField;
+@property (assign) IBOutlet NSTextField * inputField;
+@property (assign) IBOutlet NSButton * renameButton;
+@property (assign) IBOutlet NSButton * cancelButton;
+
+- (IBAction) rename: (id) sender;
+- (IBAction) cancelRename: (id) sender;
+
+@end
diff --git a/macosx/FileRenameSheetController.m b/macosx/FileRenameSheetController.m
new file mode 100644 (file)
index 0000000..c9865b1
--- /dev/null
@@ -0,0 +1,118 @@
+//
+//  FileRenameSheetController.m
+//  Transmission
+//
+//  Created by Mitchell Livingston on 1/20/13.
+//  Copyright (c) 2013 The Transmission Project. All rights reserved.
+//
+
+#import "FileRenameSheetController.h"
+#import "FileListNode.h"
+#import "Torrent.h"
+
+typedef void (^CompletionBlock)(BOOL);
+
+@interface FileRenameSheetController ()
+
+@property (nonatomic, retain) Torrent * torrent;
+@property (nonatomic, retain) FileListNode * node;
+@property (nonatomic, copy) CompletionBlock completionHandler;
+
+@end
+
+@implementation FileRenameSheetController
+
++ (void) presentSheetForTorrent: (Torrent *) torrent modalForWindow: (NSWindow *) window completionHandler: (void (^)(BOOL didRename)) completionHandler
+{
+    NSParameterAssert(torrent != nil);
+    NSParameterAssert(window != nil);
+    
+    FileRenameSheetController * renamer = [[FileRenameSheetController alloc] initWithWindowNibName: @"FileRenameSheetController"];
+    
+    renamer.torrent = torrent;
+    renamer.completionHandler = completionHandler;
+    
+    [NSApp beginSheet: [renamer window] modalForWindow: window modalDelegate: self didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:) contextInfo: renamer];
+}
+
++ (void) presentSheetForFileListNode: (FileListNode *) node modalForWindow: (NSWindow *) window completionHandler: (void (^)(BOOL didRename)) completionHandler
+{
+    
+    NSParameterAssert(node != nil);
+    NSParameterAssert(window != nil);
+    
+    FileRenameSheetController * renamer = [[FileRenameSheetController alloc] initWithWindowNibName: @"FileRenameSheetController"];
+    
+    renamer.torrent = [node torrent];
+    renamer.node = node;
+    renamer.completionHandler = completionHandler;
+    
+    [NSApp beginSheet: [renamer window] modalForWindow: window modalDelegate: self didEndSelector: @selector(sheetDidEnd:returnCode:contextInfo:) contextInfo: renamer];
+}
+
++ (void) sheetDidEnd: (NSWindow *) sheet returnCode: (NSInteger) returnCode contextInfo: (void *) contextInfo
+{
+    FileRenameSheetController * renamer = contextInfo;
+    NSParameterAssert([renamer isKindOfClass:[FileRenameSheetController class]]);
+    
+    renamer.completionHandler(returnCode == NSOKButton);
+    
+    //TODO: retain/release logic needs to be figured out for ARC (when ARC is enabled)
+    [renamer release];
+    [sheet orderOut: self];
+}
+
+- (void) dealloc
+{
+    [_torrent release];
+    [_node release];
+    [_completionHandler release];
+    [super dealloc];
+}
+
+- (void) windowDidLoad
+{
+    [super windowDidLoad];
+    
+    NSString * name = self.node ? [self.node name] : [self.torrent name];
+    
+    NSString * label;
+    if (self.node)
+        label = [NSString stringWithFormat: NSLocalizedString(@"Rename \"%@\":", "rename sheet label"), name];
+    else
+        label = [NSString stringWithFormat: NSLocalizedString(@"Rename the transfer \"%@\":", "rename sheet label"), name];
+    [self.labelField setStringValue: label];
+    
+    [self.inputField setStringValue: name];
+    [self.renameButton setEnabled: NO];
+}
+
+- (IBAction) rename: (id) sender;
+{
+    void (^completionHandler)(BOOL) = ^(BOOL didRename) {
+        if (didRename)
+            [NSApp endSheet: [self window] returnCode: NSOKButton];
+        else
+        {
+            #warning more thorough error
+            NSBeep();
+        }
+    };
+    
+    if (self.node)
+        [self.torrent renameFileNode: self.node withName: [self.inputField stringValue] completionHandler: completionHandler];
+    else
+        [self.torrent renameTorrent: [self.inputField stringValue] completionHandler: completionHandler];
+}
+
+- (IBAction) cancelRename: (id) sender
+{
+    [NSApp endSheet: [self window] returnCode: NSCancelButton];
+}
+
+- (void) controlTextDidChange: (NSNotification *) notification
+{
+    [self.renameButton setEnabled: ![[self.inputField stringValue] isEqualToString: @""] && ![[self.inputField stringValue] isEqualToString: [self.torrent name]]];
+}
+
+@end
diff --git a/macosx/FileRenameSheetController.xib b/macosx/FileRenameSheetController.xib
new file mode 100644 (file)
index 0000000..5709382
--- /dev/null
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+       <data>
+               <int key="IBDocument.SystemTarget">1080</int>
+               <string key="IBDocument.SystemVersion">12C60</string>
+               <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+               <string key="IBDocument.AppKitVersion">1187.34</string>
+               <string key="IBDocument.HIToolboxVersion">625.00</string>
+               <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+                       <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       <string key="NS.object.0">2844</string>
+               </object>
+               <array key="IBDocument.IntegratedClassDependencies">
+                       <string>NSButton</string>
+                       <string>NSButtonCell</string>
+                       <string>NSCustomObject</string>
+                       <string>NSTextField</string>
+                       <string>NSTextFieldCell</string>
+                       <string>NSView</string>
+                       <string>NSWindowTemplate</string>
+               </array>
+               <array key="IBDocument.PluginDependencies">
+                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+               </array>
+               <object class="NSMutableDictionary" key="IBDocument.Metadata">
+                       <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+                       <integer value="1" key="NS.object.0"/>
+               </object>
+               <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+                       <object class="NSCustomObject" id="1001">
+                               <string key="NSClassName">FileRenameSheetController</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="1005">
+                               <int key="NSWindowStyleMask">15</int>
+                               <int key="NSWindowBacking">2</int>
+                               <string key="NSWindowRect">{{196, 240}, {400, 120}}</string>
+                               <int key="NSWTFlags">544735232</int>
+                               <string key="NSWindowTitle">Window</string>
+                               <string key="NSWindowClass">NSWindow</string>
+                               <nil key="NSViewClass"/>
+                               <nil key="NSUserInterfaceItemIdentifier"/>
+                               <string key="NSWindowContentMaxSize">{9999, 120}</string>
+                               <string key="NSWindowContentMinSize">{300, 120}</string>
+                               <object class="NSView" key="NSWindowView" id="1006">
+                                       <reference key="NSNextResponder"/>
+                                       <int key="NSvFlags">256</int>
+                                       <array class="NSMutableArray" key="NSSubviews">
+                                               <object class="NSButton" id="158751204">
+                                                       <reference key="NSNextResponder" ref="1006"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{296, 13}, {90, 32}}</string>
+                                                       <reference key="NSSuperview" ref="1006"/>
+                                                       <reference key="NSNextKeyView"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="464989931">
+                                                               <int key="NSCellFlags">67108864</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Rename</string>
+                                                               <object class="NSFont" key="NSSupport" id="599881464">
+                                                                       <string key="NSName">LucidaGrande</string>
+                                                                       <double key="NSSize">13</double>
+                                                                       <int key="NSfFlags">1044</int>
+                                                               </object>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="158751204"/>
+                                                               <int key="NSButtonFlags">-2038284288</int>
+                                                               <int key="NSButtonFlags2">129</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSButton" id="289188328">
+                                                       <reference key="NSNextResponder" ref="1006"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{206, 13}, {90, 32}}</string>
+                                                       <reference key="NSSuperview" ref="1006"/>
+                                                       <reference key="NSNextKeyView" ref="158751204"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="16195064">
+                                                               <int key="NSCellFlags">67108864</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Cancel</string>
+                                                               <reference key="NSSupport" ref="599881464"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="289188328"/>
+                                                               <int key="NSButtonFlags">-2038284288</int>
+                                                               <int key="NSButtonFlags2">129</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="307156222">
+                                                       <reference key="NSNextResponder" ref="1006"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{17, 83}, {369, 17}}</string>
+                                                       <reference key="NSSuperview" ref="1006"/>
+                                                       <reference key="NSNextKeyView" ref="713959564"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:1535</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="837591060">
+                                                               <int key="NSCellFlags">67108928</int>
+                                                               <int key="NSCellFlags2">272632320</int>
+                                                               <string key="NSContents">Rename text</string>
+                                                               <reference key="NSSupport" ref="599881464"/>
+                                                               <string key="NSCellIdentifier">_NS:1535</string>
+                                                               <reference key="NSControlView" ref="307156222"/>
+                                                               <object class="NSColor" key="NSBackgroundColor">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">controlColor</string>
+                                                                       <object class="NSColor" key="NSColor">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                               <object class="NSColor" key="NSTextColor">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">controlTextColor</string>
+                                                                       <object class="NSColor" key="NSColor" id="586059238">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MAA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="713959564">
+                                                       <reference key="NSNextResponder" ref="1006"/>
+                                                       <int key="NSvFlags">290</int>
+                                                       <string key="NSFrame">{{20, 51}, {360, 22}}</string>
+                                                       <reference key="NSSuperview" ref="1006"/>
+                                                       <reference key="NSNextKeyView" ref="289188328"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="160440583">
+                                                               <int key="NSCellFlags">-1804599231</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="599881464"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="713959564"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <object class="NSColor" key="NSBackgroundColor">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textBackgroundColor</string>
+                                                                       <object class="NSColor" key="NSColor">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MQA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                               <object class="NSColor" key="NSTextColor">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textColor</string>
+                                                                       <reference key="NSColor" ref="586059238"/>
+                                                               </object>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                       </array>
+                                       <string key="NSFrameSize">{400, 120}</string>
+                                       <reference key="NSSuperview"/>
+                                       <reference key="NSNextKeyView" ref="307156222"/>
+                               </object>
+                               <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
+                               <string key="NSMinSize">{300, 142}</string>
+                               <string key="NSMaxSize">{9999, 142}</string>
+                               <string key="NSFrameAutosaveName">RenameFileWindow</string>
+                               <bool key="NSWindowIsRestorable">NO</bool>
+                       </object>
+               </array>
+               <object class="IBObjectContainer" key="IBDocument.Objects">
+                       <array class="NSMutableArray" key="connectionRecords">
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="1005"/>
+                                       </object>
+                                       <int key="connectionID">3</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">cancelButton</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="289188328"/>
+                                       </object>
+                                       <int key="connectionID">15</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">renameButton</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="158751204"/>
+                                       </object>
+                                       <int key="connectionID">16</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">labelField</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="307156222"/>
+                                       </object>
+                                       <int key="connectionID">17</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancelRename:</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="289188328"/>
+                                       </object>
+                                       <int key="connectionID">19</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">rename:</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="158751204"/>
+                                       </object>
+                                       <int key="connectionID">20</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">inputField</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="713959564"/>
+                                       </object>
+                                       <int key="connectionID">21</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="1005"/>
+                                               <reference key="destination" ref="1001"/>
+                                       </object>
+                                       <int key="connectionID">4</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="713959564"/>
+                                               <reference key="destination" ref="1001"/>
+                                       </object>
+                                       <int key="connectionID">22</int>
+                               </object>
+                       </array>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <array key="orderedObjects">
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <array key="object" id="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">1</int>
+                                               <reference key="object" ref="1005"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="1006"/>
+                                               </array>
+                                               <reference key="parent" ref="0"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">2</int>
+                                               <reference key="object" ref="1006"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="307156222"/>
+                                                       <reference ref="713959564"/>
+                                                       <reference ref="158751204"/>
+                                                       <reference ref="289188328"/>
+                                               </array>
+                                               <reference key="parent" ref="1005"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5</int>
+                                               <reference key="object" ref="158751204"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="464989931"/>
+                                               </array>
+                                               <reference key="parent" ref="1006"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">6</int>
+                                               <reference key="object" ref="464989931"/>
+                                               <reference key="parent" ref="158751204"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">9</int>
+                                               <reference key="object" ref="289188328"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="16195064"/>
+                                               </array>
+                                               <reference key="parent" ref="1006"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">10</int>
+                                               <reference key="object" ref="16195064"/>
+                                               <reference key="parent" ref="289188328"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">11</int>
+                                               <reference key="object" ref="307156222"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="837591060"/>
+                                               </array>
+                                               <reference key="parent" ref="1006"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">12</int>
+                                               <reference key="object" ref="837591060"/>
+                                               <reference key="parent" ref="307156222"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">13</int>
+                                               <reference key="object" ref="713959564"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="160440583"/>
+                                               </array>
+                                               <reference key="parent" ref="1006"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">14</int>
+                                               <reference key="object" ref="160440583"/>
+                                               <reference key="parent" ref="713959564"/>
+                                       </object>
+                               </array>
+                       </object>
+                       <dictionary class="NSMutableDictionary" key="flattenedProperties">
+                               <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
+                               <boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
+                               <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       </dictionary>
+                       <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+                       <nil key="activeLocalization"/>
+                       <dictionary class="NSMutableDictionary" key="localizations"/>
+                       <nil key="sourceID"/>
+                       <int key="maxID">22</int>
+               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes"/>
+               <int key="IBDocument.localizationMode">0</int>
+               <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+               <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+               <int key="IBDocument.defaultPropertyAccessControl">3</int>
+       </data>
+</archive>
diff --git a/macosx/FileRenameViewController.h b/macosx/FileRenameViewController.h
new file mode 100644 (file)
index 0000000..e0e875c
--- /dev/null
@@ -0,0 +1,13 @@
+//
+//  FileRenameViewController.h
+//  Transmission
+//
+//  Created by Mitchell Livingston on 1/20/13.
+//  Copyright (c) 2013 The Transmission Project. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface FileRenameViewController : NSViewController
+
+@end
diff --git a/macosx/FileRenameViewController.m b/macosx/FileRenameViewController.m
new file mode 100644 (file)
index 0000000..b773c3b
--- /dev/null
@@ -0,0 +1,27 @@
+//
+//  FileRenameViewController.m
+//  Transmission
+//
+//  Created by Mitchell Livingston on 1/20/13.
+//  Copyright (c) 2013 The Transmission Project. All rights reserved.
+//
+
+#import "FileRenameViewController.h"
+
+@interface FileRenameViewController ()
+
+@end
+
+@implementation FileRenameViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Initialization code here.
+    }
+    
+    return self;
+}
+
+@end
diff --git a/macosx/FileRenameViewController.xib b/macosx/FileRenameViewController.xib
new file mode 100644 (file)
index 0000000..b422f7c
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+       <data>
+               <int key="IBDocument.SystemTarget">1070</int>
+               <string key="IBDocument.SystemVersion">12C60</string>
+               <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+               <string key="IBDocument.AppKitVersion">1187.34</string>
+               <string key="IBDocument.HIToolboxVersion">625.00</string>
+               <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+                       <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       <string key="NS.object.0">2844</string>
+               </object>
+               <array key="IBDocument.IntegratedClassDependencies">
+                       <string>NSCustomObject</string>
+                       <string>NSCustomView</string>
+               </array>
+               <array key="IBDocument.PluginDependencies">
+                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+               </array>
+               <object class="NSMutableDictionary" key="IBDocument.Metadata">
+                       <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+                       <integer value="1" key="NS.object.0"/>
+               </object>
+               <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+                       <object class="NSCustomObject" id="1001">
+                               <string key="NSClassName">FileRenameViewController</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="NSCustomView" id="1005">
+                               <reference key="NSNextResponder"/>
+                               <int key="NSvFlags">268</int>
+                               <array class="NSMutableArray" key="NSSubviews"/>
+                               <string key="NSFrameSize">{480, 272}</string>
+                               <reference key="NSSuperview"/>
+                               <reference key="NSWindow"/>
+                               <string key="NSClassName">NSView</string>
+                       </object>
+               </array>
+               <object class="IBObjectContainer" key="IBDocument.Objects">
+                       <array class="NSMutableArray" key="connectionRecords">
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">view</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="1005"/>
+                                       </object>
+                                       <int key="connectionID">2</int>
+                               </object>
+                       </array>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <array key="orderedObjects">
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <array key="object" id="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">1</int>
+                                               <reference key="object" ref="1005"/>
+                                               <array class="NSMutableArray" key="children"/>
+                                               <reference key="parent" ref="0"/>
+                                       </object>
+                               </array>
+                       </object>
+                       <dictionary class="NSMutableDictionary" key="flattenedProperties">
+                               <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       </dictionary>
+                       <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+                       <nil key="activeLocalization"/>
+                       <dictionary class="NSMutableDictionary" key="localizations"/>
+                       <nil key="sourceID"/>
+                       <int key="maxID">7</int>
+               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes">
+                       <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">FileRenameViewController</string>
+                                       <string key="superclassName">NSViewController</string>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/FileRenameViewController.h</string>
+                                       </object>
+                               </object>
+                       </array>
+               </object>
+               <int key="IBDocument.localizationMode">0</int>
+               <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+               <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+                       <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+                       <integer value="1070" key="NS.object.0"/>
+               </object>
+               <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+               <int key="IBDocument.defaultPropertyAccessControl">3</int>
+               <bool key="IBDocument.UseAutolayout">YES</bool>
+       </data>
+</archive>
index e006aaf1e7ab629848400f15fd9967efa201a511..47bc5f694181462433abf9a55083f5f5c726e720 100644 (file)
@@ -2,6 +2,7 @@ EXTRA_DIST = \
     Credits.rtf \
     AboutWindow.xib \
     BlocklistStatusWindow.xib \
+    FileRenameSheetController.xib \
     FilterBar.xib \
     InfoFileView.xib \
     InfoPeersView.xib \
@@ -65,6 +66,8 @@ EXTRA_DIST = \
     ExpandedPathToIconTransformer.m \
     ExpandedPathToPathTransformer.h \
     ExpandedPathToPathTransformer.m \
+    FileRenameSheetController.h \
+    FileRenameSheetController.m \
     FileListNode.h \
     FileListNode.m \
     FileNameCell.h \
index 8a0fb6b28aed94d8d18f46238b581d2cfd8ed966..2bde12733636df7d00b049f659c66ff924177859 100644 (file)
@@ -164,6 +164,9 @@ typedef enum {
 - (NSString *) dataLocation;
 - (NSString *) fileLocation: (FileListNode *) node;
 
+- (void) renameTorrent: (NSString *) newName completionHandler: (void (^)(BOOL didRename)) completionHandler;
+- (void) renameFileNode: (FileListNode *) node withName: (NSString *) newName completionHandler: (void (^)(BOOL didRename)) completionHandler;
+
 - (CGFloat) progress;
 - (CGFloat) progressDone;
 - (CGFloat) progressLeft;
index 091244601292123b7b340b57c0b5e036ce472499..02fd74002d4399c95286dfc3883983be31e38569 100644 (file)
@@ -90,6 +90,45 @@ void metadataCallback(tr_torrent * torrent, void * torrentData)
     [(Torrent *)torrentData performSelectorOnMainThread: @selector(metadataRetrieved) withObject: nil waitUntilDone: NO];
 }
 
+void renameCallback(tr_torrent * torrent, const char * oldPathCharString, const char * newNameCharString, int error, void * contextInfo)
+{
+    @autoreleasepool
+    {
+        NSDictionary * contextDict = (NSDictionary *)contextInfo;
+        
+        NSString * oldPath = [NSString stringWithUTF8String: oldPathCharString];
+        NSString * path = [oldPath stringByDeletingLastPathComponent];
+        NSString * oldName = [oldPath lastPathComponent];
+        NSString * newName = [NSString stringWithUTF8String: newNameCharString];
+        
+        if (error == 0)
+        {
+            void (^__block updateNodeAndChildrenForRename)(FileListNode *) = ^(FileListNode * node) {
+                [node updateFromOldName: oldName toNewName: newName inPath: path];
+                
+                if ([node isFolder]) {
+                    [[node children] enumerateObjectsWithOptions: NSEnumerationConcurrent usingBlock: ^(FileListNode * childNode, NSUInteger idx, BOOL * stop) {
+                        updateNodeAndChildrenForRename(childNode);
+                    }];
+                }
+            };
+            
+            NSArray * nodes = contextDict[@"Nodes"];
+            [nodes enumerateObjectsWithOptions: NSEnumerationConcurrent usingBlock: ^(FileListNode * node, NSUInteger idx, BOOL *stop) {
+                updateNodeAndChildrenForRename(node);
+            }];
+        }
+        else
+            NSLog(@"Error renaming %@ to %@", oldPath, [path stringByAppendingPathComponent: newName]);
+        
+        typedef void (^RenameCompletionBlock)(BOOL);
+        RenameCompletionBlock completionHandler = contextDict[@"CompletionHandler"];
+        completionHandler(error == 0);
+        
+        [contextDict release];
+    }
+}
+
 int trashDataFile(const char * filename)
 {
     @autoreleasepool
@@ -803,6 +842,29 @@ int trashDataFile(const char * filename)
     }
 }
 
+- (void) renameTorrent: (NSString *) newName completionHandler: (void (^)(BOOL didRename)) completionHandler
+{
+    NSParameterAssert(newName != nil);
+    NSParameterAssert(![newName isEqualToString: @""]);
+    
+    NSDictionary * contextInfo = [@{ @"Nodes" : fFileList, @"CompletionHandler" : [[completionHandler copy] autorelease] } retain];
+    
+    tr_torrentRenamePath(fHandle, fInfo->name, [newName UTF8String], renameCallback, contextInfo);
+}
+
+- (void) renameFileNode: (FileListNode *) node withName: (NSString *) newName completionHandler: (void (^)(BOOL didRename)) completionHandler
+{
+    NSParameterAssert(node != nil);
+    NSParameterAssert([node torrent] == self);
+    NSParameterAssert(newName != nil);
+    NSParameterAssert(![newName isEqualToString: @""]);
+    
+    NSDictionary * contextInfo = [@{ @"Nodes" : @[ node ], @"CompletionHandler" : [[completionHandler copy] autorelease] } retain];
+    
+    NSString * oldName = [[node path] stringByAppendingPathComponent: [node name]];
+    tr_torrentRenamePath(fHandle, [oldName UTF8String], [newName UTF8String], renameCallback, contextInfo);
+}
+
 - (CGFloat) progress
 {
     return fStat->percentComplete;
index 39682c315deb688980830454f1f6544889250655..a506ae29817bbd67547a8fb877384167374fe853 100644 (file)
@@ -2,30 +2,30 @@
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
        <data>
                <int key="IBDocument.SystemTarget">1060</int>
-               <string key="IBDocument.SystemVersion">11C74</string>
-               <string key="IBDocument.InterfaceBuilderVersion">1938</string>
-               <string key="IBDocument.AppKitVersion">1138.23</string>
-               <string key="IBDocument.HIToolboxVersion">567.00</string>
+               <string key="IBDocument.SystemVersion">12C60</string>
+               <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+               <string key="IBDocument.AppKitVersion">1187.34</string>
+               <string key="IBDocument.HIToolboxVersion">625.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
-                       <string key="NS.object.0">1938</string>
+                       <string key="NS.object.0">2844</string>
                </object>
                <array key="IBDocument.IntegratedClassDependencies">
-                       <string>NSTableColumn</string>
-                       <string>NSScroller</string>
-                       <string>NSMenuItem</string>
-                       <string>NSMenu</string>
-                       <string>NSTextFieldCell</string>
-                       <string>NSScrollView</string>
-                       <string>NSButtonCell</string>
                        <string>NSButton</string>
+                       <string>NSButtonCell</string>
+                       <string>NSCustomObject</string>
                        <string>NSImageCell</string>
+                       <string>NSMenu</string>
+                       <string>NSMenuItem</string>
                        <string>NSOutlineView</string>
-                       <string>NSCustomObject</string>
-                       <string>NSView</string>
-                       <string>NSWindowTemplate</string>
+                       <string>NSScrollView</string>
+                       <string>NSScroller</string>
+                       <string>NSTableColumn</string>
                        <string>NSTextField</string>
+                       <string>NSTextFieldCell</string>
                        <string>NSUserDefaultsController</string>
+                       <string>NSView</string>
+                       <string>NSWindowTemplate</string>
                </array>
                <array key="IBDocument.PluginDependencies">
                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -69,7 +69,7 @@
                                                        <reference key="NSNextKeyView" ref="52857407"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="109224088">
-                                                               <int key="NSCellFlags">-2080244224</int>
+                                                               <int key="NSCellFlags">-2080374784</int>
                                                                <int key="NSCellFlags2">134217728</int>
                                                                <string key="NSContents"/>
                                                                <object class="NSFont" key="NSSupport" id="921632451">
@@ -78,7 +78,7 @@
                                                                        <int key="NSfFlags">1044</int>
                                                                </object>
                                                                <reference key="NSControlView" ref="673219624"/>
-                                                               <int key="NSButtonFlags">-935051009</int>
+                                                               <int key="NSButtonFlags">-935051264</int>
                                                                <int key="NSButtonFlags2">160</int>
                                                                <object class="NSCustomResource" key="NSNormalImage">
                                                                        <string key="NSClassName">NSImage</string>
@@ -89,6 +89,7 @@
                                                                <int key="NSPeriodicDelay">400</int>
                                                                <int key="NSPeriodicInterval">75</int>
                                                        </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                </object>
                                                <object class="NSButton" id="52857407">
                                                        <reference key="NSNextResponder" ref="303120456"/>
                                                        <reference key="NSNextKeyView" ref="403739499"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="617399467">
-                                                               <int key="NSCellFlags">-2080244224</int>
+                                                               <int key="NSCellFlags">-2080374784</int>
                                                                <int key="NSCellFlags2">134217728</int>
                                                                <string key="NSContents"/>
                                                                <reference key="NSSupport" ref="921632451"/>
                                                                <reference key="NSControlView" ref="52857407"/>
-                                                               <int key="NSButtonFlags">138690815</int>
+                                                               <int key="NSButtonFlags">138690560</int>
                                                                <int key="NSButtonFlags2">160</int>
                                                                <object class="NSCustomResource" key="NSNormalImage">
                                                                        <string key="NSClassName">NSImage</string>
                                                                <int key="NSPeriodicDelay">400</int>
                                                                <int key="NSPeriodicInterval">75</int>
                                                        </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                </object>
                                                <object class="NSButton" id="306218447">
                                                        <reference key="NSNextResponder" ref="303120456"/>
                                                        <reference key="NSNextKeyView" ref="673219624"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="751933283">
-                                                               <int key="NSCellFlags">-2080244224</int>
+                                                               <int key="NSCellFlags">-2080374784</int>
                                                                <int key="NSCellFlags2">134217728</int>
                                                                <string key="NSContents"/>
                                                                <reference key="NSSupport" ref="921632451"/>
                                                                <reference key="NSControlView" ref="306218447"/>
-                                                               <int key="NSButtonFlags">138690815</int>
+                                                               <int key="NSButtonFlags">138690560</int>
                                                                <int key="NSButtonFlags2">160</int>
                                                                <object class="NSCustomResource" key="NSNormalImage">
                                                                        <string key="NSClassName">NSImage</string>
                                                                <int key="NSPeriodicDelay">400</int>
                                                                <int key="NSPeriodicInterval">75</int>
                                                        </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                </object>
                                                <object class="NSTextField" id="403739499">
                                                        <reference key="NSNextResponder" ref="303120456"/>
                                                        <reference key="NSNextKeyView"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSTextFieldCell" key="NSCell" id="696487414">
-                                                               <int key="NSCellFlags">67239488</int>
+                                                               <int key="NSCellFlags">67108928</int>
                                                                <int key="NSCellFlags2">138549312</int>
                                                                <string key="NSContents">999 of 999 transfers</string>
                                                                <object class="NSFont" key="NSSupport" id="660654866">
                                                                        </object>
                                                                </object>
                                                        </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                </object>
                                                <object class="NSScrollView" id="87647552">
                                                        <reference key="NSNextResponder" ref="303120456"/>
                                                                                        <reference key="NSWindow"/>
                                                                                        <reference key="NSNextKeyView" ref="1068338331"/>
                                                                                        <bool key="NSEnabled">YES</bool>
+                                                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                                                                       <bool key="NSControlAllowsExpansionToolTips">YES</bool>
                                                                                        <object class="_NSCornerView" key="NSCornerView">
                                                                                                <nil key="NSNextResponder"/>
                                                                                                <int key="NSvFlags">-2147483392</int>
                                                                                                        <double key="NSMinWidth">16</double>
                                                                                                        <double key="NSMaxWidth">3000</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">Color</string>
                                                                                                                <object class="NSFont" key="NSSupport" id="26">
                                                                                                                </object>
                                                                                                        </object>
                                                                                                        <object class="NSImageCell" key="NSDataCell" id="121868389">
-                                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                                               <int key="NSCellFlags">134217728</int>
                                                                                                                <int key="NSCellFlags2">33685504</int>
                                                                                                                <object class="NSImage" key="NSContents" id="153628464">
                                                                                                                        <int key="NSImageFlags">549453824</int>
@@ -394,60 +400,61 @@ dBtdylsFt0VNsgjojBuwipKts4jFtBtdwtjNrF0lw9tdxdsNxtyzItyV11192F2IjjiVkFswoIjDiVtd
 3UrFtdzBu5Q1yF2V4V4d4l4t3F45RF39t1x11tx941596AjQgIAADwEAAAMAAAABAD4AAAEBAAMAAAAB
 AD4AAAECAAMAAAAEAAAkvAEDAAMAAAABAAUAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAAB
 AAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAD4AAAEXAAQAAAABAAAj+gEcAAMAAAABAAEAAAE9AAMAAAAB
-AAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAAkxIdzAAcAAAw4AAAkzAAAAAAACAAIAAgACAABAAEAAQAB
-AAAMOGFwcGwCEAAAbW50clJHQiBYWVogB9sACgAMABMALgAZYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAA
+AAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAAkxIdzAAcAAAyYAAAkzAAAAAAACAAIAAgACAABAAEAAQAB
+AAAMmGFwcGwCEAAAbW50clJHQiBYWVogB90AAQAEABUAIwAiYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAEgY3BydAAAAtQAAAAkd3RwdAAAAvgAAAAU
-clhZWgAAAwwAAAAUZ1hZWgAAAyAAAAAUYlhZWgAAAzQAAAAUclRSQwAAA0gAAAgMYWFyZwAAC1QAAAAg
-dmNndAAAC3QAAAAwbmRpbgAAC6QAAAA+Y2hhZAAAC+QAAAAsbW1vZAAADBAAAAAoYlRSQwAAA0gAAAgM
-Z1RSQwAAA0gAAAgMYWFiZwAAC1QAAAAgYWFnZwAAC1QAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAA
+AAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAGAY3BydAAAAzQAAAAkd3RwdAAAA1gAAAAU
+clhZWgAAA2wAAAAUZ1hZWgAAA4AAAAAUYlhZWgAAA5QAAAAUclRSQwAAA6gAAAgMYWFyZwAAC7QAAAAg
+dmNndAAAC9QAAAAwbmRpbgAADAQAAAA+Y2hhZAAADEQAAAAsbW1vZAAADHAAAAAoYlRSQwAAA6gAAAgM
+Z1RSQwAAA6gAAAgMYWFiZwAAC7QAAAAgYWFnZwAAC7QAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAFgAAAAxwdEJSAAAACAAAARhpdElUAAAACAAAARhodUhV
-AAAACAAAARh6aFRXAAAACAAAARhuYk5PAAAACAAAARhjc0NaAAAACAAAARhrb0tSAAAACAAAARhkZURF
-AAAACAAAARhzdlNFAAAACAAAARh6aENOAAAACAAAARhqYUpQAAAACAAAARhhcgAAAAAACAAAARhwdFBU
-AAAACAAAARhubE5MAAAACAAAARhmckZSAAAACAAAARhlc0VTAAAACAAAARh0clRSAAAACAAAARhmaUZJ
-AAAACAAAARhwbFBMAAAACAAAARhydVJVAAAACAAAARhlblVTAAAACAAAARhkYURLAAAACAAAARgAaQBN
-AGEAY3RleHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDExAFhZWiAAAAAAAADzFgABAAAAARbK
-WFlaIAAAAAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMAALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3Q
-Y3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQBy
-AHcAfACBAIYAiwCQAJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwEN
-ARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh
-AekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMA
-AwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRx
-BH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3
-BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRgha
-CG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrc
-CvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D
-Dd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RET
-ETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTO
-FPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6
-GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2Z
-HcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKv
-It0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/
-KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5M
-LoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTY
-NRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvo
-PCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9
-Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0ua
-S+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRC
-VI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114
-XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9
-Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGV
-cfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB
-fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE
-iGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQg
-lIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDY
-oUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4t
-rqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7wh
-vJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3
-yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx
-2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ
-6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX
-+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAA
-AAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWA
-AABMwAAAnsAAACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIAAAX4
-///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAAAAAGEAAAoAcAAAAAySceAAAAAAAAAAAA
-AAAAAAAAAAA</bytes>
+AAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHgAAAAxza1NLAAAACAAAAXhjYUVTAAAACAAAAXhoZUlM
+AAAACAAAAXhwdEJSAAAACAAAAXhpdElUAAAACAAAAXhodUhVAAAACAAAAXh1a1VBAAAACAAAAXhrb0tS
+AAAACAAAAXhuYk5PAAAACAAAAXhjc0NaAAAACAAAAXh6aFRXAAAACAAAAXhkZURFAAAACAAAAXhyb1JP
+AAAACAAAAXhzdlNFAAAACAAAAXh6aENOAAAACAAAAXhqYUpQAAAACAAAAXhhcgAAAAAACAAAAXhlbEdS
+AAAACAAAAXhwdFBUAAAACAAAAXhubE5MAAAACAAAAXhmckZSAAAACAAAAXhlc0VTAAAACAAAAXh0aFRI
+AAAACAAAAXh0clRSAAAACAAAAXhmaUZJAAAACAAAAXhockhSAAAACAAAAXhwbFBMAAAACAAAAXhydVJV
+AAAACAAAAXhlblVTAAAACAAAAXhkYURLAAAACAAAAXgAaQBNAGEAY3RleHQAAAAAQ29weXJpZ2h0IEFw
+cGxlLCBJbmMuLCAyMDEzAFhZWiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5igAAAWdYWVog
+AAAAAAAAYSMAALnmAAAT9lhZWiAAAAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ
+AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKMAqACt
+ALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZ
+AWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJL
+AlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOK
+A5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUc
+BSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcH
+BxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglP
+CWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5
+DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8J
+DyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKE
+EqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZs
+Fo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF
+GuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+U
+H78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTa
+JQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqb
+Ks8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDb
+MRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec
+N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7g
+PyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0ar
+RvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08A
+T0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfg
+WC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP
+YaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tP
+a6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXh
+dj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEK
+gWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zK
+jTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkk
+mZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYa
+poum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu
+tCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hj
+wl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC6
+0TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A2
+4L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY
+8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJh
+AAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEAAAABAAAAAAAA
+AAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAAnsAAACWAAAAMwAAAUAAAAFRA
+AAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIAAAX4///zHQAAB7oAAP1y///7nf///aQAAAPZ
+AADAcW1tb2QAAAAAAAAGEAAAoAcAAAAAySceAAAAAAAAAAAAAAAAAAAAAAA</bytes>
                                                                                                                                                </object>
                                                                                                                                                <string key="NSCacheWindowColorSpace">NSCalibratedRGBColorSpace</string>
                                                                                                                                                <int key="NSCacheWindowBPS">8</int>
@@ -461,7 +468,6 @@ AAAAAAAAAAA</bytes>
                                                                                                                                <bytes key="NSWhite">MCAwAA</bytes>
                                                                                                                        </object>
                                                                                                                </object>
-                                                                                                               <reference key="NSSupport" ref="26"/>
                                                                                                                <int key="NSAlign">0</int>
                                                                                                                <int key="NSScale">0</int>
                                                                                                                <int key="NSStyle">0</int>
@@ -475,7 +481,7 @@ AAAAAAAAAAA</bytes>
                                                                                                        <double key="NSMinWidth">48</double>
                                                                                                        <double key="NSMaxWidth">3.4028229999999999e+38</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">Group</string>
                                                                                                                <reference key="NSSupport" ref="26"/>
@@ -491,7 +497,7 @@ AAAAAAAAAAA</bytes>
                                                                                                                <reference key="NSTextColor" ref="441405713"/>
                                                                                                        </object>
                                                                                                        <object class="NSTextFieldCell" key="NSDataCell" id="787380903">
-                                                                                                               <int key="NSCellFlags">69336641</int>
+                                                                                                               <int key="NSCellFlags">69206081</int>
                                                                                                                <int key="NSCellFlags2">4196352</int>
                                                                                                                <string key="NSContents">Text Cell</string>
                                                                                                                <object class="NSFont" key="NSSupport">
@@ -513,7 +519,7 @@ AAAAAAAAAAA</bytes>
                                                                                                        <double key="NSMinWidth">10</double>
                                                                                                        <double key="NSMaxWidth">10</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents"/>
                                                                                                                <reference key="NSSupport" ref="26"/>
@@ -521,10 +527,9 @@ AAAAAAAAAAA</bytes>
                                                                                                                <reference key="NSTextColor" ref="441405713"/>
                                                                                                        </object>
                                                                                                        <object class="NSImageCell" key="NSDataCell" id="266712038">
-                                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                                               <int key="NSCellFlags">134217728</int>
                                                                                                                <int key="NSCellFlags2">33685504</int>
                                                                                                                <reference key="NSContents" ref="153628464"/>
-                                                                                                               <reference key="NSSupport" ref="26"/>
                                                                                                                <int key="NSAlign">8</int>
                                                                                                                <int key="NSScale">0</int>
                                                                                                                <int key="NSStyle">0</int>
@@ -538,7 +543,7 @@ AAAAAAAAAAA</bytes>
                                                                                                        <double key="NSMinWidth">64</double>
                                                                                                        <double key="NSMaxWidth">64</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">DL Speed</string>
                                                                                                                <reference key="NSSupport" ref="26"/>
@@ -546,7 +551,7 @@ AAAAAAAAAAA</bytes>
                                                                                                                <reference key="NSTextColor" ref="441405713"/>
                                                                                                        </object>
                                                                                                        <object class="NSTextFieldCell" key="NSDataCell" id="837967890">
-                                                                                                               <int key="NSCellFlags">69336641</int>
+                                                                                                               <int key="NSCellFlags">69206081</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">Text Cell</string>
                                                                                                                <reference key="NSSupport" ref="660654866"/>
@@ -567,7 +572,7 @@ AAAAAAAAAAA</bytes>
                                                                                                        <double key="NSMinWidth">10</double>
                                                                                                        <double key="NSMaxWidth">10</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents"/>
                                                                                                                <reference key="NSSupport" ref="26"/>
@@ -575,10 +580,9 @@ AAAAAAAAAAA</bytes>
                                                                                                                <reference key="NSTextColor" ref="441405713"/>
                                                                                                        </object>
                                                                                                        <object class="NSImageCell" key="NSDataCell" id="358871970">
-                                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                                               <int key="NSCellFlags">134217728</int>
                                                                                                                <int key="NSCellFlags2">33685504</int>
                                                                                                                <reference key="NSContents" ref="153628464"/>
-                                                                                                               <reference key="NSSupport" ref="26"/>
                                                                                                                <int key="NSAlign">8</int>
                                                                                                                <int key="NSScale">0</int>
                                                                                                                <int key="NSStyle">0</int>
@@ -592,7 +596,7 @@ AAAAAAAAAAA</bytes>
                                                                                                        <double key="NSMinWidth">64</double>
                                                                                                        <double key="NSMaxWidth">64</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">75628096</int>
+                                                                                                               <int key="NSCellFlags">75497536</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">UL Speed</string>
                                                                                                                <reference key="NSSupport" ref="26"/>
@@ -600,7 +604,7 @@ AAAAAAAAAAA</bytes>
                                                                                                                <reference key="NSTextColor" ref="441405713"/>
                                                                                                        </object>
                                                                                                        <object class="NSTextFieldCell" key="NSDataCell" id="774159814">
-                                                                                                               <int key="NSCellFlags">69336641</int>
+                                                                                                               <int key="NSCellFlags">69206081</int>
                                                                                                                <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">Text Cell</string>
                                                                                                                <reference key="NSSupport" ref="660654866"/>
@@ -647,6 +651,7 @@ AAAAAAAAAAA</bytes>
                                                                        <reference key="NSSuperview" ref="87647552"/>
                                                                        <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="306218447"/>
+                                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                        <reference key="NSTarget" ref="87647552"/>
                                                                        <string key="NSAction">_doScroller:</string>
                                                                        <double key="NSPercent">0.98089171974522293</double>
@@ -658,6 +663,7 @@ AAAAAAAAAAA</bytes>
                                                                        <reference key="NSSuperview" ref="87647552"/>
                                                                        <reference key="NSWindow"/>
                                                                        <reference key="NSNextKeyView" ref="306237956"/>
+                                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
                                                                        <int key="NSsFlags">1</int>
                                                                        <reference key="NSTarget" ref="87647552"/>
                                                                        <string key="NSAction">_doScroller:</string>
@@ -673,6 +679,9 @@ AAAAAAAAAAA</bytes>
                                                        <reference key="NSHScroller" ref="365285506"/>
                                                        <reference key="NSContentView" ref="306237956"/>
                                                        <bytes key="NSScrollAmts">AAAAAAAAAABCggAAQoIAAA</bytes>
+                                                       <double key="NSMinMagnification">0.25</double>
+                                                       <double key="NSMaxMagnification">4</double>
+                                                       <double key="NSMagnification">1</double>
                                                </object>
                                        </array>
                                        <string key="NSFrameSize">{515, 248}</string>
@@ -680,7 +689,7 @@ AAAAAAAAAAA</bytes>
                                        <reference key="NSWindow"/>
                                        <reference key="NSNextKeyView" ref="87647552"/>
                                </object>
-                               <string key="NSScreenRect">{{0, 0}, {2560, 1440}}</string>
+                               <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
                                <string key="NSMinSize">{350, 27}</string>
                                <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
                                <string key="NSFrameAutosaveName">TransmissionWindow</string>
@@ -1549,6 +1558,15 @@ AAAAAAAAAAA</bytes>
                                                                        <reference key="NSOnImage" ref="246127200"/>
                                                                        <reference key="NSMixedImage" ref="330170270"/>
                                                                </object>
+                                                               <object class="NSMenuItem" id="822231323">
+                                                                       <reference key="NSMenu" ref="335948734"/>
+                                                                       <string key="NSTitle">Rename…</string>
+                                                                       <string key="NSKeyEquiv"/>
+                                                                       <int key="NSKeyEquivModMask">1048576</int>
+                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                       <reference key="NSOnImage" ref="246127200"/>
+                                                                       <reference key="NSMixedImage" ref="330170270"/>
+                                                               </object>
                                                                <object class="NSMenuItem" id="219482367">
                                                                        <reference key="NSMenu" ref="335948734"/>
                                                                        <string key="NSTitle">Update Tracker</string>
@@ -3652,6 +3670,14 @@ AAAAAAAAAAA</bytes>
                                        </object>
                                        <int key="connectionID">3440</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">renameSelected:</string>
+                                               <reference key="source" ref="30116300"/>
+                                               <reference key="destination" ref="822231323"/>
+                                       </object>
+                                       <int key="connectionID">3444</int>
+                               </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
                                                <string key="label">delegate</string>
@@ -4449,6 +4475,7 @@ AAAAAAAAAAA</bytes>
                                                        <reference ref="349340971"/>
                                                        <reference ref="245039314"/>
                                                        <reference ref="96633809"/>
+                                                       <reference ref="822231323"/>
                                                </array>
                                                <reference key="parent" ref="249425108"/>
                                        </object>
@@ -5459,6 +5486,11 @@ AAAAAAAAAAA</bytes>
                                                <reference key="object" ref="751933283"/>
                                                <reference key="parent" ref="306218447"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">3441</int>
+                                               <reference key="object" ref="822231323"/>
+                                               <reference key="parent" ref="335948734"/>
+                                       </object>
                                </array>
                        </object>
                        <dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -5680,6 +5712,7 @@ AAAAAAAAAAA</bytes>
                                <string key="3432.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
                                <string key="3435.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
                                <string key="3436.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="3441.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
                                <string key="418.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
                                <string key="456.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
                                <string key="457.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -5705,24 +5738,27 @@ AAAAAAAAAAA</bytes>
                        <nil key="activeLocalization"/>
                        <dictionary class="NSMutableDictionary" key="localizations"/>
                        <nil key="sourceID"/>
-                       <int key="maxID">3440</int>
+                       <int key="maxID">3444</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <array class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <object class="IBPartialClassDescription">
                                        <string key="className">Controller</string>
                                        <string key="superclassName">NSObject</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <string key="NS.key.0">showGlobalPopover:</string>
-                                               <string key="NS.object.0">id</string>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <string key="NS.key.0">showGlobalPopover:</string>
-                                               <object class="IBActionInfo" key="NS.object.0">
+                                       <dictionary class="NSMutableDictionary" key="actions">
+                                               <string key="renameSelected:">id</string>
+                                               <string key="showGlobalPopover:">id</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="actionInfosByName">
+                                               <object class="IBActionInfo" key="renameSelected:">
+                                                       <string key="name">renameSelected:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="showGlobalPopover:">
                                                        <string key="name">showGlobalPopover:</string>
                                                        <string key="candidateClassName">id</string>
                                                </object>
-                                       </object>
+                                       </dictionary>
                                        <dictionary class="NSMutableDictionary" key="outlets">
                                                <string key="fActionButton">NSButton</string>
                                                <string key="fActionMenu">NSMenu</string>
@@ -5975,15 +6011,15 @@ AAAAAAAAAAA</bytes>
                </object>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
-                       <real value="1070" key="NS.object.0"/>
+                       <real value="1080" key="NS.object.0"/>
                </object>
                <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
                <int key="IBDocument.defaultPropertyAccessControl">3</int>
                <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
                        <string key="CleanupTemplate">{128, 128}</string>
                        <string key="NSActionTemplate">{15, 15}</string>
-                       <string key="NSMenuCheckmark">{9, 8}</string>
-                       <string key="NSMenuMixedState">{7, 2}</string>
+                       <string key="NSMenuCheckmark">{11, 11}</string>
+                       <string key="NSMenuMixedState">{10, 3}</string>
                        <string key="PriorityHighTemplate">{128, 128}</string>
                        <string key="PriorityLowTemplate">{128, 128}</string>
                        <string key="PriorityNormalTemplate">{128, 128}</string>