#3006 Allow Trackers to be pasted in Create Window

This commit is contained in:
Mitchell Livingston 2010-04-23 02:05:34 +00:00
parent 1aa2a856c8
commit 3b38ec9205
2 changed files with 66 additions and 0 deletions

View File

@ -60,4 +60,6 @@
- (void) addRemoveTracker: (id) sender;
- (void) paste: (id) sender;
@end

View File

@ -23,6 +23,7 @@
*****************************************************************************/
#import "CreatorWindowController.h"
#import "NSApplicationAdditions.h"
#import "NSStringAdditions.h"
#import "utils.h" //tr_urlIsValidTracker
@ -321,6 +322,69 @@
[fTrackerAddRemoveControl setEnabled: [fTrackerTable numberOfSelectedRows] > 0 forSegment: TRACKER_REMOVE_TAG];
}
- (BOOL) validateMenuItem: (NSMenuItem *) menuItem
{
const SEL action = [menuItem action];
if (action == @selector(paste:))
return [[self window] firstResponder] == fTrackerTable
&& ([NSApp isOnSnowLeopardOrBetter]
? [[NSPasteboard generalPasteboard] canReadObjectForClasses: [NSArray arrayWithObject: [NSString class]] options: nil]
: [[NSPasteboard generalPasteboard] availableTypeFromArray: [NSArray arrayWithObject: NSStringPboardType]] != nil);
return YES;
}
- (void) paste: (id) sender
{
NSMutableArray * tempTrackers = [NSMutableArray array];
if ([NSApp isOnSnowLeopardOrBetter])
{
NSArray * items = [[NSPasteboard generalPasteboard] readObjectsForClasses:
[NSArray arrayWithObject: [NSString class]] options: nil];
NSAssert(items != nil, @"no string items to paste; should not be able to call this method");
for (NSString * pbItem in items)
{
for (NSString * tracker in [pbItem componentsSeparatedByString: @"\n"])
[tempTrackers addObject: tracker];
}
}
else
{
NSString * pbItem =[[NSPasteboard generalPasteboard] stringForType: NSStringPboardType];
NSAssert(pbItem != nil, @"no string items to paste; should not be able to call this method");
for (NSString * tracker in [pbItem componentsSeparatedByString: @"\n"])
[tempTrackers addObject: tracker];
}
BOOL added = NO;
for (NSString * tracker in tempTrackers)
{
tracker = [tracker stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([tracker rangeOfString: @"://"].location == NSNotFound)
tracker = [@"http://" stringByAppendingString: tracker];
if (tr_urlIsValidTracker([tracker UTF8String]))
{
[fTrackers addObject: tracker];
added = YES;
}
}
if (added)
{
[fTrackerTable deselectAll: self];
[fTrackerTable reloadData];
}
else
NSBeep();
}
@end
@implementation CreatorWindowController (Private)