+++ /dev/null
-/**
- * AnselGalleryViewItem
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @implements IKImageBrowserItem
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Cocoa/Cocoa.h>
-#import <Quartz/Quartz.h>
-
-@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
+++ /dev/null
-/**
- * AnselGalleryViewItem.m
- *
- * Implements the IKImageBrowserItem protocol for displaying images from a
- * remote Ansel gallery in an IKImageBrowser.
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @implements IKImageBrowserItem
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#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;
-}
-
-#pragma mark
-#pragma mark Optional methods.
-- (NSString *)imageTitle
-{
- NSLog(@"imageTitle: %@", imageTitle);
- return imageTitle;
-}
-- (NSString *)imageSubtitle
-{
- NSLog(@"imageSubtitle: %@", [imageDate description]);
- return [imageDate description];
-}
-
-@end
/* Begin PBXBuildFile section */
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
- B070DA551069387B00C0E3FC /* TURAnselConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DA541069387B00C0E3FC /* TURAnselConstants.m */; };
- B0AE23391049F7770096565B /* TURAnselGalleryPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = B0AE23361049F7770096565B /* TURAnselGalleryPanelController.m */; };
- B0AE23411049F7A20096565B /* AnselGalleryPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = B0AE233D1049F7A20096565B /* AnselGalleryPanel.nib */; };
- B0D311D01049A7DE006B06C6 /* TURAnsel.m in Sources */ = {isa = PBXBuildFile; fileRef = B0D311CB1049A7DE006B06C6 /* TURAnsel.m */; };
- B0D311D11049A7DE006B06C6 /* TURAnselGallery.m in Sources */ = {isa = PBXBuildFile; fileRef = B0D311CD1049A7DE006B06C6 /* TURAnselGallery.m */; };
+ B070DB8A1069532500C0E3FC /* AnselGalleryViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DB7E1069532500C0E3FC /* AnselGalleryViewItem.m */; };
+ B070DB8B1069532500C0E3FC /* AnselGalleryPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = B070DB801069532500C0E3FC /* AnselGalleryPanel.nib */; };
+ B070DB8C1069532500C0E3FC /* TURAnsel.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DB821069532500C0E3FC /* TURAnsel.m */; };
+ B070DB8D1069532500C0E3FC /* TURAnselConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DB841069532500C0E3FC /* TURAnselConstants.m */; };
+ B070DB8E1069532500C0E3FC /* TURAnselGallery.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DB861069532500C0E3FC /* TURAnselGallery.m */; };
+ B070DB8F1069532500C0E3FC /* TURAnselGalleryPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = B070DB881069532500C0E3FC /* TURAnselGalleryPanelController.m */; };
B0DD64D2106738DB00085661 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DD64D1106738DB00085661 /* NSStringAdditions.m */; };
B0DD64E31067391E00085661 /* NSDataAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DD64E21067391E00085661 /* NSDataAdditions.m */; };
- 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 */; };
287924B90DAEB2A20074992A /* ApertureSDKCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApertureSDKCommon.h; sourceTree = "<group>"; };
32DBCF630370AF2F00C91783 /* ApertureToAnselExportPlugin_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApertureToAnselExportPlugin_Prefix.pch; sourceTree = "<group>"; };
8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- B070DA531069387B00C0E3FC /* TURAnselConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselConstants.h; sourceTree = "<group>"; };
- B070DA541069387B00C0E3FC /* TURAnselConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselConstants.m; sourceTree = "<group>"; };
- B070DA5A1069391F00C0E3FC /* TURAnselKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselKit.h; sourceTree = "<group>"; };
- B0AE23351049F7770096565B /* TURAnselGalleryPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselGalleryPanelController.h; sourceTree = "<group>"; };
- B0AE23361049F7770096565B /* TURAnselGalleryPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselGalleryPanelController.m; sourceTree = "<group>"; };
- B0AE233E1049F7A20096565B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/AnselGalleryPanel.nib; sourceTree = "<group>"; };
- B0D311CA1049A7DE006B06C6 /* TURAnsel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnsel.h; sourceTree = "<group>"; };
- B0D311CB1049A7DE006B06C6 /* TURAnsel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnsel.m; sourceTree = "<group>"; };
- B0D311CC1049A7DE006B06C6 /* TURAnselGallery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselGallery.h; sourceTree = "<group>"; };
- B0D311CD1049A7DE006B06C6 /* TURAnselGallery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselGallery.m; sourceTree = "<group>"; };
+ B070DB7D1069532500C0E3FC /* AnselGalleryViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnselGalleryViewItem.h; sourceTree = "<group>"; };
+ B070DB7E1069532500C0E3FC /* AnselGalleryViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnselGalleryViewItem.m; sourceTree = "<group>"; };
+ B070DB801069532500C0E3FC /* AnselGalleryPanel.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = AnselGalleryPanel.nib; sourceTree = "<group>"; };
+ B070DB811069532500C0E3FC /* TURAnsel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnsel.h; sourceTree = "<group>"; };
+ B070DB821069532500C0E3FC /* TURAnsel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnsel.m; sourceTree = "<group>"; };
+ B070DB831069532500C0E3FC /* TURAnselConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselConstants.h; sourceTree = "<group>"; };
+ B070DB841069532500C0E3FC /* TURAnselConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselConstants.m; sourceTree = "<group>"; };
+ B070DB851069532500C0E3FC /* TURAnselGallery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselGallery.h; sourceTree = "<group>"; };
+ B070DB861069532500C0E3FC /* TURAnselGallery.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselGallery.m; sourceTree = "<group>"; };
+ B070DB871069532500C0E3FC /* TURAnselGalleryPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselGalleryPanelController.h; sourceTree = "<group>"; };
+ B070DB881069532500C0E3FC /* TURAnselGalleryPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TURAnselGalleryPanelController.m; sourceTree = "<group>"; };
+ B070DB891069532500C0E3FC /* TURAnselKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TURAnselKit.h; sourceTree = "<group>"; };
B0DD64D0106738DB00085661 /* NSStringAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSStringAdditions.h; sourceTree = "<group>"; };
B0DD64D1106738DB00085661 /* NSStringAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSStringAdditions.m; sourceTree = "<group>"; };
B0DD64E11067391E00085661 /* NSDataAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDataAdditions.h; sourceTree = "<group>"; };
B0DD64E21067391E00085661 /* NSDataAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDataAdditions.m; sourceTree = "<group>"; };
- B0DEA056104D7012001D1509 /* AnselGalleryViewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnselGalleryViewItem.h; sourceTree = "<group>"; };
- B0DEA057104D7012001D1509 /* AnselGalleryViewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AnselGalleryViewItem.m; sourceTree = "<group>"; };
B0DEA1CD104D7DE2001D1509 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
D118EA650AC08CCB006DD2FE /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
D118EB0F0AC08EAE006DD2FE /* ApertureToAnselExportPlugin.ApertureExport */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ApertureToAnselExportPlugin.ApertureExport; sourceTree = BUILT_PRODUCTS_DIR; };
089C166AFE841209C02AAC07 /* MyApertureExportPlugIn */ = {
isa = PBXGroup;
children = (
+ B070DB7C1069532500C0E3FC /* TURAnselKit */,
B00872201066B73A00BE0CCF /* Additions */,
- B0D312931049B17F006B06C6 /* AnselToolkit */,
287924B60DAEB2A20074992A /* ApertureHeaders */,
08FB77AFFE84173DC02AAC07 /* Classes */,
32C88E010371C26100C91783 /* Other Sources */,
089C167CFE841241C02AAC07 /* Resources */ = {
isa = PBXGroup;
children = (
- B0AE233D1049F7A20096565B /* AnselGalleryPanel.nib */,
D15DEA500ABF641300CBE3A5 /* ApertureToAnselExportPlugin.nib */,
8D5B49B7048680CD000E48DA /* Info.plist */,
D118EA640AC08CCB006DD2FE /* Localizable.strings */,
name = Additions;
sourceTree = "<group>";
};
- B0D312931049B17F006B06C6 /* AnselToolkit */ = {
+ B070DB7C1069532500C0E3FC /* TURAnselKit */ = {
isa = PBXGroup;
children = (
- B0DEA056104D7012001D1509 /* AnselGalleryViewItem.h */,
- B0DEA057104D7012001D1509 /* AnselGalleryViewItem.m */,
- B0AE23351049F7770096565B /* TURAnselGalleryPanelController.h */,
- B0AE23361049F7770096565B /* TURAnselGalleryPanelController.m */,
- B0D311CB1049A7DE006B06C6 /* TURAnsel.m */,
- B0D311CA1049A7DE006B06C6 /* TURAnsel.h */,
- B0D311CC1049A7DE006B06C6 /* TURAnselGallery.h */,
- B0D311CD1049A7DE006B06C6 /* TURAnselGallery.m */,
- B070DA531069387B00C0E3FC /* TURAnselConstants.h */,
- B070DA541069387B00C0E3FC /* TURAnselConstants.m */,
- B070DA5A1069391F00C0E3FC /* TURAnselKit.h */,
+ B070DB7D1069532500C0E3FC /* AnselGalleryViewItem.h */,
+ B070DB7E1069532500C0E3FC /* AnselGalleryViewItem.m */,
+ B070DB7F1069532500C0E3FC /* English.lProj */,
+ B070DB811069532500C0E3FC /* TURAnsel.h */,
+ B070DB821069532500C0E3FC /* TURAnsel.m */,
+ B070DB831069532500C0E3FC /* TURAnselConstants.h */,
+ B070DB841069532500C0E3FC /* TURAnselConstants.m */,
+ B070DB851069532500C0E3FC /* TURAnselGallery.h */,
+ B070DB861069532500C0E3FC /* TURAnselGallery.m */,
+ B070DB871069532500C0E3FC /* TURAnselGalleryPanelController.h */,
+ B070DB881069532500C0E3FC /* TURAnselGalleryPanelController.m */,
+ B070DB891069532500C0E3FC /* TURAnselKit.h */,
);
- name = AnselToolkit;
+ path = TURAnselKit;
+ sourceTree = "<group>";
+ };
+ B070DB7F1069532500C0E3FC /* English.lProj */ = {
+ isa = PBXGroup;
+ children = (
+ B070DB801069532500C0E3FC /* AnselGalleryPanel.nib */,
+ );
+ path = English.lProj;
sourceTree = "<group>";
};
D118EB1C0AC08EE7006DD2FE /* Products */ = {
8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */,
D15DEA520ABF641300CBE3A5 /* ApertureToAnselExportPlugin.nib in Resources */,
D118EA660AC08CCB006DD2FE /* Localizable.strings in Resources */,
- B0AE23411049F7A20096565B /* AnselGalleryPanel.nib in Resources */,
+ B070DB8B1069532500C0E3FC /* AnselGalleryPanel.nib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
buildActionMask = 2147483647;
files = (
D15DEA4F0ABF63C600CBE3A5 /* ApertureToAnselExportPlugin.m in Sources */,
- B0D311D01049A7DE006B06C6 /* TURAnsel.m in Sources */,
- B0D311D11049A7DE006B06C6 /* TURAnselGallery.m in Sources */,
- B0AE23391049F7770096565B /* TURAnselGalleryPanelController.m in Sources */,
- B0DEA058104D7012001D1509 /* AnselGalleryViewItem.m in Sources */,
B0DD64D2106738DB00085661 /* NSStringAdditions.m in Sources */,
B0DD64E31067391E00085661 /* NSDataAdditions.m in Sources */,
- B070DA551069387B00C0E3FC /* TURAnselConstants.m in Sources */,
+ B070DB8A1069532500C0E3FC /* AnselGalleryViewItem.m in Sources */,
+ B070DB8C1069532500C0E3FC /* TURAnsel.m in Sources */,
+ B070DB8D1069532500C0E3FC /* TURAnselConstants.m in Sources */,
+ B070DB8E1069532500C0E3FC /* TURAnselGallery.m in Sources */,
+ B070DB8F1069532500C0E3FC /* TURAnselGalleryPanelController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
name = InfoPlist.strings;
sourceTree = "<group>";
};
- B0AE233D1049F7A20096565B /* AnselGalleryPanel.nib */ = {
- isa = PBXVariantGroup;
- children = (
- B0AE233E1049F7A20096565B /* English */,
- );
- name = AnselGalleryPanel.nib;
- sourceTree = "<group>";
- };
D118EA640AC08CCB006DD2FE /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
- <data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9F33</string>
- <string key="IBDocument.InterfaceBuilderVersion">672</string>
- <string key="IBDocument.AppKitVersion">949.34</string>
- <string key="IBDocument.HIToolboxVersion">352.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="15"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1001">
- <string key="NSClassName">TURAnselGalleryPanelController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">19</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{797, 724}, {267, 276}}</string>
- <int key="NSWTFlags">-536866816</int>
- <string key="NSWindowTitle">New Gallery</string>
- <string key="NSWindowClass">NSPanel</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="142371246">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 219}, {227, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="104713052">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="1035187758">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.300000e+01</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="142371246"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="926502601">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor" id="537053071">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="649170679">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor" id="957332318">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="970595672">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 240}, {88, 16}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="303822681">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Gallery Name</string>
- <object class="NSFont" key="NSSupport" id="849304139">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">1.200000e+01</double>
- <int key="NSfFlags">16</int>
- </object>
- <reference key="NSControlView" ref="970595672"/>
- <object class="NSColor" key="NSBackgroundColor" id="264684485">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlColor</string>
- <object class="NSColor" key="NSColor" id="961976611">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="339290383">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="957332318"/>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="768485006">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 195}, {73, 16}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="441648904">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Gallery Slug</string>
- <reference key="NSSupport" ref="849304139"/>
- <reference key="NSControlView" ref="768485006"/>
- <reference key="NSBackgroundColor" ref="264684485"/>
- <reference key="NSTextColor" ref="339290383"/>
- </object>
- </object>
- <object class="NSTextField" id="887381497">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 174}, {227, 22}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="347914051">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="887381497"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="926502601"/>
- <reference key="NSTextColor" ref="649170679"/>
- </object>
- </object>
- <object class="NSTextField" id="703267117">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 103}, {227, 47}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="116149712">
- <int key="NSCellFlags">-1805517311</int>
- <int key="NSCellFlags2">272629760</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="703267117"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="926502601"/>
- <reference key="NSTextColor" ref="649170679"/>
- </object>
- </object>
- <object class="NSTextField" id="568388187">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 150}, {124, 16}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="774003593">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Gallery Description</string>
- <reference key="NSSupport" ref="849304139"/>
- <reference key="NSControlView" ref="568388187"/>
- <reference key="NSBackgroundColor" ref="264684485"/>
- <reference key="NSTextColor" ref="339290383"/>
- </object>
- </object>
- <object class="NSButton" id="64211119">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{116, 12}, {68, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="490284298">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Cancel</string>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="64211119"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSButton" id="184111456">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{184, 12}, {69, 32}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="13003559">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents">Save</string>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="184111456"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">129</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
- <object class="NSComboBox" id="137843971">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 56}, {230, 26}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSComboBoxCell" key="NSCell" id="625134106">
- <int key="NSCellFlags">879885888</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="137843971"/>
- <bool key="NSDrawsBackground">YES</bool>
- <reference key="NSBackgroundColor" ref="926502601"/>
- <reference key="NSTextColor" ref="339290383"/>
- <int key="NSVisibleItemCount">5</int>
- <bool key="NSHasVerticalScroller">YES</bool>
- <reference key="NSDelegate" ref="137843971"/>
- <object class="NSComboTableView" key="NSTableView" id="677168914">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{15, 0}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSMutableArray" key="NSTableColumns">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableColumn">
- <integer value="0" key="NSIdentifier" id="8"/>
- <double key="NSWidth">1.200000e+01</double>
- <double key="NSMinWidth">1.000000e+01</double>
- <double key="NSMaxWidth">1.000000e+03</double>
- <object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628032</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="849304139"/>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
- </object>
- <reference key="NSTextColor" ref="537053071"/>
- </object>
- <object class="NSTextFieldCell" key="NSDataCell">
- <int key="NSCellFlags">338820672</int>
- <int key="NSCellFlags2">1024</int>
- <reference key="NSSupport" ref="1035187758"/>
- <reference key="NSControlView" ref="677168914"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="525076026">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="961976611"/>
- </object>
- <reference key="NSTextColor" ref="339290383"/>
- </object>
- <int key="NSResizingMask">3</int>
- <bool key="NSIsResizeable">YES</bool>
- <reference key="NSTableView" ref="677168914"/>
- </object>
- </object>
- <double key="NSIntercellSpacingWidth">3.000000e+00</double>
- <double key="NSIntercellSpacingHeight">2.000000e+00</double>
- <reference key="NSBackgroundColor" ref="525076026"/>
- <object class="NSColor" key="NSGridColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">gridColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <double key="NSRowHeight">1.900000e+01</double>
- <string key="NSAction">tableViewAction:</string>
- <int key="NSTvFlags">-767524864</int>
- <reference key="NSDelegate" ref="625134106"/>
- <reference key="NSDataSource" ref="625134106"/>
- <reference key="NSTarget" ref="625134106"/>
- <int key="NSColumnAutoresizingStyle">1</int>
- <int key="NSDraggingSourceMaskForLocal">15</int>
- <int key="NSDraggingSourceMaskForNonLocal">0</int>
- <bool key="NSAllowsTypeSelect">YES</bool>
- </object>
- </object>
- </object>
- <object class="NSTextField" id="793482582">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 79}, {88, 16}}</string>
- <reference key="NSSuperview" ref="1006"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="657594086">
- <int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272630784</int>
- <string key="NSContents">Gallery Parent</string>
- <reference key="NSSupport" ref="849304139"/>
- <reference key="NSControlView" ref="793482582"/>
- <reference key="NSBackgroundColor" ref="264684485"/>
- <reference key="NSTextColor" ref="339290383"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{267, 276}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">newGallerySheet</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">43</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">doNewGallery:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="184111456"/>
- </object>
- <int key="connectionID">48</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">galleryDescTextField</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="703267117"/>
- </object>
- <int key="connectionID">49</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">galleryNameTextField</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="142371246"/>
- </object>
- <int key="connectionID">50</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">gallerySlugTextField</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="887381497"/>
- </object>
- <int key="connectionID">51</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cancelNewGallery:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="490284298"/>
- </object>
- <int key="connectionID">53</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <object class="NSArray" key="object" id="1002">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="1002"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="1002"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- </object>
- <reference key="parent" ref="1002"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="142371246"/>
- <reference ref="970595672"/>
- <reference ref="768485006"/>
- <reference ref="887381497"/>
- <reference ref="703267117"/>
- <reference ref="568388187"/>
- <reference ref="137843971"/>
- <reference ref="793482582"/>
- <reference ref="64211119"/>
- <reference ref="184111456"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">3</int>
- <reference key="object" ref="142371246"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="104713052"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="104713052"/>
- <reference key="parent" ref="142371246"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="970595672"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="303822681"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="303822681"/>
- <reference key="parent" ref="970595672"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="768485006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="441648904"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="441648904"/>
- <reference key="parent" ref="768485006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="887381497"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="347914051"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="347914051"/>
- <reference key="parent" ref="887381497"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="703267117"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="116149712"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="116149712"/>
- <reference key="parent" ref="703267117"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="568388187"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="774003593"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="774003593"/>
- <reference key="parent" ref="568388187"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="64211119"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="490284298"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="490284298"/>
- <reference key="parent" ref="64211119"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">17</int>
- <reference key="object" ref="184111456"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="13003559"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">18</int>
- <reference key="object" ref="13003559"/>
- <reference key="parent" ref="184111456"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="137843971"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="625134106"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">20</int>
- <reference key="object" ref="625134106"/>
- <reference key="parent" ref="137843971"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">21</int>
- <reference key="object" ref="793482582"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="657594086"/>
- </object>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="657594086"/>
- <reference key="parent" ref="793482582"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>12.IBPluginDependency</string>
- <string>13.IBPluginDependency</string>
- <string>14.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>16.IBPluginDependency</string>
- <string>17.IBPluginDependency</string>
- <string>18.IBPluginDependency</string>
- <string>19.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>20.IBPluginDependency</string>
- <string>21.IBPluginDependency</string>
- <string>22.IBPluginDependency</string>
- <string>3.IBPluginDependency</string>
- <string>4.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>6.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>8.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{177, 722}, {267, 276}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{177, 722}, {267, 276}}</string>
- <reference ref="8"/>
- <string>{196, 240}</string>
- <string>{{357, 418}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">53</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">TURAnsel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">TURAnselGallery.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="855842895">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">TURAnselGalleryPanelController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">xmlrpc-1.5.1/XMLRPCConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">TURAnselGalleryPanelController</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>cancelNewGallery:</string>
- <string>doNewGallery:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>delegate</string>
- <string>galleryDescTextField</string>
- <string>galleryNameTextField</string>
- <string>gallerySlugTextField</string>
- <string>newGallerySheet</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>NSTextField</string>
- <string>NSTextField</string>
- <string>NSTextField</string>
- <string>NSPanel</string>
- </object>
- </object>
- <reference key="sourceIdentifier" ref="855842895"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../iPhoto2Ansel.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+++ /dev/null
-/**
- * TURAnsel
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Cocoa/Cocoa.h>
-@class TURAnselGallery;
-
-typedef enum {
- PERMS_SHOW = 2,
- PERMS_READ = 4,
- PERMS_EDIT = 8,
- PERMS_DELETE = 16
-} HORDE_PERMS;
-
-typedef enum {
- TURAnselStateDisconnected = 0,
- TURAnselStateConnected,
- TURAnselStateError,
- TURAnselStateCancelled,
- TURAnselStateWaiting
-} TURAnselState;
-
-@interface NSObject (TURAnselDelegate)
-- (void)TURAnselDidInitialize;
-- (void)TURAnselHadError: (NSError *)error;
-@end
-
-@interface TURAnsel : NSObject {
- NSString *userAgent;
- NSString *rpcEndPoint;
- NSString *username;
- NSString *password;
- NSMutableArray *galleryList;
- TURAnselState state;
- id delegate;
- NSLock *lock;
-}
-
-@property (readwrite, retain) NSString *rpcEndPoint;
-@property (readwrite, retain) NSString *username;
-@property (readwrite, retain) NSString *password;
-
-- (id)initWithConnectionParameters: (NSDictionary *)params;
-- (void)connect;
-- (TURAnselGallery *)getGalleryById: (NSString *)galleryId;
-- (TURAnselGallery *)getGalleryByIndex: (NSInteger)index;
-- (NSDictionary *)callRPCMethod: (NSString *)methodName withParams: (NSArray *)params withOrder: (NSArray *)order;
-- (NSDictionary *)createNewGallery: (NSDictionary *)params;
-- (void)cancel;
-
-// Getters/setters
-- (void) setState: (TURAnselState)state;
-- (TURAnselState)state;
-- (id)delegate;
-- (void)setDelegate: (id)newDelegate;
-@end
+++ /dev/null
-/**
- * TURAnsel.m
- *
- * Main class for interacting with a remote Ansel server.
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Foundation/Foundation.h>
-#import "TURAnselKit.h"
-
-@interface TURAnsel (PrivateAPI)
-- (void)doLogin;
-@end
-
-@implementation TURAnsel
-
-@synthesize rpcEndPoint;
-@synthesize username;
-@synthesize password;
-
-#pragma mark -
-#pragma mark init/dealloc
-- (id)initWithConnectionParameters: (NSDictionary *)params
-{
- [super init];
- galleryList = [[NSMutableArray alloc] init];
-
- // Initialize the connection properties, KVC style
- [self setValue:[params objectForKey:@"endpoint"]
- forKey: @"rpcEndPoint"];
- [self setValue: [params objectForKey:@"username"]
- forKey: @"username"];
- [self setValue: [params objectForKey:@"password"]
- forKey: @"password"];
- [self setValue: @"The Ansel Cocoa XML-RPC Client"
- forKey: @"userAgent"];
-
- return self;
-}
--(void) dealloc
-{
- NSLog(@"TURAnsel dealloc");
- [galleryList removeAllObjects];
- [galleryList release];
- [rpcEndPoint release];
- [username release];
- [password release];
- [userAgent release];
- [super dealloc];
-}
-
-#pragma mark -
-#pragma mark Actions
-- (void)connect
-{
- [self doLogin];
-}
-- (void) cancel
-{
- state = TURAnselStateCancelled;
-}
-
-/**
- * Create a new gallery on the Ansel server.
- *
- * @param NSDictionary params A dictionary of parameters for the new gallery.
- *
- * @return NSDictionary A dictionary describing the new gallery
- */
-- (NSDictionary *)createNewGallery: (NSDictionary *)params
-{
- NSArray *apiparams = [NSArray arrayWithObjects: @"ansel", params, nil];
- NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope, kTURAnselAPIParamGaleryParams, nil];
-
- NSDictionary *response = [self callRPCMethod: @"images.createGallery"
- withParams: apiparams
- withOrder: order];
-
- if (response) {
- NSNumber *gallery_id = [response objectForKey: (NSString *)kWSMethodInvocationResult];
- NSDictionary *results = [NSDictionary dictionaryWithObjectsAndKeys:
- gallery_id, kTURAnselGalleryKeyId,
- [params valueForKey: @"name"], kTURAnselGalleryKeyName,
- @"", kTURAnselGalleryKeyDescription,
- [NSNumber numberWithInt: 0], kTURAnselGalleryKeyImages,
- [NSNumber numberWithInt: 0], kTURAnselGalleryKeyDefaultImage, nil];
-
- TURAnselGallery *newGallery = [[TURAnselGallery alloc] initWithObject: results
- controller: self];
- [galleryList addObject: newGallery];
- [newGallery release];
-
- return results;
- }
-
- return nil;
-}
-
-
-/**
- * Entry point for calling RPC methods on the Horde server.
- *
- * @param NSString methodName The method to call (e.g. images.listGalleries)
- * @param NSArray params All the method's parameters
- * @param NSArray order Keys for the params array, needed because of how
- * WSMethodInvocationSetParameters is used. (The keys are
- * disregarded by Horde, but needed to ensure they get
- * sent in the correct order by WS.
- *
- * The invocationCallback function is called on completion, which in turn will
- * call the methodCompletionCallback with the results
- */
-- (NSDictionary *)callRPCMethod: (NSString *)methodName
- withParams: (NSArray *) params
- withOrder: (NSArray *) order
-{
- NSLog(@"Initiating connection for %@", methodName);
-
- // Get a URL object
- NSURL *url = [NSURL URLWithString: [self valueForKey: @"rpcEndPoint"]];
- NSDictionary *values = [NSDictionary dictionaryWithObjects: params forKeys:order];
-
- // Credentials
- NSString *user = [self valueForKey:@"username"];
- NSString *pass = [self valueForKey:@"password"];
-
- if (user != nil && [user length] && pass != nil && [pass length]) {
- // Create a custom http request with authorization
- CFHTTPMessageRef request = CFHTTPMessageCreateRequest(kCFAllocatorDefault,
- (CFStringRef)@"POST",
- (CFURLRef)url,
- kCFHTTPVersion1_1);
- // Add auth creds to request.
- Boolean success = CFHTTPMessageAddAuthentication(request,
- NULL,
- (CFStringRef)user,
- (CFStringRef)pass,
- kCFHTTPAuthenticationSchemeBasic,
- false);
-
- NSLog(@"Results adding credentials to request: %d", success);
- if (!success) {
- NSLog(@"Unable to authenticate");
-
- if ([[self delegate] respondsToSelector: @selector(TURAnselHadError:)]) {
- NSError *error = [NSError errorWithDomain:@"TURAnsel"
- code: 1
- userInfo:[NSDictionary dictionaryWithObjectsAndKeys: @"Authentication failure.", @"message", nil]];
-
- [[self delegate] TURAnselHadError: error];
- }
-
- return nil;
-
- } else {
- // Build a new invocation
- [self setState:TURAnselStateWaiting];
- WSMethodInvocationRef rpcCall;
- rpcCall = WSMethodInvocationCreate((CFURLRef)url, (CFStringRef)methodName, kWSXMLRPCProtocol);
- WSMethodInvocationSetParameters(rpcCall, (CFDictionaryRef)values, (CFArrayRef)order);
- WSMethodInvocationSetProperty(rpcCall, kWSHTTPMessage, request);
- NSDictionary *result = (NSDictionary *)WSMethodInvocationInvoke(rpcCall);
- CFRelease(request);
- // Check out the results
- if (WSMethodResultIsFault((CFDictionaryRef) result)) {
-
- NSError *error;
-
- CFHTTPMessageRef response = (CFHTTPMessageRef)[result objectForKey:(id)kWSHTTPResponseMessage];
- int resStatusCode = CFHTTPMessageGetResponseStatusCode(response);
- NSString *resStatusLine = (NSString *)CFHTTPMessageCopyResponseStatusLine(response);
- if (resStatusCode == 401) {
- error = [NSError errorWithDomain: @"TURAnsel"
- code: resStatusCode
- userInfo: [NSDictionary dictionaryWithObjectsAndKeys: resStatusLine, @"NSLocalizedDescriptionKey", nil]];
- } else {
- NSNumber *faultCode = [result objectForKey: (NSString *)kWSFaultCode];
- NSString *faultString = [result objectForKey: (NSString *)kWSFaultString];
- NSLog(@"faultCode: %@ faultString: %@", faultCode, faultString);
- error = [NSError errorWithDomain: @"TURAnsel"
- code: [faultCode intValue]
- userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat: @"%@, %@", resStatusLine, faultString], @"NSLocalizedDescriptionKey", nil]];
-
-
- }
- if ([[self delegate] respondsToSelector: @selector(TURAnselHadError:)]) {
- [[self delegate] TURAnselHadError: error];
- }
- [resStatusLine release];
- [result autorelease];
- return nil;
- }
-
- CFHTTPMessageRef response = (CFHTTPMessageRef)[result objectForKey:(id)kWSHTTPResponseMessage];
- int resStatusCode = CFHTTPMessageGetResponseStatusCode(response);
- NSLog(@"ResponseCode: %d", resStatusCode);
- [self setState:TURAnselStateConnected];
- return [result autorelease];
- }
- }
-
- NSLog(@"No authentication information present.");
- return nil;
-
-}
-
-#pragma mark -
-#pragma mark Setters/Getters
-// Fetch a gallery by id
-- (TURAnselGallery *)getGalleryById: (NSString *)galleryId
-{
- for (TURAnselGallery *g in galleryList) {
- if ([galleryId isEqualTo: [NSNumber numberWithInt: [g galleryId]]]) {
- return g;
- }
- }
-
- return nil;
-}
-
-/**
- * Return the gallery at the specified position in the internal storage array.
- * Needed for when we are using this class as a datasource for a UI element.
- */
-- (TURAnselGallery *)getGalleryByIndex: (NSInteger)index
-{
- TURAnselGallery *g = [galleryList objectAtIndex:index];
- return g;
-}
-
-#pragma mark --
-#pragma mark ComboBox Datasource
-- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox
-{
- return [galleryList count];
-}
-
-- (id)comboBox:(NSComboBox *)aComboBox
- objectValueForItemAtIndex:(NSInteger)index
-{
- TURAnselGallery *g = [galleryList objectAtIndex:index];
- NSString *stringValue = [g valueForKey:@"galleryName"];
- return stringValue;
-}
-
-#pragma mark Getter/Setters
-- (TURAnselState) state
-{
- return state;
-}
--(void) setState: (TURAnselState)newstate
-{
- state = newstate;
-}
-
-- (id)delegate {
- return delegate;
-}
-
-- (void)setDelegate:(id)newDelegate {
- delegate = newDelegate;
-}
-
-#pragma mark PrivateAPI
-/**
- * Perform initial contact with Ansel server. Retrieves the list of galleries
- * available for the selected server.
- *
- * @return void
- */
-- (void)doLogin
-{
- NSArray *params = [[NSArray alloc] initWithObjects:
- @"ansel", // Scope
- [NSNumber numberWithInt: PERMS_EDIT], // Perms
- @"", // No parent
- [NSNumber numberWithBool:YES], // allLevels
- [NSNumber numberWithInt: 0], // Offset
- [NSNumber numberWithInt: 0], // Count
- [self valueForKey:@"username"], nil]; // Restrict to user (This should be an option eventually).
-
- NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope, kTURAnselAPIParamPerms,
- kTURAnselAPIParamParent, kTURAnselAPIParamAllLevels,
- kTURAnselAPIParamOffset, kTURAnselAPIParamCount,
- kTURAnselAPIParamUserOnly, nil];
-
- NSDictionary *results = [self callRPCMethod: @"images.listGalleries"
- withParams: params
- withOrder: order];
-
- if (results) {
- NSDictionary *galleries = [results objectForKey: (id)kWSMethodInvocationResult];
- for (NSString *gal in galleries) {
- TURAnselGallery *theGallery = [[TURAnselGallery alloc] initWithObject: gal
- controller: self];
- [theGallery setAnselController: self];
- [galleryList addObject: theGallery];
- [theGallery release];
- theGallery = nil;
- }
-
- if ([delegate respondsToSelector:@selector(TURAnselDidInitialize)]) {
- [delegate performSelectorOnMainThread:@selector(TURAnselDidInitialize)
- withObject:self
- waitUntilDone: NO];
- }
-
- }
-
- [params release];
-}
-@end
\ No newline at end of file
+++ /dev/null
-/**
- * TURAnselConstants
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-
-// Constants for the API parameter names.
-extern NSString * const kTURAnselAPIParamScope;
-extern NSString * const kTURAnselAPIParamGaleryParams;
-extern NSString * const kTURAnselAPIParamPerms;
-extern NSString * const kTURAnselAPIParamParent;
-extern NSString * const kTURAnselAPIParamAllLevels;
-extern NSString * const kTURAnselAPIParamOffset;
-extern NSString * const kTURAnselAPIParamCount;
-extern NSString * const kTURAnselAPIParamUserOnly;
-extern NSString * const kTURAnselAPIParamImageId;
-extern NSString * const kTURAnselAPIParamGalleryId;
-extern NSString * const kTURAnselAPIParamThumbnailStyle;
-extern NSString * const kTURAnselAPIParamFullPath;
-extern NSString * const kTURAnselAPIParamImageData;
-extern NSString * const kTURAnselAPIParamSetAsDefault;
-extern NSString * const kTURAnselAPIParamAdditionalData;
-extern NSString * const kTURAnselAPIParamEncoding;
-
-// Constants for the dictionary keys used to describe/create TURAnselGallery
-extern NSString * const kTURAnselGalleryKeyId;
-extern NSString * const kTURAnselGalleryKeyName;
-extern NSString * const kTURAnselGalleryKeyDescription;
-extern NSString * const kTURAnselGalleryKeyImages;
-extern NSString * const kTURAnselGalleryKeyDefaultImage;
+++ /dev/null
-//
-// TURAnselConstants.m
-// ApertureToAnselExportPlugin
-//
-// Created by Michael Rubinsky on 9/22/09.
-// Copyright 2009 __MyCompanyName__. All rights reserved.
-//
-
-#import "TURAnselConstants.h"
-
-// Constants for the API parameter names.
-NSString * const kTURAnselAPIParamScope = @"scope";
-NSString * const kTURAnselAPIParamGaleryParams = @"galleryParams";
-NSString * const kTURAnselAPIParamPerms = @"perms";
-NSString * const kTURAnselAPIParamParent = @"parent";
-NSString * const kTURAnselAPIParamAllLevels = @"allLevels";
-NSString * const kTURAnselAPIParamOffset = @"offset";
-NSString * const kTURAnselAPIParamCount = @"count";
-NSString * const kTURAnselAPIParamUserOnly = @"userOnly";
-NSString * const kTURAnselAPIParamImageId = @"imageId";
-NSString * const kTURAnselAPIParamGalleryId = @"galleryId";
-NSString * const kTURAnselAPIParamThumbnailStyle = @"thumbnailStyle";
-NSString * const kTURAnselAPIParamFullPath = @"fullPath";
-NSString * const kTURAnselAPIParamImageData = @"imageData";
-NSString * const kTURAnselAPIParamSetAsDefault = @"default";
-NSString * const kTURAnselAPIParamAdditionalData = @"additionalData";
-NSString * const kTURAnselAPIParamEncoding = @"encoding";
-
-// Ansel gallery attribtues.
-NSString * const kTURAnselGalleryKeyId = @"share_id";
-NSString * const kTURAnselGalleryKeyName = @"attribute_name";
-NSString * const kTURAnselGalleryKeyDescription = @"attribute_desc";
-NSString * const kTURAnselGalleryKeyImages = @"attribute_images";
-NSString * const kTURAnselGalleryKeyDefaultImage = @"attribute_default";
\ No newline at end of file
+++ /dev/null
-/**
- * TURAnselGallery
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Cocoa/Cocoa.h>
-@class TURAnsel, NSURL;
-
-@interface NSObject (TURAnselGalleryDelegate)
-- (void)TURAnselGalleryDidUploadImage: (id *)gallery;
-@end
-
-@interface TURAnselGallery : NSObject {
- int _galleryId;
- int galleryImageCount;
- int galleryKeyImage;
- NSURL *galleryKeyImageURL;
- NSMutableArray *imageList;
- NSString *galleryName;
- NSString *galleryDescription;
- TURAnsel *anselController;
- id delegate;
-}
-@property (readonly) NSString *galleryName;
-@property (readonly) NSString *galleryDescription;
-@property (readonly) int galleryImageCount;
-@property (readwrite) int galleryKeyImage;
-
-- (id)initWithObject:(id)galleryData controller:(TURAnsel * )controller;
-- (void)uploadImageObject: (NSDictionary *)imageParameters;
-
-// Getter / Setter
-- (void)setDelegate: (id)newDelegate;
-- (id)delegate;
-- (NSURL *)galleryKeyImageURL;
-- (id)listImages;
-- (int)galleryId;
-- (void)setAnselController:(TURAnsel *)newController;
-@end
\ No newline at end of file
+++ /dev/null
-/**
- * TURAnselGallery.m
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Foundation/Foundation.h>
-#import "TURAnselKit.h"
-
-@interface TURAnselGallery (PrivateAPI)
-- (void)doUpload: (NSDictionary *)imageParams;
-@end
-
-@implementation TURAnselGallery
-
-@synthesize galleryDescription;
-@synthesize galleryName;
-@synthesize galleryImageCount;
-@synthesize galleryKeyImage;
-
-#pragma mark -
-#pragma mark init/dealloc
-/**
- * Init a gallery object
- */
-- (id)initWithObject:(id)galleryData controller:(TURAnsel *)controller
-{
- [super init];
- [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyId]
- forKey: @"galleryId"];
- [self setValue:[galleryData valueForKey: kTURAnselGalleryKeyDescription]
- forKey:@"galleryDescription"];
- [self setValue:[galleryData valueForKey: kTURAnselGalleryKeyName]
- forKey:@"galleryName"];
- [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyImages]
- forKey:@"galleryImageCount"];
- [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyDefaultImage]
- forKey:@"galleryKeyImage"];
- [self setAnselController: controller];
- return self;
-}
-- (void)dealloc
-{
- NSLog(@"TURAnselGallery dealloc called on Gallery %@", self);
- [anselController release];
- anselController = nil;
-
- [galleryKeyImageURL release];
- galleryKeyImageURL = nil;
-
- [imageList release];
- imageList = nil;
-
- [super dealloc];
-}
-- (id)description
-{
- NSString *text = [NSString stringWithFormat:@"Description: %@ Id: %d has: %d images", galleryName, _galleryId, galleryImageCount];
- return text;
-}
-
-#pragma mark -
-#pragma mark Actions
-/**
- * Requests the gallery's key image url to be fetched from the server
- * (This information is not present in the gallery definition array returned
- * from the images.listGalleries call).
- */
-- (NSURL *)galleryKeyImageURL
-{
- if (galleryKeyImageURL) {
- return galleryKeyImageURL;
- } else {
- NSArray *params = [[NSArray alloc] initWithObjects:
- @"ansel", // Scope
- [NSNumber numberWithInt: galleryKeyImage], // Image Id
- @"thumb", // Thumbnail type
- [NSNumber numberWithBool:YES], // Full path
- nil];
-
- NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
- kTURAnselAPIParamImageId,
- kTURAnselAPIParamThumbnailStyle,
- kTURAnselAPIParamFullPath, nil];
-
- NSDictionary *response = [anselController callRPCMethod: @"images.getImageUrl"
- withParams: params
- withOrder: order];
-
- if (response) {
- NSDictionary *url = [response objectForKey:(id)kWSMethodInvocationResult];
- [galleryKeyImageURL autorelease];
- galleryKeyImageURL = [[NSURL URLWithString: [NSString stringWithFormat: @"%@", url]] retain];
- NSLog(@"galleryKeyImageURL: %@", galleryKeyImageURL);
- return galleryKeyImageURL;
- }
-
- return nil;
- }
-}
-
-/**
- * Get the complete list of image ids and URLs
- */
-- (id)listImages
-{
- if (!imageList) {
-
- NSArray *params = [[NSArray alloc] initWithObjects:
- @"ansel", //Scope
- [NSNumber numberWithInt: _galleryId], //Gallery Id
- [NSNumber numberWithInt: 2], //PERMS_SHOW
- @"thumb", // Thumbnail
- [NSNumber numberWithBool:YES], // Full path
- nil];
- NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
- kTURAnselAPIParamGalleryId,
- kTURAnselAPIParamPerms,
- kTURAnselAPIParamThumbnailStyle,
- kTURAnselAPIParamFullPath, nil];
-
- NSDictionary *response = [anselController callRPCMethod: @"images.listImages"
- withParams: params
- withOrder: order];
- if (response) {
- [imageList autorelease];
- imageList = [[response objectForKey: (id)kWSMethodInvocationResult] retain];
-
- NSLog(@"listImages: %@", imageList);
-
- return imageList;
- }
- }
-
- return nil;
-}
-
-/**
- * Upload the provided image to this gallery.
- */
-- (void)uploadImageObject: (NSDictionary *)imageParameters
-{
- [self doUpload: imageParameters];
-}
-
-#pragma mark -
-#pragma mark Getter/Setter
-- (int)galleryId
-{
- return _galleryId;
-}
-
-- (void)setGalleryId:(int)id
-{
- _galleryId = id;
-}
-
-- (id)delegate
-{
- return delegate;
-}
-
-- (void)setDelegate: (id)newDelegate
-{
- delegate = newDelegate;
-}
-
-- (void)setAnselController: (TURAnsel *)newController
-{
- [anselController autorelease];
- anselController = [newController retain];
-}
-
-- (TURAnsel *)anselController
-{
- return anselController;
-}
-
-#pragma mark -
-#pragma mark PrivateAPI
-- (void)doUpload:(NSDictionary *)imageParameters
-{
- // Need to build the params array now.
- NSArray *params = [[NSArray alloc] initWithObjects:
- @"ansel", // app
- [NSNumber numberWithInt: _galleryId], // gallery_id
- [imageParameters valueForKey: @"data"], // image data array
- [imageParameters valueForKey: @"default"], // set as default?
- @"", // Additional gallery data to set?
- @"base64", // Image data encoding
- nil];
- NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
- kTURAnselAPIParamGalleryId,
- kTURAnselAPIParamImageData,
- kTURAnselAPIParamSetAsDefault,
- kTURAnselAPIParamAdditionalData,
- kTURAnselAPIParamEncoding, nil];
-
- // Send the request up to the controller
- NSDictionary *result = [anselController callRPCMethod: @"images.saveImage"
- withParams: params
- withOrder: order];
-
- if (result) {
- if ([delegate respondsToSelector:@selector(TURAnselGalleryDidUploadImage:)]) {
- [delegate performSelectorOnMainThread: @selector(TURAnselGalleryDidUploadImage:)
- withObject: self
- waitUntilDone: NO];
- }
- }
-
- [params release];
-}
-@end
+++ /dev/null
-/**
- * TURAnselGalleryPanelController
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import <Cocoa/Cocoa.h>
-#import "TURAnselKit.h"
-
-@interface NSObject (TURAnselGalleryPaneControllerDelegate)
--(void)TURAnselGalleryPanelDidAddGallery;
-@end
-
-@interface TURAnselGalleryPanelController : NSObject {
- // Outlets
- IBOutlet NSTextField *galleryNameTextField;
- IBOutlet NSTextField *gallerySlugTextField;
- IBOutlet NSTextField *galleryDescTextField;
- IBOutlet NSPanel *newGallerySheet;
-
- // Instance members
- TURAnsel *_anselController;
- NSWindow *_controllerWindow;
- id _delegate;
-}
-
-// Actions
-- (IBAction)doNewGallery: (id)sender;
-- (IBAction)cancelNewGallery: (id)sender;
-- (id)initWithController: (TURAnsel *)theController;
-- (id)initWithController: (TURAnsel *)theController withGalleryName: (NSString *)galleryName;
-- (void)showSheetForWindow: (NSWindow *)theWindow;
-- (void)setDelegate: (id)theDelegate;
-@end
+++ /dev/null
-/**
- * TURAnselGalleryPanelController.m
- *
- * Controller for handling the form that creates new remote Ansel galleries.
- *
- * Copyright 2009 The Horde Project (http://www.horde.org)
- *
- * @license http://opensource.org/licenses/bsd-license.php
- * @author Michael J. Rubinsky <mrubinsk@horde.org>
- */
-#import "TURAnselGalleryPanelController.h"
-
-@implementation TURAnselGalleryPanelController
-
-#pragma mark -
-#pragma mark init/dealloc
--(id)initWithController: (TURAnsel *)theController
-{
- [super init];
- _anselController = [theController retain];
- [NSBundle loadNibNamed: @"AnselGalleryPanel"
- owner: self];
-
- return self;
-}
-- (id)initWithController: (TURAnsel *)theController
- withGalleryName: (NSString *)galleryName
-{
-
- [super init];
- _anselController = [theController retain];
- [NSBundle loadNibNamed: @"AnselGalleryPanel"
- owner: self];
-
- [galleryNameTextField setStringValue: galleryName];
-
- return self;
-}
-- (void)dealloc
-{
- [_anselController release];
- [_controllerWindow release];
- [super dealloc];
-}
-
-#pragma mark -
-#pragma mark IBActions
-- (IBAction)cancelNewGallery: (id)sender
-{
- [NSApp endSheet: newGallerySheet];
- [newGallerySheet orderOut: nil];
-}
-
-- (IBAction)doNewGallery: (id)sender
-{
- // Get Gallery Properties from the panel.
- NSString *galleryName = [galleryNameTextField stringValue];
- NSString *gallerySlug = [gallerySlugTextField stringValue];
- NSString *galleryDescription = [galleryDescTextField stringValue];
-
- if (!galleryName) {
-
- [NSApp endSheet: newGallerySheet];
- [newGallerySheet orderOut: nil];
-
- NSAlert *alert = [[NSAlert alloc] init];
- [alert setMessageText:@"Gallery names cannot be empty"];
- [alert setAlertStyle: NSCriticalAlertStyle];
- [alert beginSheetModalForWindow: _controllerWindow
- modalDelegate: nil
- didEndSelector: nil
- contextInfo: nil];
- [alert release];
- return;
- }
- NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
- galleryName, @"name",
- gallerySlug, @"slug",
- galleryDescription, @"desc", nil];
-
- NSDictionary *results = [[_anselController createNewGallery: params] retain];
-
- [NSApp endSheet: newGallerySheet];
- [newGallerySheet orderOut: nil];
-
- if ([_anselController state] != TURAnselStateError) {
- NSAlert *alert = [[NSAlert alloc] init];
- [alert setMessageText: @"Gallery successfully created."];
- [alert beginSheetModalForWindow: _controllerWindow
- modalDelegate: nil
- didEndSelector: nil
- contextInfo: nil];
- [alert release];
- if ([_delegate respondsToSelector:@selector(TURAnselGalleryPanelDidAddGallery)]) {
- [_delegate TURAnselGalleryPanelDidAddGallery];
- }
- }
-
- [results release];
-}
-
-
-- (void)setDelegate: (id)theDelegate
-{
- _delegate = theDelegate; // weak
-}
-
-
-- (void)showSheetForWindow: (NSWindow *)theWindow
-{
- [_controllerWindow release];
- _controllerWindow = [theWindow retain];
- [NSApp beginSheet: newGallerySheet
- modalForWindow: theWindow
- modalDelegate: nil
- didEndSelector: nil
- contextInfo: nil];
-}
-
-@end
+++ /dev/null
-#import "TURAnselConstants.h"
-#import "TURAnsel.h"
-#import "TURAnselGallery.h"
-
--- /dev/null
+/**
+ * AnselGalleryViewItem
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @implements IKImageBrowserItem
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Cocoa/Cocoa.h>
+#import <Quartz/Quartz.h>
+
+@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
--- /dev/null
+/**
+ * AnselGalleryViewItem.m
+ *
+ * Implements the IKImageBrowserItem protocol for displaying images from a
+ * remote Ansel gallery in an IKImageBrowser.
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @implements IKImageBrowserItem
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#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;
+}
+
+#pragma mark
+#pragma mark Optional methods.
+- (NSString *)imageTitle
+{
+ NSLog(@"imageTitle: %@", imageTitle);
+ return imageTitle;
+}
+- (NSString *)imageSubtitle
+{
+ NSLog(@"imageSubtitle: %@", [imageDate description]);
+ return [imageDate description];
+}
+
+@end
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">9F33</string>
+ <string key="IBDocument.InterfaceBuilderVersion">672</string>
+ <string key="IBDocument.AppKitVersion">949.34</string>
+ <string key="IBDocument.HIToolboxVersion">352.00</string>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="15"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1001">
+ <string key="NSClassName">TURAnselGalleryPanelController</string>
+ </object>
+ <object class="NSCustomObject" id="1003">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1004">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="1005">
+ <int key="NSWindowStyleMask">19</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{797, 724}, {267, 276}}</string>
+ <int key="NSWTFlags">-536866816</int>
+ <string key="NSWindowTitle">New Gallery</string>
+ <string key="NSWindowClass">NSPanel</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <object class="NSView" key="NSWindowView" id="1006">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="142371246">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 219}, {227, 22}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="104713052">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="1035187758">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.300000e+01</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="142371246"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor" id="926502601">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="537053071">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="649170679">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <object class="NSColor" key="NSColor" id="957332318">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="970595672">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 240}, {88, 16}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="303822681">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Gallery Name</string>
+ <object class="NSFont" key="NSSupport" id="849304139">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">1.200000e+01</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="970595672"/>
+ <object class="NSColor" key="NSBackgroundColor" id="264684485">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor" id="961976611">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="339290383">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="957332318"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="768485006">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 195}, {73, 16}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="441648904">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Gallery Slug</string>
+ <reference key="NSSupport" ref="849304139"/>
+ <reference key="NSControlView" ref="768485006"/>
+ <reference key="NSBackgroundColor" ref="264684485"/>
+ <reference key="NSTextColor" ref="339290383"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="887381497">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 174}, {227, 22}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="347914051">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="887381497"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="926502601"/>
+ <reference key="NSTextColor" ref="649170679"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="703267117">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 103}, {227, 47}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="116149712">
+ <int key="NSCellFlags">-1805517311</int>
+ <int key="NSCellFlags2">272629760</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="703267117"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="926502601"/>
+ <reference key="NSTextColor" ref="649170679"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="568388187">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 150}, {124, 16}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="774003593">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Gallery Description</string>
+ <reference key="NSSupport" ref="849304139"/>
+ <reference key="NSControlView" ref="568388187"/>
+ <reference key="NSBackgroundColor" ref="264684485"/>
+ <reference key="NSTextColor" ref="339290383"/>
+ </object>
+ </object>
+ <object class="NSButton" id="64211119">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{116, 12}, {68, 32}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="490284298">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="64211119"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="184111456">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{184, 12}, {69, 32}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="13003559">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Save</string>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="184111456"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSComboBox" id="137843971">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{20, 56}, {230, 26}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSComboBoxCell" key="NSCell" id="625134106">
+ <int key="NSCellFlags">879885888</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="137843971"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="926502601"/>
+ <reference key="NSTextColor" ref="339290383"/>
+ <int key="NSVisibleItemCount">5</int>
+ <bool key="NSHasVerticalScroller">YES</bool>
+ <reference key="NSDelegate" ref="137843971"/>
+ <object class="NSComboTableView" key="NSTableView" id="677168914">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{15, 0}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn">
+ <integer value="0" key="NSIdentifier" id="8"/>
+ <double key="NSWidth">1.200000e+01</double>
+ <double key="NSMinWidth">1.000000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="849304139"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <reference key="NSTextColor" ref="537053071"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell">
+ <int key="NSCellFlags">338820672</int>
+ <int key="NSCellFlags2">1024</int>
+ <reference key="NSSupport" ref="1035187758"/>
+ <reference key="NSControlView" ref="677168914"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor" id="525076026">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <reference key="NSColor" ref="961976611"/>
+ </object>
+ <reference key="NSTextColor" ref="339290383"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="677168914"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <reference key="NSBackgroundColor" ref="525076026"/>
+ <object class="NSColor" key="NSGridColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">1.900000e+01</double>
+ <string key="NSAction">tableViewAction:</string>
+ <int key="NSTvFlags">-767524864</int>
+ <reference key="NSDelegate" ref="625134106"/>
+ <reference key="NSDataSource" ref="625134106"/>
+ <reference key="NSTarget" ref="625134106"/>
+ <int key="NSColumnAutoresizingStyle">1</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="793482582">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 79}, {88, 16}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="657594086">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Gallery Parent</string>
+ <reference key="NSSupport" ref="849304139"/>
+ <reference key="NSControlView" ref="793482582"/>
+ <reference key="NSBackgroundColor" ref="264684485"/>
+ <reference key="NSTextColor" ref="339290383"/>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{267, 276}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">newGallerySheet</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1005"/>
+ </object>
+ <int key="connectionID">43</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">doNewGallery:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="184111456"/>
+ </object>
+ <int key="connectionID">48</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">galleryDescTextField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="703267117"/>
+ </object>
+ <int key="connectionID">49</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">galleryNameTextField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="142371246"/>
+ </object>
+ <int key="connectionID">50</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">gallerySlugTextField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="887381497"/>
+ </object>
+ <int key="connectionID">51</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cancelNewGallery:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="490284298"/>
+ </object>
+ <int key="connectionID">53</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="1002">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1001"/>
+ <reference key="parent" ref="1002"/>
+ <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1003"/>
+ <reference key="parent" ref="1002"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1004"/>
+ <reference key="parent" ref="1002"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="1005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1006"/>
+ </object>
+ <reference key="parent" ref="1002"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="1006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="142371246"/>
+ <reference ref="970595672"/>
+ <reference ref="768485006"/>
+ <reference ref="887381497"/>
+ <reference ref="703267117"/>
+ <reference ref="568388187"/>
+ <reference ref="137843971"/>
+ <reference ref="793482582"/>
+ <reference ref="64211119"/>
+ <reference ref="184111456"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3</int>
+ <reference key="object" ref="142371246"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="104713052"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="104713052"/>
+ <reference key="parent" ref="142371246"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="970595672"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="303822681"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">6</int>
+ <reference key="object" ref="303822681"/>
+ <reference key="parent" ref="970595672"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="768485006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="441648904"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">8</int>
+ <reference key="object" ref="441648904"/>
+ <reference key="parent" ref="768485006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">9</int>
+ <reference key="object" ref="887381497"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="347914051"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="347914051"/>
+ <reference key="parent" ref="887381497"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="703267117"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="116149712"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="116149712"/>
+ <reference key="parent" ref="703267117"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="568388187"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="774003593"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">14</int>
+ <reference key="object" ref="774003593"/>
+ <reference key="parent" ref="568388187"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">15</int>
+ <reference key="object" ref="64211119"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="490284298"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">16</int>
+ <reference key="object" ref="490284298"/>
+ <reference key="parent" ref="64211119"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">17</int>
+ <reference key="object" ref="184111456"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="13003559"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">18</int>
+ <reference key="object" ref="13003559"/>
+ <reference key="parent" ref="184111456"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="137843971"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="625134106"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">20</int>
+ <reference key="object" ref="625134106"/>
+ <reference key="parent" ref="137843971"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">21</int>
+ <reference key="object" ref="793482582"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="657594086"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">22</int>
+ <reference key="object" ref="657594086"/>
+ <reference key="parent" ref="793482582"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
+ <string>-3.IBPluginDependency</string>
+ <string>1.IBEditorWindowLastContentRect</string>
+ <string>1.IBPluginDependency</string>
+ <string>1.IBWindowTemplateEditedContentRect</string>
+ <string>1.NSWindowTemplate.visibleAtLaunch</string>
+ <string>1.WindowOrigin</string>
+ <string>1.editorWindowContentRectSynchronizationRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>11.IBPluginDependency</string>
+ <string>12.IBPluginDependency</string>
+ <string>13.IBPluginDependency</string>
+ <string>14.IBPluginDependency</string>
+ <string>15.IBPluginDependency</string>
+ <string>16.IBPluginDependency</string>
+ <string>17.IBPluginDependency</string>
+ <string>18.IBPluginDependency</string>
+ <string>19.IBPluginDependency</string>
+ <string>2.IBPluginDependency</string>
+ <string>20.IBPluginDependency</string>
+ <string>21.IBPluginDependency</string>
+ <string>22.IBPluginDependency</string>
+ <string>3.IBPluginDependency</string>
+ <string>4.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>6.IBPluginDependency</string>
+ <string>7.IBPluginDependency</string>
+ <string>8.IBPluginDependency</string>
+ <string>9.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{177, 722}, {267, 276}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{177, 722}, {267, 276}}</string>
+ <reference ref="8"/>
+ <string>{196, 240}</string>
+ <string>{{357, 418}, {480, 270}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">53</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">TURAnsel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">TURAnselGallery.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="855842895">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">TURAnselGalleryPanelController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">xmlrpc-1.5.1/XMLRPCConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">TURAnselGalleryPanelController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>cancelNewGallery:</string>
+ <string>doNewGallery:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>delegate</string>
+ <string>galleryDescTextField</string>
+ <string>galleryNameTextField</string>
+ <string>gallerySlugTextField</string>
+ <string>newGallerySheet</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSPanel</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="855842895"/>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../iPhoto2Ansel.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ </data>
+</archive>
--- /dev/null
+/**
+ * TURAnsel
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Cocoa/Cocoa.h>
+@class TURAnselGallery;
+
+typedef enum {
+ PERMS_SHOW = 2,
+ PERMS_READ = 4,
+ PERMS_EDIT = 8,
+ PERMS_DELETE = 16
+} HORDE_PERMS;
+
+typedef enum {
+ TURAnselStateDisconnected = 0,
+ TURAnselStateConnected,
+ TURAnselStateError,
+ TURAnselStateCancelled,
+ TURAnselStateWaiting
+} TURAnselState;
+
+@interface NSObject (TURAnselDelegate)
+- (void)TURAnselDidInitialize;
+- (void)TURAnselHadError: (NSError *)error;
+@end
+
+@interface TURAnsel : NSObject {
+ NSString *userAgent;
+ NSString *rpcEndPoint;
+ NSString *username;
+ NSString *password;
+ NSMutableArray *galleryList;
+ TURAnselState state;
+ id delegate;
+ NSLock *lock;
+}
+
+@property (readwrite, retain) NSString *rpcEndPoint;
+@property (readwrite, retain) NSString *username;
+@property (readwrite, retain) NSString *password;
+
+- (id)initWithConnectionParameters: (NSDictionary *)params;
+- (void)connect;
+- (TURAnselGallery *)getGalleryById: (NSString *)galleryId;
+- (TURAnselGallery *)getGalleryByIndex: (NSInteger)index;
+- (NSDictionary *)callRPCMethod: (NSString *)methodName withParams: (NSArray *)params withOrder: (NSArray *)order;
+- (NSDictionary *)createNewGallery: (NSDictionary *)params;
+- (void)cancel;
+
+// Getters/setters
+- (void) setState: (TURAnselState)state;
+- (TURAnselState)state;
+- (id)delegate;
+- (void)setDelegate: (id)newDelegate;
+@end
--- /dev/null
+/**
+ * TURAnsel.m
+ *
+ * Main class for interacting with a remote Ansel server.
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Foundation/Foundation.h>
+#import "TURAnselKit.h"
+
+@interface TURAnsel (PrivateAPI)
+- (void)doLogin;
+@end
+
+@implementation TURAnsel
+
+@synthesize rpcEndPoint;
+@synthesize username;
+@synthesize password;
+
+#pragma mark -
+#pragma mark init/dealloc
+- (id)initWithConnectionParameters: (NSDictionary *)params
+{
+ [super init];
+ galleryList = [[NSMutableArray alloc] init];
+
+ // Initialize the connection properties, KVC style
+ [self setValue:[params objectForKey:@"endpoint"]
+ forKey: @"rpcEndPoint"];
+ [self setValue: [params objectForKey:@"username"]
+ forKey: @"username"];
+ [self setValue: [params objectForKey:@"password"]
+ forKey: @"password"];
+ [self setValue: @"The Ansel Cocoa XML-RPC Client"
+ forKey: @"userAgent"];
+
+ return self;
+}
+-(void) dealloc
+{
+ NSLog(@"TURAnsel dealloc");
+ [galleryList removeAllObjects];
+ [galleryList release];
+ [rpcEndPoint release];
+ [username release];
+ [password release];
+ [userAgent release];
+ [super dealloc];
+}
+
+#pragma mark -
+#pragma mark Actions
+- (void)connect
+{
+ [self doLogin];
+}
+- (void) cancel
+{
+ state = TURAnselStateCancelled;
+}
+
+/**
+ * Create a new gallery on the Ansel server.
+ *
+ * @param NSDictionary params A dictionary of parameters for the new gallery.
+ *
+ * @return NSDictionary A dictionary describing the new gallery
+ */
+- (NSDictionary *)createNewGallery: (NSDictionary *)params
+{
+ NSArray *apiparams = [NSArray arrayWithObjects: @"ansel", params, nil];
+ NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope, kTURAnselAPIParamGaleryParams, nil];
+
+ NSDictionary *response = [self callRPCMethod: @"images.createGallery"
+ withParams: apiparams
+ withOrder: order];
+
+ if (response) {
+ NSNumber *gallery_id = [response objectForKey: (NSString *)kWSMethodInvocationResult];
+ NSDictionary *results = [NSDictionary dictionaryWithObjectsAndKeys:
+ gallery_id, kTURAnselGalleryKeyId,
+ [params valueForKey: @"name"], kTURAnselGalleryKeyName,
+ @"", kTURAnselGalleryKeyDescription,
+ [NSNumber numberWithInt: 0], kTURAnselGalleryKeyImages,
+ [NSNumber numberWithInt: 0], kTURAnselGalleryKeyDefaultImage, nil];
+
+ TURAnselGallery *newGallery = [[TURAnselGallery alloc] initWithObject: results
+ controller: self];
+ [galleryList addObject: newGallery];
+ [newGallery release];
+
+ return results;
+ }
+
+ return nil;
+}
+
+
+/**
+ * Entry point for calling RPC methods on the Horde server.
+ *
+ * @param NSString methodName The method to call (e.g. images.listGalleries)
+ * @param NSArray params All the method's parameters
+ * @param NSArray order Keys for the params array, needed because of how
+ * WSMethodInvocationSetParameters is used. (The keys are
+ * disregarded by Horde, but needed to ensure they get
+ * sent in the correct order by WS.
+ *
+ * The invocationCallback function is called on completion, which in turn will
+ * call the methodCompletionCallback with the results
+ */
+- (NSDictionary *)callRPCMethod: (NSString *)methodName
+ withParams: (NSArray *) params
+ withOrder: (NSArray *) order
+{
+ NSLog(@"Initiating connection for %@", methodName);
+
+ // Get a URL object
+ NSURL *url = [NSURL URLWithString: [self valueForKey: @"rpcEndPoint"]];
+ NSDictionary *values = [NSDictionary dictionaryWithObjects: params forKeys:order];
+
+ // Credentials
+ NSString *user = [self valueForKey:@"username"];
+ NSString *pass = [self valueForKey:@"password"];
+
+ if (user != nil && [user length] && pass != nil && [pass length]) {
+ // Create a custom http request with authorization
+ CFHTTPMessageRef request = CFHTTPMessageCreateRequest(kCFAllocatorDefault,
+ (CFStringRef)@"POST",
+ (CFURLRef)url,
+ kCFHTTPVersion1_1);
+ // Add auth creds to request.
+ Boolean success = CFHTTPMessageAddAuthentication(request,
+ NULL,
+ (CFStringRef)user,
+ (CFStringRef)pass,
+ kCFHTTPAuthenticationSchemeBasic,
+ false);
+
+ NSLog(@"Results adding credentials to request: %d", success);
+ if (!success) {
+ NSLog(@"Unable to authenticate");
+
+ if ([[self delegate] respondsToSelector: @selector(TURAnselHadError:)]) {
+ NSError *error = [NSError errorWithDomain:@"TURAnsel"
+ code: 1
+ userInfo:[NSDictionary dictionaryWithObjectsAndKeys: @"Authentication failure.", @"message", nil]];
+
+ [[self delegate] TURAnselHadError: error];
+ }
+
+ return nil;
+
+ } else {
+ // Build a new invocation
+ [self setState:TURAnselStateWaiting];
+ WSMethodInvocationRef rpcCall;
+ rpcCall = WSMethodInvocationCreate((CFURLRef)url, (CFStringRef)methodName, kWSXMLRPCProtocol);
+ WSMethodInvocationSetParameters(rpcCall, (CFDictionaryRef)values, (CFArrayRef)order);
+ WSMethodInvocationSetProperty(rpcCall, kWSHTTPMessage, request);
+ NSDictionary *result = (NSDictionary *)WSMethodInvocationInvoke(rpcCall);
+ CFRelease(request);
+ // Check out the results
+ if (WSMethodResultIsFault((CFDictionaryRef) result)) {
+
+ NSError *error;
+
+ CFHTTPMessageRef response = (CFHTTPMessageRef)[result objectForKey:(id)kWSHTTPResponseMessage];
+ int resStatusCode = CFHTTPMessageGetResponseStatusCode(response);
+ NSString *resStatusLine = (NSString *)CFHTTPMessageCopyResponseStatusLine(response);
+ if (resStatusCode == 401) {
+ error = [NSError errorWithDomain: @"TURAnsel"
+ code: resStatusCode
+ userInfo: [NSDictionary dictionaryWithObjectsAndKeys: resStatusLine, @"NSLocalizedDescriptionKey", nil]];
+ } else {
+ NSNumber *faultCode = [result objectForKey: (NSString *)kWSFaultCode];
+ NSString *faultString = [result objectForKey: (NSString *)kWSFaultString];
+ NSLog(@"faultCode: %@ faultString: %@", faultCode, faultString);
+ error = [NSError errorWithDomain: @"TURAnsel"
+ code: [faultCode intValue]
+ userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat: @"%@, %@", resStatusLine, faultString], @"NSLocalizedDescriptionKey", nil]];
+
+
+ }
+ if ([[self delegate] respondsToSelector: @selector(TURAnselHadError:)]) {
+ [[self delegate] TURAnselHadError: error];
+ }
+ [resStatusLine release];
+ [result autorelease];
+ return nil;
+ }
+
+ CFHTTPMessageRef response = (CFHTTPMessageRef)[result objectForKey:(id)kWSHTTPResponseMessage];
+ int resStatusCode = CFHTTPMessageGetResponseStatusCode(response);
+ NSLog(@"ResponseCode: %d", resStatusCode);
+ [self setState:TURAnselStateConnected];
+ return [result autorelease];
+ }
+ }
+
+ NSLog(@"No authentication information present.");
+ return nil;
+
+}
+
+#pragma mark -
+#pragma mark Setters/Getters
+// Fetch a gallery by id
+- (TURAnselGallery *)getGalleryById: (NSString *)galleryId
+{
+ for (TURAnselGallery *g in galleryList) {
+ if ([galleryId isEqualTo: [NSNumber numberWithInt: [g galleryId]]]) {
+ return g;
+ }
+ }
+
+ return nil;
+}
+
+/**
+ * Return the gallery at the specified position in the internal storage array.
+ * Needed for when we are using this class as a datasource for a UI element.
+ */
+- (TURAnselGallery *)getGalleryByIndex: (NSInteger)index
+{
+ TURAnselGallery *g = [galleryList objectAtIndex:index];
+ return g;
+}
+
+#pragma mark --
+#pragma mark ComboBox Datasource
+- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox
+{
+ return [galleryList count];
+}
+
+- (id)comboBox:(NSComboBox *)aComboBox
+ objectValueForItemAtIndex:(NSInteger)index
+{
+ TURAnselGallery *g = [galleryList objectAtIndex:index];
+ NSString *stringValue = [g valueForKey:@"galleryName"];
+ return stringValue;
+}
+
+#pragma mark Getter/Setters
+- (TURAnselState) state
+{
+ return state;
+}
+-(void) setState: (TURAnselState)newstate
+{
+ state = newstate;
+}
+
+- (id)delegate {
+ return delegate;
+}
+
+- (void)setDelegate:(id)newDelegate {
+ delegate = newDelegate;
+}
+
+#pragma mark PrivateAPI
+/**
+ * Perform initial contact with Ansel server. Retrieves the list of galleries
+ * available for the selected server.
+ *
+ * @return void
+ */
+- (void)doLogin
+{
+ NSArray *params = [[NSArray alloc] initWithObjects:
+ @"ansel", // Scope
+ [NSNumber numberWithInt: PERMS_EDIT], // Perms
+ @"", // No parent
+ [NSNumber numberWithBool:YES], // allLevels
+ [NSNumber numberWithInt: 0], // Offset
+ [NSNumber numberWithInt: 0], // Count
+ [self valueForKey:@"username"], nil]; // Restrict to user (This should be an option eventually).
+
+ NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope, kTURAnselAPIParamPerms,
+ kTURAnselAPIParamParent, kTURAnselAPIParamAllLevels,
+ kTURAnselAPIParamOffset, kTURAnselAPIParamCount,
+ kTURAnselAPIParamUserOnly, nil];
+
+ NSDictionary *results = [self callRPCMethod: @"images.listGalleries"
+ withParams: params
+ withOrder: order];
+
+ if (results) {
+ NSDictionary *galleries = [results objectForKey: (id)kWSMethodInvocationResult];
+ for (NSString *gal in galleries) {
+ TURAnselGallery *theGallery = [[TURAnselGallery alloc] initWithObject: gal
+ controller: self];
+ [theGallery setAnselController: self];
+ [galleryList addObject: theGallery];
+ [theGallery release];
+ theGallery = nil;
+ }
+
+ if ([delegate respondsToSelector:@selector(TURAnselDidInitialize)]) {
+ [delegate performSelectorOnMainThread:@selector(TURAnselDidInitialize)
+ withObject:self
+ waitUntilDone: NO];
+ }
+
+ }
+
+ [params release];
+}
+@end
\ No newline at end of file
--- /dev/null
+/**
+ * TURAnselConstants
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+
+// Constants for the API parameter names.
+extern NSString * const kTURAnselAPIParamScope;
+extern NSString * const kTURAnselAPIParamGaleryParams;
+extern NSString * const kTURAnselAPIParamPerms;
+extern NSString * const kTURAnselAPIParamParent;
+extern NSString * const kTURAnselAPIParamAllLevels;
+extern NSString * const kTURAnselAPIParamOffset;
+extern NSString * const kTURAnselAPIParamCount;
+extern NSString * const kTURAnselAPIParamUserOnly;
+extern NSString * const kTURAnselAPIParamImageId;
+extern NSString * const kTURAnselAPIParamGalleryId;
+extern NSString * const kTURAnselAPIParamThumbnailStyle;
+extern NSString * const kTURAnselAPIParamFullPath;
+extern NSString * const kTURAnselAPIParamImageData;
+extern NSString * const kTURAnselAPIParamSetAsDefault;
+extern NSString * const kTURAnselAPIParamAdditionalData;
+extern NSString * const kTURAnselAPIParamEncoding;
+
+// Constants for the dictionary keys used to describe/create TURAnselGallery
+extern NSString * const kTURAnselGalleryKeyId;
+extern NSString * const kTURAnselGalleryKeyName;
+extern NSString * const kTURAnselGalleryKeyDescription;
+extern NSString * const kTURAnselGalleryKeyImages;
+extern NSString * const kTURAnselGalleryKeyDefaultImage;
--- /dev/null
+//
+// TURAnselConstants.m
+// ApertureToAnselExportPlugin
+//
+// Created by Michael Rubinsky on 9/22/09.
+// Copyright 2009 __MyCompanyName__. All rights reserved.
+//
+
+#import "TURAnselConstants.h"
+
+// Constants for the API parameter names.
+NSString * const kTURAnselAPIParamScope = @"scope";
+NSString * const kTURAnselAPIParamGaleryParams = @"galleryParams";
+NSString * const kTURAnselAPIParamPerms = @"perms";
+NSString * const kTURAnselAPIParamParent = @"parent";
+NSString * const kTURAnselAPIParamAllLevels = @"allLevels";
+NSString * const kTURAnselAPIParamOffset = @"offset";
+NSString * const kTURAnselAPIParamCount = @"count";
+NSString * const kTURAnselAPIParamUserOnly = @"userOnly";
+NSString * const kTURAnselAPIParamImageId = @"imageId";
+NSString * const kTURAnselAPIParamGalleryId = @"galleryId";
+NSString * const kTURAnselAPIParamThumbnailStyle = @"thumbnailStyle";
+NSString * const kTURAnselAPIParamFullPath = @"fullPath";
+NSString * const kTURAnselAPIParamImageData = @"imageData";
+NSString * const kTURAnselAPIParamSetAsDefault = @"default";
+NSString * const kTURAnselAPIParamAdditionalData = @"additionalData";
+NSString * const kTURAnselAPIParamEncoding = @"encoding";
+
+// Ansel gallery attribtues.
+NSString * const kTURAnselGalleryKeyId = @"share_id";
+NSString * const kTURAnselGalleryKeyName = @"attribute_name";
+NSString * const kTURAnselGalleryKeyDescription = @"attribute_desc";
+NSString * const kTURAnselGalleryKeyImages = @"attribute_images";
+NSString * const kTURAnselGalleryKeyDefaultImage = @"attribute_default";
\ No newline at end of file
--- /dev/null
+/**
+ * TURAnselGallery
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Cocoa/Cocoa.h>
+@class TURAnsel, NSURL;
+
+@interface NSObject (TURAnselGalleryDelegate)
+- (void)TURAnselGalleryDidUploadImage: (id *)gallery;
+@end
+
+@interface TURAnselGallery : NSObject {
+ int _galleryId;
+ int galleryImageCount;
+ int galleryKeyImage;
+ NSURL *galleryKeyImageURL;
+ NSMutableArray *imageList;
+ NSString *galleryName;
+ NSString *galleryDescription;
+ TURAnsel *anselController;
+ id delegate;
+}
+@property (readonly) NSString *galleryName;
+@property (readonly) NSString *galleryDescription;
+@property (readonly) int galleryImageCount;
+@property (readwrite) int galleryKeyImage;
+
+- (id)initWithObject:(id)galleryData controller:(TURAnsel * )controller;
+- (void)uploadImageObject: (NSDictionary *)imageParameters;
+
+// Getter / Setter
+- (void)setDelegate: (id)newDelegate;
+- (id)delegate;
+- (NSURL *)galleryKeyImageURL;
+- (id)listImages;
+- (int)galleryId;
+- (void)setAnselController:(TURAnsel *)newController;
+@end
\ No newline at end of file
--- /dev/null
+/**
+ * TURAnselGallery.m
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Foundation/Foundation.h>
+#import "TURAnselKit.h"
+
+@interface TURAnselGallery (PrivateAPI)
+- (void)doUpload: (NSDictionary *)imageParams;
+@end
+
+@implementation TURAnselGallery
+
+@synthesize galleryDescription;
+@synthesize galleryName;
+@synthesize galleryImageCount;
+@synthesize galleryKeyImage;
+
+#pragma mark -
+#pragma mark init/dealloc
+/**
+ * Init a gallery object
+ */
+- (id)initWithObject:(id)galleryData controller:(TURAnsel *)controller
+{
+ [super init];
+ [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyId]
+ forKey: @"galleryId"];
+ [self setValue:[galleryData valueForKey: kTURAnselGalleryKeyDescription]
+ forKey:@"galleryDescription"];
+ [self setValue:[galleryData valueForKey: kTURAnselGalleryKeyName]
+ forKey:@"galleryName"];
+ [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyImages]
+ forKey:@"galleryImageCount"];
+ [self setValue: [galleryData valueForKey: kTURAnselGalleryKeyDefaultImage]
+ forKey:@"galleryKeyImage"];
+ [self setAnselController: controller];
+ return self;
+}
+- (void)dealloc
+{
+ NSLog(@"TURAnselGallery dealloc called on Gallery %@", self);
+ [anselController release];
+ anselController = nil;
+
+ [galleryKeyImageURL release];
+ galleryKeyImageURL = nil;
+
+ [imageList release];
+ imageList = nil;
+
+ [super dealloc];
+}
+- (id)description
+{
+ NSString *text = [NSString stringWithFormat:@"Description: %@ Id: %d has: %d images", galleryName, _galleryId, galleryImageCount];
+ return text;
+}
+
+#pragma mark -
+#pragma mark Actions
+/**
+ * Requests the gallery's key image url to be fetched from the server
+ * (This information is not present in the gallery definition array returned
+ * from the images.listGalleries call).
+ */
+- (NSURL *)galleryKeyImageURL
+{
+ if (galleryKeyImageURL) {
+ return galleryKeyImageURL;
+ } else {
+ NSArray *params = [[NSArray alloc] initWithObjects:
+ @"ansel", // Scope
+ [NSNumber numberWithInt: galleryKeyImage], // Image Id
+ @"thumb", // Thumbnail type
+ [NSNumber numberWithBool:YES], // Full path
+ nil];
+
+ NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
+ kTURAnselAPIParamImageId,
+ kTURAnselAPIParamThumbnailStyle,
+ kTURAnselAPIParamFullPath, nil];
+
+ NSDictionary *response = [anselController callRPCMethod: @"images.getImageUrl"
+ withParams: params
+ withOrder: order];
+
+ if (response) {
+ NSDictionary *url = [response objectForKey:(id)kWSMethodInvocationResult];
+ [galleryKeyImageURL autorelease];
+ galleryKeyImageURL = [[NSURL URLWithString: [NSString stringWithFormat: @"%@", url]] retain];
+ NSLog(@"galleryKeyImageURL: %@", galleryKeyImageURL);
+ return galleryKeyImageURL;
+ }
+
+ return nil;
+ }
+}
+
+/**
+ * Get the complete list of image ids and URLs
+ */
+- (id)listImages
+{
+ if (!imageList) {
+
+ NSArray *params = [[NSArray alloc] initWithObjects:
+ @"ansel", //Scope
+ [NSNumber numberWithInt: _galleryId], //Gallery Id
+ [NSNumber numberWithInt: 2], //PERMS_SHOW
+ @"thumb", // Thumbnail
+ [NSNumber numberWithBool:YES], // Full path
+ nil];
+ NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
+ kTURAnselAPIParamGalleryId,
+ kTURAnselAPIParamPerms,
+ kTURAnselAPIParamThumbnailStyle,
+ kTURAnselAPIParamFullPath, nil];
+
+ NSDictionary *response = [anselController callRPCMethod: @"images.listImages"
+ withParams: params
+ withOrder: order];
+ if (response) {
+ [imageList autorelease];
+ imageList = [[response objectForKey: (id)kWSMethodInvocationResult] retain];
+
+ NSLog(@"listImages: %@", imageList);
+
+ return imageList;
+ }
+ }
+
+ return nil;
+}
+
+/**
+ * Upload the provided image to this gallery.
+ */
+- (void)uploadImageObject: (NSDictionary *)imageParameters
+{
+ [self doUpload: imageParameters];
+}
+
+#pragma mark -
+#pragma mark Getter/Setter
+- (int)galleryId
+{
+ return _galleryId;
+}
+
+- (void)setGalleryId:(int)id
+{
+ _galleryId = id;
+}
+
+- (id)delegate
+{
+ return delegate;
+}
+
+- (void)setDelegate: (id)newDelegate
+{
+ delegate = newDelegate;
+}
+
+- (void)setAnselController: (TURAnsel *)newController
+{
+ [anselController autorelease];
+ anselController = [newController retain];
+}
+
+- (TURAnsel *)anselController
+{
+ return anselController;
+}
+
+#pragma mark -
+#pragma mark PrivateAPI
+- (void)doUpload:(NSDictionary *)imageParameters
+{
+ // Need to build the params array now.
+ NSArray *params = [[NSArray alloc] initWithObjects:
+ @"ansel", // app
+ [NSNumber numberWithInt: _galleryId], // gallery_id
+ [imageParameters valueForKey: @"data"], // image data array
+ [imageParameters valueForKey: @"default"], // set as default?
+ @"", // Additional gallery data to set?
+ @"base64", // Image data encoding
+ nil];
+ NSArray *order = [NSArray arrayWithObjects: kTURAnselAPIParamScope,
+ kTURAnselAPIParamGalleryId,
+ kTURAnselAPIParamImageData,
+ kTURAnselAPIParamSetAsDefault,
+ kTURAnselAPIParamAdditionalData,
+ kTURAnselAPIParamEncoding, nil];
+
+ // Send the request up to the controller
+ NSDictionary *result = [anselController callRPCMethod: @"images.saveImage"
+ withParams: params
+ withOrder: order];
+
+ if (result) {
+ if ([delegate respondsToSelector:@selector(TURAnselGalleryDidUploadImage:)]) {
+ [delegate performSelectorOnMainThread: @selector(TURAnselGalleryDidUploadImage:)
+ withObject: self
+ waitUntilDone: NO];
+ }
+ }
+
+ [params release];
+}
+@end
--- /dev/null
+/**
+ * TURAnselGalleryPanelController
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import <Cocoa/Cocoa.h>
+#import "TURAnselKit.h"
+
+@interface NSObject (TURAnselGalleryPaneControllerDelegate)
+-(void)TURAnselGalleryPanelDidAddGallery;
+@end
+
+@interface TURAnselGalleryPanelController : NSObject {
+ // Outlets
+ IBOutlet NSTextField *galleryNameTextField;
+ IBOutlet NSTextField *gallerySlugTextField;
+ IBOutlet NSTextField *galleryDescTextField;
+ IBOutlet NSPanel *newGallerySheet;
+
+ // Instance members
+ TURAnsel *_anselController;
+ NSWindow *_controllerWindow;
+ id _delegate;
+}
+
+// Actions
+- (IBAction)doNewGallery: (id)sender;
+- (IBAction)cancelNewGallery: (id)sender;
+- (id)initWithController: (TURAnsel *)theController;
+- (id)initWithController: (TURAnsel *)theController withGalleryName: (NSString *)galleryName;
+- (void)showSheetForWindow: (NSWindow *)theWindow;
+- (void)setDelegate: (id)theDelegate;
+@end
--- /dev/null
+/**
+ * TURAnselGalleryPanelController.m
+ *
+ * Controller for handling the form that creates new remote Ansel galleries.
+ *
+ * Copyright 2009 The Horde Project (http://www.horde.org)
+ *
+ * @license http://opensource.org/licenses/bsd-license.php
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ */
+#import "TURAnselGalleryPanelController.h"
+
+@implementation TURAnselGalleryPanelController
+
+#pragma mark -
+#pragma mark init/dealloc
+-(id)initWithController: (TURAnsel *)theController
+{
+ [super init];
+ _anselController = [theController retain];
+ [NSBundle loadNibNamed: @"AnselGalleryPanel"
+ owner: self];
+
+ return self;
+}
+- (id)initWithController: (TURAnsel *)theController
+ withGalleryName: (NSString *)galleryName
+{
+
+ [super init];
+ _anselController = [theController retain];
+ [NSBundle loadNibNamed: @"AnselGalleryPanel"
+ owner: self];
+
+ [galleryNameTextField setStringValue: galleryName];
+
+ return self;
+}
+- (void)dealloc
+{
+ [_anselController release];
+ [_controllerWindow release];
+ [super dealloc];
+}
+
+#pragma mark -
+#pragma mark IBActions
+- (IBAction)cancelNewGallery: (id)sender
+{
+ [NSApp endSheet: newGallerySheet];
+ [newGallerySheet orderOut: nil];
+}
+
+- (IBAction)doNewGallery: (id)sender
+{
+ // Get Gallery Properties from the panel.
+ NSString *galleryName = [galleryNameTextField stringValue];
+ NSString *gallerySlug = [gallerySlugTextField stringValue];
+ NSString *galleryDescription = [galleryDescTextField stringValue];
+
+ if (!galleryName) {
+
+ [NSApp endSheet: newGallerySheet];
+ [newGallerySheet orderOut: nil];
+
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:@"Gallery names cannot be empty"];
+ [alert setAlertStyle: NSCriticalAlertStyle];
+ [alert beginSheetModalForWindow: _controllerWindow
+ modalDelegate: nil
+ didEndSelector: nil
+ contextInfo: nil];
+ [alert release];
+ return;
+ }
+ NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
+ galleryName, @"name",
+ gallerySlug, @"slug",
+ galleryDescription, @"desc", nil];
+
+ NSDictionary *results = [[_anselController createNewGallery: params] retain];
+
+ [NSApp endSheet: newGallerySheet];
+ [newGallerySheet orderOut: nil];
+
+ if ([_anselController state] != TURAnselStateError) {
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText: @"Gallery successfully created."];
+ [alert beginSheetModalForWindow: _controllerWindow
+ modalDelegate: nil
+ didEndSelector: nil
+ contextInfo: nil];
+ [alert release];
+ if ([_delegate respondsToSelector:@selector(TURAnselGalleryPanelDidAddGallery)]) {
+ [_delegate TURAnselGalleryPanelDidAddGallery];
+ }
+ }
+
+ [results release];
+}
+
+
+- (void)setDelegate: (id)theDelegate
+{
+ _delegate = theDelegate; // weak
+}
+
+
+- (void)showSheetForWindow: (NSWindow *)theWindow
+{
+ [_controllerWindow release];
+ _controllerWindow = [theWindow retain];
+ [NSApp beginSheet: newGallerySheet
+ modalForWindow: theWindow
+ modalDelegate: nil
+ didEndSelector: nil
+ contextInfo: nil];
+}
+
+@end
--- /dev/null
+#import "TURAnselConstants.h"
+#import "TURAnsel.h"
+#import "TURAnselGallery.h"
+