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;
};
- (void) revealFile: (id) sender;
+- (IBAction) renameSelected: (id) sender;
+
- (void) announceSelectedTorrents: (id) sender;
- (void) verifySelectedTorrents: (id) sender;
#import "BlocklistDownloader.h"
#import "StatusBarController.h"
#import "FilterBarController.h"
+#import "FileRenameSheetController.h"
#import "BonjourController.h"
#import "Badger.h"
#import "DragOverlayWindow.h"
[[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])
//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:))
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;
- (NSString *) description;
-- (NSIndexSet *) indexes;
-
- (NSMutableArray *) children;
+- (BOOL) updateFromOldName: (NSString *) oldName toNewName: (NSString *) newName inPath: (NSString *) path;
+
@end
@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];
- (void) revealFile: (id) sender;
+- (IBAction) renameSelected: (id) sender;
+
@end
#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"
[[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
{
return canChange;
}
+ if (action == @selector(renameSelected:))
+ {
+ return [fOutline numberOfSelectedRows] == 1;
+ }
+
return YES;
}
{
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];
--- /dev/null
+//
+// 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
--- /dev/null
+//
+// 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
--- /dev/null
+<?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>
--- /dev/null
+//
+// 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
--- /dev/null
+//
+// 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
--- /dev/null
+<?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>
Credits.rtf \
AboutWindow.xib \
BlocklistStatusWindow.xib \
+ FileRenameSheetController.xib \
FilterBar.xib \
InfoFileView.xib \
InfoPeersView.xib \
ExpandedPathToIconTransformer.m \
ExpandedPathToPathTransformer.h \
ExpandedPathToPathTransformer.m \
+ FileRenameSheetController.h \
+ FileRenameSheetController.m \
FileListNode.h \
FileListNode.m \
FileNameCell.h \
- (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;
[(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
}
}
+- (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;
<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>
<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">
<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>
<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>
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>
<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>
<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"/>
<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">
<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"/>
<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>
<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"/>
<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"/>
<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"/>
<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>
<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"/>
<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"/>
<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>
<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>
<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>
<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>
<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>
</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>
<reference ref="349340971"/>
<reference ref="245039314"/>
<reference ref="96633809"/>
+ <reference ref="822231323"/>
</array>
<reference key="parent" ref="249425108"/>
</object>
<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">
<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>
<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>
</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>