From 452c66d9d83ff93b80909ab7a43b19a6444e8509 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Sun, 30 Nov 2008 19:23:15 +0000 Subject: [PATCH] patch from ciaran for #757 to add separate download locations for each group (when added) --- macosx/AddWindowController.m | 32 ++- macosx/GroupsController.h | 6 + macosx/GroupsController.m | 35 +++ macosx/GroupsWindowController.h | 4 + macosx/GroupsWindowController.m | 70 +++++ macosx/en.lproj/PrefsWindow.xib | 442 ++++++++++++++++++++++++++++---- 6 files changed, 521 insertions(+), 68 deletions(-) diff --git a/macosx/AddWindowController.m b/macosx/AddWindowController.m index a7dd3410e..8d3933e71 100644 --- a/macosx/AddWindowController.m +++ b/macosx/AddWindowController.m @@ -257,22 +257,25 @@ [fController askOpenConfirmed: self add: YES]; //ensure last, since it releases this controller } +- (void) setDestination: (NSString *) destination +{ + [fDestination release]; + fDestination = [destination retain]; + + [fLocationField setStringValue: [fDestination stringByAbbreviatingWithTildeInPath]]; + [fLocationField setToolTip: fDestination]; + + ExpandedPathToIconTransformer * iconTransformer = [[ExpandedPathToIconTransformer alloc] init]; + [fLocationImageView setImage: [iconTransformer transformedValue: fDestination]]; + [iconTransformer release]; + + [fTorrent changeDownloadFolder: fDestination]; +} + - (void) folderChoiceClosed: (NSOpenPanel *) openPanel returnCode: (NSInteger) code contextInfo: (void *) contextInfo { if (code == NSOKButton) - { - [fDestination release]; - fDestination = [[[openPanel filenames] objectAtIndex: 0] retain]; - - [fLocationField setStringValue: [fDestination stringByAbbreviatingWithTildeInPath]]; - [fLocationField setToolTip: fDestination]; - - ExpandedPathToIconTransformer * iconTransformer = [[ExpandedPathToIconTransformer alloc] init]; - [fLocationImageView setImage: [iconTransformer transformedValue: fDestination]]; - [iconTransformer release]; - - [fTorrent changeDownloadFolder: fDestination]; - } + [self setDestination: [[openPanel filenames] objectAtIndex: 0]]; else { if (!fDestination) @@ -289,6 +292,9 @@ - (void) changeGroupValue: (id) sender { fGroupValue = [sender tag]; + if ([[GroupsController groups] usesCustomDownloadLocationForIndex: fGroupValue] && + [[GroupsController groups] customDownloadLocationForIndex: fGroupValue]) + [self setDestination: [[GroupsController groups] customDownloadLocationForIndex: fGroupValue]]; } - (void) sameNameAlertDidEnd: (NSAlert *) alert returnCode: (NSInteger) returnCode contextInfo: (void *) contextInfo diff --git a/macosx/GroupsController.h b/macosx/GroupsController.h index 6ef556467..754513158 100644 --- a/macosx/GroupsController.h +++ b/macosx/GroupsController.h @@ -44,6 +44,12 @@ - (NSColor *) colorForIndex: (NSInteger) index; - (void) setColor: (NSColor *) color forIndex: (NSInteger) index; +- (BOOL) usesCustomDownloadLocationForIndex: (NSInteger) index; +- (void) setUsesCustomDownloadLocation: (BOOL) useCustomLocation forIndex: (NSInteger) index; + +- (NSString *) customDownloadLocationForIndex: (NSInteger) index; +- (void) setCustomDownloadLocation: (NSString *) location forIndex: (NSInteger) index; + - (void) addNewGroup; - (void) removeGroupWithRowIndex: (NSInteger) row; diff --git a/macosx/GroupsController.m b/macosx/GroupsController.m index 8d3b7da1b..ba820d020 100644 --- a/macosx/GroupsController.m +++ b/macosx/GroupsController.m @@ -166,6 +166,41 @@ GroupsController * fGroupsInstance = nil; [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGroups" object: self]; } +- (BOOL) usesCustomDownloadLocationForIndex: (NSInteger) index +{ + NSInteger orderIndex = [self rowValueForIndex: index]; + return orderIndex != -1 ? [[[fGroups objectAtIndex: orderIndex] objectForKey: @"UsesCustomDownloadLocation"] boolValue] : NO; +} + +- (void) setUsesCustomDownloadLocation: (BOOL) useCustomLocation forIndex: (NSInteger) index +{ + NSMutableDictionary * dict = [fGroups objectAtIndex: [self rowValueForIndex: index]]; + + [dict setObject: [NSNumber numberWithBool:useCustomLocation] forKey: @"UsesCustomDownloadLocation"]; + + [[GroupsController groups] saveGroups]; + [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGroups" object: self]; +} + +- (NSString *) customDownloadLocationForIndex: (NSInteger) index +{ + NSInteger orderIndex = [self rowValueForIndex: index]; + return orderIndex != -1 ? [[fGroups objectAtIndex: orderIndex] objectForKey: @"CustomDownloadLocation"] : nil; +} + +- (void) setCustomDownloadLocation: (NSString *) location forIndex: (NSInteger) index +{ + NSMutableDictionary * dict = [fGroups objectAtIndex: [self rowValueForIndex: index]]; + + if (location) + [dict setObject: location forKey: @"CustomDownloadLocation"]; + else + [dict removeObjectForKey: @"CustomDownloadLocation"]; + + [[GroupsController groups] saveGroups]; + [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateGroups" object: self]; +} + - (void) addNewGroup { //find the lowest index diff --git a/macosx/GroupsWindowController.h b/macosx/GroupsWindowController.h index c1e59b66c..f0c1c54e1 100644 --- a/macosx/GroupsWindowController.h +++ b/macosx/GroupsWindowController.h @@ -33,8 +33,12 @@ IBOutlet NSColorWell * fSelectedColorView; IBOutlet NSTextField * fSelectedColorNameField; + IBOutlet NSButton * fCustomLocationEnableCheck; + IBOutlet NSPopUpButton * fCustomLocationPopUp; } - (void) addRemoveGroup: (id) sender; +- (IBAction) toggleUseCustomDownloadLocation: (id) sender; +- (IBAction) customDownloadLocationSheetShow: (id) sender; @end diff --git a/macosx/GroupsWindowController.m b/macosx/GroupsWindowController.m index ad33d8ce0..08ac66761 100644 --- a/macosx/GroupsWindowController.m +++ b/macosx/GroupsWindowController.m @@ -25,6 +25,8 @@ #import "GroupsWindowController.h" #import "GroupsController.h" #import "NSApplicationAdditions.h" +#import "ExpandedPathToPathTransformer.h" +#import "ExpandedPathToIconTransformer.h" #define GROUP_TABLE_VIEW_DATA_TYPE @"GroupTableViewDataType" @@ -175,6 +177,57 @@ } } +- (void) customDownloadLocationSheetShow: (id) sender +{ + NSOpenPanel * panel = [NSOpenPanel openPanel]; + + [panel setPrompt: NSLocalizedString(@"Select", "Preferences -> Open panel prompt")]; + [panel setAllowsMultipleSelection: NO]; + [panel setCanChooseFiles: NO]; + [panel setCanChooseDirectories: YES]; + [panel setCanCreateDirectories: YES]; + + [panel beginSheetForDirectory: nil file: nil types: nil + modalForWindow: [fCustomLocationPopUp window] modalDelegate: self didEndSelector: + @selector(customDownloadLocationSheetClosed:returnCode:contextInfo:) contextInfo: nil]; +} + +- (IBAction) toggleUseCustomDownloadLocation: (id) sender +{ + NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]]; + if ([fCustomLocationEnableCheck state] == NSOnState) + { + if ([[GroupsController groups] customDownloadLocationForIndex: index]) + [[GroupsController groups] setUsesCustomDownloadLocation: YES forIndex: index]; + else + [self customDownloadLocationSheetShow: nil]; + } + else + [[GroupsController groups] setUsesCustomDownloadLocation: NO forIndex: index]; + + [fCustomLocationPopUp setEnabled: ([fCustomLocationEnableCheck state] == NSOnState)]; +} + +- (void) customDownloadLocationSheetClosed: (NSOpenPanel *) openPanel returnCode: (int) code contextInfo: (void *) info +{ + NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]]; + NSString * path = [[GroupsController groups] customDownloadLocationForIndex: index]; + if (code == NSOKButton) + { + path = [[openPanel filenames] objectAtIndex: 0]; + [[GroupsController groups] setCustomDownloadLocation: path forIndex: index]; + [[GroupsController groups] setUsesCustomDownloadLocation: YES forIndex: index]; + [self updateSelectedColor]; // Update the popup's icon/title + } + else if (!path) + { + [[GroupsController groups] setUsesCustomDownloadLocation: NO forIndex: index]; + [fCustomLocationEnableCheck setState: NSOffState]; + } + + [fCustomLocationPopUp selectItemAtIndex: 0]; +} + @end @implementation GroupsWindowController (Private) @@ -189,6 +242,21 @@ [fSelectedColorView setEnabled: YES]; [fSelectedColorNameField setStringValue: [[GroupsController groups] nameForIndex: index]]; [fSelectedColorNameField setEnabled: YES]; + [fCustomLocationEnableCheck setState: [[GroupsController groups] usesCustomDownloadLocationForIndex: index]]; + [fCustomLocationPopUp setEnabled: ([fCustomLocationEnableCheck state] == NSOnState)]; + if ([[GroupsController groups] customDownloadLocationForIndex: index]) + { + NSString * location = [[GroupsController groups] customDownloadLocationForIndex: index]; + ExpandedPathToPathTransformer * pathTransformer = [[[ExpandedPathToPathTransformer alloc] init] autorelease]; + [[fCustomLocationPopUp itemAtIndex: 0] setTitle: [pathTransformer transformedValue: location]]; + ExpandedPathToIconTransformer * iconTransformer = [[[ExpandedPathToIconTransformer alloc] init] autorelease]; + [[fCustomLocationPopUp itemAtIndex: 0] setImage: [iconTransformer transformedValue: location]]; + } + else + { + [[fCustomLocationPopUp itemAtIndex: 0] setTitle: @""]; + [[fCustomLocationPopUp itemAtIndex: 0] setImage: nil]; + } } else { @@ -196,6 +264,8 @@ [fSelectedColorView setEnabled: NO]; [fSelectedColorNameField setStringValue: @""]; [fSelectedColorNameField setEnabled: NO]; + [fCustomLocationEnableCheck setEnabled: NO]; + [fCustomLocationPopUp setEnabled: NO]; } } diff --git a/macosx/en.lproj/PrefsWindow.xib b/macosx/en.lproj/PrefsWindow.xib index 3b59410ca..555aa69a0 100644 --- a/macosx/en.lproj/PrefsWindow.xib +++ b/macosx/en.lproj/PrefsWindow.xib @@ -1,27 +1,19 @@ - + 1050 9F33 - 677 + 672 949.34 352.00 YES + YES com.apple.InterfaceBuilder.CocoaPlugin - - YES - - YES - - - YES - - YES @@ -367,7 +359,7 @@ NSResponder - + 256 YES @@ -376,6 +368,7 @@ 256 {{13, 10}, {509, 272}} + YES @@ -389,6 +382,7 @@ 256 {{280, 192}, {182, 26}} + YES -2076049856 @@ -492,6 +486,7 @@ 256 {{104, 198}, {174, 17}} + YES 67239424 @@ -508,6 +503,7 @@ 256 {{40, 198}, {62, 17}} + YES 67239424 @@ -524,6 +520,7 @@ 256 {{105, 129}, {188, 18}} + YES 67239424 @@ -546,6 +543,7 @@ 256 {{105, 19}, {181, 18}} + YES 67239424 @@ -568,6 +566,7 @@ 256 {{289, 14}, {182, 26}} + YES -2076049856 @@ -640,6 +639,7 @@ 256 {{36, 20}, {66, 17}} + YES 67239424 @@ -656,6 +656,7 @@ 256 {{105, 172}, {178, 18}} + YES 67239424 @@ -678,6 +679,7 @@ 256 {{286, 167}, {182, 26}} + YES -2076049856 @@ -750,6 +752,7 @@ 256 {{105, 93}, {283, 18}} + YES 67239424 @@ -772,6 +775,7 @@ 256 {{105, 149}, {192, 18}} + YES 67239424 @@ -794,6 +798,7 @@ 256 {{124, 53}, {197, 18}} + YES 67239424 @@ -816,6 +821,7 @@ 256 {{17, 94}, {86, 17}} + YES 67239424 @@ -832,6 +838,7 @@ 256 {{124, 73}, {235, 18}} + YES 67239424 @@ -852,6 +859,7 @@ {{10, 33}, {489, 226}} + Adding @@ -1521,11 +1529,13 @@ {535, 288} + + NSView NSResponder - + 256 YES @@ -1588,45 +1598,102 @@ - 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 +AAAFRIdzAAcAABEcAAAFTAAAAAAACAAIAAgACAABAAEAAQABAAARHGFwcGwCAAAAbW50clJHQiBYWVog +B9gABQAOAA8ANwAOYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBs +qlXhYpeENdnVkJ+2xNguoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAU +Z1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAO +Z1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABk +ZHNjbQAADpAAAAI+bW1vZAAAENAAAAAoY3BydAAAEPgAAAAkWFlaIAAAAAAAAFuKAAA0GQAACEtYWVog +AAAAAAAAd5UAALWhAAAoTVhZWiAAAAAAAAAjtwAAFmEAAKKNWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMy +AAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2 +AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAASQBpgJ6A3wEfAV+ +BoAHggiDCUQJxQqHC4gMiQ2MDrYQaBGREpETkhSUFZUWlReXGMUabxubHJsdnR7IIHUhoiKjI88leyam +J9EpfiqrK9Ytgi6tL9oxhzKyM981jDa2N+E5jjq6O+Y9kz6+P+pBlkLCQ+5FmkbGR/JJn0rKS/ZNok7O +T9BQ0FHRUvxUqlXVVtZX11jYWgRbsVzcXd1e3l/fYOBiDGO5ZORl5WbmZ+do6GnpaxVswW3tbu5v73Dw +cfFy8nP0dPR19Xb2d/d4+Hn5evp7/Hz8ff1/KYDVggGDAoQDhQSGBYcGiAeJCIoJiwqMC40Mjg2PDpAP +kRCSEZMSlBOVFJYVlxaYF5kYmhmbGpwbnRyeHZ8eoB+hIKIhoyKkI6UkpiWnJ6gnqSiqKasqq+usbK0s +ri2vL7AwsTGyMbMytDS1NbY2tva3drg3uTi6Ors7vDy9PL49vv6/f8A/wUDCQcNCxEPFBMWExkXHRshH +yUnKScsKy4vMS81Mzk7PDs+P0FDRUdJS0xLTktRT1VTWVdcW15fYV9lY2lrbGtub3FzdXN5d3x7fn+Bf +4WDiIeKi42LkY+Vk5iXmpudm6GfpaOop6qrrauxr7WzuLe6u727wb/Fw8jHysvNy9HP1dPY19rb3dvh4 ++Xn6efs6+7v8e/18/j3+vv//AAABIwIOAvADywSrBZMGfAdnCFQJQwo0CycMJw0YDhcPGBAYERUSJhMo +FDgVTBZeF3MYjhmvGssb6R0THjYfZyCYIccjASQ9JXEmsSfvKSgqbCu7LQMuQS+RMOEyKTOGNNc2Kjdw +OMU6Fzt4PMw+Fj9vQMJCJEN7RNFGHkd4SL1J+UsxTGVNlU7RUA5RR1J4U6VU1FYKV0BYcVmdWsZb710f +Xk9femCiYcVi6WQVZT9mWGd+aKBpwGrda/ltE24rb0RwaHF8cpBzonS1dch223fqePZ6A3sRfCB9LH41 +f0CAS4FPgluDYIRlhWyGdIdyiICJgIqDi4mMko2LjpqPmZCXkZGSnJOSlJaVmJaol6eYrpmomqubr5y8 +nbyexZ/MoNGh06LTo9Ok26Xkpuen4qjlqe+q8avvrO6t8q7vr+uw7LHnsuGz4rTatdG2ybfAuLe5r7qc +u5K8gL1tvlu/S8A8wSrCEsL5w+DEysW0xpPHcshTyTbKG8r/y9rMtM2KzlrPI8/m0LPRfdJF0w7T3dSg +1WrWM9b9183Yk9ld2ina89u63ILdS94U3t7fqeBz4TviBOLK45TkXuUn5ezmuueB6ErpFend6qTrbOw1 +7P7tye6S71vwJPDs8bPyfPNH9BL02PWl9m/3OfgD+Mf5kfpb+yP77fy2/YD+Sf8W//8AAACDAXgCegM7 +A7oEfQU/Bb8GgQeFCEYIxQmGCocLigxKDMsNjQ6ND44QTxDPEZASkhOTFJMVVBXUFpYXlhiYGZoamxub +HJwdXB3dHp8foCChIaEioSOjJKQlpSamJ6coqCmpKmkq6iuqLKwtrS6uL68wsDGxMrIzszS0NbY2tje2 +OHg4+Dm6Oro7uzy8Pb0+fj7+P79AwEHBQsJDw0SERQRFxUbGR8dIyEnJSspLi0wMTMxNzU7OT89QkFEQ +UdFS0lPTVNRV1laWVxZX11jYWdla2lubXBtc3F3dXt9f4GDgYaFiIWLiY+Nk5GXlZqZnJmfnaOhp6Wrq +a6tsLGzsbe1u7m/vcPBx8XLyc/N09HX1dvZ393i4eTh5+Xr6e/t8/H39fv5//4EAggKDAoQDhQSGBYcH +iAeJCInJikqLC4wMjQyODY8PkBCREZIRkxKUE5UUlhaXF5gYmRiaGZsanBydHJ4dnx6gH6EgoiGi4qNj +pCOlJKYmpyaoJ6koqimrKqwsrS2uLq8vsDCxMbIxszK0M7U0tjW3N7g3uTi6Obs7vDu9PL4+vz7AP8FA +wkHDQsRDxUXGRsdGyEfJSMpJy0vMds4iz07QUNFQ0lHTfdUq1lbXV9iC2i/bWtyG3jPfieE14ozkZOY7 +55Hpaetq7Wzvb/GK9Fr2j/mL/VL//wAAbmRpbgAAAAAAAAY2AACWKwAAVpoAAFOiAACGKwAAJ18AABao +AABQDQAAVDkAAgUeAAI9cAABSj0AAwEAAAIAAAABABAAHQAuAEIAWQBzAJAAsAD4ASABSwF4AagBzgHn +Ag8CRwKBAr0C/AM9A4EDxgP8BCEEWQSmBPUFRgWFBa8F7wZHBqEG5gcVB1wHvQgHCDkIhAjrCToJbwnA +Ci0KgAq4Cw4LgQvZDBQMbgzoDUUNgw3hDmEOwg8DD2YP7BBREJYQ/RGJEfISOhKlEzcTpRPvFF8U9xVp +FbYWKxbHF2YYBxiqGSUZdxn0Gp0bRxvzHKAdJB18HgEetR9qICEg2iGUIiIigCMPI88kkSVVJhom4ier +KEMoqSlCKhEq4SuzLIctXC4zLwwv5zDEMaIygjNkNEc1LDYTNvw35jiXOQ45wDqwO6E8lD2IPn8/d0Bx +QWxCaUNoRGhFa0ZuR3RIe0mESo9Lm0ypTbhOyU/cUPFSB1MeVDhVU1ZwV45YrlnQWvNcGF0+XmZfkGC7 +YehjF2RHZXlmrGkYalBrimzFbgJvQXCBccNzBnRLdZJ4JHlverx8Cn1afqx//4FUhAKFXIa3iBOJcYrR +jZWO+ZBfkcaTL5Sal3OY45pTm8WerqAloZ2jF6YQp46pDqqPrZevHbCksi21RLbRuGG58b0XvqzAQsN0 +xQ/GrMhKy4rNLc7R0HbTxtVw1xvYyNwm3djfiuE/5KzmZOgf6drtVu8W8NfymvRf9+z5tft//xj//wAA +AAIACgAXACkAPwBYAHUAlQC4AN4BBwEwAV8BjgG/AfMCKgJfApoC1AMPA00DjAPNBA0ETwSVBNsFIAVp +BbAF+AZDBo8G2QclB3UHwwgSCGQIuAkLCVwJrgoECl4KtAsKC2MLvwwVDHAMzQ0qDY0N7A5MDq8PDQ9v +D9YQQBCkEQ4RdhHbEkYSsRMgE5IT/hRzFO0VahXqFmwW8hd0F/YYehkBGYwaGhqqGzkbxhxWHOkdgB4Z +HrYfUR/qIIYhJiHIIm4jFyO+JGMlDCXBJm4nHyfSKIkpQin9KrsrfCw9LPctvy6IL1QwITDvMb8ykTNq +NEQ1HjX7NtU3uTidOYE6ZztXPD09Lz4hPxJABEEDQfJC8UPvROtF5kbzR+tI9UoCSxRMF00xTj5PT1BS +UWtSeVObVLJVzFbbV/xZFFovW05ccV2ZXsVf52EJYjBjaGSaZb9m8GgpaWVql2vVbRtuVW+bcOhyKHN2 +dMl2HXdzeMp6I3uOfOp+WX/IgTaCpYQShY6HEoiWihiLm401js6QZZH6k42VN5blmJ6aapxVnimgBaHs +o8KltaeZqYarY61cr0axOLM0tS63LbkouyW9KL8wwT/DSMVRx2zJccuRzaDPvNHe0//WH9g92mTci966 +4OzjGeVC54DpqOvk7hrwZvKe9Ob3KPlu+7b+Af//AAAABgAQAB0AQgBZAJAAsADSASABSwF4AagCDwJH +AoECvQM9A4EDxgQPBFkE9QVGBZoF7wZHBqEG/gdcCB8IhAjrCVQJwAotCpwLDguBC/cMbgzoDWQOYQ7j +D2YP7BBzEP0RiRIWEqUTNxPKFF8U9xWQFscXZhgHGKoZThn0G0cb8xygHVAeAR61ICEg2iGUIlEjDyPP +JJEmGibiJ6sodilCKuErsyyHLVwuMy8MMMQxojKCM2Q0RzYTNvw35jjSOcA6sDyUPYg+fz93QHFCaUNo +RGhFa0ZuSHtJhEqPS5tMqU24TslP3FDxUgdTHlQ4VVNXjliuWdBa81wYXT5eZl+QYLth6GMXZEdleWas +Z+FpGGpQbMVuAm9BcIFxw3MGdEt1knbaeCR5b3q8fAp9Wn6sf/+BVIKqhAKFXIa3iBOJcYrRjDKO+ZBf +kcaTL5SalgaXc5jjmlObxZ05nq6gJaGdoxekk6YQp46pDqqPrBKtl68dsKSyLbO4tUS20bhhufG7g70X +vqzAQsHaw3TFD8asyErJ6cuKzMTNls7R0HbSHdPG1XDWsNeG2Mjadtwm3WveRN+K4T/ih+Ni5Kzl9ubT +6B/pa+pJ6yjsB+1W7qbvhvBn8UjyKvML8+700PWz9pb3VPfs+IT5Qvon+ub7f/wY/J79Ef2E/ff+pP+L +//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAABIAAAAM +bmJOTwAAABIAAADocHRQVAAAABYAAAD6c3ZTRQAAABAAAAEQZmlGSQAAABAAAAEgZGFESwAAABwAAAEw +emhDTgAAAAwAAAFMZnJGUgAAABIAAAFYamFKUAAAAA4AAAFqZW5VUwAAABIAAAF4cGxQTAAAABIAAAGK +cHRCUgAAABgAAAGcZXNFUwAAABIAAAG0emhUVwAAAA4AAAHGcnVSVQAAACQAAAHUa29LUgAAAAwAAAH4 +ZGVERQAAABAAAAIEbmxOTAAAABYAAAIUaXRJVAAAABQAAAIqAEYAYQByAGcAZQAtAEwAQwBEAEwAQwBE +ACAAYQAgAEMAbwByAGUAcwBGAOQAcgBnAC0ATABDAEQAVgDkAHIAaQAtAEwAQwBEAEwAQwBEAC0AZgBh +AHIAdgBlAHMAawDmAHIAbV9pgnIAIABMAEMARADJAGMAcgBhAG4AIABMAEMARDCrMOkw/AAgAEwAQwBE +AEMAbwBsAG8AcgAgAEwAQwBEAEsAbwBsAG8AcgAgAEwAQwBEAEwAQwBEACAAQwBvAGwAbwByAGkAZABv +AEwAQwBEACAAYwBvAGwAbwByX2mCcm2yZnaYb3k6VmgEJgQyBDUEQgQ9BD4EOQAgBBYEGgAtBDQEOARB +BD8EOwQ1BDnO7LfsACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEsAbABlAHUAcgBlAG4ALQBMAEMARABM +AEMARAAgAGMAbwBsAG8AcgBpAABtbW9kAAAAAAAABhAAAJxXAAAAAL/4e4AAAAAAAAAAAAAAAAAAAAAA +dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMDgAA NSCalibratedRGBColorSpace 8 @@ -1830,8 +1897,119 @@ eHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDA4AA MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA + + + 256 + {{336, 107}, {182, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + YES + YES + + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + T3RoZXLigKY + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 268 + {{188, 141}, {314, 18}} + + YES + + 67239424 + 0 + Use separate download location for this group + + + 1211912703 + 130 + + + + + 200 + 25 + + + + + 268 + {{206, 113}, {126, 17}} + + YES + + 68288064 + 272630784 + Download location: + + + + + + {535, 240} + NSView @@ -6985,6 +7163,38 @@ AAABAAAAAQ 1807 + + + fCustomLocationEnableCheck + + + + 1818 + + + + toggleUseCustomDownloadLocation: + + + + 1820 + + + + fCustomLocationPopUp + + + + 1821 + + + + customDownloadLocationSheetShow: + + + + 1822 + @@ -9332,6 +9542,9 @@ AAABAAAAAQ + + + Groups @@ -9447,6 +9660,78 @@ AAABAAAAAQ + + 1808 + + + YES + + + + + + 1809 + + + YES + + + + + + 1810 + + + YES + + + + + + + + 1811 + + + + + 1812 + + + + + 1813 + + + + + 1814 + + + YES + + + + + + 1815 + + + + + 1816 + + + YES + + + + + + 1817 + + + @@ -9776,6 +10061,22 @@ AAABAAAAAQ 1795.IBPluginDependency 1796.IBPluginDependency 1800.IBPluginDependency + 1808.IBPluginDependency + 1808.ImportedFromIB2 + 1809.IBPluginDependency + 1810.IBEditorWindowLastContentRect + 1810.IBPluginDependency + 1810.ImportedFromIB2 + 1811.IBPluginDependency + 1811.ImportedFromIB2 + 1812.IBPluginDependency + 1812.ImportedFromIB2 + 1813.IBPluginDependency + 1813.ImportedFromIB2 + 1814.IBPluginDependency + 1815.IBPluginDependency + 1816.IBPluginDependency + 1817.IBPluginDependency 190.IBPluginDependency 190.ImportedFromIB2 192.IBPluginDependency @@ -10302,6 +10603,22 @@ AAABAAAAAQ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{504, 585}, {182, 53}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -10529,7 +10846,7 @@ AAABAAAAAQ - 1807 + 1822 @@ -10554,14 +10871,27 @@ AAABAAAAAQ GroupsWindowController NSWindowController - addRemoveGroup: - id + YES + + YES + addRemoveGroup: + customDownloadLocationSheetShow: + toggleUseCustomDownloadLocation: + + + YES + id + id + id + YES YES fAddRemoveControl + fCustomLocationEnableCheck + fCustomLocationPopUp fSelectedColorNameField fSelectedColorView fTableView @@ -10569,6 +10899,8 @@ AAABAAAAAQ YES NSSegmentedControl + NSButton + NSPopUpButton NSTextField NSColorWell NSTableView -- 2.40.0