From 2f2408b22724e136d0b76ecc20283dab4aff2295 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Tue, 1 Sep 2009 12:21:52 -0400 Subject: [PATCH] Port the remote gallery viewer from the iPhoto plugin. --- ApertureToAnselExportPlugin/AnselGalleryViewItem.h | 34 ++++++ ApertureToAnselExportPlugin/AnselGalleryViewItem.m | 67 ++++++++++++ .../ApertureToAnselExportPlugin.h | 11 +- .../ApertureToAnselExportPlugin.m | 115 ++++++++++++++++++++- .../project.pbxproj | 20 +++- .../ApertureToAnselExportPlugin.nib/info.nib | 1 + .../keyedobjects.nib | Bin 26307 -> 26615 bytes 7 files changed, 238 insertions(+), 10 deletions(-) create mode 100644 ApertureToAnselExportPlugin/AnselGalleryViewItem.h create mode 100644 ApertureToAnselExportPlugin/AnselGalleryViewItem.m diff --git a/ApertureToAnselExportPlugin/AnselGalleryViewItem.h b/ApertureToAnselExportPlugin/AnselGalleryViewItem.h new file mode 100644 index 000000000..068c07f07 --- /dev/null +++ b/ApertureToAnselExportPlugin/AnselGalleryViewItem.h @@ -0,0 +1,34 @@ +// +// AnselGalleryViewItem.h +// iPhoto2Ansel +// +// Created by Michael Rubinsky on 5/7/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// +#import +#import + +@interface AnselGalleryViewItem: NSObject +{ + NSURL *image; + NSString *imageID; + NSString *imageTitle; + NSCalendarDate *imageDate; +} + +@property(readwrite,copy) NSURL * image; +@property(readwrite,copy) NSString * imageID; + +- (id)initWithURL: (NSURL *)theUrl withTitle: (NSString *)theTitle withDate: (NSDate *)theDate; + +#pragma mark - +#pragma mark Required Methods IKImageBrowserItem Informal Protocol +- (NSString *)imageUID; +- (NSString *)imageRepresentationType; +- (id)imageRepresentation; + +- (NSString *)imageTitle; +- (NSString *)imageSubtitle; + +@end + diff --git a/ApertureToAnselExportPlugin/AnselGalleryViewItem.m b/ApertureToAnselExportPlugin/AnselGalleryViewItem.m new file mode 100644 index 000000000..e792d14dd --- /dev/null +++ b/ApertureToAnselExportPlugin/AnselGalleryViewItem.m @@ -0,0 +1,67 @@ +// +// AnselGalleryViewItem.m +// iPhoto2Ansel +// +// Implementation of the IKImageBrowserItem protocol + +// Created by Michael Rubinsky on 5/7/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import "AnselGalleryViewItem.h" + +@implementation AnselGalleryViewItem +@synthesize image; +@synthesize imageID; + +- (id)initWithURL: (NSURL *)theURL + withTitle: (NSString *)theTitle + withDate: (NSDate *)theDate +{ + [super init]; + image = [theURL retain]; + imageID = [[theURL absoluteString] retain]; + imageTitle = [theTitle retain]; + imageDate = [theDate retain]; + return self; +} + +- (void)dealloc +{ + [image release]; + [imageID release]; + [imageTitle release]; + [imageDate release]; + [super dealloc]; +} + +#pragma mark +#pragma mark Required methods +- (NSString *)imageUID +{ + return imageID; +} + +- (NSString *)imageRepresentationType +{ + return IKImageBrowserNSURLRepresentationType; +} + +- (id)imageRepresentation +{ + return [[image retain] autorelease]; +} + +#pragma mark +#pragma mark Optional methods. +- (NSString *)imageTitle +{ + return imageTitle; +} + +- (NSString *)imageSubtitle +{ + return [imageDate description]; +} + +@end diff --git a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.h b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.h index 91b91277b..96955aa18 100644 --- a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.h +++ b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.h @@ -8,7 +8,7 @@ #import #import -#import + #import "ApertureExportManager.h" #import "ApertureExportPlugIn.h" @@ -31,6 +31,10 @@ // The structure used to pass all progress information back to Aperture ApertureExportProgress exportProgress; + // TURAnsel objects + TURAnselGallery *_currentGallery; + TURAnsel *_anselController; + // Outlets to your plug-ins user interface IBOutlet NSView *settingsView; IBOutlet NSView *firstView; @@ -64,12 +68,11 @@ IBOutlet NSWindow *mviewGallerySheet; IBOutlet NSButton *closeGalleryView; IBOutlet IKImageBrowserView *browserView; + NSMutableArray *_browserData; + // Flags, counters etc... BOOL cancelExport; - TURAnselGallery *_currentGallery; int _currentImageCount; - TURAnsel *_anselController; - NSMutableArray *_browserData; BOOL isExporting; } diff --git a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.m b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.m index 1555f8bd2..4ba1b0b49 100644 --- a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.m +++ b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.m @@ -9,6 +9,8 @@ #import "ApertureToAnselExportPlugin.h" #import "TURAnsel.h" #import "TURAnselGallery.h" +#import "TURAnselGalleryPanelController.h" +#import "AnselGalleryViewItem.h" @interface ApertureToAnselExportPlugin (PrivateAPI) - (void)showNewServerSheet; @@ -479,10 +481,12 @@ NSString * const TURAnselServerPasswordKey = @"password"; } } } + +#pragma mark - +#pragma mark Actions // Server setup sheet -(IBAction)doAddServer: (id)sender { - // TODO: Sanity checks NSDictionary *newServer = [[NSDictionary alloc] initWithObjectsAndKeys: [mServerSheetServerNickName stringValue], TURAnselServerNickKey, [mServerSheetHostURL stringValue], TURAnselServerEndpointKey, @@ -537,6 +541,103 @@ NSString * const TURAnselServerPasswordKey = @"password"; } } +// Show the gallery's image browser +- (IBAction)clickViewGallery: (id)sender +{ + [spinner startAnimation: self]; + [self setStatusText: @"Getting image list..."]; + NSMutableArray *images = [_currentGallery listImages]; + if ([images count] == 0) { + [spinner stopAnimation: self]; + [self setStatusText: @"Connected" withColor: [NSColor greenColor]]; + return; + } + + for (NSDictionary *image in images) { + NSString *caption = [image objectForKey:@"caption"]; + if (caption == nil) { + caption = [image objectForKey:@"filename"]; + } + + NSDate *theDate = [NSDate dateWithTimeIntervalSince1970: [[image objectForKey:@"original_date"] doubleValue]]; + AnselGalleryViewItem *item = [[AnselGalleryViewItem alloc] initWithURL: [NSURL URLWithString: [image objectForKey:@"url"]] + withTitle: caption + withDate: theDate]; + [_browserData addObject: item]; + } + + [NSApp beginSheet: mviewGallerySheet + modalForWindow: [self window] + modalDelegate: nil + didEndSelector: nil + contextInfo: nil]; + + [spinner stopAnimation: self]; + [self setStatusText: @"Connected" withColor: [NSColor greenColor]]; + + [browserView reloadData]; + +} + +- (IBAction) closeGalleryView: (id)sender +{ + [NSApp endSheet: mviewGallerySheet]; + [mviewGallerySheet orderOut: nil]; + [_browserData removeAllObjects]; + [browserView reloadData]; +} + +- (IBAction) closeServerList: (id)sender +{ + [serverTable setDelegate: nil]; + [NSApp endSheet: serverListPanel]; + [serverListPanel orderOut: nil]; +} + +// Remove the selected server from the saved list. +- (IBAction)removeServer: (id)sender +{ + NSTableColumn *theCol = [serverTable tableColumnWithIdentifier:@"nickname"]; + + // We are deleting the entry for the currently selected server - make sure + // we disconnect. + if ([_currentServer objectForKey:TURAnselServerNickKey] == [[theCol dataCell] stringValue]) { + [self disconnect]; + } + + NSUserDefaults *userPrefs = [NSUserDefaults standardUserDefaults]; + + // See if the removed server is the current default. + if ([[userPrefs objectForKey:TURAnselDefaultServerKey] objectForKey: TURAnselServerNickKey] == [[theCol dataCell] stringValue]) { + [userPrefs setObject: nil forKey:TURAnselDefaultServerKey]; + } + + // Remove it from the servers dictionary + [_anselServers removeObjectAtIndex: [serverTable selectedRow]]; + [userPrefs setObject:_anselServers forKey:TURAnselServersKey]; + + [userPrefs synchronize]; + [serverTable reloadData]; + [self updateServersPopupMenu]; +} + +// Put up the newGallerySheet NSPanel +- (IBAction)showNewGallery: (id)sender +{ + TURAnselGalleryPanelController *newGalleryController; + //NSString *albumName; + + // Make sure we're not doing this for nothing + if ([_anselController state] == TURAnselStateConnected) { + + //albumName = [mExportMgr albumNameAtIndex: 0]; + newGalleryController = [[TURAnselGalleryPanelController alloc] initWithController: _anselController + withGalleryName: nil]; + [newGalleryController setDelegate: self]; + [newGalleryController showSheetForWindow: [self window]]; + } +} + #pragma mark - #pragma mark PrivateAPI @@ -675,4 +776,16 @@ NSString * const TURAnselServerPasswordKey = @"password"; _anselController = nil; [self setStatusText:@"Not logged in" withColor: [NSColor redColor]]; } + +#pragma mark - +#pragma mark IKImageBrowserView Datasource methods +- (NSUInteger)numberOfItemsInImageBrowser:(IKImageBrowserView *) aBrowser +{ + return [_browserData count]; +} + +- (id)imageBrowser:(IKImageBrowserView *) aBrowser itemAtIndex:(NSUInteger)index +{ + return [_browserData objectAtIndex:index]; +} @end diff --git a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.xcodeproj/project.pbxproj b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.xcodeproj/project.pbxproj index 9804cc12e..f5592416e 100644 --- a/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.xcodeproj/project.pbxproj +++ b/ApertureToAnselExportPlugin/ApertureToAnselExportPlugin.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 42; + objectVersion = 45; objects = { /* Begin PBXBuildFile section */ @@ -45,6 +45,8 @@ B0D312691049AD7F006B06C6 /* README in Resources */ = {isa = PBXBuildFile; fileRef = B0D312171049A977006B06C6 /* README */; }; B0D3126A1049AD9A006B06C6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B0D312141049A977006B06C6 /* Localizable.strings */; }; B0D312A01049B26B006B06C6 /* XMLRPC.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B0D312941049B24A006B06C6 /* XMLRPC.framework */; }; + B0DEA058104D7012001D1509 /* AnselGalleryViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DEA057104D7012001D1509 /* AnselGalleryViewItem.m */; }; + B0DEA1CE104D7DE2001D1509 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0DEA1CD104D7DE2001D1509 /* Quartz.framework */; }; D118EA660AC08CCB006DD2FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D118EA640AC08CCB006DD2FE /* Localizable.strings */; }; D15DEA4A0ABF639500CBE3A5 /* PluginManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D15DEA490ABF639500CBE3A5 /* PluginManager.framework */; }; D15DEA4F0ABF63C600CBE3A5 /* ApertureToAnselExportPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = D15DEA4D0ABF63C600CBE3A5 /* ApertureToAnselExportPlugin.m */; }; @@ -116,6 +118,9 @@ B0D312311049A9F2006B06C6 /* XMLRPC-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "XMLRPC-Info.plist"; sourceTree = ""; }; B0D312391049AACC006B06C6 /* XMLRPC-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "XMLRPC-Info.plist"; sourceTree = ""; }; B0D312941049B24A006B06C6 /* XMLRPC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = XMLRPC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B0DEA056104D7012001D1509 /* AnselGalleryViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnselGalleryViewItem.h; sourceTree = ""; }; + B0DEA057104D7012001D1509 /* AnselGalleryViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnselGalleryViewItem.m; sourceTree = ""; }; + B0DEA1CD104D7DE2001D1509 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = ""; }; D118EA650AC08CCB006DD2FE /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = ""; }; D118EB0F0AC08EAE006DD2FE /* ApertureToAnselExportPlugin.ApertureExport */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ApertureToAnselExportPlugin.ApertureExport; sourceTree = BUILT_PRODUCTS_DIR; }; D15DEA490ABF639500CBE3A5 /* PluginManager.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PluginManager.framework; path = /Library/Frameworks/PluginManager.framework; sourceTree = ""; }; @@ -132,6 +137,7 @@ files = ( 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, D15DEA4A0ABF639500CBE3A5 /* PluginManager.framework in Frameworks */, + B0DEA1CE104D7DE2001D1509 /* Quartz.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -186,6 +192,8 @@ 08FB77AFFE84173DC02AAC07 /* Classes */ = { isa = PBXGroup; children = ( + B0DEA056104D7012001D1509 /* AnselGalleryViewItem.h */, + B0DEA057104D7012001D1509 /* AnselGalleryViewItem.m */, D15DEA4E0ABF63C600CBE3A5 /* ApertureToAnselExportPlugin.h */, D15DEA4D0ABF63C600CBE3A5 /* ApertureToAnselExportPlugin.m */, ); @@ -195,6 +203,7 @@ 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( + B0DEA1CD104D7DE2001D1509 /* Quartz.framework */, D15DEA490ABF639500CBE3A5 /* PluginManager.framework */, 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, ); @@ -361,7 +370,7 @@ 089C1669FE841209C02AAC07 /* Project object */ = { isa = PBXProject; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "ApertureToAnselExportPlugin" */; - compatibilityVersion = "Xcode 2.4"; + compatibilityVersion = "Xcode 3.1"; hasScannedForEncodings = 1; mainGroup = 089C166AFE841209C02AAC07 /* MyApertureExportPlugIn */; productRefGroup = 089C166AFE841209C02AAC07 /* MyApertureExportPlugIn */; @@ -420,6 +429,7 @@ B0D3122D1049A977006B06C6 /* XMLRPCRequest.m in Sources */, B0D3122E1049A977006B06C6 /* XMLRPCResponse.m in Sources */, B0AE23391049F7770096565B /* TURAnselGalleryPanelController.m in Sources */, + B0DEA058104D7012001D1509 /* AnselGalleryViewItem.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -514,7 +524,7 @@ INFOPLIST_FILE = Info.plist; INSTALL_PATH = "/Users/mrubinsk/Library/Application Support/Aperture/Plug-Ins"; PRODUCT_NAME = ApertureToAnselExportPlugin; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + SDKROOT = macosx10.5; WRAPPER_EXTENSION = ApertureExport; ZERO_LINK = YES; }; @@ -546,7 +556,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT = macosx10.4; }; name = Debug; }; @@ -561,7 +571,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT = macosx10.4; }; name = Release; }; diff --git a/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/info.nib b/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/info.nib index e2ca72e43..dba68c5db 100644 --- a/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/info.nib +++ b/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/info.nib @@ -11,6 +11,7 @@ IBOpenObjects 63 + 176 IBSystem Version 9L30 diff --git a/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/keyedobjects.nib b/ApertureToAnselExportPlugin/English.lproj/ApertureToAnselExportPlugin.nib/keyedobjects.nib index 796131938ccb9b76970ef4732b5d43650055f0cd..b6e84789562fb6308064a384b4b1802f4b941f89 100644 GIT binary patch literal 26615 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 Y%4#ar6fr{cao|UrrT*>yw`TPJ1Jz?5@Bjb+ literal 26307 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 -- 2.11.0