--- a/Plugins/Image Uploading Plugin/AIImageUploaderPlugin.h Fri Jul 27 12:31:32 2012 +0200
+++ b/Plugins/Image Uploading Plugin/AIImageUploaderPlugin.h Thu Jul 26 22:29:49 2012 -0500
@@ -31,10 +31,15 @@
NSDictionary *windowControllers;
NSDictionary *uploadInstances;
+ NSMenuItem* contextMenuItem; + NSMenuItem* editMenuItem; @property (copy, nonatomic) NSString *defaultService;
+- (void)addUploader:(Class)uploader; +- (void)removeUploader:(Class)uploader; - (void)errorWithMessage:(NSString *)message forChat:(AIChat *)chat;
- (void)uploadedURL:(NSString *)url forChat:(AIChat *)chat;
- (void)updateProgress:(NSUInteger)uploaded total:(NSUInteger)total forChat:(AIChat *)chat;
--- a/Plugins/Image Uploading Plugin/AIImageUploaderPlugin.m Fri Jul 27 12:31:32 2012 +0200
+++ b/Plugins/Image Uploading Plugin/AIImageUploaderPlugin.m Thu Jul 26 22:29:49 2012 -0500
@@ -44,40 +44,58 @@
windowControllers = [[NSMutableDictionary alloc] init];
uploadInstances = [[NSMutableDictionary alloc] init];
- [uploaders addObject:[AIImageShackImageUploader class]];
- [uploaders addObject:[AIImgurImageUploader class]];
+ contextMenuItem = [[NSMenuItem alloc] initWithTitle:IMAGE_UPLOAD_MENU_TITLE target:self action:@selector(uploadImage) keyEquivalent:@""];
+ editMenuItem = [[NSMenuItem alloc] initWithTitle:IMAGE_UPLOAD_MENU_TITLE + action:@selector(uploadImage) + keyEquivalent:@"k" keyMask:NSCommandKeyMask | NSAlternateKeyMask]; - NSMenu *subMenu = [[NSMenu alloc] init];
- [subMenu setDelegate:self];
+ NSMenu* contextSubmenu = [[NSMenu alloc] init]; + NSMenu* editSubmenu = [[NSMenu alloc] init]; + [contextSubmenu setDelegate:self]; + [editSubmenu setDelegate:self];
- menuItem = [[[NSMenuItem alloc] initWithTitle:IMAGE_UPLOAD_MENU_TITLE
- action:@selector(uploadImage)
- keyMask:NSCommandKeyMask | NSAlternateKeyMask] autorelease];
+ [contextMenuItem setSubmenu:contextSubmenu]; + [editMenuItem setSubmenu:contextSubmenu]; + [adium.menuController addMenuItem:editMenuItem toLocation:LOC_Edit_Links]; + [adium.menuController addContextualMenuItem:contextMenuItem toLocation:Context_TextView_Edit]; + [adium.preferenceController registerPreferenceObserver:self forGroup:PREF_GROUP_FORMATTING]; - [menuItem setSubmenu:subMenu];
- [adium.menuController addMenuItem:menuItem toLocation:LOC_Edit_Links];
+ [self addUploader:[AIImageShackImageUploader class]]; + [self addUploader:[AIImgurImageUploader class]];
- menuItem = [[[NSMenuItem alloc] initWithTitle:IMAGE_UPLOAD_MENU_TITLE
- action:@selector(uploadImage)
- keyEquivalent:@""] autorelease];
+- (void)addUploader:(Class)uploader + // using indexOfObjectIdenticalTo: because Class instances don't implement the NSObject protocol, causing all kinds + // of weirdness when using them with NSArrays + if ([uploaders indexOfObjectIdenticalTo:uploader] != NSNotFound) - [menuItem setSubmenu:[[subMenu copy] autorelease]];
+ [uploaders addObject:uploader]; + [self menuNeedsUpdate:[contextMenuItem submenu]]; + [self menuNeedsUpdate:[editMenuItem submenu]]; +- (void)removeUploader:(Class)uploader + // using indexOfObjectIdenticalTo: because Class instances don't implement the NSObject protocol, causing all kinds + // of weirdness when using them with NSArrays + NSUInteger index = [uploaders indexOfObjectIdenticalTo:uploader]; + if (index == NSNotFound) - [adium.menuController addContextualMenuItem:menuItem toLocation:Context_TextView_Edit];
- [adium.preferenceController registerPreferenceObserver:self forGroup:PREF_GROUP_FORMATTING];
+ [uploaders removeObjectAtIndex:index]; + [self menuNeedsUpdate:[contextMenuItem submenu]]; + [self menuNeedsUpdate:[editMenuItem submenu]]; + [[contextMenuItem menu] removeItem:contextMenuItem]; + [[editMenuItem menu] removeItem:editMenuItem]; [adium.preferenceController unregisterPreferenceObserver:self];
@@ -87,6 +105,8 @@
[windowControllers release];
[uploadInstances release];
+ [contextMenuItem release]; + [editMenuItem release];