diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index b7b7b79..4b543fe 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -12,7 +12,7 @@ YES - + @@ -78,7 +78,7 @@ - Authorize with Flickr... + Authenticate with Flickr… 2147483647 @@ -2700,7 +2700,7 @@ P4AAAL+AAABDHgAAw5oAAA - {{392, 653}, {244, 183}} + {{392, 653}, {265, 183}} com.apple.InterfaceBuilder.CocoaPlugin {{23, 794}, {245, 183}} diff --git a/Info.plist b/Info.plist index 12e3d7b..ecc3e01 100644 --- a/Info.plist +++ b/Info.plist @@ -41,5 +41,42 @@ + CFBundleDocumentTypes + + + CFBundleTypeExtensions + jpg + jpeg + jpg2 + CFBundleTypeRoleViewer + + + CFBundleTypeExtensions + gif + CFBundleTypeRoleViewer + + + CFBundleTypeExtensions + png + CFBundleTypeRoleViewer + + + CFBundleTypeExtensions + tif + tiff + CFBundleTypeRoleViewer + + + CFBundleTypeExtensions + bmp + bm + CFBundleTypeRoleViewer + + + CFBundleTypeExtensions + psd + CFBundleTypeRoleViewer + + diff --git a/src/AppDelegate.h b/src/AppDelegate.h index 90d1d16..da0b7eb 100644 --- a/src/AppDelegate.h +++ b/src/AppDelegate.h @@ -9,6 +9,8 @@ NSString *flickrUserName_; NSString *lastUploadedTitle_; NSString *lastUploadedId_; + BOOL applicationDidFinishLaunching_; + BOOL shouldTerminateWhenDone_; IBOutlet NSProgressIndicator *progressIndicator_; IBOutlet HImageView *imageDropView_; IBOutlet NSTextView *textView_; diff --git a/src/AppDelegate.m b/src/AppDelegate.m index 69a3c23..d893026 100644 --- a/src/AppDelegate.m +++ b/src/AppDelegate.m @@ -86,6 +86,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { if (authToken) { flickrContext_.authToken = authToken; } + applicationDidFinishLaunching_ = YES; } @@ -99,9 +100,9 @@ - (IBAction)authorizeFlickr:(id)sender { - (IBAction)uploadImage:(id)sender { // todo: check if authorized - NSImage *image = imageDropView_.image; + //NSImage *image = imageDropView_.image; NSURL *imageURL = imageDropView_.url; - NSLog(@"%@ %@ -- %@", NSStringFromSelector(_cmd), image, imageURL); + //NSLog(@"%@ %@ -- %@", NSStringFromSelector(_cmd), image, imageURL); // filename NSString *filename = [imageURL lastPathComponent]; @@ -151,6 +152,22 @@ - (IBAction)uploadImage:(id)sender { suggestedFilename:filename MIMEType:mimeType arguments:params]; + NSLog(@"uploading %@...", imageURL); +} + + +- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames { + NSLog(@"openFiles:%@", filenames); + if (filenames.count > 1) { + [self presentErrorMessage:@"Flup can only handle one image at the time. " + "Please drop single images on me. I like that."]; + return; + } + shouldTerminateWhenDone_ = !applicationDidFinishLaunching_; + if (filenames.count != 0) { + imageDropView_.url = [NSURL fileURLWithPath:[filenames objectAtIndex:0]]; + [self uploadImage:self]; + } } @@ -173,6 +190,7 @@ - (void)flickrAPIRequest:(OFFlickrAPIRequest *)req [req callAPIMethodWithGET:@"flickr.photos.getSizes" arguments:[NSDictionary dictionaryWithObjectsAndKeys: photoId, @"photo_id", nil]]; + NSLog(@"fetching URLs for [%@] %@...", photoId, imageDropView_.url); return; } else if (req.sessionInfo == kGetImageSizesStep) { NSArray *imageSizes = [params valueForKeyPath:@"sizes.size"]; @@ -227,6 +245,10 @@ - (void)flickrAPIRequest:(OFFlickrAPIRequest *)req [pb clearContents]; [pb setString:sourceURLString forType:NSURLPboardType]; [pb setString:stringRep forType:NSStringPboardType]; + + // terminate? + if (shouldTerminateWhenDone_) + [NSApp terminate:self]; } [progressIndicator_ stopAnimation:self]; [imageDropView_ setEditable:YES]; @@ -236,7 +258,8 @@ - (void)flickrAPIRequest:(OFFlickrAPIRequest *)req - (void)flickrAPIRequest:(OFFlickrAPIRequest *)req - didFailWithError:(NSError *)inError { + didFailWithError:(NSError *)error { + NSLog(@"Flickr API request failed: (%@) %@", req, error); NSString *msg = @"Unspecified Flickr API error"; if (req.sessionInfo == kGetAuthTokenStep) { msg = @"Failed to receive authentication token from Flickr"; @@ -245,6 +268,9 @@ - (void)flickrAPIRequest:(OFFlickrAPIRequest *)req [self setAndStoreFlickrAuthToken:nil]; } else if (req.sessionInfo == kUploadImageStep) { msg = @"Failed to upload image"; + } + if (error) { + msg = [msg stringByAppendingFormat:@" -- %@", error]; } [progressIndicator_ stopAnimation:self]; [imageDropView_ setEditable:YES]; diff --git a/src/HImageView.m b/src/HImageView.m index b15daa2..4f81509 100644 --- a/src/HImageView.m +++ b/src/HImageView.m @@ -48,7 +48,7 @@ - (NSURL*)url { return url_; } -- (void)setURL:(NSURL*)url { +- (void)setUrl:(NSURL*)url { [self setImage:nil]; if (url) { NSImage *image = [[[NSImage alloc] initWithContentsOfURL:url] autorelease];