Index: /tags/release-0.8/main.m
===================================================================
--- /tags/release-0.8/main.m (revision 2)
+++ /tags/release-0.8/main.m (revision 2)
@@ -0,0 +1,13 @@
+//
+//  main.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 5/7/06.
+//  Copyright __MyCompanyName__ 2006. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[]) {
+    return NSApplicationMain(argc,  (const char **) argv);
+}
Index: /tags/release-0.8/Doxyfile
===================================================================
--- /tags/release-0.8/Doxyfile (revision 22)
+++ /tags/release-0.8/Doxyfile (revision 22)
@@ -0,0 +1,237 @@
+# Doxyfile 1.4.6
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = Fence
+PROJECT_NUMBER         = 0.8
+OUTPUT_DIRECTORY       = /Users/ngerakines/dev/6a/code/Fence/trunk/docs
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = /Applications/
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = NO
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = NO
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = YES
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = /Users/ngerakines/dev/6a/code/Fence/trunk
+FILE_PATTERNS          = *.h \
+                         *.hh \
+                         *.m \
+                         *.mm \
+                         *.dox
+RECURSIVE              = NO
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = YES
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
Index: /tags/release-0.8/TypePadWeblog.h
===================================================================
--- /tags/release-0.8/TypePadWeblog.h (revision 41)
+++ /tags/release-0.8/TypePadWeblog.h (revision 41)
@@ -0,0 +1,55 @@
+//
+//  TypePadWeblog.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 5/15/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "AtomApi.h"
+
+@interface TypePadWeblog : NSObject {
+	NSString *_WeblogTitle;
+	NSString *_WeblogID;
+	NSString *_WeblogURL;
+	NSMutableDictionary *_categories;
+	NSMutableArray *comments;
+	NSString *authuser;
+	NSString *authpass;
+	BOOL requiresAuth;
+}
+
+- (NSString *) weblogTitle;
+- (void) setWeblogTitle: (NSString *) WeblogTitle;
+
+- (NSString *) weblogID;
+- (void) setWeblogID: (NSString *) WeblogID;
+
+- (NSString *) weblogURL;
+- (void) setWeblogURL: (NSString *) WeblogURL;
+
+- (NSMutableDictionary *) categories;
+- (void) setCategories: (NSMutableDictionary *) Categories;
+
+- (NSMutableArray *) comments;
+- (void) setComments: (NSMutableArray *) Comments;
+
+- (NSString *) authuser;
+- (void) setAuthuser: (NSString *) Authuser;
+
+- (NSString *) authpass;
+- (void) setAuthpass: (NSString *) Authpass;
+
+- (BOOL) requiresAuth;
+- (void) setRequiresAuth: (BOOL) flag;
+
+- (void) setAuth: (NSString *) user pass:(NSString *) pass;
+
+- (void) discoverCategories;
+- (NSString *) parse_catid: (NSString *) tmpstr;
+
+- (void) getComments;
+- (NSString *) parse_commentid: (NSString *) tmpstr;
+
+@end
Index: /tags/release-0.8/CommentTable.h
===================================================================
--- /tags/release-0.8/CommentTable.h (revision 41)
+++ /tags/release-0.8/CommentTable.h (revision 41)
@@ -0,0 +1,9 @@
+/* CommentTable */
+
+#import <Cocoa/Cocoa.h>
+
+@interface CommentTable : NSTableView {
+	// ..
+}
+
+@end
Index: /tags/release-0.8/TypePadWeblog.m
===================================================================
--- /tags/release-0.8/TypePadWeblog.m (revision 41)
+++ /tags/release-0.8/TypePadWeblog.m (revision 41)
@@ -0,0 +1,230 @@
+//
+//  TypePadWeblog.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 5/15/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "TypePadWeblog.h"
+#import "TypePadAtomApi.h"
+#import "TypePadWeblogComment.h"
+
+@implementation TypePadWeblog
+
+- (id) init {
+    if (self = [super init]) {
+		_categories = [[NSMutableDictionary alloc] init];
+		[self setComments:[[NSMutableArray alloc] init]];
+		_WeblogTitle = [[NSString alloc] init];
+		_WeblogID = [[NSString alloc] init];
+		_WeblogURL = [[NSString alloc] init];
+		[self retain];
+    }
+    return self;
+}
+
+/* dealloc */
+- (void) dealloc {
+    [_WeblogTitle release];
+    [_WeblogID release];
+    [_WeblogURL release];
+    [_categories release];
+    [comments release];
+    [authuser release];
+    [authpass release];
+	
+    _WeblogTitle = nil;
+    _WeblogID = nil;
+    _WeblogURL = nil;
+    _categories = nil;
+    comments = nil;
+    authuser = nil;
+    authpass = nil;
+    [super dealloc];
+}
+
+- (void) encodeWithCoder: (NSCoder *)coder {
+    [coder encodeObject: [self weblogTitle] forKey: @"WeblogWeblogTitle"];
+    [coder encodeObject: [self weblogID] forKey: @"WeblogWeblogID"];
+    [coder encodeObject: [self weblogURL] forKey: @"WeblogWeblogURL"];
+    [coder encodeObject: [self categories] forKey: @"WeblogCategories"];
+    [coder encodeObject: [self comments] forKey: @"WeblogComments"];
+    [coder encodeObject: [self authuser] forKey: @"WeblogAuthuser"];
+    [coder encodeObject: [self authpass] forKey: @"WeblogAuthpass"];
+    [coder encodeBool: [self requiresAuth] forKey: @"WeblogRequiresAuth"];
+}
+
+- (id) initWithCoder: (NSCoder *)coder {
+	[self setWeblogTitle: [coder decodeObjectForKey: @"WeblogWeblogTitle"]];
+	[self setWeblogID: [coder decodeObjectForKey: @"WeblogWeblogID"]];
+	[self setWeblogURL: [coder decodeObjectForKey: @"WeblogWeblogURL"]];
+	[self setCategories: [coder decodeObjectForKey: @"WeblogCategories"]];
+	[self setComments: [coder decodeObjectForKey: @"WeblogComments"]];
+	[self setAuthuser: [coder decodeObjectForKey: @"WeblogAuthuser"]];
+	[self setAuthpass: [coder decodeObjectForKey: @"WeblogAuthpass"]];
+	[self setRequiresAuth: [coder decodeBoolForKey: @"WeblogRequiresAuth"]];
+    return self;
+}
+
+/* weblogTitle */
+- (NSString *) weblogTitle { return _WeblogTitle; }
+
+	/* -setWeblogTitle: */
+- (void) setWeblogTitle: (NSString *) WeblogTitle {
+    //NSLog(@"in -setWeblogTitle:, old value of _WeblogTitle: %@, changed to: %@", _WeblogTitle, WeblogTitle);
+	
+    if (_WeblogTitle != WeblogTitle) {
+        [_WeblogTitle autorelease];
+        _WeblogTitle = [WeblogTitle retain];
+    }
+}
+
+/* weblogID */
+- (NSString *) weblogID { return _WeblogID; }
+
+	/* -setWeblogID: */
+- (void) setWeblogID: (NSString *) WeblogID {
+    //NSLog(@"in -setWeblogID:, old value of _WeblogID: %@, changed to: %@", _WeblogID, WeblogID);
+	
+    if (_WeblogID != WeblogID) {
+        [_WeblogID autorelease];
+        _WeblogID = [WeblogID retain];
+    }
+}
+
+/* weblogURL */
+- (NSString *) weblogURL { return _WeblogURL; }
+
+	/* -setWeblogURL: */
+- (void) setWeblogURL: (NSString *) WeblogURL {
+    //NSLog(@"in -setWeblogURL:, old value of _WeblogURL: %@, changed to: %@", _WeblogURL, WeblogURL);
+    if (_WeblogURL != WeblogURL) {
+        [_WeblogURL autorelease];
+        _WeblogURL = [WeblogURL retain];
+    }
+}
+
+/* categories */
+- (NSMutableDictionary *) categories { return _categories; }
+
+	/* -setCategories: */
+- (void) setCategories: (NSMutableDictionary *) Categories {
+    //NSLog(@"in -setCategories:, old value of _categories: %@, changed to: %@", _categories, Categories);
+    if (_categories != Categories) {
+        [_categories autorelease];
+        _categories = [Categories retain];
+    }
+}
+
+/* comments */
+- (NSMutableArray *) comments { return comments; }
+
+/* -setComments: */
+- (void) setComments: (NSMutableArray *) Comments {
+    //NSLog(@"in -setComments:, old value of comments: %@, changed to: %@", comments, Comments);
+    if (comments != Comments) {
+        [comments autorelease];
+        comments = [Comments retain];
+    }
+}
+
+
+/* authuser */
+- (NSString *) authuser { return authuser; }
+
+	/* -setAuthuser: */
+- (void) setAuthuser: (NSString *) Authuser {
+	//NSLog(@"in -setAuthuser:, old value of authuser: %@, changed to: %@", authuser, Authuser);
+	[self setRequiresAuth:YES];
+    if (authuser != Authuser) {
+        [authuser autorelease];
+        authuser = [Authuser retain];
+    }
+}
+
+/* authpass */
+- (NSString *) authpass { return authpass; }
+
+	/* -setAuthpass: */
+- (void) setAuthpass: (NSString *) Authpass {
+	[self setRequiresAuth:YES];
+    //NSLog(@"in -setAuthpass:, old value of authpass: %@, changed to: %@", authpass, Authpass);
+    if (authpass != Authpass) {
+        [authpass autorelease];
+        authpass = [Authpass retain];
+    }
+}
+
+- (void) setAuth: (NSString *) user pass:(NSString *) pass {
+	[self setAuthuser:user];
+	[self setAuthpass:pass];
+	[self setRequiresAuth:YES];
+}
+
+/* requiresAuth */
+- (BOOL) requiresAuth { return requiresAuth; }
+
+	/* -setRequiresAuth: */
+- (void) setRequiresAuth: (BOOL) flag {
+    //NSLog(@"in -setRequiresAuth, old value of requiresAuth: %@, changed to: %@", (requiresAuth ? @"YES": @"NO"), (flag ? @"YES": @"NO") );
+    requiresAuth = flag;
+}
+
+///
+- (void) discoverCategories {
+	TypePadAtomAPI *client = [[[TypePadAtomAPI alloc] init] autorelease];
+	[client setAuth:[self authuser] pass:[self authpass]];
+	[client setDataarg:@""];
+	[client newpost:@"4" args:[NSDictionary dictionaryWithObjectsAndKeys: [self weblogID], @"blog_id", nil]];
+	NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithXMLString:[client resdata] options:(NSXMLNodePreserveWhitespace|NSXMLNodePreserveCDATA) error:nil];
+	NSArray *nodes = [xmlDoc nodesForXPath:@"/feed/entry" error:nil];
+	int arrayCount = [nodes count];
+	int i = 0;
+	for (i = 0; i < arrayCount; i++) {
+		NSXMLElement *token = [nodes objectAtIndex:i];
+		[_categories setObject: [self parse_catid:[[[token nodesForXPath:@"id" error:nil] objectAtIndex:0] stringValue]] forKey:[[[token nodesForXPath:@"title" error:nil] objectAtIndex:0] stringValue]];
+	}
+}
+
+- (void) getComments {
+	TypePadAtomAPI *client = [[[TypePadAtomAPI alloc] init] autorelease];
+	[client setDataarg:@""];
+	[client setAuth:[self authuser] pass:[self authpass]];
+	[client newpost:@"6" args:[NSDictionary dictionaryWithObjectsAndKeys: [self weblogID], @"blog_id", nil]];
+	NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithXMLString:[client resdata] options:(NSXMLNodePreserveWhitespace|NSXMLNodePreserveCDATA) error:nil];
+	NSArray *nodes = [xmlDoc nodesForXPath:@"/feed/entry" error:nil];
+	int arrayCount = [nodes count];
+	int i = 0;
+	for (i = 0; i < arrayCount; i++) {
+		NSXMLElement *token = [nodes objectAtIndex:i];
+		TypePadWeblogComment *tpobj = [[TypePadWeblogComment alloc] init];
+		[tpobj setCommentid:[self parse_commentid:[[[token nodesForXPath:@"id" error:nil] objectAtIndex:0] stringValue]]];
+		[tpobj setText:[[[token nodesForXPath:@"content" error:nil] objectAtIndex:0] stringValue]];
+		[comments addObject:tpobj];
+		NSLog(@"Id '%@ - %@\n", [tpobj commentid], [tpobj text]);
+	}
+}
+
+- (NSString *) parse_catid: (NSString *) tmpstr {
+	NSArray *lines = [tmpstr componentsSeparatedByString:@"-"];
+	return [lines objectAtIndex:1];
+}
+
+- (NSString *) parse_commentid: (NSString *) tmpstr {
+	NSArray *lines = [tmpstr componentsSeparatedByString:@"omment-"];
+	return [lines objectAtIndex:1];
+}
+
+// TODO -- remove this and replace it with something better
+- (void) check_categories: (NSString *) categories {
+	NSArray *lines = [categories componentsSeparatedByString:@"-"];
+	int i, count = [lines count];
+	for (i = 0; i < count; i++) {
+		if ( [_categories objectForKey:[lines objectAtIndex:i]] == nil) {
+			// NSLog(@"Category '%@' does not exist!\n", [lines objectAtIndex:i]);
+		}
+	}
+}
+
+@end
Index: /tags/release-0.8/CommentTable.m
===================================================================
--- /tags/release-0.8/CommentTable.m (revision 41)
+++ /tags/release-0.8/CommentTable.m (revision 41)
@@ -0,0 +1,5 @@
+#import "CommentTable.h"
+
+@implementation CommentTable
+
+@end
Index: /tags/release-0.8/Fence_Prefix.pch
===================================================================
--- /tags/release-0.8/Fence_Prefix.pch (revision 2)
+++ /tags/release-0.8/Fence_Prefix.pch (revision 2)
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'Fence' target in the 'Fence' project
+//
+
+#ifdef __OBJC__
+    #import <Cocoa/Cocoa.h>
+#endif
Index: /tags/release-0.8/VoxController.h
===================================================================
--- /tags/release-0.8/VoxController.h (revision 30)
+++ /tags/release-0.8/VoxController.h (revision 30)
@@ -0,0 +1,8 @@
+/* VoxController */
+
+#import <Cocoa/Cocoa.h>
+
+@interface VoxController : NSObject
+{
+}
+@end
Index: /tags/release-0.8/TypePadAtomAPI.h
===================================================================
--- /tags/release-0.8/TypePadAtomAPI.h (revision 41)
+++ /tags/release-0.8/TypePadAtomAPI.h (revision 41)
@@ -0,0 +1,25 @@
+//
+//  TypePadAtomAPI.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/11/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "AtomApi.h"
+
+@interface TypePadAtomAPI : AtomApi {
+
+}
+
+- (void) newpost:(NSString *) to args:(NSMutableDictionary *) args;
+
+- (NSString *) gallery_upload: (NSString *) file;
+- (NSString *) weblog_discover;
+- (NSString *) weblog_upload: (NSString *) file;
+- (NSString *) weblog_newpost: (NSString *) title content: (NSString *) content;
+- (NSString *) weblog_postcategories;
+- (NSString *) comments_get;
+
+@end
Index: /tags/release-0.8/VoxController.m
===================================================================
--- /tags/release-0.8/VoxController.m (revision 30)
+++ /tags/release-0.8/VoxController.m (revision 30)
@@ -0,0 +1,5 @@
+#import "VoxController.h"
+
+@implementation VoxController
+
+@end
Index: /tags/release-0.8/TypePadAtomAPI.m
===================================================================
--- /tags/release-0.8/TypePadAtomAPI.m (revision 41)
+++ /tags/release-0.8/TypePadAtomAPI.m (revision 41)
@@ -0,0 +1,115 @@
+//
+//  TypePadAtomAPI.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/11/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "TypePadAtomAPI.h"
+#import "AtomExtensions.h"
+#import "NSDataAdditions.h"
+
+@implementation TypePadAtomAPI
+
+- (void) newpost:(NSString *) to args:(NSMutableDictionary *) args {
+// NSLog(@"-(void) newpost:(NSString *)to - called\n");
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	NSString *reqtype;
+	if ([to isEqualToString:@"weblog"] || [to isEqualToString:@"0"]) {
+// NSLog(@"set as weblog post type\n");
+		reqtype = @"POST";
+		[self setApiurl:[NSString stringWithFormat:@"%@weblog/blog_id=%@",@"http://www.typepad.com/t/atom/", [args objectForKey:@"destinationid"]]];
+		[self weblog_upload: dataarg];
+	}
+	if ([to isEqualToString:@"gallery"] || [to isEqualToString:@"1"]) {
+// NSLog(@"set as gallery post type\n");
+		reqtype = @"POST";
+		[self setApiurl:[NSString stringWithFormat:@"%@gallery/set_id=%@", @"http://www.typepad.com/t/atom/", [args objectForKey:@"destinationid"]]];
+		[self gallery_upload: dataarg];
+	}
+	if ([to isEqualToString:@"quickpost"] || [to isEqualToString:@"2"]) {
+// NSLog(@"set as quickpost post type\n");
+		reqtype = @"POST";
+		[self setApiurl:[NSString stringWithFormat:@"%@weblog/blog_id=%@", @"http://www.typepad.com/t/atom/", [args objectForKey:@"destinationid"]]];
+		[self weblog_newpost:@"Quick Post" content:dataarg];
+	}
+	if ([to isEqualToString:@"weblogdiscovery"] || [to isEqualToString:@"3"]) {
+// NSLog(@"set as weblogdiscovery post type\n");
+		reqtype = @"GET";
+		[self setApiurl:[NSString stringWithFormat:@"%@weblog", @"http://www.typepad.com/t/atom/"]];
+		[self weblog_discover];
+	} 
+	if ([to isEqualToString:@"categorydiscovery"] || [to isEqualToString:@"4"]) {
+// NSLog(@"set as categorydiscovery post type\n");
+		reqtype = @"GET";
+		[self setApiurl:[NSString stringWithFormat:@"%@categories/blog_id=%@", @"http://www.typepad.com/t/atom/", [args objectForKey:@"blog_id"] ]];
+		[self weblog_discover];
+	}
+	if ([to isEqualToString:@"gallerydiscovery"] || [to isEqualToString:@"5"]) {
+// NSLog(@"set as gallerydiscovery post type\n");
+		reqtype = @"GET";
+		[self setApiurl:[NSString stringWithFormat:@"%@gallery", @"http://www.typepad.com/t/atom/"]];
+		[self weblog_discover];
+	}
+	if ([to isEqualToString:@"commentlist"] || [to isEqualToString:@"6"]) {
+		// NSLog(@"set as gallerydiscovery post type\n");
+		reqtype = @"GET";
+		[self setApiurl:[NSString stringWithFormat:@"%@comments/blog_id=%@", @"http://www.typepad.com/t/atom/", [args objectForKey:@"blog_id"]]];
+		[self weblog_discover];
+	}
+// NSLog(@"Making request with request type %@\n", reqtype);
+	[self makerequest:reqtype];
+}
+
+- (NSString *) gallery_upload: (NSString *) file {
+// NSLog(@"- (NSString *) gallery_newitem - called");
+	NSData *data = [NSData dataWithContentsOfFile:file];
+	NSString *encodedFile = [data base64Encoding];
+	atomdata = [NSString stringWithFormat:@"<entry xmlns=\"http://purl.org/atom/ns#\" xmlns:photo=\"http://sixapart.com/atom/photo#\"><title>%@</title><summary></summary><content mode=\"base64\" type=\"image/%@\">%@</content></entry>", [file lastPathComponent], [file pathExtension], encodedFile];
+	// NSLog(@"Atom feed:\n%@\n", atomdata);
+	return atomdata;
+}
+
+- (NSString *) weblog_upload: (NSString *) file {
+// NSLog(@"- (NSString *) weblog_upload - called");
+	NSData *data = [NSData dataWithContentsOfFile:file];
+	NSString *encodedFile = [data base64Encoding];
+	// TODO: enable standalone mode - <standalone xmlns=\"http://sixapart.com/atom/typepad#\">1</standalone>
+	atomdata = [NSString stringWithFormat:@"<entry xmlns=\"http://purl.org/atom/ns#\" xmlns:photo=\"http://sixapart.com/atom/photo#\"><title>%@</title><summary></summary><photo:filename>%@</photo:filename><content mode=\"base64\" type=\"image/%@\">%@</content></entry>",[file lastPathComponent],[file lastPathComponent], [file pathExtension], encodedFile];
+	// NSLog(@"Atom feed:\n%@\n", atomdata);
+	return atomdata;
+}
+
+- (NSString *) weblog_newpost: (NSString *) title content: (NSString *) content {
+// NSLog(@"- (NSString *) weblog_newpost - called");
+	atomdata = [NSString stringWithFormat:@"<entry xmlns=\"http://purl.org/atom/ns#\"><title>%@</title><summary></summary><content mode=\"xml\"><div xmlns=\"http://www.w3.org/1999/xhtml\">%@</div></content>%@</entry>", title, content, [self weblog_postcategories]];
+	// NSLog(@"Atom feed:\n%@\n", atomdata);
+	return atomdata;
+}
+
+- (NSString *) weblog_discover {
+// NSLog(@"- (NSString *) weblog_newitem - called");
+	/* atomdata = [NSString stringWithFormat:@"<entry xmlns=\"http://purl.org/atom/ns#\"><title>%@</title><summary></summary><content mode=\"xml\"><div xmlns=\"http://www.w3.org/1999/xhtml\">%@</div></content></entry>", title, content]; */
+	atomdata = @"";
+	// NSLog(@"Atom feed:\n%@\n", atomdata);
+	return @"";
+}
+
+- (NSString *) weblog_postcategories {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	NSArray *lines = [[userDefaults objectForKey:@"blogcategories"] componentsSeparatedByString:@","];
+	int i, count = [lines count];
+	NSString *output = @"";
+	for (i = 0; i < count; i++) {
+		[output stringByAppendingString:[NSString stringWithFormat:@"<category scheme=\"http://sixapart.com/ns/category#\" term\"%@\" />", [lines objectAtIndex:i]]];
+	}
+	return output;
+}
+
+- (NSString *) comments_get {
+	atomdata = @"";
+	return @"";
+}
+
+@end
Index: /tags/release-0.8/TypePad.nib/info.nib
===================================================================
--- /tags/release-0.8/TypePad.nib/info.nib (revision 41)
+++ /tags/release-0.8/TypePad.nib/info.nib (revision 41)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>113 567 356 343 0 0 1440 938 </string>
+	<key>IBEditorPositions</key>
+	<dict>
+		<key>38</key>
+		<string>241 825 87 49 0 0 1440 938 </string>
+		<key>48</key>
+		<string>63 809 184 49 0 0 1440 938 </string>
+	</dict>
+	<key>IBFramework Version</key>
+	<string>443.0</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>7</integer>
+		<integer>13</integer>
+		<integer>48</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>8I127</string>
+</dict>
+</plist>
Index: /tags/release-0.8/TypePad.nib/classes.nib
===================================================================
--- /tags/release-0.8/TypePad.nib/classes.nib (revision 41)
+++ /tags/release-0.8/TypePad.nib/classes.nib (revision 41)
@@ -0,0 +1,18 @@
+{
+    IBClasses = (
+        {CLASS = CommentTable; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, 
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {CLASS = ImageDragArea; LANGUAGE = ObjC; SUPERCLASS = NSImageView; }, 
+        {CLASS = NSSegmentedControl; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, 
+        {CLASS = RoundedView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, 
+        {CLASS = TransparentWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, 
+        {
+            ACTIONS = {refreshcomments = id; }; 
+            CLASS = TypePadController; 
+            LANGUAGE = ObjC; 
+            OUTLETS = {bloglist = id; commentlist = id; }; 
+            SUPERCLASS = NSObject; 
+        }
+    ); 
+    IBVersion = 1; 
+}
Index: /tags/release-0.8/TypePad.nib/_TypePad_EOArchive.java
===================================================================
--- /tags/release-0.8/TypePad.nib/_TypePad_EOArchive.java (revision 41)
+++ /tags/release-0.8/TypePad.nib/_TypePad_EOArchive.java (revision 41)
@@ -0,0 +1,209 @@
+// _TypePad_EOArchive.java
+// Generated by EnterpriseObjects palette at Tuesday, June 20, 2006 4:09:51 PM US/Pacific
+
+import com.webobjects.eoapplication.*;
+import com.webobjects.eocontrol.*;
+import com.webobjects.eointerface.*;
+import com.webobjects.eointerface.swing.*;
+import com.webobjects.eointerface.swing.EOTable._EOTableColumn;
+import com.webobjects.foundation.*;
+import java.awt.*;
+import javax.swing.*;
+import javax.swing.border.*;
+import javax.swing.table.*;
+import javax.swing.text.*;
+
+public class _TypePad_EOArchive extends com.webobjects.eoapplication.EOArchive {
+    RoundedView _nsCustomView0;
+    TypePadController _typePadController0;
+    com.webobjects.eointerface.swing.EOFrame _eoFrame0, _eoFrame1;
+    com.webobjects.eointerface.swing.EOImageView _nsImageView0;
+    com.webobjects.eointerface.swing.EOTable _nsTableView0;
+    com.webobjects.eointerface.swing.EOTable._EOTableColumn _eoTableColumn0, _eoTableColumn1;
+    com.webobjects.eointerface.swing.EOTextArea _nsTextView0;
+    com.webobjects.eointerface.swing.EOTextField _nsTextField0, _nsTextField1, _nsTextField2, _nsTextField3, _nsTextField4, _nsTextField5;
+    javax.swing.JCheckBox _jCheckBox0;
+    javax.swing.JComboBox _popup0;
+    javax.swing.JPanel _nsView0, _nsView1;
+
+    public _TypePad_EOArchive(Object owner, NSDisposableRegistry registry) {
+        super(owner, registry);
+    }
+
+    protected void _construct() {
+        Object owner = _owner();
+        EOArchive._ObjectInstantiationDelegate delegate = (owner instanceof EOArchive._ObjectInstantiationDelegate) ? (EOArchive._ObjectInstantiationDelegate)owner : null;
+        Object replacement;
+
+        super._construct();
+
+        _jCheckBox0 = (javax.swing.JCheckBox)_registered(new javax.swing.JCheckBox(""), "");
+        _nsTextField5 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField");
+        _nsTextField4 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField111111111");
+        _nsTextField3 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField11111111");
+        _nsTextField2 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField1111112");
+        _nsTextField1 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField1111111");
+        _nsTextField0 = (com.webobjects.eointerface.swing.EOTextField)_registered(new com.webobjects.eointerface.swing.EOTextField(), "NSTextField111111");
+        _nsTextView0 = (com.webobjects.eointerface.swing.EOTextArea)_registered(new com.webobjects.eointerface.swing.EOTextArea(), "NSTextView");
+        _popup0 = (javax.swing.JComboBox)_registered(new javax.swing.JComboBox(), "NSPopUpButton");
+        _typePadController0 = (TypePadController)_registered(new TypePadController(), "TypePadController");
+        _eoTableColumn1 = (com.webobjects.eointerface.swing.EOTable._EOTableColumn)_registered(new com.webobjects.eointerface.swing.EOTable._EOTableColumn(), "NSTableColumn1");
+        _eoTableColumn0 = (com.webobjects.eointerface.swing.EOTable._EOTableColumn)_registered(new com.webobjects.eointerface.swing.EOTable._EOTableColumn(), "NSTableColumn");
+        _nsTableView0 = (com.webobjects.eointerface.swing.EOTable)_registered(new com.webobjects.eointerface.swing.EOTable(), "NSTableView");
+        _eoFrame1 = (com.webobjects.eointerface.swing.EOFrame)_registered(new com.webobjects.eointerface.swing.EOFrame(), "Comment Moderation");
+        _nsView1 = (JPanel)_eoFrame1.getContentPane();
+        _nsImageView0 = (com.webobjects.eointerface.swing.EOImageView)_registered(new com.webobjects.eointerface.swing.EOImageView(), "");
+        _nsCustomView0 = (RoundedView)_registered(new RoundedView(), "View");
+        _eoFrame0 = (com.webobjects.eointerface.swing.EOFrame)_registered(new com.webobjects.eointerface.swing.EOFrame(), "Main");
+        _nsView0 = (JPanel)_eoFrame0.getContentPane();
+    }
+
+    protected void _awaken() {
+        super._awaken();
+        _popup0.setModel(new javax.swing.DefaultComboBoxModel());
+        _popup0.addItem("Item3");
+    }
+
+    protected void _init() {
+        super._init();
+        _setFontForComponent(_jCheckBox0, "Lucida Grande", 12, Font.PLAIN);
+        .addActionListener((com.webobjects.eointerface.swing.EOControlActionAdapter)_registered(new com.webobjects.eointerface.swing.EOControlActionAdapter(_eoFrame1, "makeKeyAndOrderFront", ), ""));
+        _setFontForComponent(_nsTextField5, "Lucida Grande", 9, Font.PLAIN);
+        _nsTextField5.setEditable(false);
+        _nsTextField5.setOpaque(false);
+        _nsTextField5.setText("http://www.typepad.com/");
+        _nsTextField5.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        _nsTextField5.setSelectable(false);
+        _nsTextField5.setEnabled(true);
+        _nsTextField5.setBorder(null);
+        _setFontForComponent(_nsTextField4, "Lucida Grande", 10, Font.PLAIN);
+        _nsTextField4.setEditable(false);
+        _nsTextField4.setOpaque(false);
+        _nsTextField4.setText("User Name\n");
+        _nsTextField4.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        _nsTextField4.setSelectable(false);
+        _nsTextField4.setEnabled(true);
+        _nsTextField4.setBorder(null);
+        _setFontForComponent(_nsTextField3, "Lucida Grande", 10, Font.PLAIN);
+        _nsTextField3.setEditable(false);
+        _nsTextField3.setOpaque(false);
+        _nsTextField3.setText("User Email Address\n");
+        _nsTextField3.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        _nsTextField3.setSelectable(false);
+        _nsTextField3.setEnabled(true);
+        _nsTextField3.setBorder(null);
+        _setFontForComponent(_nsTextField2, "Lucida Grande", 10, Font.PLAIN);
+        _nsTextField2.setEditable(false);
+        _nsTextField2.setOpaque(false);
+        _nsTextField2.setText("URL\n");
+        _nsTextField2.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+        _nsTextField2.setSelectable(false);
+        _nsTextField2.setEnabled(true);
+        _nsTextField2.setBorder(null);
+        _setFontForComponent(_nsTextField1, "Lucida Grande", 10, Font.PLAIN);
+        _nsTextField1.setEditable(false);
+        _nsTextField1.setOpaque(false);
+        _nsTextField1.setText("Email\n");
+        _nsTextField1.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+        _nsTextField1.setSelectable(false);
+        _nsTextField1.setEnabled(true);
+        _nsTextField1.setBorder(null);
+        _setFontForComponent(_nsTextField0, "Lucida Grande", 10, Font.PLAIN);
+        _nsTextField0.setEditable(false);
+        _nsTextField0.setOpaque(false);
+        _nsTextField0.setText("Name\n");
+        _nsTextField0.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+        _nsTextField0.setSelectable(false);
+        _nsTextField0.setEnabled(true);
+        _nsTextField0.setBorder(null);
+        _nsTextView0.setEditable(false);
+        _nsTextView0.setOpaque(true);
+        _nsTextView0.setText("");
+        .addActionListener((com.webobjects.eointerface.swing.EOControlActionAdapter)_registered(new com.webobjects.eointerface.swing.EOControlActionAdapter(_typePadController0, "refreshcomments", ), ""));
+        _setFontForComponent(_popup0, "Lucida Grande", 13, Font.PLAIN);
+        _connect(_typePadController0, _popup0, "bloglist");
+        _connect(_typePadController0, _nsTableView0, "commentlist");
+        _connect(_nsTableView0, , "menu");
+        _eoTableColumn1.setMinWidth(8);
+        _eoTableColumn1.setMaxWidth(1000);
+        _eoTableColumn1.setPreferredWidth(113);
+        _eoTableColumn1.setWidth(113);
+        _eoTableColumn1.setResizable(false);
+        _eoTableColumn1.setHeaderValue("");
+        if ((_eoTableColumn1.getCellRenderer() instanceof DefaultTableCellRenderer) || (_eoTableColumn1.getCellRenderer() == null)) {
+        	DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
+        	renderer.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        	_eoTableColumn1.setCellRenderer(renderer);
+        }
+        if ((_eoTableColumn1.getHeaderRenderer() != null)) {
+        	((DefaultTableCellRenderer)(_eoTableColumn1.getHeaderRenderer())).setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        }
+        _eoTableColumn0.setMinWidth(8);
+        _eoTableColumn0.setMaxWidth(1000);
+        _eoTableColumn0.setPreferredWidth(55);
+        _eoTableColumn0.setWidth(55);
+        _eoTableColumn0.setResizable(true);
+        _eoTableColumn0.setHeaderValue("");
+        if ((_eoTableColumn0.getHeaderRenderer() != null)) {
+        	((DefaultTableCellRenderer)(_eoTableColumn0.getHeaderRenderer())).setHorizontalAlignment(javax.swing.JTextField.LEFT);
+        }
+        _nsTableView0.table().addColumn(_eoTableColumn0);
+        _nsTableView0.table().addColumn(_eoTableColumn1);
+        _setFontForComponent(_nsTableView0.table().getTableHeader(), "Lucida Grande", 11, Font.PLAIN);
+        _nsTableView0.table().setRowHeight(20);
+        if (!(_nsView1.getLayout() instanceof EOViewLayout)) { _nsView1.setLayout(new EOViewLayout()); }
+        _nsTableView0.setSize(176, 140);
+        _nsTableView0.setLocation(13, 40);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTableView0, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTableView0);
+        _nsTextView0.setSize(255, 98);
+        _nsTextView0.setLocation(197, 82);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextView0, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextView0);
+        _nsTextField0.setSize(54, 13);
+        _nsTextField0.setLocation(198, 19);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField0, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField0);
+        _nsTextField1.setSize(54, 13);
+        _nsTextField1.setLocation(198, 40);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField1, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField1);
+        _nsTextField2.setSize(54, 13);
+        _nsTextField2.setLocation(198, 61);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField2, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField2);
+        _nsTextField3.setSize(193, 13);
+        _nsTextField3.setLocation(260, 40);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField3, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField3);
+        _nsTextField4.setSize(193, 13);
+        _nsTextField4.setLocation(260, 19);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField4, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField4);
+        _nsTextField5.setSize(199, 13);
+        _nsTextField5.setLocation(257, 61);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_nsTextField5, EOViewLayout.MinYMargin);
+        _nsView1.add(_nsTextField5);
+        _popup0.setSize(175, 26);
+        _popup0.setLocation(15, 12);
+        ((EOViewLayout)_nsView1.getLayout()).setAutosizingMask(_popup0, EOViewLayout.MinYMargin);
+        _nsView1.add(_popup0);
+        _nsView1.setSize(465, 194);
+        _eoFrame1.setTitle("Comment Moderation");
+        _eoFrame1.setLocation(559, 702);
+        _eoFrame1.setSize(465, 194);
+        if (!(_nsView0.getLayout() instanceof EOViewLayout)) { _nsView0.setLayout(new EOViewLayout()); }
+        _nsCustomView0.setSize(213, 108);
+        _nsCustomView0.setLocation(-7, -6);
+        ((EOViewLayout)_nsView0.getLayout()).setAutosizingMask(_nsCustomView0, EOViewLayout.MinYMargin);
+        _nsView0.add(_nsCustomView0);
+        _nsImageView0.setSize(74, 68);
+        _nsImageView0.setLocation(67, 14);
+        ((EOViewLayout)_nsView0.getLayout()).setAutosizingMask(_nsImageView0, EOViewLayout.MinYMargin);
+        _nsView0.add(_nsImageView0);
+        _nsView0.setSize(199, 96);
+        _eoFrame0.setTitle("Fence");
+        _eoFrame0.setLocation(240, 328);
+        _eoFrame0.setSize(199, 96);
+    }
+}
Index: /tags/release-0.8/TypePad.nib/JavaCompiling.plist
===================================================================
--- /tags/release-0.8/TypePad.nib/JavaCompiling.plist (revision 27)
+++ /tags/release-0.8/TypePad.nib/JavaCompiling.plist (revision 27)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>JavaSourceSubpath</key>
+	<string>_TypePad_EOArchive.java</string>
+</dict>
+</plist>
Index: /tags/release-0.8/VoxCollection.h
===================================================================
--- /tags/release-0.8/VoxCollection.h (revision 35)
+++ /tags/release-0.8/VoxCollection.h (revision 35)
@@ -0,0 +1,22 @@
+//
+//  VoxCollection.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/11/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface VoxCollection : NSObject {
+	NSString *_collectionID;
+	NSString *_collectionTitle;
+}
+- (NSString *) collectionID;
+- (void) setCollectionID: (NSString *) CollectionID;
+
+- (NSString *) collectionTitle;
+- (void) setCollectionTitle: (NSString *) CollectionTitle;
+
+@end
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller (revision 13)
@@ -0,0 +1,1 @@
+link Versions/Current/Growl-WithInstaller
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/GrowlPrefPaneInfo.plist
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/GrowlPrefPaneInfo.plist (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/GrowlPrefPaneInfo.plist (revision 13)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Growl</string>
+	<key>CFBundleIconFile</key>
+	<string>growl-icon.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.growl.prefpanel</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>0.7.4</string>
+	<key>CFBundleSignature</key>
+	<string>GPAN</string>
+	<key>CFBundleVersion</key>
+	<string>0.7.4</string>
+	<key>NSMainNibFile</key>
+	<string>GrowlPref</string>
+	<key>NSPrefPaneIconFile</key>
+	<string>growl-claw32.tiff</string>
+	<key>NSPrefPaneIconLabel</key>
+	<string>Growl</string>
+	<key>NSPrincipalClass</key>
+	<string>GrowlPref</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Info.plist
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Info.plist (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Info.plist (revision 13)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Growl-WithInstaller</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.growl.growlwithinstallerframework</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>0.7.3</string>
+	<key>CFBundleSignature</key>
+	<string>GRRR</string>
+	<key>CFBundleVersion</key>
+	<string>0.7.3</string>
+	<key>NSPrincipalClass</key>
+	<string>GrowlApplicationBridge</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallation.strings
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallation.strings (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Russian.lproj/GrowlInstallation.strings (revision 13)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Cancel</key>
+	<string>ÐÑÐŒÐµÐœÐ°</string>
+	<key>Don't Ask Again</key>
+	<string>ÐÐŸÐ»ÑÑÐµ ÐœÐµ Ð¿ÐŸÐºÐ°Ð·ÑÐ²Ð°ÑÑ</string>
+	<key>Growl Installation Recommended</key>
+	<string>Ð ÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Growl</string>
+	<key>Growl Update Available</key>
+	<string>ÐÐŸÑÑÑÐ¿ÐœÐ° ÐœÐŸÐ²Ð°Ñ Ð²ÐµÑÑÐžÑ Growl</string>
+	<key>Install</key>
+	<string>Ð£ÑÑÐ°ÐœÐŸÐ²ÐžÑÑ</string>
+	<key>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</key>
+	<string>ÐÐ°ÐœÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ ÑÐµÑÐ²ÐžÑ Growl - ÑÐµÐœÑÑÐ°Ð»ÐžÐ·ÐŸÐ²Ð°ÐœÐœÑÑ Ðž ÑÐœÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÐœÑÑ ÑÐžÑÑÐµÐŒÑ Ð²ÑÐ²ÐŸÐŽÐ° Ð¿ÑÐµÐŽÑÐ¿ÑÐµÐ¶ÐŽÐµÐœÐžÐ¹. Ð ÐŽÐ°ÐœÐœÑÑ Ð¿ÐŸÑÑÐ°Ð²ÐºÑ Ð²ÐºÐ»ÑÑÐµÐœÐ° Ð±ÐŸÐ»ÐµÐµ ÐœÐŸÐ²Ð°Ñ Ð²ÐµÑÑÐžÑ Growl, ÑÐµÐŒ ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐœÐ°Ñ ÐœÐ° ÐÐ°ÑÐµÐŒ ÐºÐŸÐŒÐ¿ÑÑÑÐµÑÐµ. Ð ÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ ÑÑÐŸ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐžÐµ. ÐÐŸÐŽÐºÐ»ÑÑÐµÐœÐžÐµ Ðº ÑÐµÑÐž ÐÐœÑÐµÑÐœÐµÑ ÐœÐµ ÑÑÐµÐ±ÑÐµÑÑÑ.</string>
+	<key>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</key>
+	<string>ÐÐ°ÐœÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ ÑÐµÑÐ²ÐžÑ Growl - ÑÐµÐœÑÑÐ°Ð»ÐžÐ·ÐŸÐ²Ð°ÐœÐœÑÑ Ðž ÑÐœÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÐœÑÑ ÑÐžÑÑÐµÐŒÑ Ð²ÑÐ²ÐŸÐŽÐ° Ð¿ÑÐµÐŽÑÐ¿ÑÐµÐ¶ÐŽÐµÐœÐžÐ¹. ÐÐŸÐŽÑÐ²ÐµÑÐŽÐžÑÐµ ÑÑÑÐ°ÐœÐŸÐ²ÐºÑ Growl, ÐµÑÐ»Ðž Ñ
+ÐŸÑÐžÑÐµ Ð²ÐŸÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑÑÑ ÐµÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑÐŒÐž. ÐÐŸÐŽÐºÐ»ÑÑÐµÐœÐžÐµ Ðº ÑÐµÑÐž ÐÐœÑÐµÑÐœÐµÑ ÐœÐµ ÑÑÐµÐ±ÑÐµÑÑÑ.</string>
+	<key>Update</key>
+	<string>ÐÐ±ÐœÐŸÐ²ÐžÑÑ</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallation.strings
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallation.strings (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallation.strings (revision 13)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Growl Installation Recommended</key>
+	<string>Growl ã®ã€ã³ã¹ããŒã«ãæšå¥šããŸã</string>
+
+	<key>Growl Update Available</key>
+	<string>Growl ã®ææ°çããããŸã</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</key>
+	<string>ãã®ãã­ã°ã©ã ã¯éäž­æ
+å ±ã·ã¹ãã  Growl ãäœ¿ã£ãŠæ
+å ±ãè¡šç€ºããŸãããçŸåš Growl ãã€ã³ã¹ããŒã«ãããŠããŸãããGrowlãå©çšããŠãã®ãã­ã°ã©ã ããã®æ
+å ±ãè¡šç€ºããã«ã¯ãGrowl ãã€ã³ã¹ããŒã«ããå¿
+èŠããããŸããããŠã³ã­ãŒãã®å¿
+èŠã¯ãããŸããã</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</key>
+	<string>ãã®ãã­ã°ã©ã ã¯éäž­æ
+å ±ã·ã¹ãã  Growl ãäœ¿ã£ãŠæ
+å ±ãè¡šç€ºããŸããçŸåšã€ã³ã¹ããŒã«ãããŠãã Growl ã¯ææ°ã®ãã®ã§ã¯ãããŸããããã®ãã­ã°ã©ã ã«å«ãŸããŠããæ°ããããŒãžã§ã³ã® Growl ã«ã¢ããããŒãããããšãåŒ·ããå§ãããŸããããŠã³ã­ãŒãã®å¿
+èŠã¯ãããŸããã</string>
+
+	<key>Install</key>
+	<string>ã€ã³ã¹ããŒã«</string>
+
+	<key>Update</key>
+	<string>ã¢ããããŒã</string>
+
+	<key>Cancel</key>
+	<string>ã­ã£ã³ã»ã«</string>
+
+	<key>Don't Ask Again</key>
+	<string>ååºŠè¡šç€ºããªã</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Japanese.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="yes"?>
+<object class="NSIBObjectData">
+  <string name="targetFramework">IBCarbonFramework</string>
+  <object name="rootObject" class="NSCustomObject" id="1">
+    <string name="customClass">NSApplication</string>
+  </object>
+  <array count="9" name="allObjects">
+    <object class="IBCarbonWindow" id="166">
+      <string name="windowRect">248 247 448 667 </string>
+      <string name="title">Growl Installer</string>
+      <object name="rootControl" class="IBCarbonRootControl" id="167">
+        <string name="bounds">0 0 200 420 </string>
+        <string name="viewFrame">0 0 420 200 </string>
+        <array count="6" name="subviews">
+          <object class="IBCarbonButton" id="182">
+            <string name="bounds">160 291 180 397 </string>
+            <string name="viewFrame">291 160 106 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1000</int>
+            <string name="title">ã€ã³ã¹ããŒã«</string>
+            <ostype name="command">ok  </ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">1</int>
+          </object>
+          <object class="IBCarbonButton" id="183">
+            <string name="bounds">160 185 180 278 </string>
+            <string name="viewFrame">185 160 93 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1001</int>
+            <string name="title">ã­ã£ã³ã»ã«</string>
+            <ostype name="command">not!</ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">2</int>
+          </object>
+          <object class="IBCarbonCheckBox" id="184">
+            <string name="bounds">161 24 179 142 </string>
+            <string name="viewFrame">24 161 118 18 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">2000</int>
+            <string name="title">ååºŠè¡šç€ºããªã</string>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+            </object>
+          </object>
+          <object class="IBCarbonImageView" id="180">
+            <string name="bounds">15 24 79 88 </string>
+            <string name="viewFrame">24 15 64 64 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">3000</int>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+            </object>
+            <boolean name="opaque">FALSE</boolean>
+            <boolean name="scaleToFit">TRUE</boolean>
+          </object>
+          <object class="IBCarbonScrollView" id="186">
+            <string name="bounds">15 104 150 396 </string>
+            <string name="viewFrame">104 15 292 135 </string>
+            <array count="1" name="subviews">
+              <object class="IBCarbonTextView" id="185">
+                <string name="bounds">15 104 150 396 </string>
+                <string name="viewFrame">0 0 292 135 </string>
+                <ostype name="controlSignature">GRRR</ostype>
+                <int name="controlID">4000</int>
+                <boolean name="readOnly">TRUE</boolean>
+                <boolean name="outputInUnicode">TRUE</boolean>
+                <boolean name="wrap">TRUE</boolean>
+                <boolean name="noCaretWhenInactive">TRUE</boolean>
+              </object>
+            </array>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <boolean name="scrollHorizontally">FALSE</boolean>
+            <boolean name="autoHideScrollBars">TRUE</boolean>
+          </object>
+          <object class="IBCarbonChasingArrows" id="195">
+            <string name="bounds">162 161 178 177 </string>
+            <string name="viewFrame">161 162 16 16 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">5000</int>
+          </object>
+        </array>
+      </object>
+      <boolean name="receiveUpdates">FALSE</boolean>
+      <boolean name="isResizable">FALSE</boolean>
+      <boolean name="compositing">TRUE</boolean>
+      <int name="carbonWindowClass">4</int>
+      <int name="windowPosition">7</int>
+      <int name="scalingMode">1048576</int>
+      <boolean name="doesNotCycle">TRUE</boolean>
+      <boolean name="inWindowMenu">FALSE</boolean>
+    </object>
+    <reference idRef="167"/>
+    <reference idRef="180"/>
+    <reference idRef="182"/>
+    <reference idRef="183"/>
+    <reference idRef="184"/>
+    <reference idRef="185"/>
+    <reference idRef="186"/>
+    <reference idRef="195"/>
+  </array>
+  <array count="9" name="allParents">
+    <reference idRef="1"/>
+    <reference idRef="166"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="186"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+  </array>
+  <dictionary count="3" name="nameTable">
+    <string>File&apos;s Owner</string>
+    <reference idRef="1"/>
+    <string>Installation prompt</string>
+    <reference idRef="166"/>
+    <string>View</string>
+    <reference idRef="180"/>
+  </dictionary>
+  <unsigned_int name="nextObjectID">196</unsigned_int>
+</object>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallation.strings
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallation.strings (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallation.strings (revision 13)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Growl Installation Recommended</key>
+	<string>Growl Installation Recommended</string>
+
+	<key>Growl Update Available</key>
+	<string>Growl Update Available</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</key>
+	<string>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</key>
+	<string>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</string>
+
+	<key>Install</key>
+	<string>Install</string>
+
+	<key>Update</key>
+	<string>Update</string>
+
+	<key>Cancel</key>
+	<string>Cancel</string>
+
+	<key>Don't Ask Again</key>
+	<string>Don't Ask Again</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/English.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
@@ -0,0 +1,135 @@
+<?xml version="1.0" standalone="yes"?>
+<object class="NSIBObjectData">
+  <string name="targetFramework">IBCarbonFramework</string>
+  <object name="rootObject" class="NSCustomObject" id="1">
+    <string name="customClass">NSApplication</string>
+  </object>
+  <array count="9" name="allObjects">
+    <object class="IBCarbonWindow" id="166">
+      <string name="windowRect">293 245 493 665 </string>
+      <string name="title">Growl Installer</string>
+      <object name="rootControl" class="IBCarbonRootControl" id="167">
+        <string name="bounds">0 0 200 420 </string>
+        <string name="viewFrame">0 0 420 200 </string>
+        <array count="6" name="subviews">
+          <object class="IBCarbonButton" id="182">
+            <string name="bounds">160 326 180 396 </string>
+            <string name="viewFrame">326 160 70 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1000</int>
+            <string name="title">Install</string>
+            <ostype name="command">ok  </ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">1</int>
+          </object>
+          <object class="IBCarbonButton" id="183">
+            <string name="bounds">160 244 180 314 </string>
+            <string name="viewFrame">244 160 70 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1001</int>
+            <string name="title">Cancel</string>
+            <ostype name="command">not!</ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">2</int>
+          </object>
+          <object class="IBCarbonCheckBox" id="184">
+            <string name="bounds">161 24 179 142 </string>
+            <string name="viewFrame">24 161 118 18 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">2000</int>
+            <string name="title">Don&apos;t ask again</string>
+            <ostype name="command">NO!!</ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+            </object>
+          </object>
+          <object class="IBCarbonImageView" id="180">
+            <string name="bounds">15 24 79 88 </string>
+            <string name="viewFrame">24 15 64 64 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">3000</int>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+            </object>
+            <boolean name="opaque">FALSE</boolean>
+            <boolean name="scaleToFit">TRUE</boolean>
+          </object>
+          <object class="IBCarbonScrollView" id="186">
+            <string name="bounds">15 104 150 396 </string>
+            <string name="viewFrame">104 15 292 135 </string>
+            <array count="1" name="subviews">
+              <object class="IBCarbonTextView" id="185">
+                <string name="bounds">15 104 150 396 </string>
+                <string name="viewFrame">0 0 292 135 </string>
+                <ostype name="controlSignature">GRRR</ostype>
+                <int name="controlID">4000</int>
+                <boolean name="readOnly">TRUE</boolean>
+                <boolean name="outputInUnicode">TRUE</boolean>
+                <boolean name="wrap">TRUE</boolean>
+                <boolean name="noCaretWhenInactive">TRUE</boolean>
+              </object>
+            </array>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <boolean name="scrollHorizontally">FALSE</boolean>
+            <boolean name="autoHideScrollBars">TRUE</boolean>
+          </object>
+          <object class="IBCarbonChasingArrows" id="195">
+            <string name="bounds">162 220 178 236 </string>
+            <string name="viewFrame">220 162 16 16 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">5000</int>
+          </object>
+        </array>
+      </object>
+      <boolean name="receiveUpdates">FALSE</boolean>
+      <boolean name="isResizable">FALSE</boolean>
+      <boolean name="compositing">TRUE</boolean>
+      <int name="carbonWindowClass">4</int>
+      <int name="windowPosition">7</int>
+      <int name="scalingMode">1048576</int>
+      <boolean name="doesNotCycle">TRUE</boolean>
+      <boolean name="inWindowMenu">FALSE</boolean>
+    </object>
+    <reference idRef="167"/>
+    <reference idRef="180"/>
+    <reference idRef="182"/>
+    <reference idRef="183"/>
+    <reference idRef="184"/>
+    <reference idRef="185"/>
+    <reference idRef="186"/>
+    <reference idRef="195"/>
+  </array>
+  <array count="9" name="allParents">
+    <reference idRef="1"/>
+    <reference idRef="166"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="186"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+  </array>
+  <dictionary count="3" name="nameTable">
+    <string>File&apos;s Owner</string>
+    <reference idRef="1"/>
+    <string>Installation prompt</string>
+    <reference idRef="166"/>
+    <string>View</string>
+    <reference idRef="180"/>
+  </dictionary>
+  <unsigned_int name="nextObjectID">196</unsigned_int>
+</object>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallation.strings
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallation.strings (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallation.strings (revision 13)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Growl Installation Recommended</key>
+	<string>Growl Installation Empfohlen</string>
+
+	<key>Growl Update Available</key>
+	<string>Growl Update VerfÃŒgbar</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</key>
+	<string>Dieses Programm benutzt Growl, ein zentrales Benachrichtigungssystem, um Informationen anzuzeigen.  Growl ist momentan nicht installiert; um Growl Benachrichtigungen von dieser und anderen Anwendungen zu erhalten, muss Growl installiert werden.  Kein Download wird benÃ¶tigt.</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</key>
+	<string>Dieses Programm benutzt Growl, ein zentrales Benachrichtigungssystem, um Informationen anzuzeigen.  Eine Version von Growl ist momentan installiert, aber dieses Programm enthÃ€lt eine neuere Version von Growl.  Es wird dringend empfohlen, die neuere Version zu installieren.  Kein Download wird benÃ¶tigt.</string>
+
+	<key>Install</key>
+	<string>Installieren</string>
+
+	<key>Update</key>
+	<string>Aktualisieren</string>
+
+	<key>Cancel</key>
+	<string>Abbrechen</string>
+
+	<key>Don't Ask Again</key>
+	<string>Nicht nochmal fragen</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/German.lproj/GrowlInstallationPrompt-Carbon.nib/objects.xib (revision 13)
@@ -0,0 +1,135 @@
+<?xml version="1.0" standalone="yes"?>
+<object class="NSIBObjectData">
+  <string name="targetFramework">IBCarbonFramework</string>
+  <object name="rootObject" class="NSCustomObject" id="1">
+    <string name="customClass">NSApplication</string>
+  </object>
+  <array count="9" name="allObjects">
+    <object class="IBCarbonWindow" id="166">
+      <string name="windowRect">515 245 715 685 </string>
+      <string name="title">Growl Installation</string>
+      <object name="rootControl" class="IBCarbonRootControl" id="167">
+        <string name="bounds">0 0 200 440 </string>
+        <string name="viewFrame">0 0 440 200 </string>
+        <array count="6" name="subviews">
+          <object class="IBCarbonButton" id="182">
+            <string name="bounds">160 322 180 420 </string>
+            <string name="viewFrame">322 160 98 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1000</int>
+            <string name="title">Installieren</string>
+            <ostype name="command">ok  </ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">1</int>
+          </object>
+          <object class="IBCarbonButton" id="183">
+            <string name="bounds">160 214 180 310 </string>
+            <string name="viewFrame">214 160 96 20 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">1001</int>
+            <string name="title">Abbrechen</string>
+            <ostype name="command">not!</ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <int name="buttonType">2</int>
+          </object>
+          <object class="IBCarbonCheckBox" id="184">
+            <string name="bounds">161 24 179 183 </string>
+            <string name="viewFrame">24 161 159 18 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">2000</int>
+            <string name="title">Nicht nochmal fragen</string>
+            <ostype name="command">NO!!</ostype>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+            </object>
+          </object>
+          <object class="IBCarbonImageView" id="180">
+            <string name="bounds">15 24 79 88 </string>
+            <string name="viewFrame">24 15 64 64 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">3000</int>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+            </object>
+            <boolean name="opaque">FALSE</boolean>
+            <boolean name="scaleToFit">TRUE</boolean>
+          </object>
+          <object class="IBCarbonScrollView" id="185">
+            <string name="bounds">15 109 150 420 </string>
+            <string name="viewFrame">109 15 311 135 </string>
+            <array count="1" name="subviews">
+              <object class="IBCarbonTextView" id="186">
+                <string name="bounds">15 109 150 420 </string>
+                <string name="viewFrame">0 0 311 135 </string>
+                <ostype name="controlSignature">GRRR</ostype>
+                <int name="controlID">4000</int>
+                <boolean name="readOnly">TRUE</boolean>
+                <boolean name="outputInUnicode">TRUE</boolean>
+                <boolean name="wrap">TRUE</boolean>
+                <boolean name="noCaretWhenInactive">TRUE</boolean>
+              </object>
+            </array>
+            <object name="layoutInfo" class="IBCarbonHILayoutInfo">
+              <int name="bindingTopKind">1</int>
+              <int name="bindingLeftKind">1</int>
+              <int name="bindingBottomKind">2</int>
+              <int name="bindingRightKind">2</int>
+            </object>
+            <boolean name="scrollVertically">FALSE</boolean>
+            <boolean name="scrollHorizontally">FALSE</boolean>
+          </object>
+          <object class="IBCarbonChasingArrows" id="187">
+            <string name="bounds">162 190 178 206 </string>
+            <string name="viewFrame">190 162 16 16 </string>
+            <ostype name="controlSignature">GRRR</ostype>
+            <int name="controlID">5000</int>
+          </object>
+        </array>
+      </object>
+      <boolean name="receiveUpdates">FALSE</boolean>
+      <boolean name="isResizable">FALSE</boolean>
+      <boolean name="compositing">TRUE</boolean>
+      <int name="carbonWindowClass">4</int>
+      <int name="windowPosition">7</int>
+      <int name="scalingMode">1048576</int>
+      <boolean name="doesNotCycle">TRUE</boolean>
+      <boolean name="inWindowMenu">FALSE</boolean>
+    </object>
+    <reference idRef="167"/>
+    <reference idRef="180"/>
+    <reference idRef="182"/>
+    <reference idRef="183"/>
+    <reference idRef="184"/>
+    <reference idRef="185"/>
+    <reference idRef="186"/>
+    <reference idRef="187"/>
+  </array>
+  <array count="9" name="allParents">
+    <reference idRef="1"/>
+    <reference idRef="166"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+    <reference idRef="185"/>
+    <reference idRef="167"/>
+  </array>
+  <dictionary count="3" name="nameTable">
+    <string>File&apos;s Owner</string>
+    <reference idRef="1"/>
+    <string>Installation prompt</string>
+    <reference idRef="166"/>
+    <string>View</string>
+    <reference idRef="180"/>
+  </dictionary>
+  <unsigned_int name="nextObjectID">188</unsigned_int>
+</object>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallation.strings
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallation.strings (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Resources/Norwegian.lproj/GrowlInstallation.strings (revision 13)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Growl Installation Recommended</key>
+	<string>Growl installasjon anbefalt</string>
+
+	<key>Growl Update Available</key>
+	<string>Growl oppdatering tilgjengelig</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  Growl is not currently installed; to see Growl notifications from this and other applications, you must install it.  No download is required.</key>
+	<string>Dette programmet viser informasjon via Growl, et sentralisert notifikasjonssystem. Growl er ikke installert pÃ¥ din maskin. For Ã¥ se Growl notifikasjoner fra dette og andre programmer, mÃ¥ du installere det. Ingen nedlastning trengs.</string>
+
+	<key>This program displays information via Growl, a centralized notification system.  A version of Growl is currently installed, but this program includes an updated version of Growl.  It is strongly recommended that you update now.  No download is required.</key>
+	<string>Dette programmet viser informasjon via Growl, et sentralisert notifikasjonssystem.  En gammel versjon av Growl er allerede installert, men dette programmet inneholder en oppdatering. Det er anbefalt at du oppdaterer. Ingen nedlastning trengs.</string>
+
+	<key>Install</key>
+	<string>Installer</string>
+
+	<key>Update</key>
+	<string>Oppdatering</string>
+
+	<key>Cancel</key>
+	<string>Avbryt</string>
+
+	<key>Don't Ask Again</key>
+	<string>Ikke spÃžr igjen</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h (revision 13)
@@ -0,0 +1,6 @@
+#include "GrowlDefines.h"
+
+#ifdef __OBJC__
+#	include "GrowlApplicationBridge.h"
+#endif
+#include "GrowlApplicationBridge-Carbon.h"
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h (revision 13)
@@ -0,0 +1,556 @@
+//
+//  GrowlApplicationBridge.h
+//  Growl
+//
+//  Created by Evan Schoenberg on Wed Jun 16 2004.
+//  Copyright 2004-2005 The Growl Project. All rights reserved.
+//
+
+/*!
+ *	@header		GrowlApplicationBridge.h
+ *	@abstract   Defines the GrowlApplicationBridge class.
+ *	@discussion This header defines the GrowlApplicationBridge class as well as
+ *	 the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant.
+ */
+
+#ifndef __GrowlApplicationBridge_h__
+#define __GrowlApplicationBridge_h__
+
+#import <Foundation/Foundation.h>
+#import "GrowlDefines.h"
+
+//Forward declarations
+@protocol GrowlApplicationBridgeDelegate;
+
+/*!
+ *	@defined    GROWL_PREFPANE_BUNDLE_IDENTIFIER
+ *	@discussion The bundle identifier for the Growl prefpane.
+ */
+#define GROWL_PREFPANE_BUNDLE_IDENTIFIER	@"com.growl.prefpanel"
+
+/*!
+ *	@defined    GROWL_PREFPANE_NAME
+ *	@discussion The file name of the Growl prefpane.
+ */
+#define GROWL_PREFPANE_NAME					@"Growl.prefPane"
+
+//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation)
+#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION @"User chose not to install"
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ *	@class      GrowlApplicationBridge
+ *	@abstract   A class used to interface with Growl.
+ *	@discussion This class provides a means to interface with Growl.
+ *
+ *	 Currently it provides a way to detect if Growl is installed and launch the
+ *	 GrowlHelperApp if it's not already running.
+ */
+@interface GrowlApplicationBridge : NSObject {
+
+}
+
+/*!
+ *	@method isGrowlInstalled
+ *	@abstract Detects whether Growl is installed.
+ *	@discussion Determines if the Growl prefpane and its helper app are installed.
+ *	@result Returns YES if Growl is installed, NO otherwise.
+ */
++ (BOOL) isGrowlInstalled;
+
+/*!
+ *	@method isGrowlRunning
+ *	@abstract Detects whether GrowlHelperApp is currently running.
+ *	@discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings.
+ *	@result Returns YES if GrowlHelperApp is running, NO otherwise.
+ */
++ (BOOL) isGrowlRunning;
+
+#pragma mark -
+
+/*!
+ *	@method setGrowlDelegate:
+ *	@abstract Set the object which will be responsible for providing and receiving Growl information.
+ *	@discussion This must be called before using GrowlApplicationBridge.
+ *
+ *	 The methods in the GrowlApplicationBridgeDelegate protocol are required
+ *	 and return the basic information needed to register with Growl.
+ *
+ *	 The methods in the GrowlApplicationBridgeDelegate_InformalProtocol
+ *	 informal protocol are individually optional.  They provide a greater
+ *	 degree of interaction between the application and growl such as informing
+ *	 the application when one of its Growl notifications is clicked by the user.
+ *
+ *	 The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol
+ *	 informal protocol are individually optional and are only applicable when
+ *	 using the Growl-WithInstaller.framework which allows for automated Growl
+ *	 installation.
+ *
+ *	 When this method is called, data will be collected from inDelegate, Growl
+ *	 will be launched if it is not already running, and the application will be
+ *	 registered with Growl.
+ *
+ *	 If using the Growl-WithInstaller framework, if Growl is already installed
+ *	 but this copy of the framework has an updated version of Growl, the user
+ *	 will be prompted to update automatically.
+ *
+ *	@param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol.
+ */
++ (void) setGrowlDelegate:(NSObject<GrowlApplicationBridgeDelegate> *)inDelegate;
+
+/*!
+ *	@method growlDelegate
+ *	@abstract Return the object responsible for providing and receiving Growl information.
+ *	@discussion See setGrowlDelegate: for details.
+ *	@result The Growl delegate.
+ */
++ (NSObject<GrowlApplicationBridgeDelegate> *) growlDelegate;
+
+#pragma mark -
+
+/*!
+ *	@method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:
+ *	@abstract Send a Growl notification.
+ *	@discussion This is the preferred means for sending a Growl notification.
+ *	 The notification name and at least one of the title and description are
+ *	 required (all three are preferred).  All other parameters may be
+ *	 <code>nil</code> (or 0 or NO as appropriate) to accept default values.
+ *
+ *	 If using the Growl-WithInstaller framework, if Growl is not installed the
+ *	 user will be prompted to install Growl. If the user cancels, this method
+ *	 will have no effect until the next application session, at which time when
+ *	 it is called the user will be prompted again. The user is also given the
+ *	 option to not be prompted again.  If the user does choose to install Growl,
+ *	 the requested notification will be displayed once Growl is installed and
+ *	 running.
+ *
+ *	@param title		The title of the notification displayed to the user.
+ *	@param description	The full description of the notification displayed to the user.
+ *	@param notifName	The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
+ *	@param iconData		<code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
+ *	@param priority		The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
+ *	@param isSticky		If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
+ *	@param clickContext	A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
+ */
++ (void) notifyWithTitle:(NSString *)title
+			 description:(NSString *)description
+		notificationName:(NSString *)notifName
+				iconData:(NSData *)iconData
+				priority:(signed int)priority
+				isSticky:(BOOL)isSticky
+			clickContext:(id)clickContext;
+
+/*!
+ *	@method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier:
+ *	@abstract Send a Growl notification.
+ *	@discussion This is the preferred means for sending a Growl notification.
+ *	 The notification name and at least one of the title and description are
+ *	 required (all three are preferred).  All other parameters may be
+ *	 <code>nil</code> (or 0 or NO as appropriate) to accept default values.
+ *
+ *	 If using the Growl-WithInstaller framework, if Growl is not installed the
+ *	 user will be prompted to install Growl. If the user cancels, this method
+ *	 will have no effect until the next application session, at which time when
+ *	 it is called the user will be prompted again. The user is also given the
+ *	 option to not be prompted again.  If the user does choose to install Growl,
+ *	 the requested notification will be displayed once Growl is installed and
+ *	 running.
+ *
+ *	@param title		The title of the notification displayed to the user.
+ *	@param description	The full description of the notification displayed to the user.
+ *	@param notifName	The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
+ *	@param iconData		<code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
+ *	@param priority		The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
+ *	@param isSticky		If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
+ *	@param clickContext	A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
+ *	@param identifier	An identifier for this notification. Notifications with equal identifiers are coalesced.
+ */
++ (void) notifyWithTitle:(NSString *)title
+			 description:(NSString *)description
+		notificationName:(NSString *)notifName
+				iconData:(NSData *)iconData
+				priority:(signed int)priority
+				isSticky:(BOOL)isSticky
+			clickContext:(id)clickContext
+			  identifier:(NSString *)identifier;
+
+/*!	@method	notifyWithDictionary:
+ *	@abstract	Notifies using a userInfo dictionary suitable for passing to
+ *	 <code>NSDistributedNotificationCenter</code>.
+ *	@param	userInfo	The dictionary to notify with.
+ *	@discussion	Before Growl 0.6, your application would have posted
+ *	 notifications using <code>NSDistributedNotificationCenter</code> by
+ *	 creating a userInfo dictionary with the notification data. This had the
+ *	 advantage of allowing you to add other data to the dictionary for programs
+ *	 besides Growl that might be listening.
+ *
+ *	 This method allows you to use such dictionaries without being restricted
+ *	 to using <code>NSDistributedNotificationCenter</code>. The keys for this dictionary
+ *	 can be found in GrowlDefines.h.
+ */
++ (void) notifyWithDictionary:(NSDictionary *)userInfo;
+
+#pragma mark -
+
+/*!	@method	registerWithDictionary:
+ *	@abstract	Register your application with Growl without setting a delegate.
+ *	@discussion	When you call this method with a dictionary,
+ *	 GrowlApplicationBridge registers your application using that dictionary.
+ *	 If you pass <code>nil</code>, GrowlApplicationBridge will ask the delegate
+ *	 (if there is one) for a dictionary, and if that doesn't work, it will look
+ *	 in your application's bundle for an auto-discoverable plist.
+ *	 (XXX refer to more information on that)
+ *
+ *	 If you pass a dictionary to this method, it must include the
+ *	 <code>GROWL_APP_NAME</code> key, unless a delegate is set.
+ *
+ *	 This method is mainly an alternative to the delegate system introduced
+ *	 with Growl 0.6. Without a delegate, you cannot receive callbacks such as
+ *	 <code>-growlIsReady</code> (since they are sent to the delegate). You can,
+ *	 however, set a delegate after registering without one.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ */
++ (BOOL) registerWithDictionary:(NSDictionary *)regDict;
+
+/*!	@method	reregisterGrowlNotifications
+ *	@abstract	Reregister the notifications for this application.
+ *	@discussion	This method does not normally need to be called.  If your
+ *	 application changes what notifications it is registering with Growl, call
+ *	 this method to have the Growl delegate's
+ *	 <code>-registrationDictionaryForGrowl</code> method called again and the
+ *	 Growl registration information updated.
+ *
+ *	 This method is now implemented using <code>-registerWithDictionary:</code>.
+ */
++ (void) reregisterGrowlNotifications;
+
+#pragma mark -
+
+/*!	@method	setWillRegisterWhenGrowlIsReady:
+ *	@abstract	Tells GrowlApplicationBridge to register with Growl when Growl
+ *	 launches (or not).
+ *	@discussion	When Growl has started listening for notifications, it posts a
+ *	 <code>GROWL_IS_READY</code> notification on the Distributed Notification
+ *	 Center. GrowlApplicationBridge listens for this notification, using it to
+ *	 perform various tasks (such as calling your delegate's
+ *	 <code>-growlIsReady</code> method, if it has one). If this method is
+ *	 called with <code>YES</code>, one of those tasks will be to reregister
+ *	 with Growl (in the manner of <code>-reregisterGrowlNotifications</code>).
+ *
+ *	 This attribute is automatically set back to <code>NO</code> (the default)
+ *	 after every <code>GROWL_IS_READY</code> notification.
+ *	@param	flag	<code>YES</code> if you want GrowlApplicationBridge to register with
+ *	 Growl when next it is ready; <code>NO</code> if not.
+ */
++ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag;
+/*!	@method	willRegisterWhenGrowlIsReady
+ *	@abstract	Reports whether GrowlApplicationBridge will register with Growl
+ *	 when Growl next launches.
+ *	@result	<code>YES</code> if GrowlApplicationBridge will register with Growl
+ *	 when next it posts GROWL_IS_READY; <code>NO</code> if not.
+ */
++ (BOOL) willRegisterWhenGrowlIsReady;
+
+#pragma mark -
+
+/*!	@method	registrationDictionaryFromDelegate
+ *	@abstract	Asks the delegate for a registration dictionary.
+ *	@discussion	If no delegate is set, or if the delegate's
+ *	 <code>-registrationDictionaryForGrowl</code> method returns
+ *	 <code>nil</code>, this method returns <code>nil</code>.
+ *
+ *	 This method does not attempt to clean up the dictionary in any way - for
+ *	 example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ *	 will be missing it too. Use <code>+[GrowlApplicationBridge
+ *	 registrationDictionaryByFillingInDictionary:]</code> or
+ *	 <code>+[GrowlApplicationBridge
+ *	 registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
+ *	 to fill in missing keys.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ *	@result A registration dictionary.
+ */
++ (NSDictionary *) registrationDictionaryFromDelegate;
+
+/*!	@method	registrationDictionaryFromBundle:
+ *	@abstract	Looks in a bundle for a registration dictionary.
+ *	@discussion	This method looks in a bundle for an auto-discoverable
+ *	 registration dictionary file using <code>-[NSBundle
+ *	 pathForResource:ofType:]</code>. If it finds one, it loads the file using
+ *	 <code>+[NSDictionary dictionaryWithContentsOfFile:]</code> and returns the
+ *	 result.
+ *
+ *	 If you pass <code>nil</code> as the bundle, the main bundle is examined.
+ *
+ *	 This method does not attempt to clean up the dictionary in any way - for
+ *	 example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ *	 will be missing it too. Use <code>+[GrowlApplicationBridge
+ *	 registrationDictionaryByFillingInDictionary:]</code> or
+ *	 <code>+[GrowlApplicationBridge
+ *	 registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
+ *	 to fill in missing keys.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ *	@result A registration dictionary.
+ */
++ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle;
+
+/*!	@method	bestRegistrationDictionary
+ *	@abstract	Obtains a registration dictionary, filled out to the best of
+ *	 GrowlApplicationBridge's knowledge.
+ *	@discussion	This method creates a registration dictionary as best
+ *	 GrowlApplicationBridge knows how.
+ *
+ *	 First, GrowlApplicationBridge contacts the Growl delegate (if there is
+ *	 one) and gets the registration dictionary from that. If no such dictionary
+ *	 was obtained, GrowlApplicationBridge looks in your application's main
+ *	 bundle for an auto-discoverable registration dictionary file. If that
+ *	 doesn't exist either, this method returns <code>nil</code>.
+ *
+ *	 Second, GrowlApplicationBridge calls
+ *	 <code>+registrationDictionaryByFillingInDictionary:</code> with whatever
+ *	 dictionary was obtained. The result of that method is the result of this
+ *	 method.
+ *
+ *	 GrowlApplicationBridge uses this method when you call
+ *	 <code>+setGrowlDelegate:</code>, or when you call
+ *	 <code>+registerWithDictionary:</code> with <code>nil</code>.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ *	@result	A registration dictionary.
+ */
++ (NSDictionary *) bestRegistrationDictionary;
+
+#pragma mark -
+
+/*!	@method	registrationDictionaryByFillingInDictionary:
+ *	@abstract	Tries to fill in missing keys in a registration dictionary.
+ *	@discussion	This method examines the passed-in dictionary for missing keys,
+ *	 and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ *	 Key							             Value
+ *	 ---							             -----
+ *	 <code>GROWL_APP_NAME</code>                 <code>CFBundleExecutableName</code>
+ *	 <code>GROWL_APP_ICON</code>                 The icon of the application.
+ *	 <code>GROWL_APP_LOCATION</code>             The location of the application.
+ *	 <code>GROWL_NOTIFICATIONS_DEFAULT</code>    <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ *	 Keys are only filled in if missing; if a key is present in the dictionary,
+ *	 its value will not be changed.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ *	@param	regDict	The dictionary to fill in.
+ *	@result	The dictionary with the keys filled in. This is an autoreleased
+ *	 copy of <code>regDict</code>.
+ */
++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict;
+/*!	@method	registrationDictionaryByFillingInDictionary:restrictToKeys:
+ *	@abstract	Tries to fill in missing keys in a registration dictionary.
+ *	@discussion	This method examines the passed-in dictionary for missing keys,
+ *	 and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ *	 Key							             Value
+ *	 ---							             -----
+ *	 <code>GROWL_APP_NAME</code>                 <code>CFBundleExecutableName</code>
+ *	 <code>GROWL_APP_ICON</code>                 The icon of the application.
+ *	 <code>GROWL_APP_LOCATION</code>             The location of the application.
+ *	 <code>GROWL_NOTIFICATIONS_DEFAULT</code>    <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ *	 Only those keys that are listed in <code>keys</code> will be filled in.
+ *	 Other missing keys are ignored. Also, keys are only filled in if missing;
+ *	 if a key is present in the dictionary, its value will not be changed.
+ *
+ *	 This method was introduced in Growl.framework 0.7.
+ *	@param	regDict	The dictionary to fill in.
+ *	@param	keys	The keys to fill in. If <code>nil</code>, any missing keys are filled in.
+ *	@result	The dictionary with the keys filled in. This is an autoreleased
+ *	 copy of <code>regDict</code>.
+ */
++ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys;
+
+@end
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ *	@protocol GrowlApplicationBridgeDelegate
+ *	@abstract Required protocol for the Growl delegate.
+ *	@discussion The methods in this protocol are required and are called
+ *	 automatically as needed by GrowlApplicationBridge. See
+ *	 <code>+[GrowlApplicationBridge setGrowlDelegate:]</code>.
+ *	 See also <code>GrowlApplicationBridgeDelegate_InformalProtocol</code>.
+ */
+
+@protocol GrowlApplicationBridgeDelegate
+
+// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7.
+
+@end
+
+//------------------------------------------------------------------------------
+#pragma mark -
+
+/*!
+ *	@category NSObject(GrowlApplicationBridgeDelegate_InformalProtocol)
+ *	@abstract Methods which may be optionally implemented by the GrowlDelegate.
+ *	@discussion The methods in this informal protocol will only be called if implemented by the delegate.
+ */
+@interface NSObject (GrowlApplicationBridgeDelegate_InformalProtocol)
+
+/*!
+ *	@method registrationDictionaryForGrowl
+ *	@abstract Return the dictionary used to register this application with Growl.
+ *	@discussion The returned dictionary gives Growl the complete list of
+ *	 notifications this application will ever send, and it also specifies which
+ *	 notifications should be enabled by default.  Each is specified by an array
+ *	 of <code>NSString</code> objects.
+ *
+ *	 For most applications, these two arrays can be the same (if all sent
+ *	 notifications should be displayed by default).
+ *
+ *	 The <code>NSString</code> objects of these arrays will correspond to the
+ *	 <code>notificationName:</code> parameter passed in
+ *	 <code>+[GrowlApplicationBridge
+ *	 notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]</code> calls.
+ *
+ *	 The dictionary should have 2 key object pairs:
+ *	 key: GROWL_NOTIFICATIONS_ALL		object: <code>NSArray</code> of <code>NSString</code> objects
+ *	 key: GROWL_NOTIFICATIONS_DEFAULT	object: <code>NSArray</code> of <code>NSString</code> objects
+ *
+ *	 You do not need to implement this method if you have an auto-discoverable
+ *	 plist file in your app bundle. (XXX refer to more information on that)
+ *
+ *	@result The <code>NSDictionary</code> to use for registration.
+ */
+- (NSDictionary *) registrationDictionaryForGrowl;
+
+/*!
+ *	@method applicationNameForGrowl
+ *	@abstract Return the name of this application which will be used for Growl bookkeeping.
+ *	@discussion This name is used both internally and in the Growl preferences.
+ *
+ *	 This should remain stable between different versions and incarnations of
+ *	 your application.
+ *	 For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
+ *	 "SurfWriter Lite" are not.
+ *
+ *	 You do not need to implement this method if you are providing the
+ *	 application name elsewhere, meaning in an auto-discoverable plist file in
+ *	 your app bundle (XXX refer to more information on that) or in the result
+ *	 of -registrationDictionaryForGrowl.
+ *
+ *	@result The name of the application using Growl.
+ */
+- (NSString *) applicationNameForGrowl;
+
+/*!
+ *	@method applicationIconDataForGrowl
+ *	@abstract Return the <code>NSData</code> to treat as the application icon.
+ *	@discussion The delegate may optionally return an <code>NSData</code>
+ *	 object to use as the application icon; if this is not implemented, the
+ *	 application's own icon is used.  This is not generally needed.
+ *	@result The <code>NSData</code> to treat as the application icon.
+ */
+- (NSData *) applicationIconDataForGrowl;
+
+/*!
+ *	@method growlIsReady
+ *	@abstract Informs the delegate that Growl has launched.
+ *	@discussion Informs the delegate that Growl (specifically, the
+ *	 GrowlHelperApp) was launched successfully or was already running.  The
+ *	 application can take actions with the knowledge that Growl is installed and
+ *	 functional.
+ */
+- (void) growlIsReady;
+
+/*!
+ *	@method growlNotificationWasClicked:
+ *	@abstract Informs the delegate that a Growl notification was clicked.
+ *	@discussion Informs the delegate that a Growl notification was clicked.  It
+ *	 is only sent for notifications sent with a non-<code>nil</code>
+ *	 clickContext, so if you want to receive a message when a notification is
+ *	 clicked, clickContext must not be <code>nil</code> when calling
+ *	 <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.
+ *	@param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:].
+ */
+- (void) growlNotificationWasClicked:(id)clickContext;
+
+/*!
+ *	@method growlNotificationTimedOut:
+ *	@abstract Informs the delegate that a Growl notification timed out.
+ *	@discussion Informs the delegate that a Growl notification timed out. It
+ *	 is only sent for notifications sent with a non-<code>nil</code>
+ *	 clickContext, so if you want to receive a message when a notification is
+ *	 clicked, clickContext must not be <code>nil</code> when calling
+ *	 <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.
+ *	@param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:].
+ */
+- (void) growlNotificationTimedOut:(id)clickContext;
+
+@end
+
+#pragma mark -
+/*!
+ *	@category NSObject(GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
+ *	@abstract Methods which may be optionally implemented by the Growl delegate when used with Growl-WithInstaller.framework.
+ *	@discussion The methods in this informal protocol will only be called if
+ *	 implemented by the delegate.  They allow greater control of the information
+ *	 presented to the user when installing or upgrading Growl from within your
+ *	 application when using Growl-WithInstaller.framework.
+ */
+@interface NSObject (GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
+
+/*!
+ *	@method growlInstallationWindowTitle
+ *	@abstract Return the title of the installation window.
+ *	@discussion If not implemented, Growl will use a default, localized title.
+ *	@result An NSString object to use as the title.
+ */
+- (NSString *)growlInstallationWindowTitle;
+
+/*!
+ *	@method growlUpdateWindowTitle
+ *	@abstract Return the title of the upgrade window.
+ *	@discussion If not implemented, Growl will use a default, localized title.
+ *	@result An NSString object to use as the title.
+ */
+- (NSString *)growlUpdateWindowTitle;
+
+/*!
+ *	@method growlInstallationInformation
+ *	@abstract Return the information to display when installing.
+ *	@discussion This information may be as long or short as desired (the window
+ *	 will be sized to fit it).  It will be displayed to the user as an
+ *	 explanation of what Growl is and what it can do in your application.  It
+ *	 should probably note that no download is required to install.
+ *
+ *	 If this is not implemented, Growl will use a default, localized explanation.
+ *	@result An NSAttributedString object to display.
+ */
+- (NSAttributedString *)growlInstallationInformation;
+
+/*!
+ *	@method growlUpdateInformation
+ *	@abstract Return the information to display when upgrading.
+ *	@discussion This information may be as long or short as desired (the window
+ *	 will be sized to fit it).  It will be displayed to the user as an
+ *	 explanation that an updated version of Growl is included in your
+ *	 application and no download is required.
+ *
+ *	 If this is not implemented, Growl will use a default, localized explanation.
+ *	@result An NSAttributedString object to display.
+ */
+- (NSAttributedString *)growlUpdateInformation;
+
+@end
+
+//private
+@interface GrowlApplicationBridge (GrowlInstallationPrompt_private)
++ (void) _userChoseNotToInstallGrowl;
+@end
+
+#endif /* __GrowlApplicationBridge_h__ */
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h (revision 13)
@@ -0,0 +1,758 @@
+//
+//  GrowlApplicationBridge-Carbon.h
+//  Growl
+//
+//  Created by Mac-arena the Bored Zo on Wed Jun 18 2004.
+//  Based on GrowlApplicationBridge.h by Evan Schoenberg.
+//  This source code is in the public domain. You may freely link it into any
+//    program.
+//
+
+#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_
+#define _GROWLAPPLICATIONBRIDGE_CARBON_H_
+
+#include <sys/cdefs.h>
+#include <Carbon/Carbon.h>
+
+/*!	@header GrowlApplicationBridge-Carbon.h
+ *	@abstract	Declares an API that Carbon applications can use to interact with Growl.
+ *	@discussion	GrowlApplicationBridge uses a delegate to provide information //XXX
+ *	 to Growl (such as your application's name and what notifications it may
+ *	 post) and to provide information to your application (such as that Growl
+ *	 is listening for notifications or that a notification has been clicked).
+ *
+ *	 You can set the Growldelegate with Growl_SetDelegate and find out the
+ *	 current delegate with Growl_GetDelegate. See struct Growl_Delegate for more
+ *	 information about the delegate.
+ */
+
+__BEGIN_DECLS
+
+/*!	@struct Growl_Delegate
+ *	@abstract Delegate to supply GrowlApplicationBridge with information and respond to events.
+ *	@discussion The Growl delegate provides your interface to
+ *	 GrowlApplicationBridge. When GrowlApplicationBridge needs information about
+ *	 your application, it looks for it in the delegate; when Growl or the user
+ *	 does something that you might be interested in, GrowlApplicationBridge
+ *	 looks for a callback in the delegate and calls it if present
+ *	 (meaning, if it is not <code>NULL</code>).
+ *	XXX on all of that
+ *  @field size The size of the delegate structure.
+ * 	@field applicationName The name of your application.
+ * 	@field registrationDictionary A dictionary describing your application and the notifications it can send out.
+ * 	@field applicationIconData Your application's icon.
+ * 	@field growlInstallationWindowTitle The title of the installation window.
+ * 	@field growlInstallationInformation Text to display in the installation window.
+ * 	@field growlUpdateWindowTitle The title of the update window.
+ * 	@field growlUpdateInformation Text to display in the update window.
+ * 	@field referenceCount A count of owners of the delegate.
+ * 	@field retain Called when GrowlApplicationBridge receives this delegate.
+ * 	@field release Called when GrowlApplicationBridge no longer needs this delegate.
+ * 	@field growlIsReady Called when GrowlHelperApp is listening for notifications.
+ * 	@field growlNotificationWasClicked Called when a Growl notification is clicked.
+ *  @field growlNotificationTimedOut Called when a Growl notification timed out.
+ */
+struct Growl_Delegate {
+	/*	@discussion This should be sizeof(struct Growl_Delegate).
+	 */
+	size_t size;
+
+	/*All of these attributes are optional.
+	 *Optional attributes can be NULL; required attributes that
+	 *	 are NULL cause setting the Growl delegate to fail.
+	 *XXX - move optional/required status into the discussion for each field
+	 */
+
+	/* This name is used both internally and in the Growl preferences.
+	 *
+	 *	 This should remain stable between different versions and incarnations of
+	 *	 your application.
+	 *	 For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
+	 *	 "SurfWriter Lite" are not.
+	 *
+	 * This can be <code>NULL</code> if it is provided elsewhere, namely in an
+	 *	 auto-discoverable plist file in your app bundle
+	 *	 (XXX refer to more information on that) or in registrationDictionary.
+	 */
+	CFStringRef applicationName;
+
+	/*
+	 * Must contain at least these keys:
+	 *	GROWL_NOTIFICATIONS_ALL (CFArray):
+	 *		Contains the names of all notifications your application may post.
+	 *
+	 * Can also contain these keys:
+	 *	GROWL_NOTIFICATIONS_DEFAULT (CFArray):
+	 *		Names of notifications that should be enabled by default.
+	 *		If omitted, GROWL_NOTIFICATIONS_ALL will be used.
+	 *	GROWL_APP_NAME (CFString):
+	 *		Same as the applicationName member of this structure.
+	 *		If both are present, the applicationName member shall prevail.
+	 *		If this key is present, you may omit applicationName (set it to <code>NULL</code>).
+	 *	GROWL_APP_ICON (CFData):
+	 *		Same as the iconData member of this structure.
+	 *		If both are present, the iconData member shall prevail.
+	 *		If this key is present, you may omit iconData (set it to <code>NULL</code>).
+	 *
+	 * If you change the contents of this dictionary after setting the delegate,
+	 *	be sure to call Growl_Reregister.
+	 *
+	 * This can be <code>NULL</code> if you have an auto-discoverable plist file in your app
+	 *	 bundle. (XXX refer to more information on that)
+	 */
+	CFDictionaryRef registrationDictionary;
+
+	/* The data can be in any format supported by NSImage. As of
+	 *	 Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and
+	 *	 PICT formats.
+	 *
+	 *	 If this is not supplied, Growl will look up your application's icon by
+	 *	 its application name.
+	 */
+	CFDataRef applicationIconData;
+
+	/* Installer display attributes
+	 *
+	 * These four attributes are used by the Growl installer, if this framework
+	 *	supports it.
+	 * For any of these being <code>NULL</code>, a localised default will be
+	 *	supplied.
+	 */
+
+	/*	If this is <code>NULL</code>, Growl will use a default,
+	 *	 localized title.
+	 *
+	 *	 Only used if you're using Growl-WithInstaller.framework. Otherwise,
+	 *	 this member is ignored.
+	 */
+	CFStringRef growlInstallationWindowTitle;
+	/*	This information may be as long or short as desired (the
+	 *	 window will be sized to fit it).  If Growl is not installed, it will
+	 *	 be displayed to the user as an explanation of what Growl is and what
+	 *	 it can do in your application.
+	 *	 It should probably note that no download is required to install.
+	 *
+	 *	 If this is <code>NULL</code>, Growl will use a default, localized
+	 *	 explanation.
+	 *
+	 *	 Only used if you're using Growl-WithInstaller.framework. Otherwise,
+	 *	 this member is ignored.
+	 */
+	CFStringRef growlInstallationInformation;
+	/*	If this is <code>NULL</code>, Growl will use a default,
+	 *	 localized title.
+	 *
+	 *	 Only used if you're using Growl-WithInstaller.framework. Otherwise,
+	 *	 this member is ignored.
+	 */
+	CFStringRef growlUpdateWindowTitle;
+	/*	This information may be as long or short as desired (the
+	 *	 window will be sized to fit it).  If an older version of Growl is
+	 *	 installed, it will be displayed to the user as an explanation that an
+	 *	 updated version of Growl is included in your application and
+	 *	 no download is required.
+	 *
+	 *	 If this is <code>NULL</code>, Growl will use a default, localized
+	 *	 explanation.
+	 *
+	 *	 Only used if you're using Growl-WithInstaller.framework. Otherwise,
+	 *	 this member is ignored.
+	 */
+	CFStringRef growlUpdateInformation;
+
+	/*	This member is provided for use by your retain and release
+	 *	 callbacks (see below).
+	 *
+	 *	 GrowlApplicationBridge never directly uses this member. Instead, it
+	 *	 calls your retain callback (if non-<code>NULL</code>) and your release
+	 *	 callback (if non-<code>NULL</code>).
+	 */
+	unsigned referenceCount;
+
+	//Functions. Currently all of these are optional (any of them can be NULL).
+
+	/*	When you call Growl_SetDelegate(newDelegate), it will call
+	 *	 oldDelegate->release(oldDelegate), and then it will call
+	 *	 newDelegate->retain(newDelegate), and the return value from retain
+	 *	 is what will be set as the delegate.
+	 *	 (This means that this member works like CFRetain and -[NSObject retain].)
+	 *	 This member is optional (it can be <code>NULL</code>).
+	 *	 For a delegate allocated with malloc, this member would be
+	 *	 <code>NULL</code>.
+	 *	@result	A delegate to which GrowlApplicationBridge holds a reference.
+	 */
+	void *(*retain)(void *);
+	/*	When you call Growl_SetDelegate(newDelegate), it will call
+	 *	 oldDelegate->release(oldDelegate), and then it will call
+	 *	 newDelegate->retain(newDelegate), and the return value from retain
+	 *	 is what will be set as the delegate.
+	 *	 (This means that this member works like CFRelease and
+	 *	  -[NSObject release].)
+	 *	 This member is optional (it can be NULL).
+	 *	 For a delegate allocated with malloc, this member might be
+	 *	 <code>free</code>(3).
+	 */
+	void (*release)(void *);
+
+	/*	Informs the delegate that Growl (specifically, the GrowlHelperApp) was
+	 *	 launched successfully (or was already running). The application can
+	 *	 take actions with the knowledge that Growl is installed and functional.
+	 */
+	void (*growlIsReady)(void);
+
+	/*	Informs the delegate that a Growl notification was clicked. It is only
+	 *	 sent for notifications sent with a non-<code>NULL</code> clickContext,
+	 *	 so if you want to receive a message when a notification is clicked,
+	 *	 clickContext must not be <code>NULL</code> when calling
+	 *	 Growl_PostNotification or
+	 *	 Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
+	 */
+	void (*growlNotificationWasClicked)(CFPropertyListRef clickContext);
+
+	/*	Informs the delegate that a Growl notification timed out. It is only
+	 *	 sent for notifications sent with a non-<code>NULL</code> clickContext,
+	 *	 so if you want to receive a message when a notification is clicked,
+	 *	 clickContext must not be <code>NULL</code> when calling
+	 *	 Growl_PostNotification or
+	 *	 Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
+	 */
+	void (*growlNotificationTimedOut)(CFPropertyListRef clickContext);
+};
+
+/*!	@struct Growl_Notification
+ *	@abstract Structure describing a Growl notification.
+ *	@discussion XXX
+ * 	@field size The size of the notification structure.
+ * 	@field name Identifies the notification.
+ * 	@field title Short synopsis of the notification.
+ *  @field description Additional text.
+ * 	@field iconData An icon for the notification.
+ * 	@field priority An indicator of the notification's importance.
+ * 	@field reserved Bits reserved for future usage.
+ * 	@field isSticky Requests that a notification stay on-screen until dismissed explicitly.
+ * 	@field clickContext An identifier to be passed to your click callback when a notification is clicked.
+ * 	@field clickCallback A callback to call when the notification is clicked.
+ */
+struct Growl_Notification {
+	/*	This should be sizeof(struct Growl_Notification).
+	 */
+ 	size_t size;
+
+	/*	The notification name distinguishes one type of
+	 *	 notification from another. The name should be human-readable, as it
+	 *	 will be displayed in the Growl preference pane.
+	 *
+	 *	 The name is used in the GROWL_NOTIFICATIONS_ALL and
+	 *	 GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and
+	 *	 in this member of the Growl_Notification structure.
+	 */
+	CFStringRef name;
+
+	/*	A notification's title describes the notification briefly.
+	 *	 It should be easy to read quickly by the user.
+	 */
+	CFStringRef title;
+
+	/*	The description supplements the title with more
+	 *	 information. It is usually longer and sometimes involves a list of
+	 *	 subjects. For example, for a 'Download complete' notification, the
+	 *	 description might have one filename per line. GrowlMail in Growl 0.6
+	 *	 uses a description of '%d new mail(s)' (formatted with the number of
+	 *	 messages).
+	 */
+	CFStringRef description;
+
+	/*	The notification icon usually indicates either what
+	 *	 happened (it may have the same icon as e.g. a toolbar item that
+	 *	 started the process that led to the notification), or what it happened
+	 *	 to (e.g. a document icon).
+	 *
+	 *	 The icon data is optional, so it can be <code>NULL</code>. In that
+	 *	 case, the application icon is used alone. Not all displays support
+	 *	 icons.
+	 *
+	 *	 The data can be in any format supported by NSImage. As of Mac OS X
+	 *	 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form
+	 *	 ats.
+	 */
+	CFDataRef iconData;
+
+	/*	Priority is new in Growl 0.6, and is represented as a
+	 *	 signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low
+	 *	 priority, and +2 is Very High priority.
+	 *
+	 *	 Not all displays support priority. If you do not wish to assign a
+	 *	 priority to your notification, assign 0.
+	 */
+	signed int priority;
+
+	/*	These bits are not used in Growl 0.6. Set them to 0.
+	 */
+	unsigned reserved: 31;
+
+	/*	When the sticky bit is clear, in most displays,
+	 *	 notifications disappear after a certain amount of time. Sticky
+	 *	 notifications, however, remain on-screen until the user dismisses them
+	 *	 explicitly, usually by clicking them.
+	 *
+	 *	 Sticky notifications were introduced in Growl 0.6. Most notifications
+	 *	 should not be sticky. Not all displays support sticky notifications,
+	 *	 and the user may choose in Growl's preference pane to force the
+	 *	 notification to be sticky or non-sticky, in which case the sticky bit
+	 *	 in the notification will be ignored.
+	 */
+	unsigned isSticky: 1;
+
+	/*	If this is not <code>NULL</code>, and your click callback
+	 *	 is not <code>NULL</code> either, this will be passed to the callback
+	 *	 when your notification is clicked by the user.
+	 *
+	 *	 Click feedback was introduced in Growl 0.6, and it is optional. Not
+	 *	 all displays support click feedback.
+	 */
+	CFPropertyListRef clickContext;
+
+	/*	If this is not <code>NULL</code>, it will be called instead
+	 *	 of the Growl delegate's click callback when clickContext is
+	 *	 non-<code>NULL</code> and the notification is clicked on by the user.
+	 *
+	 *	 Click feedback was introduced in Growl 0.6, and it is optional. Not
+	 *	 all displays support click feedback.
+	 *
+	 *	 The per-notification click callback is not yet supported as of Growl
+	 *	 0.7.
+	 */
+	void (*clickCallback)(CFPropertyListRef clickContext);
+};
+
+#pragma mark -
+#pragma mark Easy initialisers
+
+/*!	@defined	InitGrowlDelegate
+ *	@abstract	Callable macro. Initializes a Growl delegate structure to defaults.
+ *	@discussion	Call with a pointer to a struct Growl_Delegate. All of the
+ *	 members of the structure will be set to 0 or <code>NULL</code>, except for
+ *	 size (which will be set to <code>sizeof(struct Growl_Delegate)</code>) and
+ *	 referenceCount (which will be set to 1).
+ */
+#define InitGrowlDelegate(delegate) \
+	do { \
+		if (delegate) { \
+			(delegate)->size = sizeof(struct Growl_Delegate); \
+			(delegate)->applicationName = NULL; \
+			(delegate)->registrationDictionary = NULL; \
+			(delegate)->applicationIconData = NULL; \
+			(delegate)->growlInstallationWindowTitle = NULL; \
+			(delegate)->growlInstallationInformation = NULL; \
+			(delegate)->growlUpdateWindowTitle = NULL; \
+			(delegate)->growlUpdateInformation = NULL; \
+			(delegate)->referenceCount = 1U; \
+			(delegate)->retain = NULL; \
+			(delegate)->release = NULL; \
+			(delegate)->growlIsReady = NULL; \
+			(delegate)->growlNotificationWasClicked = NULL; \
+			(delegate)->growlNotificationTimedOut = NULL; \
+		} \
+	} while(0)
+
+/*!	@defined	InitGrowlNotification
+ *	@abstract	Callable macro. Initializes a Growl notification structure to defaults.
+ *	@discussion	Call with a pointer to a struct Growl_Notification. All of
+ *	 the members of the structure will be set to 0 or <code>NULL</code>, except
+ *	 for size (which will be set to
+ *	<code>sizeof(struct Growl_Notification)</code>).
+ */
+#define InitGrowlNotification(notification) \
+	do { \
+		if (notification) { \
+			(notification)->size = sizeof(struct Growl_Notification); \
+			(notification)->name = NULL; \
+			(notification)->title = NULL; \
+			(notification)->description = NULL; \
+			(notification)->iconData = NULL; \
+			(notification)->priority = 0; \
+			(notification)->reserved = 0U; \
+			(notification)->isSticky = false; \
+			(notification)->clickContext = NULL; \
+		} \
+	} while(0)
+
+#pragma mark -
+#pragma mark Public API
+
+//	@functiongroup	Managing the Growl delegate
+
+/*!	@function	Growl_SetDelegate
+ *	@abstract	Replaces the current Growl delegate with a new one, or removes
+ *	 the Growl delegate.
+ *	@param	newDelegate
+ *	@result	Returns false and does nothing else if a pointer that was passed in
+ *	 is unsatisfactory (because it is non-<code>NULL</code>, but at least one
+ *	 required member of it is <code>NULL</code>). Otherwise, sets or unsets the
+ *	 delegate and returns true.
+ *	@discussion	When <code>newDelegate</code> is non-<code>NULL</code>, sets
+ *	 the delegate to <code>newDelegate</code>. When it is <code>NULL</code>,
+ *	 the current delegate will be unset, and no delegate will be in place.
+ *
+ *	 It is legal for <code>newDelegate</code> to be the current delegate;
+ *	 nothing will happen, and Growl_SetDelegate will return true. It is also
+ *	 legal for it to be <code>NULL</code>, as described above; again, it will
+ *	 return true.
+ *
+ *	 If there was a delegate in place before the call, Growl_SetDelegate will
+ *	 call the old delegate's release member if it was non-<code>NULL</code>. If
+ *	 <code>newDelegate</code> is non-<code>NULL</code>, Growl_SetDelegate will
+ *	 call <code>newDelegate->retain</code>, and set the delegate to its return
+ *	 value.
+ *
+ *	 If you are using Growl-WithInstaller.framework, and an older version of
+ *	 Growl is installed on the user's system, the user will automatically be
+ *	 prompted to update.
+ *
+ *	 GrowlApplicationBridge currently does not copy this structure, nor does it
+ *	 retain any of the CF objects in the structure (it regards the structure as
+ *	 a container that retains the objects when they are added and releases them
+ *	 when they are removed or the structure is destroyed). Also,
+ *	 GrowlApplicationBridge currently does not modify any member of the
+ *	 structure, except possibly the referenceCount by calling the retain and
+ *	 release members.
+ */
+Boolean Growl_SetDelegate(struct Growl_Delegate *newDelegate);
+
+/*!	@function	Growl_GetDelegate
+ *	@abstract	Returns the current Growl delegate, if any.
+ *	@result	The current Growl delegate.
+ *	@discussion	Returns the last pointer passed into Growl_SetDelegate, or
+ *	 <code>NULL</code> if no such call has been made.
+ *
+ *	 This function follows standard Core Foundation reference-counting rules.
+ *	 Because it is a Get function, not a Copy function, it will not retain the
+ *	 delegate on your behalf. You are responsible for retaining and releasing
+ *	 the delegate as needed.
+ */
+struct Growl_Delegate *Growl_GetDelegate(void);
+
+#pragma mark -
+
+//	@functiongroup	Posting Growl notifications
+
+/*!	@function	Growl_PostNotification
+ *	@abstract	Posts a Growl notification.
+ *	@param	notification	The notification to post.
+ *	@discussion	This is the preferred means for sending a Growl notification.
+ *	 The notification name and at least one of the title and description are
+ *	 required (all three are preferred). All other parameters may be
+ *	 <code>NULL</code> (or 0 or false as appropriate) to accept default values.
+ *
+ *	 If using the Growl-WithInstaller framework, if Growl is not installed the
+ *	 user will be prompted to install Growl.
+ *	 If the user cancels, this function will have no effect until the next
+ *	 application session, at which time when it is called the user will be
+ *	 prompted again. The user is also given the option to not be prompted again.
+ *	 If the user does choose to install Growl, the requested notification will
+ *	 be displayed once Growl is installed and running.
+ */
+void Growl_PostNotification(const struct Growl_Notification *notification);
+
+/*!	@function Growl_PostNotificationWithDictionary
+*	@abstract	Notifies using a userInfo dictionary suitable for passing to
+*	 CFDistributedNotificationCenter.
+*	@param	userInfo	The dictionary to notify with.
+*	@discussion	Before Growl 0.6, your application would have posted
+*	 notifications using CFDistributedNotificationCenter by creating a userInfo
+*	 dictionary with the notification data. This had the advantage of allowing
+*	 you to add other data to the dictionary for programs besides Growl that
+*	 might be listening.
+*
+*	 This function allows you to use such dictionaries without being restricted
+*	 to using CFDistributedNotificationCenter. The keys for this dictionary
+ *	 can be found in GrowlDefines.h.
+*/
+void Growl_PostNotificationWithDictionary(CFDictionaryRef userInfo);
+
+/*!	@function	Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext
+ *	@abstract	Posts a Growl notification using parameter values.
+ *	@param	title	The title of the notification.
+ *	@param	description	The description of the notification.
+ *	@param	notificationName	The name of the notification as listed in the
+ *	 registration dictionary.
+ *	@param	iconData	Data representing a notification icon. Can be <code>NULL</code>.
+ *	@param	priority	The priority of the notification (-2 to +2, with -2
+ *	 being Very Low and +2 being Very High).
+ *	@param	isSticky	If true, requests that this notification wait for a
+ *	 response from the user.
+ *	@param	clickContext	An object to pass to the clickCallback, if any. Can
+ *	 be <code>NULL</code>, in which case the clickCallback is not called.
+ *	@discussion	Creates a temporary Growl_Notification, fills it out with the
+ *	 supplied information, and calls Growl_PostNotification on it.
+ *	 See struct Growl_Notification and Growl_PostNotification for more
+ *	 information.
+ *
+ *	 The icon data can be in any format supported by NSImage. As of Mac OS X
+ *	 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT formats.
+ */
+void Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(
+ /*inhale*/
+	CFStringRef title,
+	CFStringRef description,
+	CFStringRef notificationName,
+	CFDataRef iconData,
+	signed int priority,
+	Boolean isSticky,
+	CFPropertyListRef clickContext);
+
+#pragma mark -
+
+//	@functiongroup	Registering
+
+/*!	@function Growl_RegisterWithDictionary
+ *	@abstract	Register your application with Growl without setting a delegate.
+ *	@discussion	When you call this function with a dictionary,
+ *	 GrowlApplicationBridge registers your application using that dictionary.
+ *	 If you pass <code>NULL</code>, GrowlApplicationBridge will ask the delegate
+ *	 (if there is one) for a dictionary, and if that doesn't work, it will look
+ *	 in your application's bundle for an auto-discoverable plist.
+ *	 (XXX refer to more information on that)
+ *
+ *	 If you pass a dictionary to this function, it must include the
+ *	 <code>GROWL_APP_NAME</code> key, unless a delegate is set.
+ *
+ *	 This function is mainly an alternative to the delegate system introduced
+ *	 with Growl 0.6. Without a delegate, you cannot receive callbacks such as
+ *	 <code>growlIsReady</code> (since they are sent to the delegate). You can,
+ *	 however, set a delegate after registering without one.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ *	@result <code>false</code> if registration failed (e.g. if Growl isn't installed).
+ */
+Boolean Growl_RegisterWithDictionary(CFDictionaryRef regDict);
+
+/*!	@function	Growl_Reregister
+ *	@abstract	Updates your registration with Growl.
+ *	@discussion	If your application changes the contents of the
+ *	 GROWL_NOTIFICATIONS_ALL key in the registrationDictionary member of the
+ *	 Growl delegate, or if it changes the value of that member, or if it
+ *	 changes the contents of its auto-discoverable plist, call this function
+ *	 to have Growl update its registration information for your application.
+ *
+ *	 Otherwise, this function does not normally need to be called. If you're
+ *	 using a delegate, your application will be registered when you set the
+ *	 delegate if both the delegate and its registrationDictionary member are
+ *	 non-<code>NULL</code>.
+ *
+ *	 This function is now implemented using
+ *	 <code>Growl_RegisterWithDictionary</code>.
+ */
+void Growl_Reregister(void);
+
+#pragma mark -
+
+/*!	@function	Growl_SetWillRegisterWhenGrowlIsReady
+ *	@abstract	Tells GrowlApplicationBridge to register with Growl when Growl
+ *	 launches (or not).
+ *	@discussion	When Growl has started listening for notifications, it posts a
+ *	 <code>GROWL_IS_READY</code> notification on the Distributed Notification
+ *	 Center. GrowlApplicationBridge listens for this notification, using it to
+ *	 perform various tasks (such as calling your delegate's
+ *	 <code>growlIsReady</code> callback, if it has one). If this function is
+ *	 called with <code>true</code>, one of those tasks will be to reregister
+ *	 with Growl (in the manner of <code>Growl_Reregister</code>).
+ *
+ *	 This attribute is automatically set back to <code>false</code>
+ *	 (the default) after every <code>GROWL_IS_READY</code> notification.
+ *	@param	flag	<code>true</code> if you want GrowlApplicationBridge to register with
+ *	 Growl when next it is ready; <code>false</code> if not.
+ */
+void Growl_SetWillRegisterWhenGrowlIsReady(Boolean flag);
+/*!	@function	Growl_WillRegisterWhenGrowlIsReady
+ *	@abstract	Reports whether GrowlApplicationBridge will register with Growl
+ *	 when Growl next launches.
+ *	@result	<code>true</code> if GrowlApplicationBridge will register with
+ *	 Growl when next it posts GROWL_IS_READY; <code>false</code> if not.
+ */
+Boolean Growl_WillRegisterWhenGrowlIsReady(void);
+
+#pragma mark -
+
+//	@functiongroup	Obtaining registration dictionaries
+
+/*!	@function	Growl_CopyRegistrationDictionaryFromDelegate
+ *	@abstract	Asks the delegate for a registration dictionary.
+ *	@discussion	If no delegate is set, or if the delegate's
+ *	 <code>registrationDictionary</code> member is <code>NULL</code>, this
+ *	 function returns <code>NULL</code>.
+ *
+ *	 This function does not attempt to clean up the dictionary in any way - for
+ *	 example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ *	 will be missing it too. Use
+ *	 <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
+ *	 <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
+ *	 to try to fill in missing keys.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ *	@result A registration dictionary.
+ */
+CFDictionaryRef Growl_CopyRegistrationDictionaryFromDelegate(void);
+
+/*!	@function	Growl_CopyRegistrationDictionaryFromBundle
+ *	@abstract	Looks in a bundle for a registration dictionary.
+ *	@discussion	This function looks in a bundle for an auto-discoverable
+ *	 registration dictionary file using <code>CFBundleCopyResourceURL</code>.
+ *	 If it finds one, it loads the file using <code>CFPropertyList</code> and
+ *	 returns the result.
+ *
+ *	 If you pass <code>NULL</code> as the bundle, the main bundle is examined.
+ *
+ *	 This function does not attempt to clean up the dictionary in any way - for
+ *	 example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
+ *	 will be missing it too. Use
+ *	 <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
+ *	 <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
+ *	 to try to fill in missing keys.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ *	@result A registration dictionary.
+ */
+CFDictionaryRef Growl_CopyRegistrationDictionaryFromBundle(CFBundleRef bundle);
+
+/*!	@function	Growl_CreateBestRegistrationDictionary
+ *	@abstract	Obtains a registration dictionary, filled out to the best of
+ *	 GrowlApplicationBridge's knowledge.
+ *	@discussion	This function creates a registration dictionary as best
+ *	 GrowlApplicationBridge knows how.
+ *
+ *	 First, GrowlApplicationBridge examines the Growl delegate (if there is
+ *	 one) and gets the registration dictionary from that. If no such dictionary
+ *	 was obtained, GrowlApplicationBridge looks in your application's main
+ *	 bundle for an auto-discoverable registration dictionary file. If that
+ *	 doesn't exist either, this function returns <code>NULL</code>.
+ *
+ *	 Second, GrowlApplicationBridge calls
+ *	 <code>Growl_CreateRegistrationDictionaryByFillingInDictionary</code> with
+ *	 whatever dictionary was obtained. The result of that function is the
+ *	 result of this function.
+ *
+ *	 GrowlApplicationBridge uses this function when you call
+ *	 <code>Growl_SetDelegate</code>, or when you call
+ *	 <code>Growl_RegisterWithDictionary</code> with <code>NULL</code>.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ *	@result	A registration dictionary.
+ */
+CFDictionaryRef Growl_CreateBestRegistrationDictionary(void);
+
+#pragma mark -
+
+//	@functiongroup	Filling in registration dictionaries
+
+/*!	@function	Growl_CreateRegistrationDictionaryByFillingInDictionary
+ *	@abstract	Tries to fill in missing keys in a registration dictionary.
+ *	@param	regDict	The dictionary to fill in.
+ *	@result	The dictionary with the keys filled in.
+ *	@discussion	This function examines the passed-in dictionary for missing keys,
+ *	 and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ *	 Key							             Value
+ *	 ---							             -----
+ *	 <code>GROWL_APP_NAME</code>                 <code>CFBundleExecutableName</code>
+ *	 <code>GROWL_APP_ICON</code>                 The icon of the application.
+ *	 <code>GROWL_APP_LOCATION</code>             The location of the application.
+ *	 <code>GROWL_NOTIFICATIONS_DEFAULT</code>    <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ *	 Keys are only filled in if missing; if a key is present in the dictionary,
+ *	 its value will not be changed.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ */
+CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionary(CFDictionaryRef regDict);
+/*!	@function	Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys
+ *	@abstract	Tries to fill in missing keys in a registration dictionary.
+ *	@param	regDict	The dictionary to fill in.
+ *	@param	keys	The keys to fill in. If <code>NULL</code>, any missing keys are filled in.
+ *	@result	The dictionary with the keys filled in.
+ *	@discussion	This function examines the passed-in dictionary for missing keys,
+ *	 and tries to work out correct values for them. As of 0.7, it uses:
+ *
+ *	 Key							             Value
+ *	 ---							             -----
+ *	 <code>GROWL_APP_NAME</code>                 <code>CFBundleExecutableName</code>
+ *	 <code>GROWL_APP_ICON</code>                 The icon of the application.
+ *	 <code>GROWL_APP_LOCATION</code>             The location of the application.
+ *	 <code>GROWL_NOTIFICATIONS_DEFAULT</code>    <code>GROWL_NOTIFICATIONS_ALL</code>
+ *
+ *	 Only those keys that are listed in <code>keys</code> will be filled in.
+ *	 Other missing keys are ignored. Also, keys are only filled in if missing;
+ *	 if a key is present in the dictionary, its value will not be changed.
+ *
+ *	 This function was introduced in Growl.framework 0.7.
+ */
+CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys(CFDictionaryRef regDict, CFSetRef keys);
+
+#pragma mark -
+
+//	@functiongroup	Querying Growl's status
+
+/*!	@function	Growl_IsInstalled
+ *	@abstract	Determines whether the Growl prefpane and its helper app are
+ *	 installed.
+ *	@result	Returns true if Growl is installed, false otherwise.
+ */
+Boolean Growl_IsInstalled(void);
+
+/*!	@function	Growl_IsRunning
+ *	@abstract	Cycles through the process list to find whether GrowlHelperApp
+ *	 is running.
+ *	@result	Returns true if Growl is running, false otherwise.
+ */
+Boolean Growl_IsRunning(void);
+
+#pragma mark -
+
+//	@functiongroup	Launching Growl
+
+/*!	@typedef	GrowlLaunchCallback
+ *	@abstract	Callback to notify you that Growl is running.
+ *	@param	context	The context pointer passed to Growl_LaunchIfInstalled.
+ *	@discussion	Growl_LaunchIfInstalled calls this callback function if Growl
+ *	 was already running or if it launched Growl successfully.
+ */
+typedef void (*GrowlLaunchCallback)(void *context);
+
+/*!	@function	Growl_LaunchIfInstalled
+ *	@abstract	Launches GrowlHelperApp if it is not already running.
+ *	@param	callback	A callback function which will be called if Growl was successfully
+ *	 launched or was already running. Can be <code>NULL</code>.
+ *	@param	context	The context pointer to pass to the callback. Can be <code>NULL</code>.
+ *	@result	Returns true if Growl was successfully launched or was already
+ *	 running; returns false and does not call the callback otherwise.
+ *	@discussion	Returns true and calls the callback (if the callback is not
+ *	 <code>NULL</code>) if the Growl helper app began launching or was already
+ *	 running. Returns false and performs no other action if Growl could not be
+ *	 launched (e.g. because the Growl preference pane is not properly installed).
+ *
+ *	 If <code>Growl_CreateBestRegistrationDictionary</code> returns
+ *	 non-<code>NULL</code>, this function will register with Growl atomically.
+ *
+ *	 The callback should take a single argument; this is to allow applications
+ *	 to have context-relevant information passed back. It is perfectly
+ *	 acceptable for context to be <code>NULL</code>. The callback itself can be
+ *	 <code>NULL</code> if you don't want one.
+ */
+Boolean Growl_LaunchIfInstalled(GrowlLaunchCallback callback, void *context);
+
+#pragma mark -
+#pragma mark Constants
+
+/*!	@defined	GROWL_PREFPANE_BUNDLE_IDENTIFIER
+ *	@abstract	The CFBundleIdentifier of the Growl preference pane bundle.
+ *	@discussion	GrowlApplicationBridge uses this to determine whether Growl is
+ *	 currently installed, by searching for the Growl preference pane. Your
+ *	 application probably does not need to use this macro itself.
+ */
+#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER
+#define GROWL_PREFPANE_BUNDLE_IDENTIFIER	CFSTR("com.growl.prefpanel")
+#endif
+
+__END_DECLS
+
+#endif /* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlDefines.h
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlDefines.h (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlDefines.h (revision 13)
@@ -0,0 +1,307 @@
+//
+//  GrowlDefines.h
+//
+
+#ifndef _GROWLDEFINES_H
+#define _GROWLDEFINES_H
+
+#ifdef __OBJC__
+#define XSTR(x) (@x)
+#define STRING NSString *
+#else
+#define XSTR CFSTR
+#define STRING CFStringRef
+#endif
+
+/*!	@header GrowlDefines.h
+ *	@abstract   Defines all the notification keys.
+ *	@discussion Defines all the keys used for registration with Growl and for
+ *	 Growl notifications.
+ *
+ *	 Most applications should use the functions or methods of Growl.framework
+ *	 instead of posting notifications such as those described here.
+ *	@updated 2004-01-25
+ */
+
+// UserInfo Keys for Registration
+#pragma mark UserInfo Keys for Registration
+
+/*!	@group Registration userInfo keys */
+/*	@abstract	Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification.
+ *	@discussion The values of these keys describe the application and the
+ *	 notifications it may post.
+ *
+ *	 Your application must register with Growl before it can post Growl
+ *	 notifications (and have them not be ignored). However, as of Growl 0.6,
+ *	 posting GROWL_APP_REGISTRATION notifications directly is no longer the
+ *	 preferred way to register your application. Your application should instead
+ *	 use Growl.framework's delegate system.
+ *	 See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for
+ *	 more information.
+ */
+
+/*!	@defined GROWL_APP_NAME
+ *	@abstract The name of your application.
+ *	@discussion The name of your application. This should remain stable between
+ *	 different versions and incarnations of your application.
+ *	 For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
+ *	 "SurfWriter Lite" are not.
+ */
+#define GROWL_APP_NAME					XSTR("ApplicationName")
+/*!	@defined GROWL_APP_ICON
+ *	@abstract The image data for your application's icon.
+ *	@discussion Image data representing your application's icon. This may be
+ *	 superimposed on a notification icon as a badge, used as the notification
+ *	 icon when a notification-specific icon is not supplied, or ignored
+ *	 altogether, depending on the display. Must be in a format supported by
+ *	 NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_APP_ICON					XSTR("ApplicationIcon")
+/*!	@defined GROWL_NOTIFICATIONS_DEFAULT
+ *	@abstract The array of notifications to turn on by default.
+ *	@discussion These are the names of the notifications that should be enabled
+ *	 by default when your application registers for the first time. If your
+ *	 application reregisters, Growl will look here for any new notification
+ *	 names found in GROWL_NOTIFICATIONS_ALL, but ignore any others.
+ */
+#define GROWL_NOTIFICATIONS_DEFAULT		XSTR("DefaultNotifications")
+/*!	@defined GROWL_NOTIFICATIONS_ALL
+ *	@abstract The array of all notifications your application can send.
+ *	@discussion These are the names of all of the notifications that your
+ *	 application may post. See GROWL_NOTIFICATION_NAME for a discussion of good
+ *	 notification names.
+ */
+#define GROWL_NOTIFICATIONS_ALL			XSTR("AllNotifications")
+/*!	@defined	GROWL_TICKET_VERSION
+ *	@abstract	The version of your registration ticket.
+ *	@discussion	Include this key in a ticket plist file that you put in your
+ *	 application bundle for auto-discovery. The current ticket version is 1.
+ */
+#define GROWL_TICKET_VERSION			XSTR("TicketVersion")
+// UserInfo Keys for Notifications
+#pragma mark UserInfo Keys for Notifications
+
+/*!	@group Notification userInfo keys */
+/*	@abstract	Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification.
+ *	@discussion The values of these keys describe the content of a Growl
+ *	 notification.
+ *
+ *	 Not all of these keys are supported by all displays. Only the name, title,
+ *	 and description of a notification are universal. Most of the built-in
+ *	 displays do support all of these keys, and most other visual displays
+ *	 probably will also. But, as of 0.6, the Log, MailMe, and Speech displays
+ *	 support only textual data.
+ */
+
+/*!	@defined GROWL_NOTIFICATION_NAME
+ *	@abstract The name of the notification.
+ *	@discussion The name of the notification. This should be human-readable, as
+ *	 it's shown in the prefpane, in the list of notifications your application
+ *	 supports. */
+#define GROWL_NOTIFICATION_NAME			XSTR("NotificationName")
+/*!	@defined GROWL_NOTIFICATION_TITLE
+ *	@abstract The title to display in the notification.
+ *	@discussion The title of the notification. Should be very brief.
+ *	 The title usually says what happened, e.g. "Download complete".
+ */
+#define GROWL_NOTIFICATION_TITLE		XSTR("NotificationTitle")
+/*!	@defined GROWL_NOTIFICATION_DESCRIPTION
+ *	@abstract The description to display in the notification.
+ *	@discussion The description should be longer and more verbose than the title.
+ *	 The description usually tells the subject of the action,
+ *	 e.g. "Growl-0.6.dmg downloaded in 5.02 minutes".
+ */
+#define GROWL_NOTIFICATION_DESCRIPTION  	XSTR("NotificationDescription")
+/*!	@defined GROWL_NOTIFICATION_ICON
+ *	@discussion Image data for the notification icon. Must be in a format
+ *	 supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_ICON			XSTR("NotificationIcon")
+/*!	@defined GROWL_NOTIFICATION_APP_ICON
+ *	@discussion Image data for the application icon, in case GROWL_APP_ICON does
+ *	 not apply for some reason. Must be in a format supported by NSImage, such
+ *	 as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_APP_ICON		XSTR("NotificationAppIcon")
+/*!	@defined GROWL_NOTIFICATION_PRIORITY
+ *	@discussion The priority of the notification as an integer number from
+ *	 -2 to +2 (+2 being highest).
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_PRIORITY		XSTR("NotificationPriority")
+/*!	@defined GROWL_NOTIFICATION_STICKY
+ *	@discussion A Boolean number controlling whether the notification is sticky.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_STICKY		XSTR("NotificationSticky")
+/*!	@defined GROWL_NOTIFICATION_CLICK_CONTEXT
+ *	@abstract Identifies which notification was clicked.
+ *	@discussion An identifier for the notification for clicking purposes.
+ *
+ *	 This will be passed back to the application when the notification is
+ *	 clicked. It must be plist-encodable (a data, dictionary, array, number, or
+ *	 string object), and it should be unique for each notification you post.
+ *	 A good click context would be a UUID string returned by NSProcessInfo or
+ *	 CFUUID.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_CLICK_CONTEXT			XSTR("NotificationClickContext")
+
+/*!	@defined GROWL_DISPLAY_PLUGIN
+ *	@discussion The name of a display plugin which should be used for this notification.
+ *    Optional. If this key is not set or the specified display plugin does not
+ *    exist, the display plugin stored in the application ticket is used. This key
+ *    allows applications to use different default display plugins for their
+ *    notifications. The user can still override those settings in the preference
+ *    pane.
+ */
+#define GROWL_DISPLAY_PLUGIN				XSTR("NotificationDisplayPlugin")
+
+/*!	@defined GROWL_NOTIFICATION_IDENTIFIER
+ *	@abstract An identifier for the notification for coalescing purposes.
+ *   Notifications with the same identifier fall into the same class; only
+ *   the last notification of a class is displayed on the screen. If a
+ *   notification of the same class is currently being displayed, it is
+ *   replaced by this notification.
+ *
+ *	 Optional. Not supported by all display plugins.
+ */
+#define GROWL_NOTIFICATION_IDENTIFIER	XSTR("GrowlNotificationIdentifier")
+
+/*!	@defined GROWL_APP_PID
+ *	@abstract The process identifier of the process which sends this
+ *   notification. If this field is set, the application will only receive
+ *   clicked and timed out notifications which originate from this process.
+ *
+ *	 Optional.
+ */
+#define GROWL_APP_PID					XSTR("ApplicationPID")
+
+// Notifications
+#pragma mark Notifications
+
+/*!	@group Notification names */
+/*	@abstract	Names of distributed notifications used by Growl.
+ *	@discussion	These are notifications used by applications (directly or
+ *	 indirectly) to interact with Growl, and by Growl for interaction between
+ *	 its components.
+ *
+ *	 Most of these should no longer be used in Growl 0.6 and later, in favor of
+ *	 Growl.framework's GrowlApplicationBridge APIs.
+ */
+
+/*!	@defined GROWL_APP_REGISTRATION
+ *	@abstract The distributed notification for registering your application.
+ *	@discussion This is the name of the distributed notification that can be
+ *	 used to register applications with Growl.
+ *
+ *	 The userInfo dictionary for this notification can contain these keys:
+ *	 <ul>
+ *	 	<li>GROWL_APP_NAME</li>
+ *	 	<li>GROWL_APP_ICON</li>
+ *	 	<li>GROWL_NOTIFICATIONS_ALL</li>
+ *	 	<li>GROWL_NOTIFICATIONS_DEFAULT</li>
+ *	 </ul>
+ *
+ *	 No longer recommended as of Growl 0.6. An alternate method of registering
+ *	 is to use Growl.framework's delegate system.
+ *	 See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for
+ *	 more information.
+ */
+#define GROWL_APP_REGISTRATION			XSTR("GrowlApplicationRegistrationNotification")
+/*!	@defined GROWL_APP_REGISTRATION_CONF
+ *	@abstract The distributed notification for confirming registration.
+ *	@discussion The name of the distributed notification sent to confirm the
+ *	 registration. Used by the Growl preference pane. Your application probably
+ *	 does not need to use this notification.
+ */
+#define GROWL_APP_REGISTRATION_CONF		XSTR("GrowlApplicationRegistrationConfirmationNotification")
+/*!	@defined GROWL_NOTIFICATION
+ *	@abstract The distributed notification for Growl notifications.
+ *	@discussion This is what it all comes down to. This is the name of the
+ *	 distributed notification that your application posts to actually send a
+ *	 Growl notification.
+ *
+ *	 The userInfo dictionary for this notification can contain these keys:
+ *	 <ul>
+ *	 	<li>GROWL_NOTIFICATION_NAME (required)</li>
+ *	 	<li>GROWL_NOTIFICATION_TITLE (required)</li>
+ *	 	<li>GROWL_NOTIFICATION_DESCRIPTION (required)</li>
+ *	 	<li>GROWL_NOTIFICATION_ICON</li>
+ *	 	<li>GROWL_NOTIFICATION_APP_ICON</li>
+ *	 	<li>GROWL_NOTIFICATION_PRIORITY</li>
+ *	 	<li>GROWL_NOTIFICATION_STICKY</li>
+ *	 	<li>GROWL_NOTIFICATION_CLICK_CONTEXT</li>
+ *	 	<li>GROWL_APP_NAME (required)</li>
+ *	 </ul>
+ *
+ *	 No longer recommended as of Growl 0.6. Three alternate methods of posting
+ *	 notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:],
+ *	 Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and
+ *	 Growl_PostNotification.
+ */
+#define GROWL_NOTIFICATION				XSTR("GrowlNotification")
+/*!	@defined GROWL_SHUTDOWN
+*	@abstract The distributed notification name that tells Growl to shutdown.
+*	@discussion The Growl preference pane posts this notification when the
+*	 "Stop Growl" button is clicked.
+*/
+#define GROWL_SHUTDOWN					XSTR("GrowlShutdown")
+/*!	@defined GROWL_PING
+ *	@abstract A distributed notification to check whether Growl is running.
+ *	@discussion This is used by the Growl preference pane. If it receives a
+ *	 GROWL_PONG, the preference pane takes this to mean that Growl is running.
+ */
+#define GROWL_PING						XSTR("Honey, Mind Taking Out The Trash")
+/*!	@defined GROWL_PONG
+ *	@abstract The distributed notification sent in reply to GROWL_PING.
+ *	@discussion GrowlHelperApp posts this in reply to GROWL_PING.
+ */
+#define GROWL_PONG						XSTR("What Do You Want From Me, Woman")
+/*!	@defined GROWL_IS_READY
+ *	@abstract The distributed notification sent when Growl starts up.
+ *	@discussion GrowlHelperApp posts this when it has begin listening on all of
+ *	 its sources for new notifications. GrowlApplicationBridge (in
+ *	 Growl.framework), upon receiving this notification, reregisters using the
+ *	 registration dictionary supplied by its delegate.
+ */
+#define GROWL_IS_READY					XSTR("Lend Me Some Sugar; I Am Your Neighbor!")
+/*!	@defined GROWL_NOTIFICATION_CLICKED
+ *	@abstract The distributed notification sent when a supported notification is clicked.
+ *	@discussion When a Growl notification with a click context is clicked on by
+ *	 the user, Growl posts this distributed notification.
+ *	 The GrowlApplicationBridge responds to this notification by calling a
+ *	 callback in its delegate.
+ */
+#define GROWL_NOTIFICATION_CLICKED		XSTR("GrowlClicked!")
+#define GROWL_NOTIFICATION_TIMED_OUT	XSTR("GrowlTimedOut!")
+
+/*!	@group Other symbols */
+/* Symbols which don't fit into any of the other categories. */
+
+/*!	@defined GROWL_KEY_CLICKED_CONTEXT
+ *	@abstract Used internally as the key for the clickedContext passed over DNC.
+ *	@discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the
+ *	 click context that was supplied in the original notification.
+ */
+#define GROWL_KEY_CLICKED_CONTEXT		XSTR("ClickedContext")
+/*!	@defined GROWL_REG_DICT_EXTENSION
+ *	@abstract The filename extension for registration dictionaries.
+ *	@discussion The GrowlApplicationBridge in Growl.framework registers with
+ *	 Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION)
+ *	 and opening it in the GrowlHelperApp. This happens whether or not Growl is
+ *	 running; if it was stopped, it quits immediately without listening for
+ *	 notifications.
+ */
+#define GROWL_REG_DICT_EXTENSION		XSTR("growlRegDict")
+
+#endif //ndef _GROWLDEFINES_H
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/Current
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/Current (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Versions/Current (revision 13)
@@ -0,0 +1,1 @@
+link A
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Resources
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Resources (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Resources (revision 13)
@@ -0,0 +1,1 @@
+link Versions/Current/Resources
Index: /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Headers
===================================================================
--- /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Headers (revision 13)
+++ /tags/release-0.8/Frameworks/Growl-WithInstaller.framework/Headers (revision 13)
@@ -0,0 +1,1 @@
+link Versions/Current/Headers
Index: /tags/release-0.8/AtomApi.h
===================================================================
--- /tags/release-0.8/AtomApi.h (revision 35)
+++ /tags/release-0.8/AtomApi.h (revision 35)
@@ -0,0 +1,51 @@
+//
+//  AtomApi.h
+//  TypePad-Uploader
+//
+//  Created by Nicholas Gerakines on 5/1/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Growl/Growl.h>
+// #import "TypePad.h"
+
+@interface AtomApi: NSObject {
+	NSString *dataarg;
+	NSString *atomdata;
+	NSString *apiurl;
+	NSString *resdata;
+	NSString *authuser;
+	NSString *authpass;
+	BOOL requiresAuth;
+}
+
+- (NSString *) dataarg;
+- (void) setDataarg: (NSString *) Dataarg;
+
+- (NSString *) atomdata;
+- (void) setAtomdata: (NSString *) Atomdata;
+
+- (NSString *) apiurl;
+- (void) setApiurl: (NSString *) Apiurl;
+
+- (NSString *) resdata;
+- (void) setResdata: (NSString *) Resdata;
+
+- (NSString *) authuser;
+- (void) setAuthuser: (NSString *) Authuser;
+
+- (NSString *) authpass;
+- (void) setAuthpass: (NSString *) Authpass;
+
+- (BOOL) requiresAuth;
+- (void) setRequiresAuth: (BOOL) flag;
+
+- (void) setAuth: (NSString *) user pass:(NSString *) pass;
+
+- (void) makerequest:(NSString *) reqtype;
+
+- (NSString *) makeNonce;
+- (NSString *) filename;
+
+@end
Index: /tags/release-0.8/RoundedView.h
===================================================================
--- /tags/release-0.8/RoundedView.h (revision 30)
+++ /tags/release-0.8/RoundedView.h (revision 30)
@@ -0,0 +1,16 @@
+//
+//  RoundedView.h
+//  TypePad-Uploader
+//
+//  Created by Nicholas Gerakines on 4/28/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+
+#import <Cocoa/Cocoa.h>
+
+@interface RoundedView : NSView {
+}
+
+@end
+
Index: /tags/release-0.8/VoxCollection.m
===================================================================
--- /tags/release-0.8/VoxCollection.m (revision 35)
+++ /tags/release-0.8/VoxCollection.m (revision 35)
@@ -0,0 +1,71 @@
+//
+//  VoxCollection.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/11/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "VoxCollection.h"
+
+
+@implementation VoxCollection
+
+// init
+- (id)init {
+    if (self = [super init]) {
+        [self setCollectionID:[[NSString alloc] init]];
+        [self setCollectionTitle:[[NSString alloc] init]];
+    }
+    return self;
+}
+
+- (void) encodeWithCoder: (NSCoder *)coder {
+    [coder encodeObject: [self collectionID] forKey: @"WeblogCollectionID"];
+    [coder encodeObject: [self collectionTitle] forKey: @"WeblogCollectionTitle"];
+}
+
+- (id) initWithCoder: (NSCoder *)coder {
+	[self setCollectionID: [coder decodeObjectForKey: @"WeblogCollectionID"]];
+	[self setCollectionTitle: [coder decodeObjectForKey: @"WeblogCollectionTitle"]];
+    return self;
+}
+
+/* collectionID */
+- (NSString *) collectionID { return _collectionID; }
+
+	/* -setCollectionID: */
+- (void) setCollectionID: (NSString *) CollectionID {
+    //NSLog(@"in -setCollectionID:, old value of _collectionID: %@, changed to: %@", _collectionID, CollectionID);
+	
+    if (_collectionID != CollectionID) {
+        [_collectionID autorelease];
+        _collectionID = [CollectionID retain];
+    }
+}
+
+/* collectionTitle */
+- (NSString *) collectionTitle { return _collectionTitle; }
+
+	/* -setCollectionTitle: */
+- (void) setCollectionTitle: (NSString *) CollectionTitle {
+    //NSLog(@"in -setCollectionTitle:, old value of _collectionTitle: %@, changed to: %@", _collectionTitle, CollectionTitle);
+	
+    if (_collectionTitle != CollectionTitle) {
+        [_collectionTitle autorelease];
+        _collectionTitle = [CollectionTitle retain];
+    }
+}
+
+
+/* dealloc */
+- (void) dealloc {
+    [_collectionID release];
+    [_collectionTitle release];
+	
+    _collectionID = nil;
+    _collectionTitle = nil;
+    [super dealloc];
+}
+
+@end
Index: /tags/release-0.8/AtomApi.m
===================================================================
--- /tags/release-0.8/AtomApi.m (revision 41)
+++ /tags/release-0.8/AtomApi.m (revision 41)
@@ -0,0 +1,182 @@
+//
+//  AtomApi.m
+//  TypePad-Uploader
+//
+//  Created by Nicholas Gerakines on 5/1/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "AtomApi.h"
+#import "AtomExtensions.h"
+#import "NSDataAdditions.h"
+
+#define APIURL @"http://www.typepad.com/t/atom/";
+
+@implementation AtomApi
+
+- (id) init {
+    if (self = [super init]) {
+		/* ... */
+		dataarg = [[NSString alloc] init];
+		atomdata = [[NSString alloc] init];
+		apiurl = [[NSString alloc] init];
+		resdata = [[NSString alloc] init];
+		authuser = [[NSString alloc] init];
+		authpass = [[NSString alloc] init];
+		[self setRequiresAuth:NO];
+		[self retain];
+    }
+    return self;
+}
+
+/* dataarg */
+- (NSString *) dataarg { return dataarg; }
+
+	/* -setDataarg: */
+- (void) setDataarg: (NSString *) Dataarg {
+    //NSLog(@"in -setDataarg:, old value of dataarg: %@, changed to: %@", dataarg, Dataarg);
+    if (dataarg != Dataarg) {
+        [dataarg autorelease];
+        dataarg = [Dataarg retain];
+    }
+}
+
+/* atomdata */
+- (NSString *) atomdata { return atomdata; }
+
+/* -setAtomdata: */
+- (void) setAtomdata: (NSString *) Atomdata {
+    //NSLog(@"in -setAtomdata:, old value of atomdata: %@, changed to: %@", atomdata, Atomdata);
+    if (atomdata != Atomdata) {
+        [atomdata autorelease];
+        atomdata = [Atomdata retain];
+    }
+}
+
+/* apiurl */
+- (NSString *) apiurl { return apiurl; }
+
+/* -setApiurl: */
+- (void) setApiurl: (NSString *) Apiurl {
+    //NSLog(@"in -setApiurl:, old value of apiurl: %@, changed to: %@", apiurl, Apiurl);
+    if (apiurl != Apiurl) {
+        [apiurl autorelease];
+        apiurl = [Apiurl retain];
+    }
+}
+
+/* resdata */
+- (NSString *) resdata { return resdata; }
+
+/* -setResdata: */
+- (void) setResdata: (NSString *) Resdata {
+    //NSLog(@"in -setResdata:, old value of resdata: %@, changed to: %@", resdata, Resdata);
+    if (resdata != Resdata) {
+        [resdata autorelease];
+        resdata = [Resdata retain];
+    }
+}
+
+/* authuser */
+- (NSString *) authuser { return authuser; }
+
+/* -setAuthuser: */
+- (void) setAuthuser: (NSString *) Authuser {
+	//NSLog(@"in -setAuthuser:, old value of authuser: %@, changed to: %@", authuser, Authuser);
+	[self setRequiresAuth:YES];
+    if (authuser != Authuser) {
+        [authuser autorelease];
+        authuser = [Authuser retain];
+    }
+}
+
+/* authpass */
+- (NSString *) authpass { return authpass; }
+
+/* -setAuthpass: */
+- (void) setAuthpass: (NSString *) Authpass {
+	[self setRequiresAuth:YES];
+    //NSLog(@"in -setAuthpass:, old value of authpass: %@, changed to: %@", authpass, Authpass);
+    if (authpass != Authpass) {
+        [authpass autorelease];
+        authpass = [Authpass retain];
+    }
+}
+
+- (void) setAuth: (NSString *) user pass:(NSString *) pass {
+	[self setAuthuser:user];
+	[self setAuthpass:pass];
+	[self setRequiresAuth:YES];
+}
+
+/* requiresAuth */
+- (BOOL) requiresAuth { return requiresAuth; }
+
+/* -setRequiresAuth: */
+- (void) setRequiresAuth: (BOOL) flag {
+    //NSLog(@"in -setRequiresAuth, old value of requiresAuth: %@, changed to: %@", (requiresAuth ? @"YES": @"NO"), (flag ? @"YES": @"NO") );
+    requiresAuth = flag;
+}
+
+/* dealloc */
+- (void) dealloc {
+    [dataarg release];
+    [atomdata release];
+    [apiurl release];
+    [resdata release];
+	[authuser release];
+    [authpass release];
+	
+    dataarg = nil;
+    atomdata = nil;
+    apiurl = nil;
+    resdata = nil;
+	authuser = nil;
+    authpass = nil;
+    [super dealloc];
+}
+
+/* begin class methods */
+- (NSString *) makeNonce {
+	NSDate *timestamp = [NSDate date];
+	NSString *nonce = [[NSString stringWithFormat:@"%@:%@", [timestamp descriptionWithCalendarFormat:@"%Y-%m-%dT%H:%M:%SZ" timeZone:nil locale:nil], @"private"] stringUsingSHA1HexadecimalHash];
+	return [NSString stringWithFormat:@"%@ %@", [timestamp descriptionWithCalendarFormat:@"%Y-%m-%dT%H:%M:%SZ" timeZone:nil locale:nil], nonce];
+}
+
+- (void) makerequest:(NSString *) reqtype {
+// NSLog(@"Making request to url '%@'\n", apiurl);
+	NSURL *aURL = [NSURL URLWithString:apiurl];
+	[aURL URLHandleUsingCache:NO];
+	NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:aURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
+	[request addValue:[aURL host] forHTTPHeaderField:@"Host"];
+	[request addValue:@"Fence/0.8" forHTTPHeaderField:@"User-Agent"];
+	// set auth if we need it.
+	if ([self requiresAuth]) {
+// NSLog(@" XXX Auth required\n");
+		NSString *login = [self authuser];
+		NSString *password = [self authpass];
+		NSString *nonce = [self makeNonce];
+		NSString *encodedNonce = [nonce stringUsingBase64Encoding];
+		NSString *created = [[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%dT%H:%M:%SZ" timeZone:nil locale:nil];
+		NSString *passwordDigest = [[[NSString stringWithFormat:@"%@%@%@", nonce, created, password] stringUsingSHA1RawHash] stringUsingBase64Encoding];
+		[request addValue:@"WSSE profile=\"UsernameToken\"" forHTTPHeaderField:@"Authorization"];
+		NSString *wsse = [NSString stringWithFormat:@"UsernameToken Username=\"%@\", PasswordDigest=\"%@\", Created=\"%@\", Nonce=\"%@\"", login, passwordDigest, created, encodedNonce];
+		[request addValue:wsse forHTTPHeaderField:@"X-WSSE"];
+	}
+	[request addValue:@"application/atom+xml" forHTTPHeaderField:@"Content-Type"];
+	[request addValue:[NSString stringWithFormat:@"%d", [atomdata length]] forHTTPHeaderField: @"Content-Length"];
+	[request setHTTPMethod:reqtype];
+	[request setHTTPBody:[atomdata dataUsingEncoding:NSUTF8StringEncoding]];
+	// [request addValue:@"close" forHTTPHeaderField:@"Connection"];
+	NSURLResponse* response;
+	NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
+	NSString *blork = [[NSString alloc] initWithData:responseData  encoding:NSASCIIStringEncoding];
+	[self setResdata:blork];
+	// NSLog(@"Response: \n%@\n", blork);
+}
+
+- (NSString *) filename {
+	return [dataarg lastPathComponent];
+}
+
+@end
Index: /tags/release-0.8/RoundedView.m
===================================================================
--- /tags/release-0.8/RoundedView.m (revision 35)
+++ /tags/release-0.8/RoundedView.m (revision 35)
@@ -0,0 +1,73 @@
+//
+//  RoundedView.m
+//  TypePad-Uploader
+//
+//  Created by Nicholas Gerakines on 4/28/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+#import "RoundedView.h"
+#import "TypePad.h"
+
+@implementation RoundedView
+
+- (id)initWithFrame:(NSRect)frameRect {
+	if ((self = [super initWithFrame:frameRect]) != nil) {
+		[self registerForDraggedTypes:[NSArray arrayWithObjects:
+			NSURLPboardType,
+			NSStringPboardType,
+			NSFilenamesPboardType,
+			NSHTMLPboardType,
+			nil
+			]
+		];
+	}
+	return self;
+}
+
+- (void)drawRect:(NSRect)rect {
+	NSColor *bgColor = [NSColor colorWithCalibratedWhite:0.0 alpha:0.35];
+	NSRect bgRect = rect;
+	int minX = NSMinX(bgRect);
+	int midX = NSMidX(bgRect);
+	int maxX = NSMaxX(bgRect);
+	int minY = NSMinY(bgRect);
+	int midY = NSMidY(bgRect);
+	int maxY = NSMaxY(bgRect);
+	float radius = 25.0;
+	NSBezierPath *bgPath = [NSBezierPath bezierPath];
+	[bgPath moveToPoint:NSMakePoint(midX, minY)];
+	[bgPath appendBezierPathWithArcFromPoint:NSMakePoint(maxX, minY) toPoint:NSMakePoint(maxX, midY) radius:radius];
+	[bgPath appendBezierPathWithArcFromPoint:NSMakePoint(maxX, maxY) toPoint:NSMakePoint(midX, maxY) radius:radius];
+	[bgPath appendBezierPathWithArcFromPoint:NSMakePoint(minX, maxY) toPoint:NSMakePoint(minX, midY) radius:radius];
+	[bgPath appendBezierPathWithArcFromPoint:bgRect.origin toPoint:NSMakePoint(midX, minY) radius:radius];
+	[bgPath closePath];
+	[bgColor set];
+	[bgPath fill];
+}
+
+- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
+    if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) == NSDragOperationGeneric) { return NSDragOperationGeneric; }
+	if ((NSDragOperationCopy & [sender draggingSourceOperationMask]) == NSDragOperationCopy) { return NSDragOperationCopy; }
+	return NSDragOperationNone;
+}
+
+- (void)draggingExited:(id <NSDraggingInfo>)sender { }
+
+- (void)draggingEnded:(id <NSDraggingInfo>)sender { }
+
+- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender { return YES; }
+
+- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
+	/* NSLog(@"- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender - called\n"); */
+	TypePad *tp = [[[TypePad alloc] init] autorelease];
+	[tp dispatchAction:[sender draggingPasteboard]];
+	[self setNeedsDisplay:YES];
+    return YES;
+}
+
+- (void)dealloc {
+    [self unregisterDraggedTypes];
+    [super dealloc];
+}
+
+@end
Index: /tags/release-0.8/PrefController.h
===================================================================
--- /tags/release-0.8/PrefController.h (revision 38)
+++ /tags/release-0.8/PrefController.h (revision 38)
@@ -0,0 +1,71 @@
+/* PrefController */
+
+#import <Cocoa/Cocoa.h>
+#import <Growl/Growl.h>
+#import "TypePad.h"
+#import "TypePadAccount.h"
+#import "TypePadWeblog.h"
+#import "TypePadGallery.h"
+#import "Vox.h"
+#import "VoxAccount.h"
+#import "VoxCollection.h"
+
+@interface PrefController : NSObject {
+    IBOutlet id myWindow;
+	// typepad pref views //
+	IBOutlet id PrefsGeneral;
+	IBOutlet id PrefsTypePadImage;
+	/* - */ IBOutlet id tp_image_dropdown;
+	IBOutlet id PrefsTypePadText;
+	/* - */ IBOutlet id tp_text_dropdown;
+	// vox pref views //
+	IBOutlet id PrefsVoxAudio;
+	IBOutlet id PrefsVoxImage;
+	/* - */ IBOutlet id vx_image_dropdown;
+	IBOutlet id PrefsVoxText;
+	/* - */ IBOutlet id vx_text_dropdown;
+	// generic pref view //
+	IBOutlet id enable_growl;
+	IBOutlet id save_login;
+
+	NSToolbar *toolbar;
+	NSMutableDictionary *items;
+	NSMutableArray *allowedPanels;
+	NSString *service;
+	NSMutableDictionary *myCollections;
+}
+- (void) switchViews:(NSToolbarItem *)item;
+
+- (NSToolbarItem *) newItem:(NSString *) name image:(NSString *) image;
+
+- (void) windowWillClose:(id) sender;
+
+- (void) init_generic;
+- (void) init_typepad;
+- (void) init_vox;
+
+/** accessors **/
+- (NSToolbar *) toolbar;
+- (void) setToolbar: (NSToolbar *) Toolbar;
+
+- (NSMutableDictionary *) items;
+- (void) setItems: (NSMutableDictionary *) Items;
+
+- (NSMutableArray *) allowedPanels;
+- (void) setAllowedPanels: (NSMutableArray *) AllowedPanels;
+
+- (NSString *) service;
+- (void) setService: (NSString *) Service;
+
+- (NSMutableDictionary *) myCollections;
+- (void) setMyCollections: (NSMutableDictionary *) MyCollections;
+
+/* save methods */
+- (void) save_generic;
+- (void) save_typepad;
+- (void) save_vox;
+
+/* utility methods */
+- (NSArray *) parseTargetType: (NSString *) title;
+
+@end
Index: /tags/release-0.8/LoginWindowController.h
===================================================================
--- /tags/release-0.8/LoginWindowController.h (revision 38)
+++ /tags/release-0.8/LoginWindowController.h (revision 38)
@@ -0,0 +1,29 @@
+/* LoginWindowController */
+
+#import <Cocoa/Cocoa.h>
+#include "TypePad.h"
+#include "Vox.h"
+
+@interface LoginWindowController : NSObject {
+    IBOutlet id password;
+    IBOutlet id remeberme;
+    IBOutlet id services;
+    IBOutlet id usernamelist;
+	IBOutlet id mywindow;
+	NSMutableArray *recentlogins;
+	NSString *lastlogin;
+}
+
+- (NSMutableArray *) recentlogins;
+- (void) setRecentlogins: (NSMutableArray *) Recentlogins;
+
+- (NSString *) lastlogin;
+- (void) setLastlogin: (NSString *) Lastlogin;
+
+- (IBAction)login:(id)sender;
+
+- (void) init_login;
+- (void) init_typepad;
+- (void) init_vox;
+
+@end
Index: /tags/release-0.8/PrefController.m
===================================================================
--- /tags/release-0.8/PrefController.m (revision 41)
+++ /tags/release-0.8/PrefController.m (revision 41)
@@ -0,0 +1,386 @@
+#import "PrefController.h"
+
+@implementation PrefController
+
+// init
+// 1
+- (id)init {
+// NSLog(@"PrefController - init -- called \n");
+    if (self = [super init]) {
+        [self setToolbar:[[NSToolbar alloc] initWithIdentifier:@"preferencePanes"]];
+        [self setItems:[[NSMutableDictionary alloc] init]];
+		[self setMyCollections:[[NSMutableDictionary alloc] init]];
+        [self setAllowedPanels:[[NSMutableArray alloc] init]];
+        [self setService:[[NSString alloc] init]];
+    }
+    return self;
+}
+
+// 2
+- (void)awakeFromNib {
+	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowWillClose:) name:@"NSWindowWillCloseNotification" object:myWindow];
+    	
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	// [self setService:[userDefaults objectForKey:@"service type"]];
+	[self setService:@"None"];
+
+	// Set the general pref view control values
+	[enable_growl setObjectValue:[userDefaults objectForKey:@"enable_growl"]];
+	[save_login setObjectValue:[userDefaults objectForKey:@"save_login"]];
+	
+	TypePad *tp = [[[TypePad alloc] init] autorelease];
+	Vox *vx = [[[Vox alloc] init] autorelease];
+	if ([[tp accounts] count] > 0) {
+		[self setService:@"TypePad"];
+	}
+	if ([[vx accounts] count] > 0) {
+		[self setService:@"Vox"];
+	}
+	
+	
+	if ([[self service] isEqualToString:@"None"]) {
+		[self init_generic];
+	} else {
+		if ([[self service] isEqualToString:@"TypePad"]) {
+			[self init_typepad];
+		}
+		if ([[self service] isEqualToString:@"Vox"]) {
+			[self init_vox];
+		}
+	}
+
+    toolbar = [[NSToolbar alloc] initWithIdentifier:@"preferencePanes"];
+    [toolbar setDelegate:self];
+    [toolbar setAllowsUserCustomization:NO];
+    [toolbar setAutosavesConfiguration:NO];
+    [myWindow setToolbar:toolbar];
+    [toolbar release];
+
+    [myWindow center];
+
+    [self switchViews:nil];
+}
+
+/* dealloc */
+- (void) dealloc {
+    [toolbar release]; toolbar = nil;
+    [items release]; items = nil;
+    [allowedPanels release]; allowedPanels = nil;
+    [service release]; service = nil;
+	[myCollections release]; myCollections = nil;
+    [super dealloc];
+}
+
+- (void) init_generic {
+	[items setObject:[self newItem:@"General" image:@"General"] forKey:@"General"];
+	allowedPanels = [NSArray arrayWithObjects:@"General", NSToolbarFlexibleSpaceItemIdentifier, nil];
+}
+
+- (void) init_typepad {
+	[items setObject:[self newItem:@"General" image:@"General"] forKey:@"General"];
+	[items setObject:[self newItem:@"Image" image:@"Weblog"] forKey:@"Image"];
+	[items setObject:[self newItem:@"Text" image:@"Gallery"] forKey:@"Text"];
+	allowedPanels = [NSArray arrayWithObjects:@"General", @"Image", @"Text", NSToolbarFlexibleSpaceItemIdentifier, nil];
+
+	[tp_image_dropdown removeAllItems];
+	[tp_text_dropdown removeAllItems];
+
+	id key;
+	TypePad *tp = [[[TypePad alloc] init] autorelease];
+	// TypePadAccount *uacc = [[tp accounts] objectForKey:[self defaultaccount]];
+
+	// set the items that need blogs
+	// NSArray *blogs = [tp defaultAccountWeblogs];
+	NSEnumerator *blog_enumerator = [[tp defaultAccountWeblogs] objectEnumerator];
+	while (key = [blog_enumerator nextObject]) {
+		TypePadWeblog *tpobj = key;
+		[myCollections setObject:[tpobj weblogID] forKey:[NSString stringWithFormat:@"Weblog: %@", [tpobj weblogTitle]]];
+		[tp_image_dropdown addItemWithTitle:[NSString stringWithFormat:@"Weblog: %@", [tpobj weblogTitle]]];
+		[tp_text_dropdown addItemWithTitle:[NSString stringWithFormat:@"Weblog: %@", [tpobj weblogTitle]]];
+	}
+	
+	// set the items that need galleries - defaultAccountGalleries
+	// NSArray *galleries = [tp defaultAccountGalleries];
+	NSEnumerator *gallery_enumerator = [[tp defaultAccountGalleries] objectEnumerator];
+	while (key = [gallery_enumerator nextObject]) {
+		TypePadGallery *tpobj = key;
+		[myCollections setObject:[tpobj galleryID] forKey:[NSString stringWithFormat:@"Gallery: %@", [tpobj galleryTitle]]];
+		[tp_image_dropdown addItemWithTitle:[NSString stringWithFormat:@"Gallery: %@", [tpobj galleryTitle]]];
+	}
+	
+	if ([tp_image_dropdown numberOfItems] == 0) {
+		[tp_image_dropdown setState:NSOffState];
+	}
+	if ([tp_text_dropdown numberOfItems] == 0) {
+		[tp_text_dropdown setState:NSOffState];
+	}
+
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	if ([userDefaults objectForKey:@"image destination id"]) {
+		if ([[userDefaults objectForKey:@"image destination type"] isEqualToString:@"1"]) {
+			[tp_image_dropdown selectItemWithTitle:[NSString stringWithFormat:@"Weblog: %@", [userDefaults objectForKey:@"image destination title"]]];
+		}
+		if ([[userDefaults objectForKey:@"image destination type"] isEqualToString:@"2"]) {
+			[tp_image_dropdown selectItemWithTitle:[NSString stringWithFormat:@"Gallery: %@", [userDefaults objectForKey:@"image destination title"]]];
+		}
+	}
+	if ([userDefaults objectForKey:@"text destination id"]) {
+		if ([[userDefaults objectForKey:@"text destination type"] isEqualToString:@"1"]) {
+			[tp_text_dropdown selectItemWithTitle:[NSString stringWithFormat:@"Weblog: %@", [userDefaults objectForKey:@"text destination title"]]];
+		}
+	}
+
+}
+
+- (void) init_vox {
+	[items setObject:[self newItem:@"General" image:@"General"] forKey:@"General"];
+	[items setObject:[self newItem:@"Audio" image:@"Weblog"] forKey:@"Audio"];
+	[items setObject:[self newItem:@"Image" image:@"Gallery"] forKey:@"Image"];
+	[items setObject:[self newItem:@"Text" image:@"Weblog"] forKey:@"Text"];
+	allowedPanels = [NSArray arrayWithObjects:@"General", @"Audio", @"Image", @"Text", NSToolbarFlexibleSpaceItemIdentifier, nil];
+	
+	[vx_image_dropdown removeAllItems];
+	[vx_text_dropdown removeAllItems];
+	
+	id key;
+	Vox *vx = [[[Vox alloc] init] autorelease];
+	// TypePadAccount *uacc = [[tp accounts] objectForKey:[self defaultaccount]];
+	
+	// set the items that need blogs
+	// NSArray *blogs = [tp defaultAccountWeblogs];
+	NSEnumerator *col_enumerator = [[vx defaultAccountCollections] objectEnumerator];
+	while (key = [col_enumerator nextObject]) {
+		VoxCollection *voxcol = key;
+		[myCollections setObject:[voxcol collectionID] forKey:[NSString stringWithFormat:@"Collection: %@", [voxcol collectionTitle]]];
+// NSLog(@"Mapping collection '%@' to id '%@'", [voxcol collectionTitle], [voxcol collectionID]);
+		[vx_image_dropdown addItemWithTitle:[NSString stringWithFormat:@"Collection: %@", [voxcol collectionTitle]]];
+		[vx_text_dropdown addItemWithTitle:[NSString stringWithFormat:@"Collection: %@", [voxcol collectionTitle]]];
+	}
+	if ([vx_image_dropdown numberOfItems] == 0) {
+		[vx_image_dropdown setState:NSOffState];
+	}
+	if ([vx_text_dropdown numberOfItems] == 0) {
+		[vx_text_dropdown setState:NSOffState];
+	}
+	
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	if ([userDefaults objectForKey:@"vox image destination id"]) {
+		if ([[userDefaults objectForKey:@"vox image destination type"] isEqualToString:@"1"]) {
+			[tp_image_dropdown selectItemWithTitle:[NSString stringWithFormat:@"Collection: %@", [userDefaults objectForKey:@"vox image destination title"]]];
+		}
+	}
+	if ([userDefaults objectForKey:@"vox text destination id"]) {
+		if ([[userDefaults objectForKey:@"vox text destination type"] isEqualToString:@"1"]) {
+			[tp_text_dropdown selectItemWithTitle:[NSString stringWithFormat:@"Collection: %@", [userDefaults objectForKey:@"vox text destination title"]]];
+		}
+	}
+}
+
+- (NSToolbarItem *) newItem:(NSString *) name image:(NSString *) image {
+	NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:name] autorelease];
+    [item setPaletteLabel:name];
+    [item setLabel:name];
+    [item setToolTip:@""];
+    [item setImage:[[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:image ofType:@"tiff"]]];
+    [item setTarget:self];
+    [item setAction:@selector(switchViews:)];
+	return item;
+}
+
+- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
+    return [items objectForKey:itemIdentifier];
+}
+
+- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)theToolbar {
+    return [self toolbarDefaultItemIdentifiers:theToolbar];
+}
+
+- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)theToolbar {
+    return [self allowedPanels];
+}
+
+- (NSArray *)toolbarSelectableItemIdentifiers: (NSToolbar *)toolbar {
+    return [items allKeys];
+}
+
+- (void)switchViews:(NSToolbarItem *)item {
+	
+    NSString *sender;
+    if (item == nil){
+        sender = @"General";
+        [toolbar setSelectedItemIdentifier:sender];
+    } else {
+        sender = [item label];
+    }
+    NSView *prefsView;
+    [myWindow setTitle:sender];
+    if([sender isEqualToString:@"General"]){
+        prefsView = PrefsGeneral;
+    }else if([sender isEqualToString:@"Audio"]){
+        prefsView = PrefsVoxAudio;
+    }else if([sender isEqualToString:@"Image"]){
+        prefsView = [[self service] isEqualToString:@"TypePad"] ? PrefsTypePadImage : PrefsVoxImage;
+    }else if([sender isEqualToString:@"Text"]){
+        prefsView = [[self service] isEqualToString:@"TypePad"] ? PrefsTypePadText : PrefsVoxText;
+    }
+	
+	NSView *tempView = [[NSView alloc] initWithFrame:[[myWindow contentView] frame]];
+	[myWindow setContentView:tempView];
+	[tempView release];
+	
+	NSRect newFrame = [myWindow frame];
+	newFrame.size.height = [prefsView frame].size.height + ([myWindow frame].size.height - [[myWindow contentView] frame].size.height);
+	newFrame.size.width = [prefsView frame].size.width;
+	newFrame.origin.y += ([[myWindow contentView] frame].size.height - [prefsView frame].size.height);
+	
+	[myWindow setShowsResizeIndicator:NO];
+	[myWindow setFrame:newFrame display:YES animate:YES];
+	[myWindow setContentView:prefsView];
+}
+
+- (void) windowWillClose:(id) sender {
+// NSLog(@"Window closed\n");
+	[self save_generic];
+	if ([[self service] isEqualToString:@"TypePad"]) {
+		[self save_typepad];
+	}
+	if ([[self service] isEqualToString:@"Vox"]) {
+		[self save_vox];
+	}
+}
+
+/* toolbar */
+- (NSToolbar *) toolbar { return toolbar; }
+
+/* -setToolbar: */
+- (void) setToolbar: (NSToolbar *) Toolbar {
+    //NSLog(@"in -setToolbar:, old value of toolbar: %@, changed to: %@", toolbar, Toolbar);
+    if (toolbar != Toolbar) {
+        [toolbar autorelease];
+        toolbar = [Toolbar retain];
+    }
+}
+
+/* items */
+- (NSMutableDictionary *) items { return items; }
+
+/* -setItems: */
+- (void) setItems: (NSMutableDictionary *) Items {
+    //NSLog(@"in -setItems:, old value of items: %@, changed to: %@", items, Items);
+    if (items != Items) {
+        [items autorelease];
+        items = [Items retain];
+    }
+}
+
+/* allowedPanels */
+- (NSMutableArray *) allowedPanels { return allowedPanels; }
+
+/* -setAllowedPanels: */
+- (void) setAllowedPanels: (NSMutableArray *) AllowedPanels {
+    //NSLog(@"in -setAllowedPanels:, old value of allowedPanels: %@, changed to: %@", allowedPanels, AllowedPanels);
+    if (allowedPanels != AllowedPanels) {
+        [allowedPanels autorelease];
+        allowedPanels = [AllowedPanels retain];
+    }
+}
+
+/* service */
+- (NSString *) service { return service; }
+
+/* -setService: */
+- (void) setService: (NSString *) Service {
+    //NSLog(@"in -setService:, old value of service: %@, changed to: %@", service, Service);
+    if (service != Service) {
+        [service autorelease];
+        service = [Service retain];
+    }
+}
+
+/* myCollections */
+- (NSMutableDictionary *) myCollections { return myCollections; }
+
+/* -setMyCollections: */
+- (void) setMyCollections: (NSMutableDictionary *) MyCollections {
+    //NSLog(@"in -setMyCollections:, old value of myCollections: %@, changed to: %@", myCollections, MyCollections);
+    if (myCollections != MyCollections) {
+        [myCollections autorelease];
+        myCollections = [MyCollections retain];
+    }
+}
+
+- (void) save_generic {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	[userDefaults setObject:[enable_growl objectValue] forKey:@"enable_growl"];
+	[userDefaults setObject:[save_login objectValue] forKey:@"save_login"];
+}
+
+- (void) save_typepad {
+// NSLog(@"- (void) save_typepad -- called\n");
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	if ([tp_image_dropdown numberOfItems] > 0) {
+		NSArray *image_target = [self parseTargetType:[tp_image_dropdown titleOfSelectedItem]];
+		if ([image_target count] > 0) {
+			[userDefaults setObject:[image_target objectAtIndex:0] forKey:@"image destination type"];
+			[userDefaults setObject:[image_target objectAtIndex:1] forKey:@"image destination id"];
+			[userDefaults setObject:[image_target objectAtIndex:2] forKey:@"image destination title"];
+		}
+	}
+	if ([tp_text_dropdown numberOfItems] > 0) {
+		NSArray *text_target = [self parseTargetType:[tp_text_dropdown titleOfSelectedItem]];
+		if ([text_target count] > 0) {
+			[userDefaults setObject:[text_target objectAtIndex:0] forKey:@"text destination type"];
+			[userDefaults setObject:[text_target objectAtIndex:1] forKey:@"text destination id"];
+			[userDefaults setObject:[text_target objectAtIndex:2] forKey:@"text destination title"];
+		}
+	}
+	[userDefaults synchronize];
+}
+
+- (void) save_vox {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	if ([vx_image_dropdown numberOfItems] > 0) {
+		NSArray *image_target = [self parseTargetType:[vx_image_dropdown titleOfSelectedItem]];
+		if ([image_target count] > 0) {
+			[userDefaults setObject:[image_target objectAtIndex:0] forKey:@"vox image destination type"];
+			[userDefaults setObject:[image_target objectAtIndex:1] forKey:@"vox image destination id"];
+			[userDefaults setObject:[image_target objectAtIndex:2] forKey:@"vox image destination title"];
+		}
+	}
+	if ([vx_text_dropdown numberOfItems] > 0) {
+		NSArray *text_target = [self parseTargetType:[vx_text_dropdown titleOfSelectedItem]];
+		if ([text_target count] > 0) {
+			[userDefaults setObject:[text_target objectAtIndex:0] forKey:@"vox text destination type"];
+			[userDefaults setObject:[text_target objectAtIndex:1] forKey:@"vox text destination id"];
+			[userDefaults setObject:[text_target objectAtIndex:2] forKey:@"vox text destination title"];
+		}
+	}
+	[userDefaults synchronize];
+}
+
+- (NSArray *) parseTargetType: (NSString *) title {
+	NSMutableArray *ret = [[[NSMutableArray alloc] initWithCapacity:3] autorelease];
+	if ([title rangeOfString:@"Weblog: "].location != NSNotFound) {
+		[ret addObject:@"1"];
+		[ret addObject:[myCollections objectForKey:title]];
+		[ret addObject:[title substringFromIndex:8]];
+	}
+	if ([title rangeOfString:@"Gallery: "].location != NSNotFound) {
+		[ret addObject:@"2"];
+		[ret addObject:[myCollections objectForKey:title]];
+		[ret addObject:[title substringFromIndex:9]];
+	}
+	if ([title rangeOfString:@"TypeList: "].location != NSNotFound) {
+		[ret addObject:@"3"];
+		[ret addObject:[myCollections objectForKey:title]];
+		[ret addObject:[title substringFromIndex:10]];
+	}
+	if ([title rangeOfString:@"Collection: "].location != NSNotFound) {
+		[ret addObject:@"1"];
+		[ret addObject:[myCollections objectForKey:title]];
+		[ret addObject:[title substringFromIndex:12]];
+	}
+	return ret;
+}
+
+@end
Index: /tags/release-0.8/LoginWindowController.m
===================================================================
--- /tags/release-0.8/LoginWindowController.m (revision 42)
+++ /tags/release-0.8/LoginWindowController.m (revision 42)
@@ -0,0 +1,120 @@
+#import "LoginWindowController.h"
+
+@implementation LoginWindowController
+
+// init
+- (id)init {
+    if (self = [super init]) {
+        [self setRecentlogins:[[NSMutableArray alloc] init]];
+        [self setLastlogin:@""];
+    }
+    return self;
+}
+
+- (void)awakeFromNib {
+	[self init_login];
+}
+
+- (void) init_login {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	NSEnumerator *enumerator = [[userDefaults objectForKey:@"recent usernames"] objectEnumerator];
+	id key;
+	while (key = [enumerator nextObject]) {
+		if ([usernamelist numberOfItems] < 9) {
+			if ([usernamelist indexOfItemWithObjectValue:key] == NSNotFound) {
+				[usernamelist addItemWithObjectValue:key];
+			}
+		}
+	}
+	if ([userDefaults objectForKey:@"save_login"]) {
+		if ([userDefaults objectForKey:@"username"]) {
+			[usernamelist selectItemWithObjectValue:[userDefaults objectForKey:@"username"]];
+		}
+		if ([userDefaults objectForKey:@"password"]) {
+			[password setStringValue:[userDefaults objectForKey:@"password"]];
+		}
+		if ([userDefaults objectForKey:@"service type"]) {
+			[services selectItemWithTitle:[userDefaults objectForKey:@"service type"]];
+		}
+	}
+}
+
+/* dealloc */
+- (void) dealloc {
+    [recentlogins release];
+    [lastlogin release];
+	
+    recentlogins = nil;
+    lastlogin = nil;
+    [super dealloc];
+}
+
+/* recentlogins */
+- (NSMutableArray *) recentlogins { return recentlogins; }
+
+/* -setRecentlogins: */
+- (void) setRecentlogins: (NSMutableArray *) Recentlogins {
+    //NSLog(@"in -setRecentlogins:, old value of recentlogins: %@, changed to: %@", recentlogins, Recentlogins);
+    if (recentlogins != Recentlogins) {
+        [recentlogins autorelease];
+        recentlogins = [Recentlogins retain];
+    }
+}
+
+/* lastlogin */
+- (NSString *) lastlogin { return lastlogin; }
+
+/* -setLastlogin: */
+- (void) setLastlogin: (NSString *) Lastlogin {
+    //NSLog(@"in -setLastlogin:, old value of lastlogin: %@, changed to: %@", lastlogin, Lastlogin);
+    if (lastlogin != Lastlogin) {
+        [lastlogin autorelease];
+        lastlogin = [Lastlogin retain];
+    }
+}
+
+- (IBAction)login:(id)sender {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	// save our recent accounts list
+	[usernamelist addItemWithObjectValue:[usernamelist stringValue]];
+	[userDefaults setObject:[usernamelist objectValues] forKey:@"recent usernames"];
+	// save our account info
+	// TODO -- this should be done only if user allows
+	[userDefaults setObject:[usernamelist stringValue] forKey:@"username"];
+	[userDefaults setObject:[password stringValue] forKey:@"password"];
+	[userDefaults setObject:[services titleOfSelectedItem] forKey:@"service type"];
+	[userDefaults synchronize]; // force a quick sync of user info
+	// load our service ..
+	if ([[services titleOfSelectedItem] isEqualToString:@"TypePad"]) {
+		[self init_typepad];
+	}
+	if ([[services titleOfSelectedItem] isEqualToString:@"Vox"]) {
+		[self init_vox];
+	}
+}
+
+- (void) init_typepad {
+	TypePad *tp = [[[TypePad alloc] init] autorelease];
+	if ([tp addAccount:[usernamelist stringValue] pass:[password stringValue]]) {
+		[tp saveAccounts];
+		[tp appNotify:@"You are now connected to TypePad" title:@"Connected"];
+		[NSBundle loadNibNamed:@"TypePad.nib" owner:self];
+		[mywindow close];
+	} else {
+		NSRunAlertPanel(@"Alert", @"Login Failed", @"OK", nil, nil);
+	}
+}
+
+- (void) init_vox {
+	Vox *vx = [[[Vox alloc] init] autorelease];
+	if ([vx addAccount:[usernamelist stringValue] pass:[password stringValue]]) {
+		[vx saveAccounts];
+		[vx appNotify:@"You are now connected to Vox" title:@"Connected"];
+		[NSBundle loadNibNamed:@"Vox.nib" owner:self];
+		[mywindow close];
+	} else {
+		NSRunAlertPanel(@"Alert", @"Login Failed", @"OK", nil, nil);
+	}
+}
+
+@end
Index: /tags/release-0.8/Vox.h
===================================================================
--- /tags/release-0.8/Vox.h (revision 36)
+++ /tags/release-0.8/Vox.h (revision 36)
@@ -0,0 +1,45 @@
+//
+//  Vox.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/9/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "AtomApi.h"
+#import "VoxAccount.h"
+
+@interface Vox : NSObject {
+	NSMutableDictionary *accounts;
+	NSString *defaultaccount;
+	NSMutableDictionary *ntypes;
+}
+
+- (NSMutableDictionary *) ntypes;
+- (void) setNtypes: (NSMutableDictionary *) Ntypes;
+
+- (NSMutableDictionary *) accounts;
+- (void) setAccounts: (NSMutableDictionary *) Accounts;
+
+- (NSString *) defaultaccount;
+- (void) setDefaultaccount: (NSString *) Defaultaccount;
+
+- (BOOL) addAccount: (NSString *) login pass: (NSString *) pass;
+- (void) saveAccounts;
+
+	// --- //
+- (void) appNotify: (NSString *) message title: (NSString *) title;
+
+- (void) dispatchAction: (NSPasteboard *) pb;
+
+- (void) handleTypeOne: (NSString *) text;
+- (void) handleTypeThree: (NSArray *) list;
+
+- (int) handleTypes: (NSPasteboard *) pb;
+- (NSArray *) allowTypes;
+
+- (NSArray *) defaultAccountCollections;
+- (NSString *) defaultAccountPass;
+
+@end
Index: /tags/release-0.8/HACKING
===================================================================
--- /tags/release-0.8/HACKING (revision 18)
+++ /tags/release-0.8/HACKING (revision 18)
@@ -0,0 +1,3 @@
+Hacking
+
+ - Make sure you link the Growl framework
Index: /tags/release-0.8/Vox.m
===================================================================
--- /tags/release-0.8/Vox.m (revision 40)
+++ /tags/release-0.8/Vox.m (revision 40)
@@ -0,0 +1,211 @@
+//
+//  Vox.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/9/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "Vox.h"
+#import "VoxAtomApi.h"
+
+@implementation Vox
+
+- (id) init {
+	static Vox *sharedInstance = nil;
+	if (sharedInstance) {
+        [self autorelease];
+        self = [sharedInstance retain];
+    } else {
+        self = [super init];
+        if (self) {
+            sharedInstance = [self retain];
+			accounts = [[NSMutableDictionary alloc] init];
+			defaultaccount = [[NSString alloc] init];
+			ntypes = [[NSMutableDictionary alloc] init];
+        }
+    }
+    return self;
+}
+
++ Vox {
+	static Vox * sharedInstance = nil;
+	if ( sharedInstance == nil ) {
+		sharedInstance = [[self alloc] init];
+	}
+	return sharedInstance;
+}
+
+/* dealloc */
+- (void) dealloc {
+    [accounts release];
+	[defaultaccount release];
+	[ntypes release];
+	
+    accounts = nil;
+	ntypes = nil;
+	defaultaccount = nil;
+    [super dealloc];
+}
+
+
+/* accounts */
+- (NSMutableDictionary *) accounts { return accounts; }
+
+	/* -setAccounts: */
+- (void) setAccounts: (NSMutableDictionary *) Accounts {
+    //NSLog(@"in -setAccounts:, old value of accounts: %@, changed to: %@", accounts, Accounts);
+    if (accounts != Accounts) {
+        [accounts autorelease];
+        accounts = [Accounts retain];
+    }
+}
+
+/* defaultaccount */
+- (NSString *) defaultaccount { return defaultaccount; }
+
+	/* -setDefaultaccount: */
+- (void) setDefaultaccount: (NSString *) Defaultaccount {
+    //NSLog(@"in -setDefaultaccount:, old value of defaultaccount: %@, changed to: %@", defaultaccount, Defaultaccount);
+    if (defaultaccount != Defaultaccount) {
+        [defaultaccount autorelease];
+        defaultaccount = [Defaultaccount retain];
+    }
+}
+
+/* ntypes */
+- (NSMutableDictionary *) ntypes { return ntypes; }
+
+	/* -setNtypes: */
+- (void) setNtypes: (NSMutableDictionary *) Ntypes {
+    //NSLog(@"in -setNtypes:, old value of ntypes: %@, changed to: %@", ntypes, Ntypes);
+    if (ntypes != Ntypes) {
+        [ntypes autorelease];
+        ntypes = [Ntypes retain];
+    }
+}
+
+- (BOOL) addAccount: (NSString *) login pass: (NSString *) pass {
+	VoxAccount *vxuser = [[[VoxAccount alloc] init] autorelease];
+	[vxuser setUsername:login];
+	[vxuser setPassword:pass];
+	[vxuser discoverCollections];
+	if ([vxuser hasCollections]) {
+		[accounts setObject:vxuser forKey:login];
+		[self setDefaultaccount:login];
+		return YES;
+	}
+	return NO;
+}
+
+- (void) saveAccounts {
+	NSMutableData *data = [NSMutableData data];
+	NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
+	// TODO -- keep our dataset as bin data, find a better way of doing this
+	// [archiver setOutputFormat:NSPropertyListXMLFormat_v1_0];
+	NSEnumerator *enumerator = [accounts keyEnumerator];
+	id key;
+	while (key = [enumerator nextObject]) {
+		[archiver encodeObject:[accounts objectForKey:key] forKey:key];
+	}
+	[archiver finishEncoding];
+	[archiver release];
+	
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	[userDefaults setObject:data forKey:@"Vox Accounts"];
+	[userDefaults synchronize];
+}
+
+
+/** other stuff **/
+
+- (void) appNotify: (NSString *) message title: (NSString *) title {
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	// NSString *usegrowl = [userDefaults objectForKey:@"enable_growl"];
+	if ([userDefaults objectForKey:@"enable_growl"]) {
+		[GrowlApplicationBridge notifyWithTitle:title description:message notificationName:@"Fence" iconData:nil priority:0 isSticky:NO clickContext:nil];
+	}
+}
+
+- (void) dispatchAction: (NSPasteboard *) pb {
+	int actionType = [self handleTypes:pb];
+	if (actionType == 3) {
+		[self handleTypeThree:[pb propertyListForType:@"NSFilenamesPboardType"]];
+	}
+	if (actionType == 1) {
+		[self handleTypeOne:[ntypes objectForKey:@"stringForType:_NSStringPboardType"]];
+	}
+}
+
+// text
+- (void) handleTypeOne: (NSString *) text {
+// NSLog(@"- (void) handleTypeOne: (NSString *) text - called\n");
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	NSString *postloc = [userDefaults objectForKey:@"text destination type"];
+	if ([postloc isEqualToString:@"1"]) {
+		if ([userDefaults objectForKey:@"vox text destination id"]) {
+			VoxAtomApi *client = [[VoxAtomApi alloc] init];
+			[client setAuth:[self defaultaccount] pass:[self defaultAccountPass]];
+			[client setDataarg:text];
+			[client newpost:@"quickpost" args:[NSDictionary dictionaryWithObjectsAndKeys:[userDefaults objectForKey:@"vox text destination id"], @"destinationid", nil]];
+			[self appNotify:[NSString stringWithFormat:@"A new post has been created."] title:@"Post created"];
+		}
+	}
+}
+
+// image
+- (void) handleTypeThree: (NSArray *) list {
+// NSLog(@"- (void) handleTypeThree: (NSArray *) list - called\n");
+	NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+	NSString *postloc = [userDefaults objectForKey:@"vox image destination type"];
+	if ([postloc isEqualToString:@"1"]) {
+		if ([userDefaults objectForKey:@"vox image destination id"]) {
+			NSEnumerator *enumerator = [list objectEnumerator]; 
+			NSString *path; 
+			while( path = [enumerator nextObject] ) { 
+// NSLog([NSString stringWithFormat:@"Uploading file %@", path]);
+				VoxAtomApi *client = [[[VoxAtomApi alloc] init] autorelease];
+				[client setAuth:[self defaultaccount] pass:[self defaultAccountPass]];
+				[client setDataarg:path];
+				[client newpost:@"collection" args:[NSDictionary dictionaryWithObjectsAndKeys:[userDefaults objectForKey:@"vox image destination id"], @"destinationid", nil]];
+				[self appNotify:[NSString stringWithFormat:@"File '%@' has been uploaded", [client filename]] title:@"File Uploaded"];
+			}
+		}
+	}
+}
+
+- (int) handleTypes: (NSPasteboard *) pb {
+// NSLog(@"- (int) handleTypes:(NSPasteboard *) pb - called\n");
+    NSArray *types = [self allowTypes];
+	unsigned int i, count = [types count];
+	int totalcount = 0;
+	id methods[] = {@"stringForType:", @"propertyListForType:"};
+	for (i = 0; i < count; i++) {
+		int m;
+		NSString *type = [types objectAtIndex:i];
+		for (m = 0; m < 2; m++) {
+			id obj = [pb performSelector:NSSelectorFromString(methods[m]) withObject:type];
+			if (obj) {
+				totalcount++;
+				[ntypes setObject:[obj description] forKey:[NSString stringWithFormat:@"%@_%@",  methods[m], type]];
+// NSLog(@"%@ - %@ - %@\n",  methods[m], type, [obj description]);
+			}
+		}
+	}
+	if (totalcount == 1) { return 1; }
+	return 3;
+}
+
+- (NSArray *) allowTypes {
+	return [NSArray arrayWithObjects:NSURLPboardType, NSStringPboardType, NSFilenamesPboardType, NSHTMLPboardType, nil];
+}
+
+- (NSArray *) defaultAccountCollections {
+	return [[accounts objectForKey:[self defaultaccount]] myCollections];
+}
+
+- (NSString *) defaultAccountPass {
+	return [[accounts objectForKey:[self defaultaccount]] password];
+}
+
+@end
Index: /tags/release-0.8/Japanese.lproj/InfoPlist.strings
===================================================================
--- /tags/release-0.8/Japanese.lproj/InfoPlist.strings (revision 2)
+++ /tags/release-0.8/Japanese.lproj/InfoPlist.strings (revision 2)
@@ -0,0 +1,3 @@
+﻿/* Localized versions of Info.plist keys */
+
+NSHumanReadableCopyright = "© «ORGANIZATIONNAME», «YEAR»";
Index: /tags/release-0.8/Japanese.lproj/MainMenu.nib/info.nib
===================================================================
--- /tags/release-0.8/Japanese.lproj/MainMenu.nib/info.nib (revision 2)
+++ /tags/release-0.8/Japanese.lproj/MainMenu.nib/info.nib (revision 2)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>94 103 356 240 0 0 1280 1002 </string>
+	<key>IBEditorPositions</key>
+	<dict>
+		<key>29</key>
+		<string>93 343 318 44 0 0 1280 1002 </string>
+	</dict>
+	<key>IBFramework Version</key>
+	<string>403.0</string>
+	<key>IBSystem Version</key>
+	<string>8A278</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Japanese.lproj/MainMenu.nib/classes.nib
===================================================================
--- /tags/release-0.8/Japanese.lproj/MainMenu.nib/classes.nib (revision 2)
+++ /tags/release-0.8/Japanese.lproj/MainMenu.nib/classes.nib (revision 2)
@@ -0,0 +1,4 @@
+{
+    IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); 
+    IBVersion = 1; 
+}
Index: /tags/release-0.8/VoxTransParentWindow.h
===================================================================
--- /tags/release-0.8/VoxTransParentWindow.h (revision 30)
+++ /tags/release-0.8/VoxTransParentWindow.h (revision 30)
@@ -0,0 +1,9 @@
+/* VoxTransParentWindow */
+
+#import <Cocoa/Cocoa.h>
+
+@interface VoxTransParentWindow : NSWindow {
+	NSPoint initialLocation;
+	NSUserDefaults *prefs;
+}
+@end
Index: /tags/release-0.8/TypePadGallery.h
===================================================================
--- /tags/release-0.8/TypePadGallery.h (revision 41)
+++ /tags/release-0.8/TypePadGallery.h (revision 41)
@@ -0,0 +1,26 @@
+//
+//  TypePadGallery.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 5/15/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@interface TypePadGallery : NSObject {
+	NSString *_GalleryID;
+	NSString *_GalleryURL;
+	NSString *_GalleryTitle;
+}
+
+- (NSString *) galleryID;
+- (void) setGalleryID: (NSString *) GalleryID;
+
+- (NSString *) galleryURL;
+- (void) setGalleryURL: (NSString *) GalleryURL;
+
+- (NSString *) galleryTitle;
+- (void) setGalleryTitle: (NSString *) GalleryTitle;
+
+@end
Index: /tags/release-0.8/TypePadWeblogComment.h
===================================================================
--- /tags/release-0.8/TypePadWeblogComment.h (revision 41)
+++ /tags/release-0.8/TypePadWeblogComment.h (revision 41)
@@ -0,0 +1,39 @@
+//
+//  TypePadWeblogComment.h
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/19/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface TypePadWeblogComment : NSObject {
+	NSString *blogid;
+	NSString *commentid;
+	NSString *author_name;
+	NSString *author_url;
+	NSString *author_email;
+	NSString *text;
+}
+
+- (NSString *) blogid;
+- (void) setBlogid: (NSString *) Blogid;
+
+- (NSString *) commentid;
+- (void) setCommentid: (NSString *) Commentid;
+
+- (NSString *) uthor_name;
+- (void) setUthor_name: (NSString *) Uthor_name;
+
+- (NSString *) uthor_url;
+- (void) setUthor_url: (NSString *) Uthor_url;
+
+- (NSString *) uthor_email;
+- (void) setUthor_email: (NSString *) Uthor_email;
+
+- (NSString *) text;
+- (void) setText: (NSString *) Text;
+
+@end
Index: /tags/release-0.8/VoxTransParentWindow.m
===================================================================
--- /tags/release-0.8/VoxTransParentWindow.m (revision 41)
+++ /tags/release-0.8/VoxTransParentWindow.m (revision 41)
@@ -0,0 +1,51 @@
+#import "VoxTransParentWindow.h"
+
+@implementation VoxTransParentWindow
+
+- (id)initWithContentRect:(NSRect)contentRect
+				styleMask:(unsigned int)aStyle 
+				  backing:(NSBackingStoreType)bufferingType 
+					defer:(BOOL)flag
+{
+    
+    if (self = [super initWithContentRect:contentRect 
+								styleMask:NSBorderlessWindowMask 
+								  backing:NSBackingStoreBuffered 
+									defer:NO]) {
+        [self setLevel: NSStatusWindowLevel];
+        [self setBackgroundColor: [NSColor clearColor]];
+        [self setAlphaValue:1.0];
+        [self setOpaque:NO];
+        [self setHasShadow:NO];
+        return self;
+    }
+    return nil;
+}
+
+- (BOOL) canBecomeKeyWindow {
+    return YES;
+}
+
+- (void)mouseDragged:(NSEvent *)theEvent {
+    NSPoint currentLocation;
+    NSPoint newOrigin;
+    NSRect  screenFrame = [[NSScreen mainScreen] frame];
+    NSRect  windowFrame = [self frame];
+    currentLocation = [self convertBaseToScreen:[self mouseLocationOutsideOfEventStream]];
+    newOrigin.x = currentLocation.x - initialLocation.x;
+    newOrigin.y = currentLocation.y - initialLocation.y;
+    if( (newOrigin.y + windowFrame.size.height) > (NSMaxY(screenFrame) - [NSMenuView menuBarHeight]) ){
+		newOrigin.y = NSMaxY(screenFrame) - windowFrame.size.height - [NSMenuView menuBarHeight];
+    }
+    [self setFrameOrigin:newOrigin];
+}
+
+- (void)mouseDown:(NSEvent *)theEvent {
+    NSRect windowFrame = [self frame];
+    initialLocation = [self convertBaseToScreen:[theEvent locationInWindow]];
+    initialLocation.x -= windowFrame.origin.x;
+    initialLocation.y -= windowFrame.origin.y;
+}
+
+
+@end
Index: /tags/release-0.8/Prefs_General~.nib/info.nib
===================================================================
--- /tags/release-0.8/Prefs_General~.nib/info.nib (revision 2)
+++ /tags/release-0.8/Prefs_General~.nib/info.nib (revision 2)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>390 209 356 240 0 0 1440 938 </string>
+	<key>IBFramework Version</key>
+	<string>443.0</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>7</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>8I127</string>
+</dict>
+</plist>
Index: /tags/release-0.8/Prefs_General~.nib/classes.nib
===================================================================
--- /tags/release-0.8/Prefs_General~.nib/classes.nib (revision 2)
+++ /tags/release-0.8/Prefs_General~.nib/classes.nib (revision 2)
@@ -0,0 +1,4 @@
+{
+    IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); 
+    IBVersion = 1; 
+}
Index: /tags/release-0.8/TypePadGallery.m
===================================================================
--- /tags/release-0.8/TypePadGallery.m (revision 30)
+++ /tags/release-0.8/TypePadGallery.m (revision 30)
@@ -0,0 +1,90 @@
+//
+//  TypePadGallery.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 5/15/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "TypePadGallery.h"
+
+@implementation TypePadGallery
+
+- (id) init {
+    if (self = [super init]) {
+		_GalleryID = [[NSString alloc] init];
+		_GalleryURL = [[NSString alloc] init];
+		_GalleryTitle = [[NSString alloc] init];
+		[self retain];
+    }
+    return self;
+}
+
+/* dealloc */
+- (void) dealloc {
+    [_GalleryID release];
+    [_GalleryURL release];
+    [_GalleryTitle release];
+	
+    _GalleryID = nil;
+    _GalleryURL = nil;
+    _GalleryTitle = nil;
+    [super dealloc];
+}
+
+- (void) encodeWithCoder: (NSCoder *)coder {
+    // [super encodeWithCoder: coder];
+    [coder encodeObject: [self galleryID] forKey: @"_GalleryID"];
+    [coder encodeObject: [self galleryURL] forKey: @"_GalleryURL"];
+    [coder encodeObject: [self galleryTitle] forKey: @"_GalleryTitle"];
+}
+
+- (id) initWithCoder: (NSCoder *)coder {
+    // if ([super initWithCoder: coder]) {
+        [self setGalleryID: [coder decodeObjectForKey: @"_GalleryID"]];
+        [self setGalleryURL: [coder decodeObjectForKey: @"_GalleryURL"]];
+        [self setGalleryTitle: [coder decodeObjectForKey: @"_GalleryTitle"]];
+    // }
+    return self;
+}
+
+/* galleryID */
+- (NSString *) galleryID { return _GalleryID; }
+
+	/* -setGalleryID: */
+- (void) setGalleryID: (NSString *) GalleryID {
+    //NSLog(@"in -setGalleryID:, old value of _GalleryID: %@, changed to: %@", _GalleryID, GalleryID);
+	
+    if (_GalleryID != GalleryID) {
+        [_GalleryID autorelease];
+        _GalleryID = [GalleryID retain];
+    }
+}
+
+/* galleryURL */
+- (NSString *) galleryURL { return _GalleryURL; }
+
+	/* -setGalleryURL: */
+- (void) setGalleryURL: (NSString *) GalleryURL {
+    //NSLog(@"in -setGalleryURL:, old value of _GalleryURL: %@, changed to: %@", _GalleryURL, GalleryURL);
+	
+    if (_GalleryURL != GalleryURL) {
+        [_GalleryURL autorelease];
+        _GalleryURL = [GalleryURL retain];
+    }
+}
+
+/* galleryTitle */
+- (NSString *) galleryTitle { return _GalleryTitle; }
+
+	/* -setGalleryTitle: */
+- (void) setGalleryTitle: (NSString *) GalleryTitle {
+    //NSLog(@"in -setGalleryTitle:, old value of _GalleryTitle: %@, changed to: %@", _GalleryTitle, GalleryTitle);
+	
+    if (_GalleryTitle != GalleryTitle) {
+        [_GalleryTitle autorelease];
+        _GalleryTitle = [GalleryTitle retain];
+    }
+}
+
+@end
Index: /tags/release-0.8/TypePadDiscovery.h
===================================================================
--- /tags/release-0.8/TypePadDiscovery.h (revision 2)
+++ /tags/release-0.8/TypePadDiscovery.h (revision 2)
@@ -0,0 +1,21 @@
+//
+//  blogdiscovery.h
+//  blogdiscovery
+//
+//  Created by Nicholas Gerakines on 4/30/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "TypePad.h"
+#import "TypePadWeblog.h"
+#import "TypePadGallery.h"
+
+@interface TypePadDiscovery : TypePad {
+
+}
+- (void) discover: (NSString *)login password:(NSString *)password warp:(NSString *)warp;
+- (NSString *)makeNonce;
+- (NSString *) parseId:(NSString *)tmp;
+
+@end
Index: /tags/release-0.8/TypePadWeblogComment.m
===================================================================
--- /tags/release-0.8/TypePadWeblogComment.m (revision 41)
+++ /tags/release-0.8/TypePadWeblogComment.m (revision 41)
@@ -0,0 +1,139 @@
+//
+//  TypePadWeblogComment.m
+//  Fence
+//
+//  Created by Nicholas Gerakines on 6/19/06.
+//  Copyright 2006 __MyCompanyName__. All rights reserved.
+//
+
+#import "TypePadWeblogComment.h"
+
+
+@implementation TypePadWeblogComment
+
+// init
+- (id)init {
+    if (self = [super init]) {
+        [self setBlogid:@""];
+        [self setCommentid:@""];
+        [self setUthor_name:@""];
+        [self setUthor_url:@""];
+        [self setUthor_email:@""];
+        [self setText:@""];
+    }
+    return self;
+}
+
+- (void) encodeWithCoder: (NSCoder *)coder {
+    [coder encodeObject: [self blogid] forKey: @"WeblogBlogid"];
+    [coder encodeObject: [self commentid] forKey: @"WeblogCommentid"];
+    [coder encodeObject: [self uthor_name] forKey: @"WeblogUthor_name"];
+    [coder encodeObject: [self uthor_url] forKey: @"WeblogUthor_url"];
+    [coder encodeObject: [self uthor_email] forKey: @"WeblogUthor_email"];
+    [coder encodeObject: [self text] forKey: @"WeblogText"];
+}
+
+- (id) initWithCoder: (NSCoder *)coder {
+	[self setBlogid: [coder decodeObjectForKey: @"WeblogBlogid"]];
+	[self setCommentid: [coder decodeObjectForKey: @"WeblogCommentid"]];
+	[self setUthor_name: [coder decodeObjectForKey: @"WeblogUthor_name"]];
+	[self setUthor_url: [coder decodeObjectForKey: @"WeblogUthor_url"]];
+	[self setUthor_email: [coder decodeObjectForKey: @"WeblogUthor_email"]];
+	[self setText: [coder decodeObjectForKey: @"WeblogText"]];
+    return self;
+}
+
+/* blogid */
+- (NSString *) blogid { return blogid; }
+
+/* -setBlogid: */
+- (void) setBlogid: (NSString *) Blogid {
+    //NSLog(@"in -setBlogid:, old value of blogid: %@, changed to: %@", blogid, Blogid);
+    if (blogid != Blogid) {
+        [blogid autorelease];
+        blogid = [Blogid retain];
+    }
+}
+
+/* commentid */
+- (NSString *) commentid { return commentid; }
+
+/* -setCommentid: */
+- (void) setCommentid: (NSString *) Commentid {
+    //NSLog(@"in -setCommentid:, old value of commentid: %@, changed to: %@", commentid, Commentid);
+    if (commentid != Commentid) {
+        [commentid autorelease];
+        commentid = [Commentid retain];
+    }
+}
+
+/* uthor_name */
+- (NSString *) uthor_name { return author_name; }
+
+/* -setUthor_name: */
+- (void) setUthor_name: (NSString *) Uthor_name {
+    //NSLog(@"in -setUthor_name:, old value of author_name: %@, changed to: %@", author_name, Uthor_name);
+    if (author_name != Uthor_name) {
+        [author_name autorelease];
+        author_name = [Uthor_name retain];
+    }
+}
+
+/* uthor_url */
+- (NSString *) uthor_url { return author_url; }
+
+/* -setUthor_url: */
+- (void) setUthor_url: (NSString *) Uthor_url {
+    //NSLog(@"in -setUthor_url:, old value of author_url: %@, changed to: %@", author_url, Uthor_url);
+    if (author_url != Uthor_url) {
+        [author_url autorelease];
+        author_url = [Uthor_url retain];
+    }
+}
+
+/* uthor_email */
+- (NSString *) uthor_email { return author_email; }
+
+/* -setUthor_email: */
+- (void) setUthor_email: (NSString *) Uthor_email {
+    //NSLog(@"in -setUthor_email:, old value of author_email: %@, changed to: %@", author_email, Uthor_email);
+    if (author_email != Uthor_email) {
+        [author_email autorelease];
+        author_email = [Uthor_email retain];
+    }
+}
+
+/* text */
+- (NSString *) text { return text; }
+
+/* -setText: */
+- (void) setText: (NSString *) Text {
+    //NSLog(@"in -setText:, old value of text: %@, changed to: %@", text, Text);
+    if (text != Text) {
+        [text autorelease];
+        text = [Text retain];
+    }
+}
+
+
+/* dealloc */
+- (void) dealloc {
+    [blogid release];
+    [commentid release];
+    [author_name release];
+    [author_url release];
+    [author_email release];
+    [text release];
+	
+    blogid = nil;
+    commentid = nil;
+    author_name = nil;
+    author_url = nil;
+    author_email = nil;
+    text = nil;
+    [super dealloc];
+}
+
+
+
+@end
Index: /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions).html
===================================================================
--- /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions).html (revision 24)
+++ /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions).html (revision 24)
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSData(NSDataAdditions) Category Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSData(NSDataAdditions) Category Reference</h1><!-- doxytag: class="NSData(NSDataAdditions)" --><a href="category_n_s_data(_n_s_data_additions)-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(id)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_n_s_data_additions).html#06601e9b3858c1b7f4bfe872cb77af59">initWithBase64EncodedString:</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_n_s_data_additions).html#d1727e2f594cad1b56e1e405524bfc09">base64Encoding</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_n_s_data_additions).html#ebeb4e9b80809f8a50051b054f998b93">base64EncodingWithLineLength:</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(BOOL)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_n_s_data_additions).html#466369891c0c2138969106135bad11b4">hasPrefix:</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(BOOL)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_n_s_data_additions).html#d50d1632f3c1101293468b3bc7c00d94">hasPrefixBytes:length:</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_data.html">NSData</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">+ <a class="el" href="category_n_s_data(_n_s_data_additions).html#7ea1d9027d77f68091c2167ffe5d9e7d">dataWithBase64EncodedString:</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_data_additions_8h-source.html#l00011">11</a> of file <a class="el" href="_n_s_data_additions_8h-source.html">NSDataAdditions.h</a>.<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="7ea1d9027d77f68091c2167ffe5d9e7d"></a><!-- doxytag: member="NSData(NSDataAdditions)::dataWithBase64EncodedString:" ref="7ea1d9027d77f68091c2167ffe5d9e7d" args="(NSString *string)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">+ (<a class="el" href="class_n_s_data.html">NSData</a> *) dataWithBase64EncodedString:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>string</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="06601e9b3858c1b7f4bfe872cb77af59"></a><!-- doxytag: member="NSData(NSDataAdditions)::initWithBase64EncodedString:" ref="06601e9b3858c1b7f4bfe872cb77af59" args="(NSString *string)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (id) initWithBase64EncodedString:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>string</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="d1727e2f594cad1b56e1e405524bfc09"></a><!-- doxytag: member="NSData(NSDataAdditions)::base64Encoding" ref="d1727e2f594cad1b56e1e405524bfc09" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (<a class="el" href="class_n_s_string.html">NSString</a> *) base64Encoding           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="ebeb4e9b80809f8a50051b054f998b93"></a><!-- doxytag: member="NSData(NSDataAdditions)::base64EncodingWithLineLength:" ref="ebeb4e9b80809f8a50051b054f998b93" args="(unsigned int lineLength)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (<a class="el" href="class_n_s_string.html">NSString</a> *) base64EncodingWithLineLength:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(unsigned int)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>lineLength</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="466369891c0c2138969106135bad11b4"></a><!-- doxytag: member="NSData(NSDataAdditions)::hasPrefix:" ref="466369891c0c2138969106135bad11b4" args="(NSData *prefix)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (BOOL) hasPrefix:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(<a class="el" href="class_n_s_data.html">NSData</a> *)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>prefix</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="d50d1632f3c1101293468b3bc7c00d94"></a><!-- doxytag: member="NSData(NSDataAdditions)::hasPrefixBytes:length:" ref="d50d1632f3c1101293468b3bc7c00d94" args="(void *prefix,[length] unsigned int length)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (BOOL) hasPrefixBytes:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(void *)&nbsp;</td>
+          <td class="mdname" nowrap> <em>prefix</em></td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right">length:</td>
+          <td class="md"></td>
+          <td class="md" nowrap>(unsigned int)&nbsp;</td>
+          <td class="mdname" nowrap> <em>length</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<hr>The documentation for this category was generated from the following file:<ul>
+<li><a class="el" href="_n_s_data_additions_8h-source.html">NSDataAdditions.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_n_s_image_additions_8h.html
===================================================================
--- /tags/release-0.8/docs/html/_n_s_image_additions_8h.html (revision 19)
+++ /tags/release-0.8/docs/html/_n_s_image_additions_8h.html (revision 19)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSImageAdditions.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSImageAdditions.h File Reference</h1>
+<p>
+<a href="_n_s_image_additions_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">category &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="category_n_s_image(_n_s_image_additions).html">NSImage(NSImageAdditions)</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:05:15 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/interface_image_drag_area-members.html
===================================================================
--- /tags/release-0.8/docs/html/interface_image_drag_area-members.html (revision 24)
+++ /tags/release-0.8/docs/html/interface_image_drag_area-members.html (revision 24)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>ImageDragArea Member List</h1>This is the complete list of members for <a class="el" href="interface_image_drag_area.html">ImageDragArea</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#9d32a1427b65be91a21874c92cde8e62">draggingEnded:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#d3da9688b9068e536b43e715f958d11c">draggingEntered:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#d828fa8960b9da82d9d3c1bdbfcbb930">draggingExited:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#c7ba468e00d82b3609992942625f6884">performDragOperation:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#7a576618de2f197f41b8329e322419a3">prepareForDragOperation:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="interface_image_drag_area.html#a95c7b6fed3c921ffa74d802db96915f">setImage:</a></td><td><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td><td></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_atom_extensions_8m-source.html
===================================================================
--- /tags/release-0.8/docs/html/_atom_extensions_8m-source.html (revision 24)
+++ /tags/release-0.8/docs/html/_atom_extensions_8m-source.html (revision 24)
@@ -0,0 +1,376 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: AtomExtensions.m Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>AtomExtensions.m</h1><a href="_atom_extensions_8m.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  AtomExtensions.m</span>
+<a name="l00003"></a>00003 <span class="comment">//  TypePad-Uploader</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Nicholas Gerakines on 4/28/06.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2006 __MyCompanyName__. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00009"></a>00009 <span class="preprocessor">#import "<a class="code" href="_atom_extensions_8h.html">AtomExtensions.h</a>"</span>
+<a name="l00010"></a>00010 
+<a name="l00011"></a>00011 <span class="comment">// Needed by the sha1 openssl functions</span>
+<a name="l00012"></a>00012 <span class="comment">// Must set Header Search Paths = /usr/include/openssl</span>
+<a name="l00013"></a>00013 <span class="comment">// Must set Other Linker Flags = -lcrypto -lssl</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#import &lt;evp.h&gt;</span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a><a class="code" href="class_n_s_string.html">00016</a> <span class="keyword">@implementation </span><a class="code" href="class_n_s_string.html">NSString</a> (AtomExtensions)
+<a name="l00017"></a><a class="code" href="_atom_extensions_8m.html#f102258404f1888084d433741a8fb3f5">00017</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="_atom_extensions_8m.html#f102258404f1888084d433741a8fb3f5">gEncodingTable</a> = {
+<a name="l00018"></a>00018         <span class="charliteral">'A'</span>,<span class="charliteral">'B'</span>,<span class="charliteral">'C'</span>,<span class="charliteral">'D'</span>,<span class="charliteral">'E'</span>,<span class="charliteral">'F'</span>,<span class="charliteral">'G'</span>,<span class="charliteral">'H'</span>,<span class="charliteral">'I'</span>,<span class="charliteral">'J'</span>,<span class="charliteral">'K'</span>,<span class="charliteral">'L'</span>,<span class="charliteral">'M'</span>,<span class="charliteral">'N'</span>,<span class="charliteral">'O'</span>,<span class="charliteral">'P'</span>,
+<a name="l00019"></a>00019         <span class="charliteral">'Q'</span>,<span class="charliteral">'R'</span>,<span class="charliteral">'S'</span>,<span class="charliteral">'T'</span>,<span class="charliteral">'U'</span>,<span class="charliteral">'V'</span>,<span class="charliteral">'W'</span>,<span class="charliteral">'X'</span>,<span class="charliteral">'Y'</span>,<span class="charliteral">'Z'</span>,<span class="charliteral">'a'</span>,<span class="charliteral">'b'</span>,<span class="charliteral">'c'</span>,<span class="charliteral">'d'</span>,<span class="charliteral">'e'</span>,<span class="charliteral">'f'</span>,
+<a name="l00020"></a>00020         <span class="charliteral">'g'</span>,<span class="charliteral">'h'</span>,<span class="charliteral">'i'</span>,<span class="charliteral">'j'</span>,<span class="charliteral">'k'</span>,<span class="charliteral">'l'</span>,<span class="charliteral">'m'</span>,<span class="charliteral">'n'</span>,<span class="charliteral">'o'</span>,<span class="charliteral">'p'</span>,<span class="charliteral">'q'</span>,<span class="charliteral">'r'</span>,<span class="charliteral">'s'</span>,<span class="charliteral">'t'</span>,<span class="charliteral">'u'</span>,<span class="charliteral">'v'</span>,
+<a name="l00021"></a>00021         <span class="charliteral">'w'</span>,<span class="charliteral">'x'</span>,<span class="charliteral">'y'</span>,<span class="charliteral">'z'</span>,<span class="charliteral">'0'</span>,<span class="charliteral">'1'</span>,<span class="charliteral">'2'</span>,<span class="charliteral">'3'</span>,<span class="charliteral">'4'</span>,<span class="charliteral">'5'</span>,<span class="charliteral">'6'</span>,<span class="charliteral">'7'</span>,<span class="charliteral">'8'</span>,<span class="charliteral">'9'</span>,<span class="charliteral">'+'</span>,<span class="charliteral">'/'</span>
+<a name="l00022"></a>00022 };
+<a name="l00023"></a>00023 
+<a name="l00024"></a><a class="code" href="class_n_s_string.html#67b713131df3c84eac1d99700e8c0e4a">00024</a> - (NSString *)stringUsingBase64Encoding {
+<a name="l00025"></a>00025         <span class="keywordflow">return</span> [<span class="keyword">self</span> <a class="code" href="class_n_s_string.html#1d606bafedf6fb12e03c758672be0df5">stringUsingBase64EncodingWithLineLength</a>:0];
+<a name="l00026"></a>00026 }
+<a name="l00027"></a>00027 
+<a name="l00028"></a><a class="code" href="class_n_s_string.html#1d606bafedf6fb12e03c758672be0df5">00028</a> - (NSString *)stringUsingBase64EncodingWithLineLength:(<span class="keywordtype">int</span>)lineLength {
+<a name="l00029"></a>00029         <span class="comment">/*</span>
+<a name="l00030"></a>00030 <span class="comment">         Encode the NSString. Some funny stuff about linelength -- it only makes</span>
+<a name="l00031"></a>00031 <span class="comment">         sense to make it a multiple of 4. If it's not a multiple of 4, we make it</span>
+<a name="l00032"></a>00032 <span class="comment">         so (by only checking it every 4 characters). </span>
+<a name="l00033"></a>00033 <span class="comment">         </span>
+<a name="l00034"></a>00034 <span class="comment">         Further, if it's 0, we don't add any line breaks at all.</span>
+<a name="l00035"></a>00035 <span class="comment">         */</span>
+<a name="l00036"></a>00036         
+<a name="l00037"></a>00037     NSMutableString *result = nil;
+<a name="l00038"></a>00038     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textIndex;
+<a name="l00039"></a>00039     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textLength;
+<a name="l00040"></a>00040     <span class="keywordtype">long</span> charactersRemaining;
+<a name="l00041"></a>00041     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> inputBuffer, outputBuffer;
+<a name="l00042"></a>00042     <span class="keywordtype">short</span> i;
+<a name="l00043"></a>00043     <span class="keywordtype">short</span> charactersOnLine = 0, characterCopy;
+<a name="l00044"></a>00044     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> index;
+<a name="l00045"></a>00045         
+<a name="l00046"></a>00046         
+<a name="l00047"></a>00047     textIndex = 0;
+<a name="l00048"></a>00048         
+<a name="l00049"></a>00049     textLength = [<span class="keyword">self</span> length];
+<a name="l00050"></a>00050     result = [NSMutableString stringWithCapacity:textLength];
+<a name="l00051"></a>00051         
+<a name="l00052"></a>00052     <span class="keywordflow">while</span> (YES) {
+<a name="l00053"></a>00053         charactersRemaining = textLength - textIndex;
+<a name="l00054"></a>00054                 
+<a name="l00055"></a>00055         <span class="keywordflow">if</span> (charactersRemaining &lt;= 0) {
+<a name="l00056"></a>00056             <span class="keywordflow">break</span>;
+<a name="l00057"></a>00057                 }
+<a name="l00058"></a>00058                 
+<a name="l00059"></a>00059         <span class="keywordflow">for</span> (i = 0; i &lt; 3; i++) {
+<a name="l00060"></a>00060             index = textIndex + i;
+<a name="l00061"></a>00061                         
+<a name="l00062"></a>00062             <span class="keywordflow">if</span> (index &lt; textLength) {
+<a name="l00063"></a>00063                                 inputBuffer[i] = [<span class="keyword">self</span> characterAtIndex:index];
+<a name="l00064"></a>00064                         } <span class="keywordflow">else</span> {
+<a name="l00065"></a>00065                 inputBuffer = 0;
+<a name="l00066"></a>00066                         }
+<a name="l00067"></a>00067         } <span class="comment">// for</span>
+<a name="l00068"></a>00068                 
+<a name="l00069"></a>00069         outputBuffer = (inputBuffer &amp; 0xFC) &gt;&gt; 2;
+<a name="l00070"></a>00070         outputBuffer = ((inputBuffer &amp; 0x03) &lt;&lt; 4) | ((inputBuffer &amp; 0xF0) &gt;&gt; 4);
+<a name="l00071"></a>00071         outputBuffer = ((inputBuffer &amp; 0x0F) &lt;&lt; 2) | ((inputBuffer &amp; 0xC0) &gt;&gt; 6);
+<a name="l00072"></a>00072         outputBuffer = inputBuffer &amp; 0x3F;
+<a name="l00073"></a>00073                 
+<a name="l00074"></a>00074         characterCopy = 4;
+<a name="l00075"></a>00075                 
+<a name="l00076"></a>00076         <span class="keywordflow">switch</span> (charactersRemaining) {
+<a name="l00077"></a>00077             <span class="keywordflow">case</span> 1: 
+<a name="l00078"></a>00078                 characterCopy = 2; 
+<a name="l00079"></a>00079                 <span class="keywordflow">break</span>;
+<a name="l00080"></a>00080                                 
+<a name="l00081"></a>00081             <span class="keywordflow">case</span> 2: 
+<a name="l00082"></a>00082                 characterCopy = 3; 
+<a name="l00083"></a>00083                 <span class="keywordflow">break</span>;
+<a name="l00084"></a>00084         } <span class="comment">// switch</span>
+<a name="l00085"></a>00085         
+<a name="l00086"></a>00086         <span class="keywordflow">for</span> (i = 0; i &lt; characterCopy; i++) {
+<a name="l00087"></a>00087             [result appendFormat:@"%c", gEncodingTable ];
+<a name="l00088"></a>00088                 }
+<a name="l00089"></a>00089                 
+<a name="l00090"></a>00090         <span class="keywordflow">for</span> (i = characterCopy; i &lt; 4; i++) {
+<a name="l00091"></a>00091             [result appendFormat:@"%c", '='];
+<a name="l00092"></a>00092                 }
+<a name="l00093"></a>00093                 
+<a name="l00094"></a>00094         textIndex += 3;
+<a name="l00095"></a>00095                 
+<a name="l00096"></a>00096         charactersOnLine += 4;
+<a name="l00097"></a>00097                 
+<a name="l00098"></a>00098         <span class="keywordflow">if</span> (lineLength &gt; 0) { <span class="comment">// DW 4/8/97 -- 0 means no line breaks </span>
+<a name="l00099"></a>00099             <span class="keywordflow">if</span> (charactersOnLine &gt;= lineLength) {
+<a name="l00100"></a>00100                 charactersOnLine = 0;
+<a name="l00101"></a>00101                                 
+<a name="l00102"></a>00102                 [result appendString:@"\n"];
+<a name="l00103"></a>00103             }
+<a name="l00104"></a>00104         }
+<a name="l00105"></a>00105     } <span class="comment">// while</span>
+<a name="l00106"></a>00106         
+<a name="l00107"></a>00107         <span class="keywordflow">return</span> result;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 
+<a name="l00110"></a><a class="code" href="class_n_s_string.html#c2b51eed1aa63e40c40c83493e7f20bc">00110</a> - (NSString *)stringUsingBase64Decoding {
+<a name="l00111"></a>00111         <span class="keywordflow">return</span> [[<span class="keyword">self</span> <a class="code" href="class_n_s_string.html#d08d6931808b2a32959aec3c01ff888c">dataUsingBase64Decoding</a>] <a class="code" href="class_n_s_data.html#9933fa808046199808caf464e395f642">stringUsingEncoding</a>:NSUTF8StringEncoding];
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113 
+<a name="l00114"></a><a class="code" href="class_n_s_string.html#d08d6931808b2a32959aec3c01ff888c">00114</a> - (NSData *)dataUsingBase64Decoding {
+<a name="l00115"></a>00115         NSMutableData *decodedData;
+<a name="l00116"></a>00116         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textIndex;
+<a name="l00117"></a>00117         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textLength;
+<a name="l00118"></a>00118         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ch;
+<a name="l00119"></a>00119         <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> inputBuffer, outputBuffer;
+<a name="l00120"></a>00120         <span class="keywordtype">short</span> i, indexInBuffer;
+<a name="l00121"></a>00121         BOOL shouldIgnore;
+<a name="l00122"></a>00122         BOOL isEndOfText = NO;
+<a name="l00123"></a>00123         
+<a name="l00124"></a>00124         textLength = [<span class="keyword">self</span> length];
+<a name="l00125"></a>00125         decodedData = [NSMutableData dataWithCapacity:textLength];
+<a name="l00126"></a>00126         
+<a name="l00127"></a>00127         textIndex = 0;
+<a name="l00128"></a>00128         indexInBuffer = 0;
+<a name="l00129"></a>00129         
+<a name="l00130"></a>00130         <span class="keywordflow">while</span> (YES) {
+<a name="l00131"></a>00131                 <span class="keywordflow">if</span> (textIndex &gt;= textLength) {
+<a name="l00132"></a>00132                         <span class="keywordflow">break</span>;
+<a name="l00133"></a>00133                 }
+<a name="l00134"></a>00134                 
+<a name="l00135"></a>00135                 ch = [<span class="keyword">self</span> characterAtIndex:textIndex++];
+<a name="l00136"></a>00136                 
+<a name="l00137"></a>00137                 shouldIgnore = NO;
+<a name="l00138"></a>00138                 
+<a name="l00139"></a>00139                 <span class="keywordflow">if</span> ((ch &gt;= <span class="charliteral">'A'</span>) &amp;&amp; (ch &lt;= <span class="charliteral">'Z'</span>)) {
+<a name="l00140"></a>00140                         ch = ch - <span class="charliteral">'A'</span>;
+<a name="l00141"></a>00141                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((ch &gt;= <span class="charliteral">'a'</span>) &amp;&amp; (ch &lt;= <span class="charliteral">'z'</span>)) {
+<a name="l00142"></a>00142                         ch = ch - <span class="charliteral">'a'</span> + 26;
+<a name="l00143"></a>00143                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((ch &gt;= <span class="charliteral">'0'</span>) &amp;&amp; (ch &lt;= <span class="charliteral">'9'</span>)) {
+<a name="l00144"></a>00144                         ch = ch - <span class="charliteral">'0'</span> + 52;
+<a name="l00145"></a>00145                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">'+'</span>) {
+<a name="l00146"></a>00146                         ch = 62;
+<a name="l00147"></a>00147                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">'='</span>) { <span class="comment">// no op -- can't ignore this one </span>
+<a name="l00148"></a>00148                         isEndOfText = YES;
+<a name="l00149"></a>00149                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ch == <span class="charliteral">'/'</span>) {
+<a name="l00150"></a>00150                         ch = 63;
+<a name="l00151"></a>00151                 } <span class="keywordflow">else</span> {
+<a name="l00152"></a>00152                         shouldIgnore = YES;
+<a name="l00153"></a>00153                 }
+<a name="l00154"></a>00154                 
+<a name="l00155"></a>00155                 <span class="keywordflow">if</span> (!shouldIgnore) {
+<a name="l00156"></a>00156                         <span class="keywordtype">short</span>   charactersInBuffer = 3;
+<a name="l00157"></a>00157                         BOOL    shouldBreak = NO;
+<a name="l00158"></a>00158                         
+<a name="l00159"></a>00159                         <span class="keywordflow">if</span> (isEndOfText) {
+<a name="l00160"></a>00160                                 <span class="keywordflow">if</span> (indexInBuffer == 0) {
+<a name="l00161"></a>00161                                         <span class="keywordflow">break</span>;
+<a name="l00162"></a>00162                                 }
+<a name="l00163"></a>00163                                 
+<a name="l00164"></a>00164                                 <span class="keywordflow">if</span> ((indexInBuffer == 1) || (indexInBuffer == 2)) {
+<a name="l00165"></a>00165                                         charactersInBuffer = 1;
+<a name="l00166"></a>00166                                 } <span class="keywordflow">else</span> {
+<a name="l00167"></a>00167                                         charactersInBuffer = 2;
+<a name="l00168"></a>00168                                 }
+<a name="l00169"></a>00169                                 
+<a name="l00170"></a>00170                                 indexInBuffer = 3;
+<a name="l00171"></a>00171                                 
+<a name="l00172"></a>00172                                 shouldBreak = YES;
+<a name="l00173"></a>00173                         }
+<a name="l00174"></a>00174                         
+<a name="l00175"></a>00175                         inputBuffer = ch;
+<a name="l00176"></a>00176                         
+<a name="l00177"></a>00177                         <span class="keywordflow">if</span> (indexInBuffer == 4) {
+<a name="l00178"></a>00178                                 indexInBuffer = 0;
+<a name="l00179"></a>00179                                 
+<a name="l00180"></a>00180                                 outputBuffer = (inputBuffer &lt;&lt; 2) | ((inputBuffer[1] &amp; 0x30) &gt;&gt; 4);
+<a name="l00181"></a>00181                                 
+<a name="l00182"></a>00182                                 outputBuffer = ((inputBuffer &amp; 0x0F) &lt;&lt; 4) | ((inputBuffer &amp; 0x3C) &gt;&gt; 2);
+<a name="l00183"></a>00183                                 
+<a name="l00184"></a>00184                                 outputBuffer = ((inputBuffer &amp; 0x03) &lt;&lt; 6) | (inputBuffer &amp; 0x3F);
+<a name="l00185"></a>00185                                 
+<a name="l00186"></a>00186                                 <span class="keywordflow">for</span> (i = 0; i &lt; charactersInBuffer; i++) {
+<a name="l00187"></a>00187                                         [decodedData appendBytes:&amp;outputBuffer[i] length:1 ];
+<a name="l00188"></a>00188                                 }
+<a name="l00189"></a>00189                         }
+<a name="l00190"></a>00190                         
+<a name="l00191"></a>00191                         <span class="keywordflow">if</span> (shouldBreak) {
+<a name="l00192"></a>00192                                 <span class="keywordflow">break</span>;
+<a name="l00193"></a>00193                         }
+<a name="l00194"></a>00194                 }
+<a name="l00195"></a>00195                 
+<a name="l00196"></a>00196         } <span class="comment">// while</span>
+<a name="l00197"></a>00197         
+<a name="l00198"></a>00198         <span class="keywordflow">return</span> decodedData;
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200 
+<a name="l00201"></a><a class="code" href="class_n_s_string.html#64cdc295311d273c82659fc3cf77a468">00201</a> - (NSString *)stringUsingSHA1HexadecimalHash
+<a name="l00202"></a>00202 {
+<a name="l00203"></a>00203     <span class="keywordtype">int</span> i;
+<a name="l00204"></a>00204     <a class="code" href="class_n_s_string.html">NSString</a> *rawString = [<span class="keyword">self</span> <a class="code" href="class_n_s_string.html#2808d1a2dc8d374c330d1d8b1f81edf4">stringUsingSHA1RawHash</a>];
+<a name="l00205"></a>00205         <span class="keywordtype">int</span> stringLength = [rawString length];
+<a name="l00206"></a>00206         NSMutableString *hexString = [NSMutableString stringWithCapacity:stringLength];
+<a name="l00207"></a>00207         
+<a name="l00208"></a>00208     <span class="keywordflow">for</span>(i=0; i &lt; stringLength; i++) {
+<a name="l00209"></a>00209         [hexString appendFormat:<span class="stringliteral">@"%02x"</span>, [rawString characterAtIndex:i]];
+<a name="l00210"></a>00210     }
+<a name="l00211"></a>00211         
+<a name="l00212"></a>00212     <span class="keywordflow">return</span> hexString;
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 
+<a name="l00215"></a><a class="code" href="class_n_s_string.html#2808d1a2dc8d374c330d1d8b1f81edf4">00215</a> - (NSString *)stringUsingSHA1RawHash {
+<a name="l00216"></a>00216         <span class="comment">// these are structs and arrays used by the evp message digest functions </span>
+<a name="l00217"></a>00217     EVP_MD_CTX mdctx; 
+<a name="l00218"></a>00218     <span class="keyword">const</span> EVP_MD *md;
+<a name="l00219"></a>00219     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> md_value; 
+<a name="l00220"></a>00220     <span class="keywordtype">int</span> md_len;
+<a name="l00221"></a>00221     
+<a name="l00222"></a>00222     OpenSSL_add_all_digests(); 
+<a name="l00223"></a>00223     <span class="comment">// create a SHA digest </span>
+<a name="l00224"></a>00224     md = EVP_get_digestbyname(<span class="stringliteral">"sha1"</span>); 
+<a name="l00225"></a>00225     EVP_DigestInit(&amp;mdctx, md); 
+<a name="l00226"></a>00226     EVP_DigestUpdate(&amp;mdctx, [<span class="keyword">self</span> cString], [<span class="keyword">self</span> cStringLength]); 
+<a name="l00227"></a>00227     EVP_DigestFinal(&amp;mdctx, md_value, &amp;md_len);
+<a name="l00228"></a>00228     
+<a name="l00229"></a>00229         <span class="comment">// Must use NSASCIIStringEncoding encoding or it won't work</span>
+<a name="l00230"></a>00230     <span class="keywordflow">return</span> [[[<a class="code" href="class_n_s_string.html">NSString</a> alloc] initWithData:[<a class="code" href="class_n_s_data.html">NSData</a> dataWithBytes:md_value length:md_len] encoding:NSASCIIStringEncoding] autorelease];
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 
+<a name="l00233"></a><a class="code" href="class_n_s_string.html#7c1635055fe0580b8de2b9213fbfccb6">00233</a> - (NSString *)stringByUnescapingHTMLEntities {
+<a name="l00234"></a>00234         NSMutableString *unescapedString = [NSMutableString stringWithString:self];
+<a name="l00235"></a>00235         [unescapedString replaceOccurrencesOfString:@"&amp;amp;" withString:@"&amp;" options:0 range:NSMakeRange(0, [unescapedString length])];
+<a name="l00236"></a>00236         [unescapedString replaceOccurrencesOfString:@"&amp;lt;" withString:@"&lt;" options:0 range:NSMakeRange(0, [unescapedString length])];
+<a name="l00237"></a>00237         [unescapedString replaceOccurrencesOfString:@"&amp;gt;" withString:@"&gt;" options:0 range:NSMakeRange(0, [unescapedString length])];
+<a name="l00238"></a>00238         [unescapedString replaceOccurrencesOfString:@"&amp;quot;" withString:@"\"" options:0 range:NSMakeRange(0, [unescapedString length])];                       
+<a name="l00239"></a>00239         
+<a name="l00240"></a>00240         <span class="keywordflow">return</span> unescapedString;
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242 
+<a name="l00243"></a><a class="code" href="class_n_s_string.html#16cf4f896987682a28200fb2a5cf7cc4">00243</a> - (NSString *)stringByEscapingHTMLEntities {
+<a name="l00244"></a>00244         NSMutableString *escapedString = [NSMutableString stringWithString:self];
+<a name="l00245"></a>00245         [escapedString replaceOccurrencesOfString:@"&amp;" withString:@"&amp;amp;" options:0 range:NSMakeRange(0, [escapedString length])];
+<a name="l00246"></a>00246         [escapedString replaceOccurrencesOfString:@"&lt;" withString:@"&amp;lt;" options:0 range:NSMakeRange(0, [escapedString length])];
+<a name="l00247"></a>00247         [escapedString replaceOccurrencesOfString:@"&gt;" withString:@"&amp;gt;" options:0 range:NSMakeRange(0, [escapedString length])];
+<a name="l00248"></a>00248         [escapedString replaceOccurrencesOfString:@"\"" withString:@"&amp;quot;" options:0 range:NSMakeRange(0, [escapedString length])];                   
+<a name="l00249"></a>00249         
+<a name="l00250"></a>00250         <span class="keywordflow">return</span> escapedString;
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 
+<a name="l00253"></a><a class="code" href="class_n_s_string.html#2038088a0d25570ad2c322b9b24c2d7f">00253</a> - (NSString *)stringByAddingPercentEscapes {
+<a name="l00254"></a>00254         <span class="keywordflow">return</span> [(<a class="code" href="class_n_s_string.html">NSString</a>*)<a class="code" href="class_n_s_string.html">CFURLCreateStringByAddingPercentEscapes</a>(kCFAllocatorDefault, (CFStringRef)self, NULL, NULL, kCFStringEncodingUTF8) autorelease];     
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256 
+<a name="l00257"></a><a class="code" href="class_n_s_string.html#737f4af1331c8920a5fa4ba222c26bda">00257</a> - (NSString *)stringByReplacingPercentEscapes {
+<a name="l00258"></a>00258         <span class="keywordflow">return</span> [(<a class="code" href="class_n_s_string.html">NSString</a>*)<a class="code" href="class_n_s_string.html">CFURLCreateStringByReplacingPercentEscapes</a>(kCFAllocatorDefault, (CFStringRef)self, (CFStringRef) @"") autorelease];  
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260 <span class="keyword">@end</span>
+<a name="l00261"></a>00261 
+<a name="l00262"></a><a class="code" href="class_n_s_data.html">00262</a> <span class="keyword">@implementation </span><a class="code" href="class_n_s_data.html">NSData</a> (AtomExtensions)
+<a name="l00263"></a><a class="code" href="class_n_s_data.html#9933fa808046199808caf464e395f642">00263</a> - (NSString *)stringUsingEncoding:(NSStringEncoding)encoding {
+<a name="l00264"></a>00264         <span class="keywordflow">return</span> [[[<a class="code" href="class_n_s_string.html">NSString</a> alloc] initWithData:self encoding:encoding] autorelease];
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266 
+<a name="l00267"></a><a class="code" href="class_n_s_data.html#e8badbe9d97b8f7d86eb2d858ce458b6">00267</a> - (NSString *)stringUsingBase64Encoding {
+<a name="l00268"></a>00268         <span class="keywordflow">return</span> [<span class="keyword">self</span> <a class="code" href="class_n_s_data.html#d4b3e4eaad2fa6f1e663ce3ac27efd89">stringUsingBase64EncodingWithLineLength</a>:0];
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270 
+<a name="l00271"></a><a class="code" href="class_n_s_data.html#d4b3e4eaad2fa6f1e663ce3ac27efd89">00271</a> - (NSString *)stringUsingBase64EncodingWithLineLength:(<span class="keywordtype">int</span>)lineLength {
+<a name="l00272"></a>00272         <span class="comment">/*</span>
+<a name="l00273"></a>00273 <span class="comment">         Encode the NSData. Some funny stuff about linelength -- it only makes</span>
+<a name="l00274"></a>00274 <span class="comment">         sense to make it a multiple of 4. If it's not a multiple of 4, we make it</span>
+<a name="l00275"></a>00275 <span class="comment">         so (by only checking it every 4 characters). </span>
+<a name="l00276"></a>00276 <span class="comment">         </span>
+<a name="l00277"></a>00277 <span class="comment">         Further, if it's 0, we don't add any line breaks at all.</span>
+<a name="l00278"></a>00278 <span class="comment">         */</span>
+<a name="l00279"></a>00279         
+<a name="l00280"></a>00280         <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>     *bytes = [<span class="keyword">self</span> bytes];
+<a name="l00281"></a>00281     NSMutableString *result = nil;
+<a name="l00282"></a>00282     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textIndex;
+<a name="l00283"></a>00283     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> textLength;
+<a name="l00284"></a>00284     <span class="keywordtype">long</span> charactersRemaining;
+<a name="l00285"></a>00285     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> inputBuffer, outputBuffer;
+<a name="l00286"></a>00286     <span class="keywordtype">short</span> i;
+<a name="l00287"></a>00287     <span class="keywordtype">short</span> charactersOnLine = 0, characterCopy;
+<a name="l00288"></a>00288     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> index;
+<a name="l00289"></a>00289         
+<a name="l00290"></a>00290         
+<a name="l00291"></a>00291     textIndex = 0;
+<a name="l00292"></a>00292         
+<a name="l00293"></a>00293     textLength = [<span class="keyword">self</span> length];
+<a name="l00294"></a>00294     result = [NSMutableString stringWithCapacity:textLength];
+<a name="l00295"></a>00295         
+<a name="l00296"></a>00296     <span class="keywordflow">while</span> (YES) {
+<a name="l00297"></a>00297         charactersRemaining = textLength - textIndex;
+<a name="l00298"></a>00298                 
+<a name="l00299"></a>00299         <span class="keywordflow">if</span> (charactersRemaining &lt;= 0) {
+<a name="l00300"></a>00300             <span class="keywordflow">break</span>;
+<a name="l00301"></a>00301                 }
+<a name="l00302"></a>00302                 
+<a name="l00303"></a>00303         <span class="keywordflow">for</span> (i = 0; i &lt; 3; i++) {
+<a name="l00304"></a>00304             index = textIndex + i;
+<a name="l00305"></a>00305                         
+<a name="l00306"></a>00306             <span class="keywordflow">if</span> (index &lt; textLength) {
+<a name="l00307"></a>00307                 inputBuffer[i] = bytes[index];
+<a name="l00308"></a>00308                         } <span class="keywordflow">else</span> {
+<a name="l00309"></a>00309                 inputBuffer = 0;
+<a name="l00310"></a>00310                         }
+<a name="l00311"></a>00311         } <span class="comment">// for</span>
+<a name="l00312"></a>00312                 
+<a name="l00313"></a>00313         outputBuffer = (inputBuffer &amp; 0xFC) &gt;&gt; 2;
+<a name="l00314"></a>00314         outputBuffer = ((inputBuffer &amp; 0x03) &lt;&lt; 4) | ((inputBuffer &amp; 0xF0) &gt;&gt; 4);
+<a name="l00315"></a>00315         outputBuffer = ((inputBuffer &amp; 0x0F) &lt;&lt; 2) | ((inputBuffer &amp; 0xC0) &gt;&gt; 6);
+<a name="l00316"></a>00316         outputBuffer = inputBuffer &amp; 0x3F;
+<a name="l00317"></a>00317                 
+<a name="l00318"></a>00318         characterCopy = 4;
+<a name="l00319"></a>00319                 
+<a name="l00320"></a>00320         <span class="keywordflow">switch</span> (charactersRemaining) {
+<a name="l00321"></a>00321             <span class="keywordflow">case</span> 1: 
+<a name="l00322"></a>00322                 characterCopy = 2; 
+<a name="l00323"></a>00323                 <span class="keywordflow">break</span>;
+<a name="l00324"></a>00324                                 
+<a name="l00325"></a>00325             <span class="keywordflow">case</span> 2: 
+<a name="l00326"></a>00326                 characterCopy = 3; 
+<a name="l00327"></a>00327                 <span class="keywordflow">break</span>;
+<a name="l00328"></a>00328         } <span class="comment">// switch</span>
+<a name="l00329"></a>00329         
+<a name="l00330"></a>00330         <span class="keywordflow">for</span> (i = 0; i &lt; characterCopy; i++) {
+<a name="l00331"></a>00331             [result appendFormat:@"%c", gEncodingTable ];
+<a name="l00332"></a>00332                 }
+<a name="l00333"></a>00333                 
+<a name="l00334"></a>00334         <span class="keywordflow">for</span> (i = characterCopy; i &lt; 4; i++) {
+<a name="l00335"></a>00335             [result appendFormat:@"%c", '='];
+<a name="l00336"></a>00336                 }
+<a name="l00337"></a>00337                 
+<a name="l00338"></a>00338         textIndex += 3;
+<a name="l00339"></a>00339                 
+<a name="l00340"></a>00340         charactersOnLine += 4;
+<a name="l00341"></a>00341                 
+<a name="l00342"></a>00342         <span class="keywordflow">if</span> (lineLength &gt; 0) { <span class="comment">// DW 4/8/97 -- 0 means no line breaks </span>
+<a name="l00343"></a>00343             <span class="keywordflow">if</span> (charactersOnLine &gt;= lineLength) {
+<a name="l00344"></a>00344                 charactersOnLine = 0;
+<a name="l00345"></a>00345                                 
+<a name="l00346"></a>00346                 [result appendString:@"\n"];
+<a name="l00347"></a>00347             }
+<a name="l00348"></a>00348         }
+<a name="l00349"></a>00349     } <span class="comment">// while</span>
+<a name="l00350"></a>00350         
+<a name="l00351"></a>00351         <span class="keywordflow">return</span> result;
+<a name="l00352"></a>00352 }
+<a name="l00353"></a>00353 <span class="keyword">@end</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_app_controller_8h.html
===================================================================
--- /tags/release-0.8/docs/html/_app_controller_8h.html (revision 24)
+++ /tags/release-0.8/docs/html/_app_controller_8h.html (revision 24)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: AppController.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>AppController.h File Reference</h1>
+<p>
+<a href="_app_controller_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_app_controller.html">AppController</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioe7ed2e826a59ca9f86fc02b15ec543d6.html
===================================================================
--- /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioe7ed2e826a59ca9f86fc02b15ec543d6.html (revision 20)
+++ /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioe7ed2e826a59ca9f86fc02b15ec543d6.html (revision 20)
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/Current/Headers/Growl.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/Current/Headers/Growl.h File Reference</h1>
+<p>
+<a href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio656da938c3d735bb3cd962ea0678cbc2.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_atom_extensions_8m.html
===================================================================
--- /tags/release-0.8/docs/html/_atom_extensions_8m.html (revision 24)
+++ /tags/release-0.8/docs/html/_atom_extensions_8m.html (revision 24)
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: AtomExtensions.m File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>AtomExtensions.m File Reference</h1>
+<p>
+<a href="_atom_extensions_8m-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static AtomExtensions char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="_atom_extensions_8m.html#f102258404f1888084d433741a8fb3f5">gEncodingTable</a> [64]</td></tr>
+
+</table>
+<hr><h2>Variable Documentation</h2>
+<a class="anchor" name="f102258404f1888084d433741a8fb3f5"></a><!-- doxytag: member="AtomExtensions.m::gEncodingTable" ref="f102258404f1888084d433741a8fb3f5" args="[64]" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">AtomExtensions char <a class="el" href="_atom_extensions_8m.html#f102258404f1888084d433741a8fb3f5">gEncodingTable</a>[64]<code> [static]</code>          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
+        <span class="charliteral">'A'</span>,<span class="charliteral">'B'</span>,<span class="charliteral">'C'</span>,<span class="charliteral">'D'</span>,<span class="charliteral">'E'</span>,<span class="charliteral">'F'</span>,<span class="charliteral">'G'</span>,<span class="charliteral">'H'</span>,<span class="charliteral">'I'</span>,<span class="charliteral">'J'</span>,<span class="charliteral">'K'</span>,<span class="charliteral">'L'</span>,<span class="charliteral">'M'</span>,<span class="charliteral">'N'</span>,<span class="charliteral">'O'</span>,<span class="charliteral">'P'</span>,
+        <span class="charliteral">'Q'</span>,<span class="charliteral">'R'</span>,<span class="charliteral">'S'</span>,<span class="charliteral">'T'</span>,<span class="charliteral">'U'</span>,<span class="charliteral">'V'</span>,<span class="charliteral">'W'</span>,<span class="charliteral">'X'</span>,<span class="charliteral">'Y'</span>,<span class="charliteral">'Z'</span>,<span class="charliteral">'a'</span>,<span class="charliteral">'b'</span>,<span class="charliteral">'c'</span>,<span class="charliteral">'d'</span>,<span class="charliteral">'e'</span>,<span class="charliteral">'f'</span>,
+        <span class="charliteral">'g'</span>,<span class="charliteral">'h'</span>,<span class="charliteral">'i'</span>,<span class="charliteral">'j'</span>,<span class="charliteral">'k'</span>,<span class="charliteral">'l'</span>,<span class="charliteral">'m'</span>,<span class="charliteral">'n'</span>,<span class="charliteral">'o'</span>,<span class="charliteral">'p'</span>,<span class="charliteral">'q'</span>,<span class="charliteral">'r'</span>,<span class="charliteral">'s'</span>,<span class="charliteral">'t'</span>,<span class="charliteral">'u'</span>,<span class="charliteral">'v'</span>,
+        <span class="charliteral">'w'</span>,<span class="charliteral">'x'</span>,<span class="charliteral">'y'</span>,<span class="charliteral">'z'</span>,<span class="charliteral">'0'</span>,<span class="charliteral">'1'</span>,<span class="charliteral">'2'</span>,<span class="charliteral">'3'</span>,<span class="charliteral">'4'</span>,<span class="charliteral">'5'</span>,<span class="charliteral">'6'</span>,<span class="charliteral">'7'</span>,<span class="charliteral">'8'</span>,<span class="charliteral">'9'</span>,<span class="charliteral">'+'</span>,<span class="charliteral">'/'</span>
+}
+</pre></div>
+<p>
+Definition at line <a class="el" href="_atom_extensions_8m-source.html#l00017">17</a> of file <a class="el" href="_atom_extensions_8m-source.html">AtomExtensions.m</a>.    </td>
+  </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/class_n_s_string-members.html
===================================================================
--- /tags/release-0.8/docs/html/class_n_s_string-members.html (revision 24)
+++ /tags/release-0.8/docs/html/class_n_s_string-members.html (revision 24)
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSString Member List</h1>This is the complete list of members for <a class="el" href="class_n_s_string.html">NSString</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#d08d6931808b2a32959aec3c01ff888c">dataUsingBase64Decoding</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#2038088a0d25570ad2c322b9b24c2d7f">stringByAddingPercentEscapes</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#16cf4f896987682a28200fb2a5cf7cc4">stringByEscapingHTMLEntities</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#737f4af1331c8920a5fa4ba222c26bda">stringByReplacingPercentEscapes</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#7c1635055fe0580b8de2b9213fbfccb6">stringByUnescapingHTMLEntities</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#c2b51eed1aa63e40c40c83493e7f20bc">stringUsingBase64Decoding</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#67b713131df3c84eac1d99700e8c0e4a">stringUsingBase64Encoding</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#1d606bafedf6fb12e03c758672be0df5">stringUsingBase64EncodingWithLineLength:</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#64cdc295311d273c82659fc3cf77a468">stringUsingSHA1HexadecimalHash</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_string.html#2808d1a2dc8d374c330d1d8b1f81edf4">stringUsingSHA1RawHash</a></td><td><a class="el" href="class_n_s_string.html">NSString</a></td><td></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiobaa0b9f3d13ba969f9e778548ea3ceaf.html
===================================================================
--- /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiobaa0b9f3d13ba969f9e778548ea3ceaf.html (revision 20)
+++ /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiobaa0b9f3d13ba969f9e778548ea3ceaf.html (revision 20)
@@ -0,0 +1,159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h</h1><a href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiocfd6286ae28e8bed5a5e9607fe2d4333.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  GrowlApplicationBridge.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  Growl</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Evan Schoenberg on Wed Jun 16 2004.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2004-2005 The Growl Project. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00016"></a>00016 <span class="preprocessor">#ifndef __GrowlApplicationBridge_h__</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define __GrowlApplicationBridge_h__</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#import &lt;Foundation/Foundation.h&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#import "<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio76989d02fafc246a0979e6c55a5f2d0f.html">GrowlDefines.h</a>"</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="comment">//Forward declarations</span>
+<a name="l00023"></a>00023 <span class="keyword">@protocol </span>GrowlApplicationBridgeDelegate;
+<a name="l00024"></a>00024 
+<a name="l00029"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiocfd6286ae28e8bed5a5e9607fe2d4333.html#8196ba3d47632dc7f2d8887283db20bc">00029</a> <span class="preprocessor">#define GROWL_PREFPANE_BUNDLE_IDENTIFIER        </span><span class="stringliteral">@"com.growl.prefpanel"</span>
+<a name="l00030"></a>00030 
+<a name="l00035"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiocfd6286ae28e8bed5a5e9607fe2d4333.html#594e38152e4968b55d53fbb7c9acfecc">00035</a> <span class="preprocessor">#define GROWL_PREFPANE_NAME                                     </span><span class="stringliteral">@"Growl.prefPane"</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="comment">//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation)</span>
+<a name="l00038"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versiocfd6286ae28e8bed5a5e9607fe2d4333.html#f756884c11ea6bd4c1bac263ff656da2">00038</a> <span class="preprocessor">#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION </span><span class="stringliteral">@"User chose not to install"</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#pragma mark -</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00051"></a>00051 <span class="keyword">@interface </span><a class="code" href="interface_growl_application_bridge.html">GrowlApplicationBridge</a> : NSObject {
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 
+<a name="l00061"></a>00061 + (BOOL) isGrowlInstalled;
+<a name="l00062"></a>00062 
+<a name="l00069"></a>00069 + (BOOL) isGrowlRunning;
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="preprocessor">#pragma mark -</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 + (<span class="keywordtype">void</span>) setGrowlDelegate:(NSObject&lt;GrowlApplicationBridgeDelegate&gt; *)inDelegate;
+<a name="l00102"></a>00102 
+<a name="l00109"></a>00109 + (NSObject&lt;GrowlApplicationBr<span class="keywordtype">id</span>geDelegate&gt; *) growlDelegate;
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#pragma mark -</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00137"></a>00137 + (<span class="keywordtype">void</span>) notifyWithTitle:(NSString *)title
+<a name="l00138"></a>00138                          description:(NSString *)description
+<a name="l00139"></a>00139                 notificationName:(NSString *)notifName
+<a name="l00140"></a>00140                                 iconData:(NSData *)iconData
+<a name="l00141"></a>00141                                 priority:(<span class="keywordtype">signed</span> <span class="keywordtype">int</span>)priority
+<a name="l00142"></a>00142                                 isSticky:(BOOL)isSticky
+<a name="l00143"></a>00143                         clickContext:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00144"></a>00144 
+<a name="l00170"></a>00170 + (<span class="keywordtype">void</span>) notifyWithTitle:(NSString *)title
+<a name="l00171"></a>00171                          description:(NSString *)description
+<a name="l00172"></a>00172                 notificationName:(NSString *)notifName
+<a name="l00173"></a>00173                                 iconData:(NSData *)iconData
+<a name="l00174"></a>00174                                 priority:(<span class="keywordtype">signed</span> <span class="keywordtype">int</span>)priority
+<a name="l00175"></a>00175                                 isSticky:(BOOL)isSticky
+<a name="l00176"></a>00176                         clickContext:(<span class="keywordtype">id</span>)clickContext
+<a name="l00177"></a>00177                           identifier:(NSString *)identifier;
+<a name="l00178"></a>00178 
+<a name="l00193"></a>00193 + (<span class="keywordtype">void</span>) notifyWithDictionary:(NSDictionary *)userInfo;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195 <span class="preprocessor">#pragma mark -</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00216"></a>00216 + (BOOL) registerWithDictionary:(NSDictionary *)regDict;
+<a name="l00217"></a>00217 
+<a name="l00228"></a>00228 + (<span class="keywordtype">void</span>) reregisterGrowlNotifications;
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230 <span class="preprocessor">#pragma mark -</span>
+<a name="l00231"></a>00231 <span class="preprocessor"></span>
+<a name="l00248"></a>00248 + (<span class="keywordtype">void</span>) setWillRegisterWhenGrowlIsReady:(BOOL)flag;
+<a name="l00255"></a>00255 + (BOOL) willRegisterWhenGrowlIsReady;
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257 <span class="preprocessor">#pragma mark -</span>
+<a name="l00258"></a>00258 <span class="preprocessor"></span>
+<a name="l00276"></a>00276 + (NSDictionary *) registrationDictionaryFromDelegate;
+<a name="l00277"></a>00277 
+<a name="l00299"></a>00299 + (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle;
+<a name="l00300"></a>00300 
+<a name="l00325"></a>00325 + (NSDictionary *) bestRegistrationDictionary;
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327 <span class="preprocessor">#pragma mark -</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>
+<a name="l00349"></a>00349 + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict;
+<a name="l00372"></a>00372 + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys;
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374 <span class="keyword">@end</span>
+<a name="l00375"></a>00375 
+<a name="l00376"></a>00376 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00377"></a>00377 <span class="preprocessor">#pragma mark -</span>
+<a name="l00378"></a>00378 <span class="preprocessor"></span>
+<a name="l00388"></a>00388 <span class="keyword">@protocol </span>GrowlApplicationBridgeDelegate
+<a name="l00389"></a>00389 
+<a name="l00390"></a>00390 <span class="comment">// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7.</span>
+<a name="l00391"></a>00391 
+<a name="l00392"></a>00392 <span class="keyword">@end</span>
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00395"></a>00395 <span class="preprocessor">#pragma mark -</span>
+<a name="l00396"></a>00396 <span class="preprocessor"></span>
+<a name="l00402"></a>00402 <span class="keyword">@interface </span>NSObject (GrowlApplicationBridgeDelegate_InformalProtocol)
+<a name="l00403"></a>00403 
+<a name="l00429"></a>00429 - (NSDictionary *) registrationDictionaryForGrowl;
+<a name="l00430"></a>00430 
+<a name="l00448"></a>00448 - (NSString *) applicationNameForGrowl;
+<a name="l00449"></a>00449 
+<a name="l00458"></a>00458 - (NSData *) applicationIconDataForGrowl;
+<a name="l00459"></a>00459 
+<a name="l00468"></a>00468 - (<span class="keywordtype">void</span>) growlIsReady;
+<a name="l00469"></a>00469 
+<a name="l00480"></a>00480 - (<span class="keywordtype">void</span>) growlNotificationWasClicked:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00481"></a>00481 
+<a name="l00492"></a>00492 - (<span class="keywordtype">void</span>) growlNotificationTimedOut:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00493"></a>00493 
+<a name="l00494"></a>00494 <span class="keyword">@end</span>
+<a name="l00495"></a>00495 
+<a name="l00496"></a>00496 <span class="preprocessor">#pragma mark -</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span>
+<a name="l00505"></a>00505 <span class="keyword">@interface </span>NSObject (GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
+<a name="l00506"></a>00506 
+<a name="l00513"></a>00513 - (NSString *)growlInstallationWindowTitle;
+<a name="l00514"></a>00514 
+<a name="l00521"></a>00521 - (NSString *)growlUpdateWindowTitle;
+<a name="l00522"></a>00522 
+<a name="l00534"></a>00534 - (NSAttributedString *)growlInstallationInformation;
+<a name="l00535"></a>00535 
+<a name="l00547"></a>00547 - (NSAttributedString *)growlUpdateInformation;
+<a name="l00548"></a>00548 
+<a name="l00549"></a>00549 <span class="keyword">@end</span>
+<a name="l00550"></a>00550 
+<a name="l00551"></a>00551 <span class="comment">//private</span>
+<a name="l00552"></a>00552 <span class="keyword">@interface </span><a class="code" href="interface_growl_application_bridge.html">GrowlApplicationBridge</a> (GrowlInstallationPrompt_private)
+<a name="l00553"></a>00553 + (<span class="keywordtype">void</span>) _userChoseNotToInstallGrowl;
+<a name="l00554"></a>00554 <span class="keyword">@end</span>
+<a name="l00555"></a>00555 
+<a name="l00556"></a>00556 <span class="preprocessor">#endif </span><span class="comment">/* __GrowlApplicationBridge_h__ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/class_n_s_window-members.html
===================================================================
--- /tags/release-0.8/docs/html/class_n_s_window-members.html (revision 19)
+++ /tags/release-0.8/docs/html/class_n_s_window-members.html (revision 19)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSWindow Member List</h1>This is the complete list of members for <a class="el" href="class_n_s_window.html">NSWindow</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#bda684a1a90aca503fe12b04ed2b9a6b">dragRelativeToMouse</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#df9eafe2444d95e55427cf85d14df8e0">flipXAbout:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#edb1c2593a2bd6be0c8f7a488296aec7">flipYAbout:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#50e79d7d1a49e1940fbb84fcae51667e">reset</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#48f58219dbe23a48d5a1be1ea316adec">rotate:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#69442cdb7db0e392365a072efec1f730">rotate:about:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#93d6f1a037a42c226c7fb8723bbacd17">scaleX:Y:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#1678b16b84eb94f6621233e9dd8f88c4">scaleX:Y:about:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#051f43adc8d67c6fdd716648431169fd">screenToWindowCoordinates:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#8b61e2cd408ed46e70c31448dd6d5d4b">shearX:Y:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#57097943ca0cc59e535608b027d2e45b">shearX:Y:about:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="class_n_s_window.html#444b11100e3add6954c98b9553878e58">windowToScreenCoordinates:</a></td><td><a class="el" href="class_n_s_window.html">NSWindow</a></td><td></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:05:15 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioa6fca11eb2309b1de257ef458b9531f7.html
===================================================================
--- /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioa6fca11eb2309b1de257ef458b9531f7.html (revision 20)
+++ /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versioa6fca11eb2309b1de257ef458b9531f7.html (revision 20)
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h</h1><a href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio669d2eabf9b05520f77eeb77c3827dfd.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  GrowlApplicationBridge-Carbon.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  Growl</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Mac-arena the Bored Zo on Wed Jun 18 2004.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Based on GrowlApplicationBridge.h by Evan Schoenberg.</span>
+<a name="l00007"></a>00007 <span class="comment">//  This source code is in the public domain. You may freely link it into any</span>
+<a name="l00008"></a>00008 <span class="comment">//    program.</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 
+<a name="l00011"></a>00011 <span class="preprocessor">#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_</span>
+<a name="l00012"></a>00012 <span class="preprocessor"></span><span class="preprocessor">#define _GROWLAPPLICATIONBRIDGE_CARBON_H_</span>
+<a name="l00013"></a>00013 <span class="preprocessor"></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;sys/cdefs.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;Carbon/Carbon.h&gt;</span>
+<a name="l00016"></a>00016 
+<a name="l00029"></a>00029 __BEGIN_DECLS
+<a name="l00030"></a>00030 
+<a name="l00055"></a>00055 <span class="keyword">struct </span><a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> {
+<a name="l00056"></a>00056         <span class="comment">/*      @discussion This should be sizeof(struct Growl_Delegate).</span>
+<a name="l00057"></a>00057 <span class="comment">         */</span>
+<a name="l00058"></a>00058         size_t <a class="code" href="struct_growl___delegate.html#90801a6d85e13a43f8944b310e302157">size</a>;
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060         <span class="comment">/*All of these attributes are optional.</span>
+<a name="l00061"></a>00061 <span class="comment">         *Optional attributes can be NULL; required attributes that</span>
+<a name="l00062"></a>00062 <span class="comment">         *       are NULL cause setting the Growl delegate to fail.</span>
+<a name="l00063"></a>00063 <span class="comment">         *XXX - move optional/required status into the discussion for each field</span>
+<a name="l00064"></a>00064 <span class="comment">         */</span>
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066         <span class="comment">/* This name is used both internally and in the Growl preferences.</span>
+<a name="l00067"></a>00067 <span class="comment">         *</span>
+<a name="l00068"></a>00068 <span class="comment">         *       This should remain stable between different versions and incarnations of</span>
+<a name="l00069"></a>00069 <span class="comment">         *       your application.</span>
+<a name="l00070"></a>00070 <span class="comment">         *       For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and</span>
+<a name="l00071"></a>00071 <span class="comment">         *       "SurfWriter Lite" are not.</span>
+<a name="l00072"></a>00072 <span class="comment">         *</span>
+<a name="l00073"></a>00073 <span class="comment">         * This can be &lt;code&gt;NULL&lt;/code&gt; if it is provided elsewhere, namely in an</span>
+<a name="l00074"></a>00074 <span class="comment">         *       auto-discoverable plist file in your app bundle</span>
+<a name="l00075"></a>00075 <span class="comment">         *       (XXX refer to more information on that) or in registrationDictionary.</span>
+<a name="l00076"></a>00076 <span class="comment">         */</span>
+<a name="l00077"></a>00077         CFStringRef <a class="code" href="struct_growl___delegate.html#c08703d712362d90ff6e17fa1e2d972a">applicationName</a>;
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079         <span class="comment">/*</span>
+<a name="l00080"></a>00080 <span class="comment">         * Must contain at least these keys:</span>
+<a name="l00081"></a>00081 <span class="comment">         *      GROWL_NOTIFICATIONS_ALL (CFArray):</span>
+<a name="l00082"></a>00082 <span class="comment">         *              Contains the names of all notifications your application may post.</span>
+<a name="l00083"></a>00083 <span class="comment">         *</span>
+<a name="l00084"></a>00084 <span class="comment">         * Can also contain these keys:</span>
+<a name="l00085"></a>00085 <span class="comment">         *      GROWL_NOTIFICATIONS_DEFAULT (CFArray):</span>
+<a name="l00086"></a>00086 <span class="comment">         *              Names of notifications that should be enabled by default.</span>
+<a name="l00087"></a>00087 <span class="comment">         *              If omitted, GROWL_NOTIFICATIONS_ALL will be used.</span>
+<a name="l00088"></a>00088 <span class="comment">         *      GROWL_APP_NAME (CFString):</span>
+<a name="l00089"></a>00089 <span class="comment">         *              Same as the applicationName member of this structure.</span>
+<a name="l00090"></a>00090 <span class="comment">         *              If both are present, the applicationName member shall prevail.</span>
+<a name="l00091"></a>00091 <span class="comment">         *              If this key is present, you may omit applicationName (set it to &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00092"></a>00092 <span class="comment">         *      GROWL_APP_ICON (CFData):</span>
+<a name="l00093"></a>00093 <span class="comment">         *              Same as the iconData member of this structure.</span>
+<a name="l00094"></a>00094 <span class="comment">         *              If both are present, the iconData member shall prevail.</span>
+<a name="l00095"></a>00095 <span class="comment">         *              If this key is present, you may omit iconData (set it to &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00096"></a>00096 <span class="comment">         *</span>
+<a name="l00097"></a>00097 <span class="comment">         * If you change the contents of this dictionary after setting the delegate,</span>
+<a name="l00098"></a>00098 <span class="comment">         *      be sure to call Growl_Reregister.</span>
+<a name="l00099"></a>00099 <span class="comment">         *</span>
+<a name="l00100"></a>00100 <span class="comment">         * This can be &lt;code&gt;NULL&lt;/code&gt; if you have an auto-discoverable plist file in your app</span>
+<a name="l00101"></a>00101 <span class="comment">         *       bundle. (XXX refer to more information on that)</span>
+<a name="l00102"></a>00102 <span class="comment">         */</span>
+<a name="l00103"></a>00103         CFDictionaryRef <a class="code" href="struct_growl___delegate.html#e8da8fa8328d51d9850eaab2e724414c">registrationDictionary</a>;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105         <span class="comment">/* The data can be in any format supported by NSImage. As of</span>
+<a name="l00106"></a>00106 <span class="comment">         *       Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and</span>
+<a name="l00107"></a>00107 <span class="comment">         *       PICT formats.</span>
+<a name="l00108"></a>00108 <span class="comment">         *</span>
+<a name="l00109"></a>00109 <span class="comment">         *       If this is not supplied, Growl will look up your application's icon by</span>
+<a name="l00110"></a>00110 <span class="comment">         *       its application name.</span>
+<a name="l00111"></a>00111 <span class="comment">         */</span>
+<a name="l00112"></a>00112         CFDataRef <a class="code" href="struct_growl___delegate.html#07236538ea5aa0c7efb70791706c4acb">applicationIconData</a>;
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114         <span class="comment">/* Installer display attributes</span>
+<a name="l00115"></a>00115 <span class="comment">         *</span>
+<a name="l00116"></a>00116 <span class="comment">         * These four attributes are used by the Growl installer, if this framework</span>
+<a name="l00117"></a>00117 <span class="comment">         *      supports it.</span>
+<a name="l00118"></a>00118 <span class="comment">         * For any of these being &lt;code&gt;NULL&lt;/code&gt;, a localised default will be</span>
+<a name="l00119"></a>00119 <span class="comment">         *      supplied.</span>
+<a name="l00120"></a>00120 <span class="comment">         */</span>
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122         <span class="comment">/*      If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default,</span>
+<a name="l00123"></a>00123 <span class="comment">         *       localized title.</span>
+<a name="l00124"></a>00124 <span class="comment">         *</span>
+<a name="l00125"></a>00125 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00126"></a>00126 <span class="comment">         *       this member is ignored.</span>
+<a name="l00127"></a>00127 <span class="comment">         */</span>
+<a name="l00128"></a>00128         CFStringRef <a class="code" href="struct_growl___delegate.html#652c9c3a8b9bf4ce2dee5a79465a9155">growlInstallationWindowTitle</a>;
+<a name="l00129"></a>00129         <span class="comment">/*      This information may be as long or short as desired (the</span>
+<a name="l00130"></a>00130 <span class="comment">         *       window will be sized to fit it).  If Growl is not installed, it will</span>
+<a name="l00131"></a>00131 <span class="comment">         *       be displayed to the user as an explanation of what Growl is and what</span>
+<a name="l00132"></a>00132 <span class="comment">         *       it can do in your application.</span>
+<a name="l00133"></a>00133 <span class="comment">         *       It should probably note that no download is required to install.</span>
+<a name="l00134"></a>00134 <span class="comment">         *</span>
+<a name="l00135"></a>00135 <span class="comment">         *       If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default, localized</span>
+<a name="l00136"></a>00136 <span class="comment">         *       explanation.</span>
+<a name="l00137"></a>00137 <span class="comment">         *</span>
+<a name="l00138"></a>00138 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00139"></a>00139 <span class="comment">         *       this member is ignored.</span>
+<a name="l00140"></a>00140 <span class="comment">         */</span>
+<a name="l00141"></a>00141         CFStringRef <a class="code" href="struct_growl___delegate.html#31e91b7c43b5ac236551d4dbe5f12014">growlInstallationInformation</a>;
+<a name="l00142"></a>00142         <span class="comment">/*      If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default,</span>
+<a name="l00143"></a>00143 <span class="comment">         *       localized title.</span>
+<a name="l00144"></a>00144 <span class="comment">         *</span>
+<a name="l00145"></a>00145 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00146"></a>00146 <span class="comment">         *       this member is ignored.</span>
+<a name="l00147"></a>00147 <span class="comment">         */</span>
+<a name="l00148"></a>00148         CFStringRef <a class="code" href="struct_growl___delegate.html#195ba4fea58de5467eb152ff519b5849">growlUpdateWindowTitle</a>;
+<a name="l00149"></a>00149         <span class="comment">/*      This information may be as long or short as desired (the</span>
+<a name="l00150"></a>00150 <span class="comment">         *       window will be sized to fit it).  If an older version of Growl is</span>
+<a name="l00151"></a>00151 <span class="comment">         *       installed, it will be displayed to the user as an explanation that an</span>
+<a name="l00152"></a>00152 <span class="comment">         *       updated version of Growl is included in your application and</span>
+<a name="l00153"></a>00153 <span class="comment">         *       no download is required.</span>
+<a name="l00154"></a>00154 <span class="comment">         *</span>
+<a name="l00155"></a>00155 <span class="comment">         *       If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default, localized</span>
+<a name="l00156"></a>00156 <span class="comment">         *       explanation.</span>
+<a name="l00157"></a>00157 <span class="comment">         *</span>
+<a name="l00158"></a>00158 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00159"></a>00159 <span class="comment">         *       this member is ignored.</span>
+<a name="l00160"></a>00160 <span class="comment">         */</span>
+<a name="l00161"></a>00161         CFStringRef <a class="code" href="struct_growl___delegate.html#4c66672205fc214cbb4b13b4dda5777d">growlUpdateInformation</a>;
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163         <span class="comment">/*      This member is provided for use by your retain and release</span>
+<a name="l00164"></a>00164 <span class="comment">         *       callbacks (see below).</span>
+<a name="l00165"></a>00165 <span class="comment">         *</span>
+<a name="l00166"></a>00166 <span class="comment">         *       GrowlApplicationBridge never directly uses this member. Instead, it</span>
+<a name="l00167"></a>00167 <span class="comment">         *       calls your retain callback (if non-&lt;code&gt;NULL&lt;/code&gt;) and your release</span>
+<a name="l00168"></a>00168 <span class="comment">         *       callback (if non-&lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00169"></a>00169 <span class="comment">         */</span>
+<a name="l00170"></a>00170         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___delegate.html#57c2a9f7da47b8f2f5a1ef23e261cbad">referenceCount</a>;
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172         <span class="comment">//Functions. Currently all of these are optional (any of them can be NULL).</span>
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174         <span class="comment">/*      When you call Growl_SetDelegate(newDelegate), it will call</span>
+<a name="l00175"></a>00175 <span class="comment">         *       oldDelegate-&gt;release(oldDelegate), and then it will call</span>
+<a name="l00176"></a>00176 <span class="comment">         *       newDelegate-&gt;retain(newDelegate), and the return value from retain</span>
+<a name="l00177"></a>00177 <span class="comment">         *       is what will be set as the delegate.</span>
+<a name="l00178"></a>00178 <span class="comment">         *       (This means that this member works like CFRetain and -[NSObject retain].)</span>
+<a name="l00179"></a>00179 <span class="comment">         *       This member is optional (it can be &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00180"></a>00180 <span class="comment">         *       For a delegate allocated with malloc, this member would be</span>
+<a name="l00181"></a>00181 <span class="comment">         *       &lt;code&gt;NULL&lt;/code&gt;.</span>
+<a name="l00182"></a>00182 <span class="comment">         *      @result A delegate to which GrowlApplicationBridge holds a reference.</span>
+<a name="l00183"></a>00183 <span class="comment">         */</span>
+<a name="l00184"></a>00184         <span class="keywordtype">void</span> *(*retain)(<span class="keywordtype">void</span> *);
+<a name="l00185"></a>00185         <span class="comment">/*      When you call Growl_SetDelegate(newDelegate), it will call</span>
+<a name="l00186"></a>00186 <span class="comment">         *       oldDelegate-&gt;release(oldDelegate), and then it will call</span>
+<a name="l00187"></a>00187 <span class="comment">         *       newDelegate-&gt;retain(newDelegate), and the return value from retain</span>
+<a name="l00188"></a>00188 <span class="comment">         *       is what will be set as the delegate.</span>
+<a name="l00189"></a>00189 <span class="comment">         *       (This means that this member works like CFRelease and</span>
+<a name="l00190"></a>00190 <span class="comment">         *        -[NSObject release].)</span>
+<a name="l00191"></a>00191 <span class="comment">         *       This member is optional (it can be NULL).</span>
+<a name="l00192"></a>00192 <span class="comment">         *       For a delegate allocated with malloc, this member might be</span>
+<a name="l00193"></a>00193 <span class="comment">         *       &lt;code&gt;free&lt;/code&gt;(3).</span>
+<a name="l00194"></a>00194 <span class="comment">         */</span>
+<a name="l00195"></a>00195         void (*<a class="code" href="struct_growl___delegate.html#5d4c84ab4ed61c9ad9718a375af57a1d">release</a>)(<span class="keywordtype">void</span> *);
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197         <span class="comment">/*      Informs the delegate that Growl (specifically, the GrowlHelperApp) was</span>
+<a name="l00198"></a>00198 <span class="comment">         *       launched successfully (or was already running). The application can</span>
+<a name="l00199"></a>00199 <span class="comment">         *       take actions with the knowledge that Growl is installed and functional.</span>
+<a name="l00200"></a>00200 <span class="comment">         */</span>
+<a name="l00201"></a>00201         void (*<a class="code" href="struct_growl___delegate.html#3bb2592b12bac4fe4d89e045a8f15fd7">growlIsReady</a>)(void);
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203         <span class="comment">/*      Informs the delegate that a Growl notification was clicked. It is only</span>
+<a name="l00204"></a>00204 <span class="comment">         *       sent for notifications sent with a non-&lt;code&gt;NULL&lt;/code&gt; clickContext,</span>
+<a name="l00205"></a>00205 <span class="comment">         *       so if you want to receive a message when a notification is clicked,</span>
+<a name="l00206"></a>00206 <span class="comment">         *       clickContext must not be &lt;code&gt;NULL&lt;/code&gt; when calling</span>
+<a name="l00207"></a>00207 <span class="comment">         *       Growl_PostNotification or</span>
+<a name="l00208"></a>00208 <span class="comment">         *       Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.</span>
+<a name="l00209"></a>00209 <span class="comment">         */</span>
+<a name="l00210"></a>00210         void (*<a class="code" href="struct_growl___delegate.html#a5e046bccb09e56a9ef56d7fbc8cbf80">growlNotificationWasClicked</a>)(CFPropertyListRef clickContext);
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212         <span class="comment">/*      Informs the delegate that a Growl notification timed out. It is only</span>
+<a name="l00213"></a>00213 <span class="comment">         *       sent for notifications sent with a non-&lt;code&gt;NULL&lt;/code&gt; clickContext,</span>
+<a name="l00214"></a>00214 <span class="comment">         *       so if you want to receive a message when a notification is clicked,</span>
+<a name="l00215"></a>00215 <span class="comment">         *       clickContext must not be &lt;code&gt;NULL&lt;/code&gt; when calling</span>
+<a name="l00216"></a>00216 <span class="comment">         *       Growl_PostNotification or</span>
+<a name="l00217"></a>00217 <span class="comment">         *       Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.</span>
+<a name="l00218"></a>00218 <span class="comment">         */</span>
+<a name="l00219"></a>00219         void (*<a class="code" href="struct_growl___delegate.html#fba522de0ecbfb4e358dc81d74bd9e9b">growlNotificationTimedOut</a>)(CFPropertyListRef clickContext);
+<a name="l00220"></a>00220 };
+<a name="l00221"></a>00221 
+<a name="l00236"></a>00236 <span class="keyword">struct </span><a class="code" href="struct_growl___notification.html">Growl_Notification</a> {
+<a name="l00237"></a>00237         <span class="comment">/*      This should be sizeof(struct Growl_Notification).</span>
+<a name="l00238"></a>00238 <span class="comment">         */</span>
+<a name="l00239"></a>00239         size_t <a class="code" href="struct_growl___notification.html#acb32c83f5fb3d133c8fc5f429c17ebb">size</a>;
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241         <span class="comment">/*      The notification name distinguishes one type of</span>
+<a name="l00242"></a>00242 <span class="comment">         *       notification from another. The name should be human-readable, as it</span>
+<a name="l00243"></a>00243 <span class="comment">         *       will be displayed in the Growl preference pane.</span>
+<a name="l00244"></a>00244 <span class="comment">         *</span>
+<a name="l00245"></a>00245 <span class="comment">         *       The name is used in the GROWL_NOTIFICATIONS_ALL and</span>
+<a name="l00246"></a>00246 <span class="comment">         *       GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and</span>
+<a name="l00247"></a>00247 <span class="comment">         *       in this member of the Growl_Notification structure.</span>
+<a name="l00248"></a>00248 <span class="comment">         */</span>
+<a name="l00249"></a>00249         CFStringRef <a class="code" href="struct_growl___notification.html#ee0d16347e464573e56797a5f0fb2c3f">name</a>;
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251         <span class="comment">/*      A notification's title describes the notification briefly.</span>
+<a name="l00252"></a>00252 <span class="comment">         *       It should be easy to read quickly by the user.</span>
+<a name="l00253"></a>00253 <span class="comment">         */</span>
+<a name="l00254"></a>00254         CFStringRef <a class="code" href="struct_growl___notification.html#bb3bdf9a1eeaf3744939f07f7cba58d1">title</a>;
+<a name="l00255"></a>00255 
+<a name="l00256"></a>00256         <span class="comment">/*      The description supplements the title with more</span>
+<a name="l00257"></a>00257 <span class="comment">         *       information. It is usually longer and sometimes involves a list of</span>
+<a name="l00258"></a>00258 <span class="comment">         *       subjects. For example, for a 'Download complete' notification, the</span>
+<a name="l00259"></a>00259 <span class="comment">         *       description might have one filename per line. GrowlMail in Growl 0.6</span>
+<a name="l00260"></a>00260 <span class="comment">         *       uses a description of '%d new mail(s)' (formatted with the number of</span>
+<a name="l00261"></a>00261 <span class="comment">         *       messages).</span>
+<a name="l00262"></a>00262 <span class="comment">         */</span>
+<a name="l00263"></a>00263         CFStringRef <a class="code" href="struct_growl___notification.html#41002ee3e0a045d4907c1a6233467bdd">description</a>;
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265         <span class="comment">/*      The notification icon usually indicates either what</span>
+<a name="l00266"></a>00266 <span class="comment">         *       happened (it may have the same icon as e.g. a toolbar item that</span>
+<a name="l00267"></a>00267 <span class="comment">         *       started the process that led to the notification), or what it happened</span>
+<a name="l00268"></a>00268 <span class="comment">         *       to (e.g. a document icon).</span>
+<a name="l00269"></a>00269 <span class="comment">         *</span>
+<a name="l00270"></a>00270 <span class="comment">         *       The icon data is optional, so it can be &lt;code&gt;NULL&lt;/code&gt;. In that</span>
+<a name="l00271"></a>00271 <span class="comment">         *       case, the application icon is used alone. Not all displays support</span>
+<a name="l00272"></a>00272 <span class="comment">         *       icons.</span>
+<a name="l00273"></a>00273 <span class="comment">         *</span>
+<a name="l00274"></a>00274 <span class="comment">         *       The data can be in any format supported by NSImage. As of Mac OS X</span>
+<a name="l00275"></a>00275 <span class="comment">         *       10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form</span>
+<a name="l00276"></a>00276 <span class="comment">         *       ats.</span>
+<a name="l00277"></a>00277 <span class="comment">         */</span>
+<a name="l00278"></a>00278         CFDataRef <a class="code" href="struct_growl___notification.html#346022d4d153e43c1707c6dfa4e8bc12">iconData</a>;
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280         <span class="comment">/*      Priority is new in Growl 0.6, and is represented as a</span>
+<a name="l00281"></a>00281 <span class="comment">         *       signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low</span>
+<a name="l00282"></a>00282 <span class="comment">         *       priority, and +2 is Very High priority.</span>
+<a name="l00283"></a>00283 <span class="comment">         *</span>
+<a name="l00284"></a>00284 <span class="comment">         *       Not all displays support priority. If you do not wish to assign a</span>
+<a name="l00285"></a>00285 <span class="comment">         *       priority to your notification, assign 0.</span>
+<a name="l00286"></a>00286 <span class="comment">         */</span>
+<a name="l00287"></a>00287         <span class="keywordtype">signed</span> <span class="keywordtype">int</span> <a class="code" href="struct_growl___notification.html#1be6fb1a6e6e8a1bb79e4d6a6d3dd0e3">priority</a>;
+<a name="l00288"></a>00288 
+<a name="l00289"></a>00289         <span class="comment">/*      These bits are not used in Growl 0.6. Set them to 0.</span>
+<a name="l00290"></a>00290 <span class="comment">         */</span>
+<a name="l00291"></a>00291         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___notification.html#ba666398206215e004ff95e0dfaf6c30">reserved</a>: 31;
+<a name="l00292"></a>00292 
+<a name="l00293"></a>00293         <span class="comment">/*      When the sticky bit is clear, in most displays,</span>
+<a name="l00294"></a>00294 <span class="comment">         *       notifications disappear after a certain amount of time. Sticky</span>
+<a name="l00295"></a>00295 <span class="comment">         *       notifications, however, remain on-screen until the user dismisses them</span>
+<a name="l00296"></a>00296 <span class="comment">         *       explicitly, usually by clicking them.</span>
+<a name="l00297"></a>00297 <span class="comment">         *</span>
+<a name="l00298"></a>00298 <span class="comment">         *       Sticky notifications were introduced in Growl 0.6. Most notifications</span>
+<a name="l00299"></a>00299 <span class="comment">         *       should not be sticky. Not all displays support sticky notifications,</span>
+<a name="l00300"></a>00300 <span class="comment">         *       and the user may choose in Growl's preference pane to force the</span>
+<a name="l00301"></a>00301 <span class="comment">         *       notification to be sticky or non-sticky, in which case the sticky bit</span>
+<a name="l00302"></a>00302 <span class="comment">         *       in the notification will be ignored.</span>
+<a name="l00303"></a>00303 <span class="comment">         */</span>
+<a name="l00304"></a>00304         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___notification.html#756c99e40bfa89736310cc619b870b8b">isSticky</a>: 1;
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306         <span class="comment">/*      If this is not &lt;code&gt;NULL&lt;/code&gt;, and your click callback</span>
+<a name="l00307"></a>00307 <span class="comment">         *       is not &lt;code&gt;NULL&lt;/code&gt; either, this will be passed to the callback</span>
+<a name="l00308"></a>00308 <span class="comment">         *       when your notification is clicked by the user.</span>
+<a name="l00309"></a>00309 <span class="comment">         *</span>
+<a name="l00310"></a>00310 <span class="comment">         *       Click feedback was introduced in Growl 0.6, and it is optional. Not</span>
+<a name="l00311"></a>00311 <span class="comment">         *       all displays support click feedback.</span>
+<a name="l00312"></a>00312 <span class="comment">         */</span>
+<a name="l00313"></a>00313         CFPropertyListRef <a class="code" href="struct_growl___notification.html#2fbdd11675d0d60bfe3c05823d578d5f">clickContext</a>;
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315         <span class="comment">/*      If this is not &lt;code&gt;NULL&lt;/code&gt;, it will be called instead</span>
+<a name="l00316"></a>00316 <span class="comment">         *       of the Growl delegate's click callback when clickContext is</span>
+<a name="l00317"></a>00317 <span class="comment">         *       non-&lt;code&gt;NULL&lt;/code&gt; and the notification is clicked on by the user.</span>
+<a name="l00318"></a>00318 <span class="comment">         *</span>
+<a name="l00319"></a>00319 <span class="comment">         *       Click feedback was introduced in Growl 0.6, and it is optional. Not</span>
+<a name="l00320"></a>00320 <span class="comment">         *       all displays support click feedback.</span>
+<a name="l00321"></a>00321 <span class="comment">         *</span>
+<a name="l00322"></a>00322 <span class="comment">         *       The per-notification click callback is not yet supported as of Growl</span>
+<a name="l00323"></a>00323 <span class="comment">         *       0.7.</span>
+<a name="l00324"></a>00324 <span class="comment">         */</span>
+<a name="l00325"></a>00325         void (*<a class="code" href="struct_growl___notification.html#207449b8007a71e7baa0b742386f53fd">clickCallback</a>)(CFPropertyListRef <a class="code" href="struct_growl___notification.html#2fbdd11675d0d60bfe3c05823d578d5f">clickContext</a>);
+<a name="l00326"></a>00326 };
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328 <span class="preprocessor">#pragma mark -</span>
+<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Easy initialisers</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span>
+<a name="l00338"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio669d2eabf9b05520f77eeb77c3827dfd.html#7e8aef4f53acd08a1e2bfc1281ed9961">00338</a> <span class="preprocessor">#define InitGrowlDelegate(delegate) \</span>
+<a name="l00339"></a>00339 <span class="preprocessor">        do { \</span>
+<a name="l00340"></a>00340 <span class="preprocessor">                if (delegate) { \</span>
+<a name="l00341"></a>00341 <span class="preprocessor">                        (delegate)-&gt;size = sizeof(struct Growl_Delegate); \</span>
+<a name="l00342"></a>00342 <span class="preprocessor">                        (delegate)-&gt;applicationName = NULL; \</span>
+<a name="l00343"></a>00343 <span class="preprocessor">                        (delegate)-&gt;registrationDictionary = NULL; \</span>
+<a name="l00344"></a>00344 <span class="preprocessor">                        (delegate)-&gt;applicationIconData = NULL; \</span>
+<a name="l00345"></a>00345 <span class="preprocessor">                        (delegate)-&gt;growlInstallationWindowTitle = NULL; \</span>
+<a name="l00346"></a>00346 <span class="preprocessor">                        (delegate)-&gt;growlInstallationInformation = NULL; \</span>
+<a name="l00347"></a>00347 <span class="preprocessor">                        (delegate)-&gt;growlUpdateWindowTitle = NULL; \</span>
+<a name="l00348"></a>00348 <span class="preprocessor">                        (delegate)-&gt;growlUpdateInformation = NULL; \</span>
+<a name="l00349"></a>00349 <span class="preprocessor">                        (delegate)-&gt;referenceCount = 1U; \</span>
+<a name="l00350"></a>00350 <span class="preprocessor">                        (delegate)-&gt;retain = NULL; \</span>
+<a name="l00351"></a>00351 <span class="preprocessor">                        (delegate)-&gt;release = NULL; \</span>
+<a name="l00352"></a>00352 <span class="preprocessor">                        (delegate)-&gt;growlIsReady = NULL; \</span>
+<a name="l00353"></a>00353 <span class="preprocessor">                        (delegate)-&gt;growlNotificationWasClicked = NULL; \</span>
+<a name="l00354"></a>00354 <span class="preprocessor">                        (delegate)-&gt;growlNotificationTimedOut = NULL; \</span>
+<a name="l00355"></a>00355 <span class="preprocessor">                } \</span>
+<a name="l00356"></a>00356 <span class="preprocessor">        } while(0)</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span>
+<a name="l00365"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio669d2eabf9b05520f77eeb77c3827dfd.html#c89a8140221e75cf42b3fbe1fb8bfec9">00365</a> <span class="preprocessor">#define InitGrowlNotification(notification) \</span>
+<a name="l00366"></a>00366 <span class="preprocessor">        do { \</span>
+<a name="l00367"></a>00367 <span class="preprocessor">                if (notification) { \</span>
+<a name="l00368"></a>00368 <span class="preprocessor">                        (notification)-&gt;size = sizeof(struct Growl_Notification); \</span>
+<a name="l00369"></a>00369 <span class="preprocessor">                        (notification)-&gt;name = NULL; \</span>
+<a name="l00370"></a>00370 <span class="preprocessor">                        (notification)-&gt;title = NULL; \</span>
+<a name="l00371"></a>00371 <span class="preprocessor">                        (notification)-&gt;description = NULL; \</span>
+<a name="l00372"></a>00372 <span class="preprocessor">                        (notification)-&gt;iconData = NULL; \</span>
+<a name="l00373"></a>00373 <span class="preprocessor">                        (notification)-&gt;priority = 0; \</span>
+<a name="l00374"></a>00374 <span class="preprocessor">                        (notification)-&gt;reserved = 0U; \</span>
+<a name="l00375"></a>00375 <span class="preprocessor">                        (notification)-&gt;isSticky = false; \</span>
+<a name="l00376"></a>00376 <span class="preprocessor">                        (notification)-&gt;clickContext = NULL; \</span>
+<a name="l00377"></a>00377 <span class="preprocessor">                } \</span>
+<a name="l00378"></a>00378 <span class="preprocessor">        } while(0)</span>
+<a name="l00379"></a>00379 <span class="preprocessor"></span>
+<a name="l00380"></a>00380 <span class="preprocessor">#pragma mark -</span>
+<a name="l00381"></a>00381 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Public API</span>
+<a name="l00382"></a>00382 <span class="preprocessor"></span>
+<a name="l00383"></a>00383 <span class="comment">//      @functiongroup  Managing the Growl delegate</span>
+<a name="l00384"></a>00384 
+<a name="l00420"></a>00420 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#a7e63a13e56031c023e15a82fc1d3432">Growl_SetDelegate</a>(<span class="keyword">struct</span> <a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> *newDelegate);
+<a name="l00421"></a>00421 
+<a name="l00433"></a>00433 <span class="keyword">struct </span><a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> *<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#da3cb9db740ccbd6698c187b2998c79e">Growl_GetDelegate</a>(<span class="keywordtype">void</span>);
+<a name="l00434"></a>00434 
+<a name="l00435"></a>00435 <span class="preprocessor">#pragma mark -</span>
+<a name="l00436"></a>00436 <span class="preprocessor"></span>
+<a name="l00437"></a>00437 <span class="comment">//      @functiongroup  Posting Growl notifications</span>
+<a name="l00438"></a>00438 
+<a name="l00455"></a>00455 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#55e3c5ef969aa288bc746ddde26696c9">Growl_PostNotification</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_growl___notification.html">Growl_Notification</a> *notification);
+<a name="l00456"></a>00456 
+<a name="l00471"></a>00471 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#8549845be93b9ddb044f89e3c9e7080e">Growl_PostNotificationWithDictionary</a>(CFDictionaryRef userInfo);
+<a name="l00472"></a>00472 
+<a name="l00494"></a>00494 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#7f8c4c2cb09137b417d335d5afb7c998">Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext</a>(
+<a name="l00495"></a>00495  <span class="comment">/*inhale*/</span>
+<a name="l00496"></a>00496         CFStringRef title,
+<a name="l00497"></a>00497         CFStringRef description,
+<a name="l00498"></a>00498         CFStringRef notificationName,
+<a name="l00499"></a>00499         CFDataRef iconData,
+<a name="l00500"></a>00500         <span class="keywordtype">signed</span> <span class="keywordtype">int</span> priority,
+<a name="l00501"></a>00501         Boolean isSticky,
+<a name="l00502"></a>00502         CFPropertyListRef clickContext);
+<a name="l00503"></a>00503 
+<a name="l00504"></a>00504 <span class="preprocessor">#pragma mark -</span>
+<a name="l00505"></a>00505 <span class="preprocessor"></span>
+<a name="l00506"></a>00506 <span class="comment">//      @functiongroup  Registering</span>
+<a name="l00507"></a>00507 
+<a name="l00528"></a>00528 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#784b3314c1c7bd04f330892a4aaaaf49">Growl_RegisterWithDictionary</a>(CFDictionaryRef regDict);
+<a name="l00529"></a>00529 
+<a name="l00546"></a>00546 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#a0600b7d4bfce55efdf91498cccfbd94">Growl_Reregister</a>(<span class="keywordtype">void</span>);
+<a name="l00547"></a>00547 
+<a name="l00548"></a>00548 <span class="preprocessor">#pragma mark -</span>
+<a name="l00549"></a>00549 <span class="preprocessor"></span>
+<a name="l00566"></a>00566 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#1b31aa990da0412eb193d58131116e68">Growl_SetWillRegisterWhenGrowlIsReady</a>(Boolean flag);
+<a name="l00573"></a>00573 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#36f689344f68e2336658f2a22766a7ac">Growl_WillRegisterWhenGrowlIsReady</a>(<span class="keywordtype">void</span>);
+<a name="l00574"></a>00574 
+<a name="l00575"></a>00575 <span class="preprocessor">#pragma mark -</span>
+<a name="l00576"></a>00576 <span class="preprocessor"></span>
+<a name="l00577"></a>00577 <span class="comment">//      @functiongroup  Obtaining registration dictionaries</span>
+<a name="l00578"></a>00578 
+<a name="l00595"></a>00595 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#725a9901afaa800ee3a0c2e3cd4e6e1d">Growl_CopyRegistrationDictionaryFromDelegate</a>(<span class="keywordtype">void</span>);
+<a name="l00596"></a>00596 
+<a name="l00616"></a>00616 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#53906c1418a557f0aad79cf12c17de27">Growl_CopyRegistrationDictionaryFromBundle</a>(CFBundleRef bundle);
+<a name="l00617"></a>00617 
+<a name="l00642"></a>00642 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#89edd3fbf0d77e1548b7274a0207b553">Growl_CreateBestRegistrationDictionary</a>(<span class="keywordtype">void</span>);
+<a name="l00643"></a>00643 
+<a name="l00644"></a>00644 <span class="preprocessor">#pragma mark -</span>
+<a name="l00645"></a>00645 <span class="preprocessor"></span>
+<a name="l00646"></a>00646 <span class="comment">//      @functiongroup  Filling in registration dictionaries</span>
+<a name="l00647"></a>00647 
+<a name="l00667"></a>00667 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#b129d52faadd2fed26e533f321bc4429">Growl_CreateRegistrationDictionaryByFillingInDictionary</a>(CFDictionaryRef regDict);
+<a name="l00689"></a>00689 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#b6802f0b7d2742f7679d62318337a654">Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</a>(CFDictionaryRef regDict, CFSetRef keys);
+<a name="l00690"></a>00690 
+<a name="l00691"></a>00691 <span class="preprocessor">#pragma mark -</span>
+<a name="l00692"></a>00692 <span class="preprocessor"></span>
+<a name="l00693"></a>00693 <span class="comment">//      @functiongroup  Querying Growl's status</span>
+<a name="l00694"></a>00694 
+<a name="l00700"></a>00700 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#1162bcfe71743d898b49ba30b1cf89c1">Growl_IsInstalled</a>(<span class="keywordtype">void</span>);
+<a name="l00701"></a>00701 
+<a name="l00707"></a>00707 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#3a917b7c7a31f7b5b4e4a17188d897b4">Growl_IsRunning</a>(<span class="keywordtype">void</span>);
+<a name="l00708"></a>00708 
+<a name="l00709"></a>00709 <span class="preprocessor">#pragma mark -</span>
+<a name="l00710"></a>00710 <span class="preprocessor"></span>
+<a name="l00711"></a>00711 <span class="comment">//      @functiongroup  Launching Growl</span>
+<a name="l00712"></a>00712 
+<a name="l00719"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio669d2eabf9b05520f77eeb77c3827dfd.html#6bbb9fc5822c017b640638c6ac91aaf0">00719</a> <span class="keyword">typedef</span> void (*<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#ad14cba997c6ef192d537e10240c0f77">GrowlLaunchCallback</a>)(<span class="keywordtype">void</span> *context);
+<a name="l00720"></a>00720 
+<a name="l00741"></a>00741 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#cab4cc48428ed2fb5c596878ddcf39fb">Growl_LaunchIfInstalled</a>(<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#ad14cba997c6ef192d537e10240c0f77">GrowlLaunchCallback</a> callback, <span class="keywordtype">void</span> *context);
+<a name="l00742"></a>00742 
+<a name="l00743"></a>00743 <span class="preprocessor">#pragma mark -</span>
+<a name="l00744"></a>00744 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Constants</span>
+<a name="l00745"></a>00745 <span class="preprocessor"></span>
+<a name="l00752"></a>00752 <span class="preprocessor">#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER</span>
+<a name="l00753"></a><a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_versio669d2eabf9b05520f77eeb77c3827dfd.html#8196ba3d47632dc7f2d8887283db20bc">00753</a> <span class="preprocessor"></span><span class="preprocessor">#define GROWL_PREFPANE_BUNDLE_IDENTIFIER        CFSTR("com.growl.prefpanel")</span>
+<a name="l00754"></a>00754 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00755"></a>00755 <span class="preprocessor"></span>
+<a name="l00756"></a>00756 __END_DECLS
+<a name="l00757"></a>00757 
+<a name="l00758"></a>00758 <span class="preprocessor">#endif </span><span class="comment">/* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/category_n_s_data(_atom_extensions).html
===================================================================
--- /tags/release-0.8/docs/html/category_n_s_data(_atom_extensions).html (revision 24)
+++ /tags/release-0.8/docs/html/category_n_s_data(_atom_extensions).html (revision 24)
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSData(AtomExtensions) Category Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSData(AtomExtensions) Category Reference</h1><!-- doxytag: class="NSData(AtomExtensions)" --><a href="category_n_s_data(_atom_extensions)-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_atom_extensions).html#785e15e9284e034912af58757ce14c08">stringUsingEncoding:</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_atom_extensions).html#c6f68cb37623f7c8aba7b7e4d097b9f3">stringUsingBase64Encoding</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(<a class="el" href="class_n_s_string.html">NSString</a> *)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="category_n_s_data(_atom_extensions).html#2f7dc4eb59b54f649ecb287851493b54">stringUsingBase64EncodingWithLineLength:</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_atom_extensions_8h-source.html#l00024">24</a> of file <a class="el" href="_atom_extensions_8h-source.html">AtomExtensions.h</a>.<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="785e15e9284e034912af58757ce14c08"></a><!-- doxytag: member="NSData(AtomExtensions)::stringUsingEncoding:" ref="785e15e9284e034912af58757ce14c08" args="(NSStringEncoding encoding)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (<a class="el" href="class_n_s_string.html">NSString</a> *) stringUsingEncoding:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(NSStringEncoding)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>encoding</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="c6f68cb37623f7c8aba7b7e4d097b9f3"></a><!-- doxytag: member="NSData(AtomExtensions)::stringUsingBase64Encoding" ref="c6f68cb37623f7c8aba7b7e4d097b9f3" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (<a class="el" href="class_n_s_string.html">NSString</a> *) stringUsingBase64Encoding           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="2f7dc4eb59b54f649ecb287851493b54"></a><!-- doxytag: member="NSData(AtomExtensions)::stringUsingBase64EncodingWithLineLength:" ref="2f7dc4eb59b54f649ecb287851493b54" args="(int lineLength)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (<a class="el" href="class_n_s_string.html">NSString</a> *) stringUsingBase64EncodingWithLineLength:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(int)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>lineLength</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<hr>The documentation for this category was generated from the following file:<ul>
+<li><a class="el" href="_atom_extensions_8h-source.html">AtomExtensions.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_rounded_view_8h.html
===================================================================
--- /tags/release-0.8/docs/html/_rounded_view_8h.html (revision 24)
+++ /tags/release-0.8/docs/html/_rounded_view_8h.html (revision 24)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: RoundedView.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>RoundedView.h File Reference</h1>
+<p>
+<a href="_rounded_view_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_rounded_view.html">RoundedView</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/functions_0x72.html
===================================================================
--- /tags/release-0.8/docs/html/functions_0x72.html (revision 20)
+++ /tags/release-0.8/docs/html/functions_0x72.html (revision 20)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Class Members</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html#index__"><span>_</span></a></li>
+    <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+    <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+    <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+    <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+    <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+    <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+    <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+    <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+    <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+    <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+    <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+    <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+    <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+    <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+    <li id="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+    <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+    <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+    <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+    <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+  </ul>
+</div>
+
+<p>
+Here is a list of all class members with links to the classes they belong to:
+<p>
+<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
+<li>referenceCount
+: <a class="el" href="struct_growl___delegate.html#57c2a9f7da47b8f2f5a1ef23e261cbad">Growl_Delegate</a><li>registerWithDictionary:
+: <a class="el" href="interface_growl_application_bridge.html#ff84b96cdde1c1904328b2099e5ba8b3">GrowlApplicationBridge</a><li>registrationDictionary
+: <a class="el" href="struct_growl___delegate.html#e8da8fa8328d51d9850eaab2e724414c">Growl_Delegate</a><li>registrationDictionaryByFillingInDictionary:
+: <a class="el" href="interface_growl_application_bridge.html#65a02538bfde18f4b2b39732d4035a9f">GrowlApplicationBridge</a><li>registrationDictionaryByFillingInDictionary:restrictToKeys:
+: <a class="el" href="interface_growl_application_bridge.html#fb38b71ef1f46c9af2c973064a61d5c8">GrowlApplicationBridge</a><li>registrationDictionaryForGrowl
+: <a class="el" href="interface_app_controller.html#e00fa2f0706f2eea509a9c730c0a6460">AppController</a>, <a class="el" href="category_n_s_object(_growl_application_bridge_delegate___informal_protocol).html#909bc18441191ad71cb8f238dffb0ba1">NSObject(GrowlApplicationBridgeDelegate_InformalProtocol)</a><li>registrationDictionaryFromBundle:
+: <a class="el" href="interface_growl_application_bridge.html#4d5f1d3f142a0674410c4c739bf83f72">GrowlApplicationBridge</a><li>registrationDictionaryFromDelegate
+: <a class="el" href="interface_growl_application_bridge.html#dffd1577a128a55c869c873c870da873">GrowlApplicationBridge</a><li>release
+: <a class="el" href="struct_growl___delegate.html#5d4c84ab4ed61c9ad9718a375af57a1d">Growl_Delegate</a><li>reregisterGrowlNotifications
+: <a class="el" href="interface_growl_application_bridge.html#7756336e9a02f324dff70dc8ed4e5ed1">GrowlApplicationBridge</a><li>resdata
+: <a class="el" href="interface_atom_api.html#4bb9d73178dce1eb346df8fd83b64203">AtomApi</a><li>reserved
+: <a class="el" href="struct_growl___notification.html#ba666398206215e004ff95e0dfaf6c30">Growl_Notification</a><li>reset
+: <a class="el" href="class_n_s_window.html#50e79d7d1a49e1940fbb84fcae51667e">NSWindow</a>, <a class="el" href="category_n_s_window(_transforms).html#16abf87b874e79607fde863d80e1771c">NSWindow(Transforms)</a><li>resetall
+: <a class="el" href="interface_pref_controller.html#492d1e8317d2751c4ef6549fa5b3e1fd">PrefController</a><li>resetblogs:
+: <a class="el" href="interface_pref_controller.html#0d06eb2217653fe58b123ee8b4eac270">PrefController</a><li>retain
+: <a class="el" href="struct_growl___delegate.html#490af3bd571b6ea40ead63e79d8c14a9">Growl_Delegate</a><li>rotate:
+: <a class="el" href="class_n_s_window.html#48f58219dbe23a48d5a1be1ea316adec">NSWindow</a>, <a class="el" href="category_n_s_window(_transforms).html#872c578cb9b44462fa908b713dc93c24">NSWindow(Transforms)</a><li>rotate:about:
+: <a class="el" href="class_n_s_window.html#69442cdb7db0e392365a072efec1f730">NSWindow</a>, <a class="el" href="category_n_s_window(_transforms).html#93ed3dab53a601e1114c7f9da3a5943d">NSWindow(Transforms)</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:17 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_atom_api_8m.html
===================================================================
--- /tags/release-0.8/docs/html/_atom_api_8m.html (revision 24)
+++ /tags/release-0.8/docs/html/_atom_api_8m.html (revision 24)
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: AtomApi.m File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>AtomApi.m File Reference</h1>
+<p>
+<a href="_atom_api_8m-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/functions_0x68.html
===================================================================
--- /tags/release-0.8/docs/html/functions_0x68.html (revision 20)
+++ /tags/release-0.8/docs/html/functions_0x68.html (revision 20)
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Class Members</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li id="current"><a href="functions.html"><span>All</span></a></li>
+    <li><a href="functions_func.html"><span>Functions</span></a></li>
+    <li><a href="functions_vars.html"><span>Variables</span></a></li>
+  </ul>
+</div>
+<div class="tabs">
+  <ul>
+    <li><a href="functions.html#index__"><span>_</span></a></li>
+    <li><a href="functions_0x61.html#index_a"><span>a</span></a></li>
+    <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+    <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+    <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+    <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+    <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+    <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+    <li id="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+    <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+    <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+    <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+    <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+    <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+    <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+    <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+    <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+    <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+    <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+    <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+  </ul>
+</div>
+
+<p>
+Here is a list of all class members with links to the classes they belong to:
+<p>
+<h3><a class="anchor" name="index_h">- h -</a></h3><ul>
+<li>handleTypeOne:
+: <a class="el" href="interface_type_pad.html#a059e09eaa6405644a4177573a8e4bc7">TypePad</a><li>handleTypes:
+: <a class="el" href="interface_type_pad.html#8c19f4c7cf1e8c2102770dce7d7ebb61">TypePad</a><li>handleTypeThree:
+: <a class="el" href="interface_type_pad.html#477b12c1ad93bfa031192cd166128422">TypePad</a><li>handleTypeTwo:
+: <a class="el" href="interface_type_pad.html#8093fd06dac854c1b04235947bae3187">TypePad</a><li>hasPrefix:
+: <a class="el" href="class_n_s_data.html#8cbef0989bc1b3480aba3e340fbb4244">NSData</a>, <a class="el" href="category_n_s_data(_n_s_data_additions).html#466369891c0c2138969106135bad11b4">NSData(NSDataAdditions)</a><li>hasPrefixBytes:length:
+: <a class="el" href="class_n_s_data.html#28ee050b39085e47bee9bf472d42024f">NSData</a>, <a class="el" href="category_n_s_data(_n_s_data_additions).html#d50d1632f3c1101293468b3bc7c00d94">NSData(NSDataAdditions)</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:17 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h-source.html
===================================================================
--- /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h-source.html (revision 20)
+++ /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h-source.html (revision 20)
@@ -0,0 +1,159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge.h</h1><a href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  GrowlApplicationBridge.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  Growl</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Evan Schoenberg on Wed Jun 16 2004.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2004-2005 The Growl Project. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00016"></a>00016 <span class="preprocessor">#ifndef __GrowlApplicationBridge_h__</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define __GrowlApplicationBridge_h__</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#import &lt;Foundation/Foundation.h&gt;</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#import "<a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_defines_8h.html">GrowlDefines.h</a>"</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="comment">//Forward declarations</span>
+<a name="l00023"></a>00023 <span class="keyword">@protocol </span>GrowlApplicationBridgeDelegate;
+<a name="l00024"></a>00024 
+<a name="l00029"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h.html#8196ba3d47632dc7f2d8887283db20bc">00029</a> <span class="preprocessor">#define GROWL_PREFPANE_BUNDLE_IDENTIFIER        </span><span class="stringliteral">@"com.growl.prefpanel"</span>
+<a name="l00030"></a>00030 
+<a name="l00035"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h.html#594e38152e4968b55d53fbb7c9acfecc">00035</a> <span class="preprocessor">#define GROWL_PREFPANE_NAME                                     </span><span class="stringliteral">@"Growl.prefPane"</span>
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="comment">//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation)</span>
+<a name="l00038"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge_8h.html#f756884c11ea6bd4c1bac263ff656da2">00038</a> <span class="preprocessor">#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION </span><span class="stringliteral">@"User chose not to install"</span>
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#pragma mark -</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span>
+<a name="l00051"></a>00051 <span class="keyword">@interface </span><a class="code" href="interface_growl_application_bridge.html">GrowlApplicationBridge</a> : NSObject {
+<a name="l00052"></a>00052 
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 
+<a name="l00061"></a>00061 + (BOOL) isGrowlInstalled;
+<a name="l00062"></a>00062 
+<a name="l00069"></a>00069 + (BOOL) isGrowlRunning;
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="preprocessor">#pragma mark -</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 + (<span class="keywordtype">void</span>) setGrowlDelegate:(NSObject&lt;GrowlApplicationBridgeDelegate&gt; *)inDelegate;
+<a name="l00102"></a>00102 
+<a name="l00109"></a>00109 + (NSObject&lt;GrowlApplicationBr<span class="keywordtype">id</span>geDelegate&gt; *) growlDelegate;
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111 <span class="preprocessor">#pragma mark -</span>
+<a name="l00112"></a>00112 <span class="preprocessor"></span>
+<a name="l00137"></a>00137 + (<span class="keywordtype">void</span>) notifyWithTitle:(NSString *)title
+<a name="l00138"></a>00138                          description:(NSString *)description
+<a name="l00139"></a>00139                 notificationName:(NSString *)notifName
+<a name="l00140"></a>00140                                 iconData:(NSData *)iconData
+<a name="l00141"></a>00141                                 priority:(<span class="keywordtype">signed</span> <span class="keywordtype">int</span>)priority
+<a name="l00142"></a>00142                                 isSticky:(BOOL)isSticky
+<a name="l00143"></a>00143                         clickContext:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00144"></a>00144 
+<a name="l00170"></a>00170 + (<span class="keywordtype">void</span>) notifyWithTitle:(NSString *)title
+<a name="l00171"></a>00171                          description:(NSString *)description
+<a name="l00172"></a>00172                 notificationName:(NSString *)notifName
+<a name="l00173"></a>00173                                 iconData:(NSData *)iconData
+<a name="l00174"></a>00174                                 priority:(<span class="keywordtype">signed</span> <span class="keywordtype">int</span>)priority
+<a name="l00175"></a>00175                                 isSticky:(BOOL)isSticky
+<a name="l00176"></a>00176                         clickContext:(<span class="keywordtype">id</span>)clickContext
+<a name="l00177"></a>00177                           identifier:(NSString *)identifier;
+<a name="l00178"></a>00178 
+<a name="l00193"></a>00193 + (<span class="keywordtype">void</span>) notifyWithDictionary:(NSDictionary *)userInfo;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195 <span class="preprocessor">#pragma mark -</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00216"></a>00216 + (BOOL) registerWithDictionary:(NSDictionary *)regDict;
+<a name="l00217"></a>00217 
+<a name="l00228"></a>00228 + (<span class="keywordtype">void</span>) reregisterGrowlNotifications;
+<a name="l00229"></a>00229 
+<a name="l00230"></a>00230 <span class="preprocessor">#pragma mark -</span>
+<a name="l00231"></a>00231 <span class="preprocessor"></span>
+<a name="l00248"></a>00248 + (<span class="keywordtype">void</span>) setWillRegisterWhenGrowlIsReady:(BOOL)flag;
+<a name="l00255"></a>00255 + (BOOL) willRegisterWhenGrowlIsReady;
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257 <span class="preprocessor">#pragma mark -</span>
+<a name="l00258"></a>00258 <span class="preprocessor"></span>
+<a name="l00276"></a>00276 + (NSDictionary *) registrationDictionaryFromDelegate;
+<a name="l00277"></a>00277 
+<a name="l00299"></a>00299 + (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle;
+<a name="l00300"></a>00300 
+<a name="l00325"></a>00325 + (NSDictionary *) bestRegistrationDictionary;
+<a name="l00326"></a>00326 
+<a name="l00327"></a>00327 <span class="preprocessor">#pragma mark -</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>
+<a name="l00349"></a>00349 + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict;
+<a name="l00372"></a>00372 + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys;
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374 <span class="keyword">@end</span>
+<a name="l00375"></a>00375 
+<a name="l00376"></a>00376 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00377"></a>00377 <span class="preprocessor">#pragma mark -</span>
+<a name="l00378"></a>00378 <span class="preprocessor"></span>
+<a name="l00388"></a>00388 <span class="keyword">@protocol </span>GrowlApplicationBridgeDelegate
+<a name="l00389"></a>00389 
+<a name="l00390"></a>00390 <span class="comment">// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7.</span>
+<a name="l00391"></a>00391 
+<a name="l00392"></a>00392 <span class="keyword">@end</span>
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394 <span class="comment">//------------------------------------------------------------------------------</span>
+<a name="l00395"></a>00395 <span class="preprocessor">#pragma mark -</span>
+<a name="l00396"></a>00396 <span class="preprocessor"></span>
+<a name="l00402"></a>00402 <span class="keyword">@interface </span>NSObject (GrowlApplicationBridgeDelegate_InformalProtocol)
+<a name="l00403"></a>00403 
+<a name="l00429"></a>00429 - (NSDictionary *) registrationDictionaryForGrowl;
+<a name="l00430"></a>00430 
+<a name="l00448"></a>00448 - (NSString *) applicationNameForGrowl;
+<a name="l00449"></a>00449 
+<a name="l00458"></a>00458 - (NSData *) applicationIconDataForGrowl;
+<a name="l00459"></a>00459 
+<a name="l00468"></a>00468 - (<span class="keywordtype">void</span>) growlIsReady;
+<a name="l00469"></a>00469 
+<a name="l00480"></a>00480 - (<span class="keywordtype">void</span>) growlNotificationWasClicked:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00481"></a>00481 
+<a name="l00492"></a>00492 - (<span class="keywordtype">void</span>) growlNotificationTimedOut:(<span class="keywordtype">id</span>)clickContext;
+<a name="l00493"></a>00493 
+<a name="l00494"></a>00494 <span class="keyword">@end</span>
+<a name="l00495"></a>00495 
+<a name="l00496"></a>00496 <span class="preprocessor">#pragma mark -</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span>
+<a name="l00505"></a>00505 <span class="keyword">@interface </span>NSObject (GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
+<a name="l00506"></a>00506 
+<a name="l00513"></a>00513 - (NSString *)growlInstallationWindowTitle;
+<a name="l00514"></a>00514 
+<a name="l00521"></a>00521 - (NSString *)growlUpdateWindowTitle;
+<a name="l00522"></a>00522 
+<a name="l00534"></a>00534 - (NSAttributedString *)growlInstallationInformation;
+<a name="l00535"></a>00535 
+<a name="l00547"></a>00547 - (NSAttributedString *)growlUpdateInformation;
+<a name="l00548"></a>00548 
+<a name="l00549"></a>00549 <span class="keyword">@end</span>
+<a name="l00550"></a>00550 
+<a name="l00551"></a>00551 <span class="comment">//private</span>
+<a name="l00552"></a>00552 <span class="keyword">@interface </span><a class="code" href="interface_growl_application_bridge.html">GrowlApplicationBridge</a> (GrowlInstallationPrompt_private)
+<a name="l00553"></a>00553 + (<span class="keywordtype">void</span>) _userChoseNotToInstallGrowl;
+<a name="l00554"></a>00554 <span class="keyword">@end</span>
+<a name="l00555"></a>00555 
+<a name="l00556"></a>00556 <span class="preprocessor">#endif </span><span class="comment">/* __GrowlApplicationBridge_h__ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headers_2_growl_8h-source.html
===================================================================
--- /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headers_2_growl_8h-source.html (revision 20)
+++ /tags/release-0.8/docs/html/build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headers_2_growl_8h-source.html (revision 20)
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Headers/Growl.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/build/Release/Fence.app/Contents/Frameworks/Growl-WithInstaller.framework/Headers/Growl.h</h1><a href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headers_2_growl_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include "<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headers_2_growl_defines_8h.html">GrowlDefines.h</a>"</span>
+<a name="l00002"></a>00002 
+<a name="l00003"></a>00003 <span class="preprocessor">#ifdef __OBJC__</span>
+<a name="l00004"></a>00004 <span class="preprocessor"></span><span class="preprocessor">#       include "GrowlApplicationBridge.h"</span>
+<a name="l00005"></a>00005 <span class="preprocessor">#endif</span>
+<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html">GrowlApplicationBridge-Carbon.h</a>"</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:13 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_n_s_data_additions_8h-source.html
===================================================================
--- /tags/release-0.8/docs/html/_n_s_data_additions_8h-source.html (revision 24)
+++ /tags/release-0.8/docs/html/_n_s_data_additions_8h-source.html (revision 24)
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSDataAdditions.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSDataAdditions.h</h1><a href="_n_s_data_additions_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  NSDataAdditions.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  TypePad-Uploader</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Nicholas Gerakines on 4/28/06.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2006 __MyCompanyName__. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00009"></a>00009 <span class="preprocessor">#import &lt;Cocoa/Cocoa.h&gt;</span>
+<a name="l00010"></a>00010 
+<a name="l00011"></a><a class="code" href="category_n_s_data(_n_s_data_additions).html">00011</a> <span class="keyword">@interface </span><a class="code" href="class_n_s_data.html">NSData</a> (NSDataAdditions)
+<a name="l00012"></a>00012 + (NSData *) dataWithBase64EncodedString:(NSString *) string;
+<a name="l00013"></a>00013 - (<span class="keywordtype">id</span>) initWithBase64EncodedString:(NSString *) string;
+<a name="l00014"></a>00014 
+<a name="l00015"></a>00015 - (NSString *) base64Encoding;
+<a name="l00016"></a>00016 - (NSString *) base64EncodingWithLineLength:(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) lineLength;
+<a name="l00017"></a>00017 
+<a name="l00018"></a>00018 - (BOOL) hasPrefix:(NSData *) prefix;
+<a name="l00019"></a>00019 - (BOOL) hasPrefixBytes:(<span class="keywordtype">void</span> *) prefix length:(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) length;
+<a name="l00020"></a>00020 <span class="keyword">@end</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h-source.html
===================================================================
--- /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h-source.html (revision 20)
+++ /tags/release-0.8/docs/html/_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h-source.html (revision 20)
@@ -0,0 +1,421 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h</h1><a href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  GrowlApplicationBridge-Carbon.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  Growl</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Mac-arena the Bored Zo on Wed Jun 18 2004.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Based on GrowlApplicationBridge.h by Evan Schoenberg.</span>
+<a name="l00007"></a>00007 <span class="comment">//  This source code is in the public domain. You may freely link it into any</span>
+<a name="l00008"></a>00008 <span class="comment">//    program.</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 
+<a name="l00011"></a>00011 <span class="preprocessor">#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_</span>
+<a name="l00012"></a>00012 <span class="preprocessor"></span><span class="preprocessor">#define _GROWLAPPLICATIONBRIDGE_CARBON_H_</span>
+<a name="l00013"></a>00013 <span class="preprocessor"></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;sys/cdefs.h&gt;</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;Carbon/Carbon.h&gt;</span>
+<a name="l00016"></a>00016 
+<a name="l00029"></a>00029 __BEGIN_DECLS
+<a name="l00030"></a>00030 
+<a name="l00055"></a>00055 <span class="keyword">struct </span><a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> {
+<a name="l00056"></a>00056         <span class="comment">/*      @discussion This should be sizeof(struct Growl_Delegate).</span>
+<a name="l00057"></a>00057 <span class="comment">         */</span>
+<a name="l00058"></a>00058         size_t <a class="code" href="struct_growl___delegate.html#90801a6d85e13a43f8944b310e302157">size</a>;
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060         <span class="comment">/*All of these attributes are optional.</span>
+<a name="l00061"></a>00061 <span class="comment">         *Optional attributes can be NULL; required attributes that</span>
+<a name="l00062"></a>00062 <span class="comment">         *       are NULL cause setting the Growl delegate to fail.</span>
+<a name="l00063"></a>00063 <span class="comment">         *XXX - move optional/required status into the discussion for each field</span>
+<a name="l00064"></a>00064 <span class="comment">         */</span>
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066         <span class="comment">/* This name is used both internally and in the Growl preferences.</span>
+<a name="l00067"></a>00067 <span class="comment">         *</span>
+<a name="l00068"></a>00068 <span class="comment">         *       This should remain stable between different versions and incarnations of</span>
+<a name="l00069"></a>00069 <span class="comment">         *       your application.</span>
+<a name="l00070"></a>00070 <span class="comment">         *       For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and</span>
+<a name="l00071"></a>00071 <span class="comment">         *       "SurfWriter Lite" are not.</span>
+<a name="l00072"></a>00072 <span class="comment">         *</span>
+<a name="l00073"></a>00073 <span class="comment">         * This can be &lt;code&gt;NULL&lt;/code&gt; if it is provided elsewhere, namely in an</span>
+<a name="l00074"></a>00074 <span class="comment">         *       auto-discoverable plist file in your app bundle</span>
+<a name="l00075"></a>00075 <span class="comment">         *       (XXX refer to more information on that) or in registrationDictionary.</span>
+<a name="l00076"></a>00076 <span class="comment">         */</span>
+<a name="l00077"></a>00077         CFStringRef <a class="code" href="struct_growl___delegate.html#c08703d712362d90ff6e17fa1e2d972a">applicationName</a>;
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079         <span class="comment">/*</span>
+<a name="l00080"></a>00080 <span class="comment">         * Must contain at least these keys:</span>
+<a name="l00081"></a>00081 <span class="comment">         *      GROWL_NOTIFICATIONS_ALL (CFArray):</span>
+<a name="l00082"></a>00082 <span class="comment">         *              Contains the names of all notifications your application may post.</span>
+<a name="l00083"></a>00083 <span class="comment">         *</span>
+<a name="l00084"></a>00084 <span class="comment">         * Can also contain these keys:</span>
+<a name="l00085"></a>00085 <span class="comment">         *      GROWL_NOTIFICATIONS_DEFAULT (CFArray):</span>
+<a name="l00086"></a>00086 <span class="comment">         *              Names of notifications that should be enabled by default.</span>
+<a name="l00087"></a>00087 <span class="comment">         *              If omitted, GROWL_NOTIFICATIONS_ALL will be used.</span>
+<a name="l00088"></a>00088 <span class="comment">         *      GROWL_APP_NAME (CFString):</span>
+<a name="l00089"></a>00089 <span class="comment">         *              Same as the applicationName member of this structure.</span>
+<a name="l00090"></a>00090 <span class="comment">         *              If both are present, the applicationName member shall prevail.</span>
+<a name="l00091"></a>00091 <span class="comment">         *              If this key is present, you may omit applicationName (set it to &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00092"></a>00092 <span class="comment">         *      GROWL_APP_ICON (CFData):</span>
+<a name="l00093"></a>00093 <span class="comment">         *              Same as the iconData member of this structure.</span>
+<a name="l00094"></a>00094 <span class="comment">         *              If both are present, the iconData member shall prevail.</span>
+<a name="l00095"></a>00095 <span class="comment">         *              If this key is present, you may omit iconData (set it to &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00096"></a>00096 <span class="comment">         *</span>
+<a name="l00097"></a>00097 <span class="comment">         * If you change the contents of this dictionary after setting the delegate,</span>
+<a name="l00098"></a>00098 <span class="comment">         *      be sure to call Growl_Reregister.</span>
+<a name="l00099"></a>00099 <span class="comment">         *</span>
+<a name="l00100"></a>00100 <span class="comment">         * This can be &lt;code&gt;NULL&lt;/code&gt; if you have an auto-discoverable plist file in your app</span>
+<a name="l00101"></a>00101 <span class="comment">         *       bundle. (XXX refer to more information on that)</span>
+<a name="l00102"></a>00102 <span class="comment">         */</span>
+<a name="l00103"></a>00103         CFDictionaryRef <a class="code" href="struct_growl___delegate.html#e8da8fa8328d51d9850eaab2e724414c">registrationDictionary</a>;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105         <span class="comment">/* The data can be in any format supported by NSImage. As of</span>
+<a name="l00106"></a>00106 <span class="comment">         *       Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and</span>
+<a name="l00107"></a>00107 <span class="comment">         *       PICT formats.</span>
+<a name="l00108"></a>00108 <span class="comment">         *</span>
+<a name="l00109"></a>00109 <span class="comment">         *       If this is not supplied, Growl will look up your application's icon by</span>
+<a name="l00110"></a>00110 <span class="comment">         *       its application name.</span>
+<a name="l00111"></a>00111 <span class="comment">         */</span>
+<a name="l00112"></a>00112         CFDataRef <a class="code" href="struct_growl___delegate.html#07236538ea5aa0c7efb70791706c4acb">applicationIconData</a>;
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114         <span class="comment">/* Installer display attributes</span>
+<a name="l00115"></a>00115 <span class="comment">         *</span>
+<a name="l00116"></a>00116 <span class="comment">         * These four attributes are used by the Growl installer, if this framework</span>
+<a name="l00117"></a>00117 <span class="comment">         *      supports it.</span>
+<a name="l00118"></a>00118 <span class="comment">         * For any of these being &lt;code&gt;NULL&lt;/code&gt;, a localised default will be</span>
+<a name="l00119"></a>00119 <span class="comment">         *      supplied.</span>
+<a name="l00120"></a>00120 <span class="comment">         */</span>
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122         <span class="comment">/*      If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default,</span>
+<a name="l00123"></a>00123 <span class="comment">         *       localized title.</span>
+<a name="l00124"></a>00124 <span class="comment">         *</span>
+<a name="l00125"></a>00125 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00126"></a>00126 <span class="comment">         *       this member is ignored.</span>
+<a name="l00127"></a>00127 <span class="comment">         */</span>
+<a name="l00128"></a>00128         CFStringRef <a class="code" href="struct_growl___delegate.html#652c9c3a8b9bf4ce2dee5a79465a9155">growlInstallationWindowTitle</a>;
+<a name="l00129"></a>00129         <span class="comment">/*      This information may be as long or short as desired (the</span>
+<a name="l00130"></a>00130 <span class="comment">         *       window will be sized to fit it).  If Growl is not installed, it will</span>
+<a name="l00131"></a>00131 <span class="comment">         *       be displayed to the user as an explanation of what Growl is and what</span>
+<a name="l00132"></a>00132 <span class="comment">         *       it can do in your application.</span>
+<a name="l00133"></a>00133 <span class="comment">         *       It should probably note that no download is required to install.</span>
+<a name="l00134"></a>00134 <span class="comment">         *</span>
+<a name="l00135"></a>00135 <span class="comment">         *       If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default, localized</span>
+<a name="l00136"></a>00136 <span class="comment">         *       explanation.</span>
+<a name="l00137"></a>00137 <span class="comment">         *</span>
+<a name="l00138"></a>00138 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00139"></a>00139 <span class="comment">         *       this member is ignored.</span>
+<a name="l00140"></a>00140 <span class="comment">         */</span>
+<a name="l00141"></a>00141         CFStringRef <a class="code" href="struct_growl___delegate.html#31e91b7c43b5ac236551d4dbe5f12014">growlInstallationInformation</a>;
+<a name="l00142"></a>00142         <span class="comment">/*      If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default,</span>
+<a name="l00143"></a>00143 <span class="comment">         *       localized title.</span>
+<a name="l00144"></a>00144 <span class="comment">         *</span>
+<a name="l00145"></a>00145 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00146"></a>00146 <span class="comment">         *       this member is ignored.</span>
+<a name="l00147"></a>00147 <span class="comment">         */</span>
+<a name="l00148"></a>00148         CFStringRef <a class="code" href="struct_growl___delegate.html#195ba4fea58de5467eb152ff519b5849">growlUpdateWindowTitle</a>;
+<a name="l00149"></a>00149         <span class="comment">/*      This information may be as long or short as desired (the</span>
+<a name="l00150"></a>00150 <span class="comment">         *       window will be sized to fit it).  If an older version of Growl is</span>
+<a name="l00151"></a>00151 <span class="comment">         *       installed, it will be displayed to the user as an explanation that an</span>
+<a name="l00152"></a>00152 <span class="comment">         *       updated version of Growl is included in your application and</span>
+<a name="l00153"></a>00153 <span class="comment">         *       no download is required.</span>
+<a name="l00154"></a>00154 <span class="comment">         *</span>
+<a name="l00155"></a>00155 <span class="comment">         *       If this is &lt;code&gt;NULL&lt;/code&gt;, Growl will use a default, localized</span>
+<a name="l00156"></a>00156 <span class="comment">         *       explanation.</span>
+<a name="l00157"></a>00157 <span class="comment">         *</span>
+<a name="l00158"></a>00158 <span class="comment">         *       Only used if you're using Growl-WithInstaller.framework. Otherwise,</span>
+<a name="l00159"></a>00159 <span class="comment">         *       this member is ignored.</span>
+<a name="l00160"></a>00160 <span class="comment">         */</span>
+<a name="l00161"></a>00161         CFStringRef <a class="code" href="struct_growl___delegate.html#4c66672205fc214cbb4b13b4dda5777d">growlUpdateInformation</a>;
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163         <span class="comment">/*      This member is provided for use by your retain and release</span>
+<a name="l00164"></a>00164 <span class="comment">         *       callbacks (see below).</span>
+<a name="l00165"></a>00165 <span class="comment">         *</span>
+<a name="l00166"></a>00166 <span class="comment">         *       GrowlApplicationBridge never directly uses this member. Instead, it</span>
+<a name="l00167"></a>00167 <span class="comment">         *       calls your retain callback (if non-&lt;code&gt;NULL&lt;/code&gt;) and your release</span>
+<a name="l00168"></a>00168 <span class="comment">         *       callback (if non-&lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00169"></a>00169 <span class="comment">         */</span>
+<a name="l00170"></a>00170         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___delegate.html#57c2a9f7da47b8f2f5a1ef23e261cbad">referenceCount</a>;
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172         <span class="comment">//Functions. Currently all of these are optional (any of them can be NULL).</span>
+<a name="l00173"></a>00173 
+<a name="l00174"></a>00174         <span class="comment">/*      When you call Growl_SetDelegate(newDelegate), it will call</span>
+<a name="l00175"></a>00175 <span class="comment">         *       oldDelegate-&gt;release(oldDelegate), and then it will call</span>
+<a name="l00176"></a>00176 <span class="comment">         *       newDelegate-&gt;retain(newDelegate), and the return value from retain</span>
+<a name="l00177"></a>00177 <span class="comment">         *       is what will be set as the delegate.</span>
+<a name="l00178"></a>00178 <span class="comment">         *       (This means that this member works like CFRetain and -[NSObject retain].)</span>
+<a name="l00179"></a>00179 <span class="comment">         *       This member is optional (it can be &lt;code&gt;NULL&lt;/code&gt;).</span>
+<a name="l00180"></a>00180 <span class="comment">         *       For a delegate allocated with malloc, this member would be</span>
+<a name="l00181"></a>00181 <span class="comment">         *       &lt;code&gt;NULL&lt;/code&gt;.</span>
+<a name="l00182"></a>00182 <span class="comment">         *      @result A delegate to which GrowlApplicationBridge holds a reference.</span>
+<a name="l00183"></a>00183 <span class="comment">         */</span>
+<a name="l00184"></a>00184         <span class="keywordtype">void</span> *(*retain)(<span class="keywordtype">void</span> *);
+<a name="l00185"></a>00185         <span class="comment">/*      When you call Growl_SetDelegate(newDelegate), it will call</span>
+<a name="l00186"></a>00186 <span class="comment">         *       oldDelegate-&gt;release(oldDelegate), and then it will call</span>
+<a name="l00187"></a>00187 <span class="comment">         *       newDelegate-&gt;retain(newDelegate), and the return value from retain</span>
+<a name="l00188"></a>00188 <span class="comment">         *       is what will be set as the delegate.</span>
+<a name="l00189"></a>00189 <span class="comment">         *       (This means that this member works like CFRelease and</span>
+<a name="l00190"></a>00190 <span class="comment">         *        -[NSObject release].)</span>
+<a name="l00191"></a>00191 <span class="comment">         *       This member is optional (it can be NULL).</span>
+<a name="l00192"></a>00192 <span class="comment">         *       For a delegate allocated with malloc, this member might be</span>
+<a name="l00193"></a>00193 <span class="comment">         *       &lt;code&gt;free&lt;/code&gt;(3).</span>
+<a name="l00194"></a>00194 <span class="comment">         */</span>
+<a name="l00195"></a>00195         void (*<a class="code" href="struct_growl___delegate.html#5d4c84ab4ed61c9ad9718a375af57a1d">release</a>)(<span class="keywordtype">void</span> *);
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197         <span class="comment">/*      Informs the delegate that Growl (specifically, the GrowlHelperApp) was</span>
+<a name="l00198"></a>00198 <span class="comment">         *       launched successfully (or was already running). The application can</span>
+<a name="l00199"></a>00199 <span class="comment">         *       take actions with the knowledge that Growl is installed and functional.</span>
+<a name="l00200"></a>00200 <span class="comment">         */</span>
+<a name="l00201"></a>00201         void (*<a class="code" href="struct_growl___delegate.html#3bb2592b12bac4fe4d89e045a8f15fd7">growlIsReady</a>)(void);
+<a name="l00202"></a>00202 
+<a name="l00203"></a>00203         <span class="comment">/*      Informs the delegate that a Growl notification was clicked. It is only</span>
+<a name="l00204"></a>00204 <span class="comment">         *       sent for notifications sent with a non-&lt;code&gt;NULL&lt;/code&gt; clickContext,</span>
+<a name="l00205"></a>00205 <span class="comment">         *       so if you want to receive a message when a notification is clicked,</span>
+<a name="l00206"></a>00206 <span class="comment">         *       clickContext must not be &lt;code&gt;NULL&lt;/code&gt; when calling</span>
+<a name="l00207"></a>00207 <span class="comment">         *       Growl_PostNotification or</span>
+<a name="l00208"></a>00208 <span class="comment">         *       Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.</span>
+<a name="l00209"></a>00209 <span class="comment">         */</span>
+<a name="l00210"></a>00210         void (*<a class="code" href="struct_growl___delegate.html#a5e046bccb09e56a9ef56d7fbc8cbf80">growlNotificationWasClicked</a>)(CFPropertyListRef clickContext);
+<a name="l00211"></a>00211 
+<a name="l00212"></a>00212         <span class="comment">/*      Informs the delegate that a Growl notification timed out. It is only</span>
+<a name="l00213"></a>00213 <span class="comment">         *       sent for notifications sent with a non-&lt;code&gt;NULL&lt;/code&gt; clickContext,</span>
+<a name="l00214"></a>00214 <span class="comment">         *       so if you want to receive a message when a notification is clicked,</span>
+<a name="l00215"></a>00215 <span class="comment">         *       clickContext must not be &lt;code&gt;NULL&lt;/code&gt; when calling</span>
+<a name="l00216"></a>00216 <span class="comment">         *       Growl_PostNotification or</span>
+<a name="l00217"></a>00217 <span class="comment">         *       Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.</span>
+<a name="l00218"></a>00218 <span class="comment">         */</span>
+<a name="l00219"></a>00219         void (*<a class="code" href="struct_growl___delegate.html#fba522de0ecbfb4e358dc81d74bd9e9b">growlNotificationTimedOut</a>)(CFPropertyListRef clickContext);
+<a name="l00220"></a>00220 };
+<a name="l00221"></a>00221 
+<a name="l00236"></a>00236 <span class="keyword">struct </span><a class="code" href="struct_growl___notification.html">Growl_Notification</a> {
+<a name="l00237"></a>00237         <span class="comment">/*      This should be sizeof(struct Growl_Notification).</span>
+<a name="l00238"></a>00238 <span class="comment">         */</span>
+<a name="l00239"></a>00239         size_t <a class="code" href="struct_growl___notification.html#acb32c83f5fb3d133c8fc5f429c17ebb">size</a>;
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241         <span class="comment">/*      The notification name distinguishes one type of</span>
+<a name="l00242"></a>00242 <span class="comment">         *       notification from another. The name should be human-readable, as it</span>
+<a name="l00243"></a>00243 <span class="comment">         *       will be displayed in the Growl preference pane.</span>
+<a name="l00244"></a>00244 <span class="comment">         *</span>
+<a name="l00245"></a>00245 <span class="comment">         *       The name is used in the GROWL_NOTIFICATIONS_ALL and</span>
+<a name="l00246"></a>00246 <span class="comment">         *       GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and</span>
+<a name="l00247"></a>00247 <span class="comment">         *       in this member of the Growl_Notification structure.</span>
+<a name="l00248"></a>00248 <span class="comment">         */</span>
+<a name="l00249"></a>00249         CFStringRef <a class="code" href="struct_growl___notification.html#ee0d16347e464573e56797a5f0fb2c3f">name</a>;
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251         <span class="comment">/*      A notification's title describes the notification briefly.</span>
+<a name="l00252"></a>00252 <span class="comment">         *       It should be easy to read quickly by the user.</span>
+<a name="l00253"></a>00253 <span class="comment">         */</span>
+<a name="l00254"></a>00254         CFStringRef <a class="code" href="struct_growl___notification.html#bb3bdf9a1eeaf3744939f07f7cba58d1">title</a>;
+<a name="l00255"></a>00255 
+<a name="l00256"></a>00256         <span class="comment">/*      The description supplements the title with more</span>
+<a name="l00257"></a>00257 <span class="comment">         *       information. It is usually longer and sometimes involves a list of</span>
+<a name="l00258"></a>00258 <span class="comment">         *       subjects. For example, for a 'Download complete' notification, the</span>
+<a name="l00259"></a>00259 <span class="comment">         *       description might have one filename per line. GrowlMail in Growl 0.6</span>
+<a name="l00260"></a>00260 <span class="comment">         *       uses a description of '%d new mail(s)' (formatted with the number of</span>
+<a name="l00261"></a>00261 <span class="comment">         *       messages).</span>
+<a name="l00262"></a>00262 <span class="comment">         */</span>
+<a name="l00263"></a>00263         CFStringRef <a class="code" href="struct_growl___notification.html#41002ee3e0a045d4907c1a6233467bdd">description</a>;
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265         <span class="comment">/*      The notification icon usually indicates either what</span>
+<a name="l00266"></a>00266 <span class="comment">         *       happened (it may have the same icon as e.g. a toolbar item that</span>
+<a name="l00267"></a>00267 <span class="comment">         *       started the process that led to the notification), or what it happened</span>
+<a name="l00268"></a>00268 <span class="comment">         *       to (e.g. a document icon).</span>
+<a name="l00269"></a>00269 <span class="comment">         *</span>
+<a name="l00270"></a>00270 <span class="comment">         *       The icon data is optional, so it can be &lt;code&gt;NULL&lt;/code&gt;. In that</span>
+<a name="l00271"></a>00271 <span class="comment">         *       case, the application icon is used alone. Not all displays support</span>
+<a name="l00272"></a>00272 <span class="comment">         *       icons.</span>
+<a name="l00273"></a>00273 <span class="comment">         *</span>
+<a name="l00274"></a>00274 <span class="comment">         *       The data can be in any format supported by NSImage. As of Mac OS X</span>
+<a name="l00275"></a>00275 <span class="comment">         *       10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form</span>
+<a name="l00276"></a>00276 <span class="comment">         *       ats.</span>
+<a name="l00277"></a>00277 <span class="comment">         */</span>
+<a name="l00278"></a>00278         CFDataRef <a class="code" href="struct_growl___notification.html#346022d4d153e43c1707c6dfa4e8bc12">iconData</a>;
+<a name="l00279"></a>00279 
+<a name="l00280"></a>00280         <span class="comment">/*      Priority is new in Growl 0.6, and is represented as a</span>
+<a name="l00281"></a>00281 <span class="comment">         *       signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low</span>
+<a name="l00282"></a>00282 <span class="comment">         *       priority, and +2 is Very High priority.</span>
+<a name="l00283"></a>00283 <span class="comment">         *</span>
+<a name="l00284"></a>00284 <span class="comment">         *       Not all displays support priority. If you do not wish to assign a</span>
+<a name="l00285"></a>00285 <span class="comment">         *       priority to your notification, assign 0.</span>
+<a name="l00286"></a>00286 <span class="comment">         */</span>
+<a name="l00287"></a>00287         <span class="keywordtype">signed</span> <span class="keywordtype">int</span> <a class="code" href="struct_growl___notification.html#1be6fb1a6e6e8a1bb79e4d6a6d3dd0e3">priority</a>;
+<a name="l00288"></a>00288 
+<a name="l00289"></a>00289         <span class="comment">/*      These bits are not used in Growl 0.6. Set them to 0.</span>
+<a name="l00290"></a>00290 <span class="comment">         */</span>
+<a name="l00291"></a>00291         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___notification.html#ba666398206215e004ff95e0dfaf6c30">reserved</a>: 31;
+<a name="l00292"></a>00292 
+<a name="l00293"></a>00293         <span class="comment">/*      When the sticky bit is clear, in most displays,</span>
+<a name="l00294"></a>00294 <span class="comment">         *       notifications disappear after a certain amount of time. Sticky</span>
+<a name="l00295"></a>00295 <span class="comment">         *       notifications, however, remain on-screen until the user dismisses them</span>
+<a name="l00296"></a>00296 <span class="comment">         *       explicitly, usually by clicking them.</span>
+<a name="l00297"></a>00297 <span class="comment">         *</span>
+<a name="l00298"></a>00298 <span class="comment">         *       Sticky notifications were introduced in Growl 0.6. Most notifications</span>
+<a name="l00299"></a>00299 <span class="comment">         *       should not be sticky. Not all displays support sticky notifications,</span>
+<a name="l00300"></a>00300 <span class="comment">         *       and the user may choose in Growl's preference pane to force the</span>
+<a name="l00301"></a>00301 <span class="comment">         *       notification to be sticky or non-sticky, in which case the sticky bit</span>
+<a name="l00302"></a>00302 <span class="comment">         *       in the notification will be ignored.</span>
+<a name="l00303"></a>00303 <span class="comment">         */</span>
+<a name="l00304"></a>00304         <span class="keywordtype">unsigned</span> <a class="code" href="struct_growl___notification.html#756c99e40bfa89736310cc619b870b8b">isSticky</a>: 1;
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306         <span class="comment">/*      If this is not &lt;code&gt;NULL&lt;/code&gt;, and your click callback</span>
+<a name="l00307"></a>00307 <span class="comment">         *       is not &lt;code&gt;NULL&lt;/code&gt; either, this will be passed to the callback</span>
+<a name="l00308"></a>00308 <span class="comment">         *       when your notification is clicked by the user.</span>
+<a name="l00309"></a>00309 <span class="comment">         *</span>
+<a name="l00310"></a>00310 <span class="comment">         *       Click feedback was introduced in Growl 0.6, and it is optional. Not</span>
+<a name="l00311"></a>00311 <span class="comment">         *       all displays support click feedback.</span>
+<a name="l00312"></a>00312 <span class="comment">         */</span>
+<a name="l00313"></a>00313         CFPropertyListRef <a class="code" href="struct_growl___notification.html#2fbdd11675d0d60bfe3c05823d578d5f">clickContext</a>;
+<a name="l00314"></a>00314 
+<a name="l00315"></a>00315         <span class="comment">/*      If this is not &lt;code&gt;NULL&lt;/code&gt;, it will be called instead</span>
+<a name="l00316"></a>00316 <span class="comment">         *       of the Growl delegate's click callback when clickContext is</span>
+<a name="l00317"></a>00317 <span class="comment">         *       non-&lt;code&gt;NULL&lt;/code&gt; and the notification is clicked on by the user.</span>
+<a name="l00318"></a>00318 <span class="comment">         *</span>
+<a name="l00319"></a>00319 <span class="comment">         *       Click feedback was introduced in Growl 0.6, and it is optional. Not</span>
+<a name="l00320"></a>00320 <span class="comment">         *       all displays support click feedback.</span>
+<a name="l00321"></a>00321 <span class="comment">         *</span>
+<a name="l00322"></a>00322 <span class="comment">         *       The per-notification click callback is not yet supported as of Growl</span>
+<a name="l00323"></a>00323 <span class="comment">         *       0.7.</span>
+<a name="l00324"></a>00324 <span class="comment">         */</span>
+<a name="l00325"></a>00325         void (*<a class="code" href="struct_growl___notification.html#207449b8007a71e7baa0b742386f53fd">clickCallback</a>)(CFPropertyListRef <a class="code" href="struct_growl___notification.html#2fbdd11675d0d60bfe3c05823d578d5f">clickContext</a>);
+<a name="l00326"></a>00326 };
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328 <span class="preprocessor">#pragma mark -</span>
+<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Easy initialisers</span>
+<a name="l00330"></a>00330 <span class="preprocessor"></span>
+<a name="l00338"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h.html#7e8aef4f53acd08a1e2bfc1281ed9961">00338</a> <span class="preprocessor">#define InitGrowlDelegate(delegate) \</span>
+<a name="l00339"></a>00339 <span class="preprocessor">        do { \</span>
+<a name="l00340"></a>00340 <span class="preprocessor">                if (delegate) { \</span>
+<a name="l00341"></a>00341 <span class="preprocessor">                        (delegate)-&gt;size = sizeof(struct Growl_Delegate); \</span>
+<a name="l00342"></a>00342 <span class="preprocessor">                        (delegate)-&gt;applicationName = NULL; \</span>
+<a name="l00343"></a>00343 <span class="preprocessor">                        (delegate)-&gt;registrationDictionary = NULL; \</span>
+<a name="l00344"></a>00344 <span class="preprocessor">                        (delegate)-&gt;applicationIconData = NULL; \</span>
+<a name="l00345"></a>00345 <span class="preprocessor">                        (delegate)-&gt;growlInstallationWindowTitle = NULL; \</span>
+<a name="l00346"></a>00346 <span class="preprocessor">                        (delegate)-&gt;growlInstallationInformation = NULL; \</span>
+<a name="l00347"></a>00347 <span class="preprocessor">                        (delegate)-&gt;growlUpdateWindowTitle = NULL; \</span>
+<a name="l00348"></a>00348 <span class="preprocessor">                        (delegate)-&gt;growlUpdateInformation = NULL; \</span>
+<a name="l00349"></a>00349 <span class="preprocessor">                        (delegate)-&gt;referenceCount = 1U; \</span>
+<a name="l00350"></a>00350 <span class="preprocessor">                        (delegate)-&gt;retain = NULL; \</span>
+<a name="l00351"></a>00351 <span class="preprocessor">                        (delegate)-&gt;release = NULL; \</span>
+<a name="l00352"></a>00352 <span class="preprocessor">                        (delegate)-&gt;growlIsReady = NULL; \</span>
+<a name="l00353"></a>00353 <span class="preprocessor">                        (delegate)-&gt;growlNotificationWasClicked = NULL; \</span>
+<a name="l00354"></a>00354 <span class="preprocessor">                        (delegate)-&gt;growlNotificationTimedOut = NULL; \</span>
+<a name="l00355"></a>00355 <span class="preprocessor">                } \</span>
+<a name="l00356"></a>00356 <span class="preprocessor">        } while(0)</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span>
+<a name="l00365"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h.html#c89a8140221e75cf42b3fbe1fb8bfec9">00365</a> <span class="preprocessor">#define InitGrowlNotification(notification) \</span>
+<a name="l00366"></a>00366 <span class="preprocessor">        do { \</span>
+<a name="l00367"></a>00367 <span class="preprocessor">                if (notification) { \</span>
+<a name="l00368"></a>00368 <span class="preprocessor">                        (notification)-&gt;size = sizeof(struct Growl_Notification); \</span>
+<a name="l00369"></a>00369 <span class="preprocessor">                        (notification)-&gt;name = NULL; \</span>
+<a name="l00370"></a>00370 <span class="preprocessor">                        (notification)-&gt;title = NULL; \</span>
+<a name="l00371"></a>00371 <span class="preprocessor">                        (notification)-&gt;description = NULL; \</span>
+<a name="l00372"></a>00372 <span class="preprocessor">                        (notification)-&gt;iconData = NULL; \</span>
+<a name="l00373"></a>00373 <span class="preprocessor">                        (notification)-&gt;priority = 0; \</span>
+<a name="l00374"></a>00374 <span class="preprocessor">                        (notification)-&gt;reserved = 0U; \</span>
+<a name="l00375"></a>00375 <span class="preprocessor">                        (notification)-&gt;isSticky = false; \</span>
+<a name="l00376"></a>00376 <span class="preprocessor">                        (notification)-&gt;clickContext = NULL; \</span>
+<a name="l00377"></a>00377 <span class="preprocessor">                } \</span>
+<a name="l00378"></a>00378 <span class="preprocessor">        } while(0)</span>
+<a name="l00379"></a>00379 <span class="preprocessor"></span>
+<a name="l00380"></a>00380 <span class="preprocessor">#pragma mark -</span>
+<a name="l00381"></a>00381 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Public API</span>
+<a name="l00382"></a>00382 <span class="preprocessor"></span>
+<a name="l00383"></a>00383 <span class="comment">//      @functiongroup  Managing the Growl delegate</span>
+<a name="l00384"></a>00384 
+<a name="l00420"></a>00420 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#a7e63a13e56031c023e15a82fc1d3432">Growl_SetDelegate</a>(<span class="keyword">struct</span> <a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> *newDelegate);
+<a name="l00421"></a>00421 
+<a name="l00433"></a>00433 <span class="keyword">struct </span><a class="code" href="struct_growl___delegate.html">Growl_Delegate</a> *<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#da3cb9db740ccbd6698c187b2998c79e">Growl_GetDelegate</a>(<span class="keywordtype">void</span>);
+<a name="l00434"></a>00434 
+<a name="l00435"></a>00435 <span class="preprocessor">#pragma mark -</span>
+<a name="l00436"></a>00436 <span class="preprocessor"></span>
+<a name="l00437"></a>00437 <span class="comment">//      @functiongroup  Posting Growl notifications</span>
+<a name="l00438"></a>00438 
+<a name="l00455"></a>00455 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#55e3c5ef969aa288bc746ddde26696c9">Growl_PostNotification</a>(<span class="keyword">const</span> <span class="keyword">struct</span> <a class="code" href="struct_growl___notification.html">Growl_Notification</a> *notification);
+<a name="l00456"></a>00456 
+<a name="l00471"></a>00471 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#8549845be93b9ddb044f89e3c9e7080e">Growl_PostNotificationWithDictionary</a>(CFDictionaryRef userInfo);
+<a name="l00472"></a>00472 
+<a name="l00494"></a>00494 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#7f8c4c2cb09137b417d335d5afb7c998">Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext</a>(
+<a name="l00495"></a>00495  <span class="comment">/*inhale*/</span>
+<a name="l00496"></a>00496         CFStringRef title,
+<a name="l00497"></a>00497         CFStringRef description,
+<a name="l00498"></a>00498         CFStringRef notificationName,
+<a name="l00499"></a>00499         CFDataRef iconData,
+<a name="l00500"></a>00500         <span class="keywordtype">signed</span> <span class="keywordtype">int</span> priority,
+<a name="l00501"></a>00501         Boolean isSticky,
+<a name="l00502"></a>00502         CFPropertyListRef clickContext);
+<a name="l00503"></a>00503 
+<a name="l00504"></a>00504 <span class="preprocessor">#pragma mark -</span>
+<a name="l00505"></a>00505 <span class="preprocessor"></span>
+<a name="l00506"></a>00506 <span class="comment">//      @functiongroup  Registering</span>
+<a name="l00507"></a>00507 
+<a name="l00528"></a>00528 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#784b3314c1c7bd04f330892a4aaaaf49">Growl_RegisterWithDictionary</a>(CFDictionaryRef regDict);
+<a name="l00529"></a>00529 
+<a name="l00546"></a>00546 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#a0600b7d4bfce55efdf91498cccfbd94">Growl_Reregister</a>(<span class="keywordtype">void</span>);
+<a name="l00547"></a>00547 
+<a name="l00548"></a>00548 <span class="preprocessor">#pragma mark -</span>
+<a name="l00549"></a>00549 <span class="preprocessor"></span>
+<a name="l00566"></a>00566 <span class="keywordtype">void</span> <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#1b31aa990da0412eb193d58131116e68">Growl_SetWillRegisterWhenGrowlIsReady</a>(Boolean flag);
+<a name="l00573"></a>00573 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#36f689344f68e2336658f2a22766a7ac">Growl_WillRegisterWhenGrowlIsReady</a>(<span class="keywordtype">void</span>);
+<a name="l00574"></a>00574 
+<a name="l00575"></a>00575 <span class="preprocessor">#pragma mark -</span>
+<a name="l00576"></a>00576 <span class="preprocessor"></span>
+<a name="l00577"></a>00577 <span class="comment">//      @functiongroup  Obtaining registration dictionaries</span>
+<a name="l00578"></a>00578 
+<a name="l00595"></a>00595 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#725a9901afaa800ee3a0c2e3cd4e6e1d">Growl_CopyRegistrationDictionaryFromDelegate</a>(<span class="keywordtype">void</span>);
+<a name="l00596"></a>00596 
+<a name="l00616"></a>00616 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#53906c1418a557f0aad79cf12c17de27">Growl_CopyRegistrationDictionaryFromBundle</a>(CFBundleRef bundle);
+<a name="l00617"></a>00617 
+<a name="l00642"></a>00642 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#89edd3fbf0d77e1548b7274a0207b553">Growl_CreateBestRegistrationDictionary</a>(<span class="keywordtype">void</span>);
+<a name="l00643"></a>00643 
+<a name="l00644"></a>00644 <span class="preprocessor">#pragma mark -</span>
+<a name="l00645"></a>00645 <span class="preprocessor"></span>
+<a name="l00646"></a>00646 <span class="comment">//      @functiongroup  Filling in registration dictionaries</span>
+<a name="l00647"></a>00647 
+<a name="l00667"></a>00667 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#b129d52faadd2fed26e533f321bc4429">Growl_CreateRegistrationDictionaryByFillingInDictionary</a>(CFDictionaryRef regDict);
+<a name="l00689"></a>00689 CFDictionaryRef <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#b6802f0b7d2742f7679d62318337a654">Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</a>(CFDictionaryRef regDict, CFSetRef keys);
+<a name="l00690"></a>00690 
+<a name="l00691"></a>00691 <span class="preprocessor">#pragma mark -</span>
+<a name="l00692"></a>00692 <span class="preprocessor"></span>
+<a name="l00693"></a>00693 <span class="comment">//      @functiongroup  Querying Growl's status</span>
+<a name="l00694"></a>00694 
+<a name="l00700"></a>00700 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#1162bcfe71743d898b49ba30b1cf89c1">Growl_IsInstalled</a>(<span class="keywordtype">void</span>);
+<a name="l00701"></a>00701 
+<a name="l00707"></a>00707 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#3a917b7c7a31f7b5b4e4a17188d897b4">Growl_IsRunning</a>(<span class="keywordtype">void</span>);
+<a name="l00708"></a>00708 
+<a name="l00709"></a>00709 <span class="preprocessor">#pragma mark -</span>
+<a name="l00710"></a>00710 <span class="preprocessor"></span>
+<a name="l00711"></a>00711 <span class="comment">//      @functiongroup  Launching Growl</span>
+<a name="l00712"></a>00712 
+<a name="l00719"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h.html#6bbb9fc5822c017b640638c6ac91aaf0">00719</a> <span class="keyword">typedef</span> void (*<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#ad14cba997c6ef192d537e10240c0f77">GrowlLaunchCallback</a>)(<span class="keywordtype">void</span> *context);
+<a name="l00720"></a>00720 
+<a name="l00741"></a>00741 Boolean <a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#cab4cc48428ed2fb5c596878ddcf39fb">Growl_LaunchIfInstalled</a>(<a class="code" href="build_2_release_2_fence_8app_2_contents_2_frameworks_2_growl-_with_installer_8framework_2_headere1a2204a9347ed9f7fd9f8196b18a82b.html#ad14cba997c6ef192d537e10240c0f77">GrowlLaunchCallback</a> callback, <span class="keywordtype">void</span> *context);
+<a name="l00742"></a>00742 
+<a name="l00743"></a>00743 <span class="preprocessor">#pragma mark -</span>
+<a name="l00744"></a>00744 <span class="preprocessor"></span><span class="preprocessor">#pragma mark Constants</span>
+<a name="l00745"></a>00745 <span class="preprocessor"></span>
+<a name="l00752"></a>00752 <span class="preprocessor">#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER</span>
+<a name="l00753"></a><a class="code" href="_frameworks_2_growl-_with_installer_8framework_2_versions_2_a_2_headers_2_growl_application_bridge-_carbon_8h.html#8196ba3d47632dc7f2d8887283db20bc">00753</a> <span class="preprocessor"></span><span class="preprocessor">#define GROWL_PREFPANE_BUNDLE_IDENTIFIER        CFSTR("com.growl.prefpanel")</span>
+<a name="l00754"></a>00754 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00755"></a>00755 <span class="preprocessor"></span>
+<a name="l00756"></a>00756 __END_DECLS
+<a name="l00757"></a>00757 
+<a name="l00758"></a>00758 <span class="preprocessor">#endif </span><span class="comment">/* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/class_n_s_mutable_string.html
===================================================================
--- /tags/release-0.8/docs/html/class_n_s_mutable_string.html (revision 19)
+++ /tags/release-0.8/docs/html/class_n_s_mutable_string.html (revision 19)
@@ -0,0 +1,288 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSMutableString Class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSMutableString Class Reference</h1><!-- doxytag: class="NSMutableString" --><a href="class_n_s_mutable_string-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#8c6f4adaf11919b5e3323380fc2a8030">encodeXMLSpecialCharactersAsEntities</a><code> [implementation]</code></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#b4d95e9ca4c9107eb1ae681801bad462">decodeXMLSpecialCharacterEntities</a><code> [implementation]</code></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#bf212c9d68fb8a38eea0320a7587d6bf">escapeCharactersInSet:</a><code> [implementation]</code></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#cb7263d5e55af6cd94b86f289ef5579c">encodeIllegalURLCharacters</a><code> [implementation]</code></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#718b972d1bcc14813c77bc11d1240995">decodeIllegalURLCharacters</a><code> [implementation]</code></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">(void)&nbsp;</td><td class="memItemRight" valign="bottom">- <a class="el" href="class_n_s_mutable_string.html#0f15142f4a3a2907d5522d171b375e9d">stripIllegalXMLCharacters</a><code> [implementation]</code></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00289">289</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="8c6f4adaf11919b5e3323380fc2a8030"></a><!-- doxytag: member="NSMutableString::encodeXMLSpecialCharactersAsEntities" ref="8c6f4adaf11919b5e3323380fc2a8030" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) encodeXMLSpecialCharactersAsEntities           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00290">290</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.
+<p>
+Referenced by <a class="el" href="_n_s_string_additions_8m-source.html#l00248">NSString::stringByEncodingXMLSpecialCharactersAsEntities</a>.<div class="fragment"><pre class="fragment"><a name="l00290"></a>00290                                               {
+<a name="l00291"></a>00291         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;" withString:@"&amp;amp;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00292"></a>00292         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&lt;" withString:@"&amp;lt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00293"></a>00293         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&gt;" withString:@"&amp;gt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00294"></a>00294         [<span class="keyword">self</span> replaceOccurrencesOfString:@"\"" withString:@"&amp;quot;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00295"></a>00295         [<span class="keyword">self</span> replaceOccurrencesOfString:@"'" withString:@"&amp;apos;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00296"></a>00296 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="b4d95e9ca4c9107eb1ae681801bad462"></a><!-- doxytag: member="NSMutableString::decodeXMLSpecialCharacterEntities" ref="b4d95e9ca4c9107eb1ae681801bad462" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) decodeXMLSpecialCharacterEntities           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00298">298</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.
+<p>
+Referenced by <a class="el" href="_n_s_string_additions_8m-source.html#l00254">NSString::stringByDecodingXMLSpecialCharacterEntities</a>.<div class="fragment"><pre class="fragment"><a name="l00298"></a>00298                                            {
+<a name="l00299"></a>00299         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;amp;" withString:@"&amp;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00300"></a>00300         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;lt;" withString:@"&lt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00301"></a>00301         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;gt;" withString:@"&gt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00302"></a>00302         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;quot;" withString:@"\"" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00303"></a>00303         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;apos;" withString:@"'" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00304"></a>00304 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="bf212c9d68fb8a38eea0320a7587d6bf"></a><!-- doxytag: member="NSMutableString::escapeCharactersInSet:" ref="bf212c9d68fb8a38eea0320a7587d6bf" args="(NSCharacterSet *set)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) escapeCharactersInSet:           </td>
+          <td class="md" valign="top"></td>
+          <td class="md" nowrap valign="top">(NSCharacterSet *)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>set</em>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00308">308</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.
+<p>
+Referenced by <a class="el" href="_n_s_string_additions_8m-source.html#l00262">NSString::stringByEscapingCharactersInSet:</a>.<div class="fragment"><pre class="fragment"><a name="l00308"></a>00308                               :(NSCharacterSet *) set {
+<a name="l00309"></a>00309         NSScanner *scanner = [[NSScanner allocWithZone:nil] initWithString:<span class="keyword">self</span>];
+<a name="l00310"></a>00310         <span class="keywordtype">int</span> offset = 0;
+<a name="l00311"></a>00311         <span class="keywordflow">while</span>( ! [scanner isAtEnd] ) {
+<a name="l00312"></a>00312                 [scanner scanUpToCharactersFromSet:set intoString:nil];
+<a name="l00313"></a>00313                 <span class="keywordflow">if</span>( ! [scanner isAtEnd] ) {
+<a name="l00314"></a>00314                         [<span class="keyword">self</span> insertString:@"\\" atIndex:[scanner scanLocation] + offset++];
+<a name="l00315"></a>00315                         [scanner setScanLocation:[scanner scanLocation] + 1];
+<a name="l00316"></a>00316                 }
+<a name="l00317"></a>00317         }
+<a name="l00318"></a>00318         [scanner release];
+<a name="l00319"></a>00319 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="cb7263d5e55af6cd94b86f289ef5579c"></a><!-- doxytag: member="NSMutableString::encodeIllegalURLCharacters" ref="cb7263d5e55af6cd94b86f289ef5579c" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) encodeIllegalURLCharacters           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00323">323</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.<div class="fragment"><pre class="fragment"><a name="l00323"></a>00323                                     {
+<a name="l00324"></a>00324         [<span class="keyword">self</span> setString:[<span class="keyword">self</span> stringByEncodingIllegalURLCharacters]];
+<a name="l00325"></a>00325 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="718b972d1bcc14813c77bc11d1240995"></a><!-- doxytag: member="NSMutableString::decodeIllegalURLCharacters" ref="718b972d1bcc14813c77bc11d1240995" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) decodeIllegalURLCharacters           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00327">327</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.<div class="fragment"><pre class="fragment"><a name="l00327"></a>00327                                     {
+<a name="l00328"></a>00328         [<span class="keyword">self</span> setString:[<span class="keyword">self</span> stringByDecodingIllegalURLCharacters]];
+<a name="l00329"></a>00329 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="0f15142f4a3a2907d5522d171b375e9d"></a><!-- doxytag: member="NSMutableString::stripIllegalXMLCharacters" ref="0f15142f4a3a2907d5522d171b375e9d" args="()" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top" align="right">- (void) stripIllegalXMLCharacters           </td>
+          <td class="md" valign="top"></td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;</td>
+          <td class="md" nowrap><code> [implementation]</code></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="_n_s_string_additions_8m-source.html#l00333">333</a> of file <a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a>.
+<p>
+Referenced by <a class="el" href="_n_s_string_additions_8m-source.html#l00280">NSString::stringByStrippingIllegalXMLCharacters</a>.<div class="fragment"><pre class="fragment"><a name="l00333"></a>00333                                    {
+<a name="l00334"></a>00334         NSMutableCharacterSet *illegalSet = [[[NSCharacterSet characterSetWithRange:NSMakeRange( 0, 0x1f )] mutableCopyWithZone:nil] autorelease];
+<a name="l00335"></a>00335         [illegalSet addCharactersInRange:NSMakeRange( 0x7f, 1 )];
+<a name="l00336"></a>00336         [illegalSet addCharactersInRange:NSMakeRange( 0xfffe, 1 )];
+<a name="l00337"></a>00337         [illegalSet addCharactersInRange:NSMakeRange( 0xffff, 1 )];
+<a name="l00338"></a>00338         
+<a name="l00339"></a>00339         NSRange range = [<span class="keyword">self</span> rangeOfCharacterFromSet:illegalSet];
+<a name="l00340"></a>00340         <span class="keywordflow">while</span>( range.location != NSNotFound ) {
+<a name="l00341"></a>00341                 [<span class="keyword">self</span> deleteCharactersInRange:range];
+<a name="l00342"></a>00342                 range = [<span class="keyword">self</span> rangeOfCharacterFromSet:illegalSet];
+<a name="l00343"></a>00343         }
+<a name="l00344"></a>00344 }
+</pre></div>
+<p>
+    </td>
+  </tr>
+</table>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="_n_s_string_additions_8m-source.html">NSStringAdditions.m</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:05:15 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_n_s_string_additions_8m-source.html
===================================================================
--- /tags/release-0.8/docs/html/_n_s_string_additions_8m-source.html (revision 19)
+++ /tags/release-0.8/docs/html/_n_s_string_additions_8m-source.html (revision 19)
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: NSStringAdditions.m Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSStringAdditions.m</h1><a href="_n_s_string_additions_8m.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  NSStringAdditions.m</span>
+<a name="l00003"></a>00003 <span class="comment">//  TypePad-Uploader</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Nicholas Gerakines on 4/28/06.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2006 __MyCompanyName__. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00009"></a>00009 <span class="preprocessor">#import "<a class="code" href="_n_s_string_additions_8h.html">NSStringAdditions.h</a>"</span>
+<a name="l00010"></a>00010 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
+<a name="l00011"></a>00011 
+<a name="l00012"></a>00012 <span class="keyword">@implementation </span><a class="code" href="class_n_s_string.html">NSString</a> (NSStringAdditions)
+<a name="l00013"></a><a class="code" href="class_n_s_string.html#36a282fb6866759604300f1ecddb7696">00013</a> + (NSString *) locallyUniqueString {
+<a name="l00014"></a>00014         <span class="keyword">struct </span>timeval tv;
+<a name="l00015"></a>00015     gettimeofday( &amp;tv, NULL );
+<a name="l00016"></a>00016         
+<a name="l00017"></a>00017         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m = 36; <span class="comment">// base (denominator)</span>
+<a name="l00018"></a>00018         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q = [[NSProcessInfo processInfo] processIdentifier] ^ tv.tv_usec; <span class="comment">// input (quotient)</span>
+<a name="l00019"></a>00019         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> r = 0; <span class="comment">// remainder</span>
+<a name="l00020"></a>00020         
+<a name="l00021"></a>00021         <a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> *uniqueId = [[<a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> allocWithZone:nil] initWithCapacity:10];
+<a name="l00022"></a>00022         [uniqueId appendFormat:@"%c", 'A' + ( random() % 26 )]; <span class="comment">// always have a random letter first (more ambiguity)</span>
+<a name="l00023"></a>00023         
+<a name="l00024"></a>00024 <span class="preprocessor">#define baseConvert     do { \</span>
+<a name="l00025"></a>00025 <span class="preprocessor">        r = q % m; \</span>
+<a name="l00026"></a>00026 <span class="preprocessor">                q = q / m; \</span>
+<a name="l00027"></a>00027 <span class="preprocessor">                        if( r &gt;= 10 ) r = 'A' + ( r - 10 ); \</span>
+<a name="l00028"></a>00028 <span class="preprocessor">                                else r = '0' + r; \</span>
+<a name="l00029"></a>00029 <span class="preprocessor">                                        [uniqueId appendFormat:</span><span class="stringliteral">@"%c"</span>, r]; \
+<a name="l00030"></a>00030 } while( q ) \
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 baseConvert;
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 q = ( tv.tv_sec - 1104555600 ); <span class="comment">// subtract 35 years, we only care about post Jan 1 2005</span>
+<a name="l00035"></a>00035 r = 0;
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 baseConvert;
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="preprocessor">#undef baseConvert;</span>
+<a name="l00040"></a>00040 <span class="preprocessor"></span>
+<a name="l00041"></a>00041 <span class="keywordflow">return</span> [uniqueId autorelease];
+<a name="l00042"></a>00042 }
+<a name="l00043"></a>00043 
+<a name="l00044"></a><a class="code" href="class_n_s_string.html#ed05eca6f3f880150767c009d0e5ee38">00044</a> + (NSString *) mimeCharsetTagFromStringEncoding:(NSStringEncoding) encoding {
+<a name="l00045"></a>00045         <span class="keywordflow">switch</span>( encoding ) {
+<a name="l00046"></a>00046                 <span class="keywordflow">default</span>:
+<a name="l00047"></a>00047                 <span class="keywordflow">case</span> NSASCIIStringEncoding:
+<a name="l00048"></a>00048                 <span class="keywordflow">case</span> NSNonLossyASCIIStringEncoding:
+<a name="l00049"></a>00049                         <span class="keywordflow">return</span> <span class="stringliteral">@"us-ascii"</span>;
+<a name="l00050"></a>00050                         <span class="keywordflow">break</span>;
+<a name="l00051"></a>00051                 <span class="keywordflow">case</span> NSUTF8StringEncoding:
+<a name="l00052"></a>00052                         <span class="keywordflow">return</span> <span class="stringliteral">@"utf-8"</span>;
+<a name="l00053"></a>00053                         <span class="keywordflow">break</span>;
+<a name="l00054"></a>00054                 <span class="keywordflow">case</span> NSISOLatin1StringEncoding:
+<a name="l00055"></a>00055                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-1"</span>;
+<a name="l00056"></a>00056                         <span class="keywordflow">break</span>;
+<a name="l00057"></a>00057                 <span class="keywordflow">case</span> 0x80000203:
+<a name="l00058"></a>00058                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-3"</span>;
+<a name="l00059"></a>00059                         <span class="keywordflow">break</span>;
+<a name="l00060"></a>00060                 <span class="keywordflow">case</span> 0x80000208:
+<a name="l00061"></a>00061                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-8"</span>;
+<a name="l00062"></a>00062                         <span class="keywordflow">break</span>;
+<a name="l00063"></a>00063                 <span class="keywordflow">case</span> 0x80000005:
+<a name="l00064"></a>00064                         <span class="keywordflow">return</span> <span class="stringliteral">@"x-mac-hebrew"</span>;
+<a name="l00065"></a>00065                         <span class="keywordflow">break</span>;
+<a name="l00066"></a>00066                 <span class="keywordflow">case</span> 0x80000505:
+<a name="l00067"></a>00067                         <span class="keywordflow">return</span> <span class="stringliteral">@"windows-1255"</span>;
+<a name="l00068"></a>00068                         <span class="keywordflow">break</span>;
+<a name="l00069"></a>00069                 <span class="keywordflow">case</span> 0x8000020F:
+<a name="l00070"></a>00070                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-9"</span>;
+<a name="l00071"></a>00071                         <span class="keywordflow">break</span>;
+<a name="l00072"></a>00072                 <span class="keywordflow">case</span> NSWindowsCP1252StringEncoding:
+<a name="l00073"></a>00073                         <span class="keywordflow">return</span> <span class="stringliteral">@"windows-1252"</span>;
+<a name="l00074"></a>00074                         <span class="keywordflow">break</span>;
+<a name="l00075"></a>00075                 <span class="keywordflow">case</span> NSISOLatin2StringEncoding:
+<a name="l00076"></a>00076                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-2"</span>;
+<a name="l00077"></a>00077                         <span class="keywordflow">break</span>;
+<a name="l00078"></a>00078                 <span class="keywordflow">case</span> 0x80000204:
+<a name="l00079"></a>00079                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-4"</span>;
+<a name="l00080"></a>00080                         <span class="keywordflow">break</span>;
+<a name="l00081"></a>00081                 <span class="keywordflow">case</span> NSWindowsCP1250StringEncoding:
+<a name="l00082"></a>00082                         <span class="keywordflow">return</span> <span class="stringliteral">@"windows-1250"</span>;
+<a name="l00083"></a>00083                         <span class="keywordflow">break</span>;
+<a name="l00084"></a>00084                 <span class="keywordflow">case</span> 0x80000A02:
+<a name="l00085"></a>00085                         <span class="keywordflow">return</span> <span class="stringliteral">@"KOI8-R"</span>;
+<a name="l00086"></a>00086                         <span class="keywordflow">break</span>;
+<a name="l00087"></a>00087                 <span class="keywordflow">case</span> 0x80000205:
+<a name="l00088"></a>00088                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-8859-5"</span>;
+<a name="l00089"></a>00089                         <span class="keywordflow">break</span>;
+<a name="l00090"></a>00090                 <span class="keywordflow">case</span> NSWindowsCP1251StringEncoding:
+<a name="l00091"></a>00091                         <span class="keywordflow">return</span> <span class="stringliteral">@"windows-1251"</span>;
+<a name="l00092"></a>00092                         <span class="keywordflow">break</span>;
+<a name="l00093"></a>00093                 <span class="keywordflow">case</span> 0x80000A01:
+<a name="l00094"></a>00094                         <span class="keywordflow">return</span> <span class="stringliteral">@"Shift_JIS"</span>;
+<a name="l00095"></a>00095                         <span class="keywordflow">break</span>;
+<a name="l00096"></a>00096                 <span class="keywordflow">case</span> NSISO2022JPStringEncoding:
+<a name="l00097"></a>00097                         <span class="keywordflow">return</span> <span class="stringliteral">@"iso-2022-jp"</span>;
+<a name="l00098"></a>00098                         <span class="keywordflow">break</span>;
+<a name="l00099"></a>00099                 <span class="keywordflow">case</span> NSJapaneseEUCStringEncoding:
+<a name="l00100"></a>00100                         <span class="keywordflow">return</span> <span class="stringliteral">@"EUC-JP"</span>;
+<a name="l00101"></a>00101                         <span class="keywordflow">break</span>;
+<a name="l00102"></a>00102         }
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 
+<a name="l00105"></a><a class="code" href="class_n_s_string.html#be682f3e13c2890f45ca658994b62f37">00105</a> + (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) scriptTypedEncodingFromStringEncoding:(NSStringEncoding) encoding {
+<a name="l00106"></a>00106         <span class="keywordflow">switch</span>( encoding ) {
+<a name="l00107"></a>00107                 <span class="keywordflow">default</span>:
+<a name="l00108"></a>00108                 <span class="keywordflow">case</span> NSUTF8StringEncoding: <span class="keywordflow">return</span> 'utF8';
+<a name="l00109"></a>00109                 <span class="keywordflow">case</span> NSASCIIStringEncoding: <span class="keywordflow">return</span> 'ascI';
+<a name="l00110"></a>00110                 <span class="keywordflow">case</span> NSNonLossyASCIIStringEncoding: <span class="keywordflow">return</span> 'nlAs';
+<a name="l00111"></a>00111                         
+<a name="l00112"></a>00112                 <span class="keywordflow">case</span> NSISOLatin1StringEncoding: <span class="keywordflow">return</span> 'isL1';
+<a name="l00113"></a>00113                 <span class="keywordflow">case</span> NSISOLatin2StringEncoding: <span class="keywordflow">return</span> 'isL2';
+<a name="l00114"></a>00114                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000203: <span class="keywordflow">return</span> 'isL3';
+<a name="l00115"></a>00115                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000204: <span class="keywordflow">return</span> 'isL4';
+<a name="l00116"></a>00116                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000205: <span class="keywordflow">return</span> 'isL5';
+<a name="l00117"></a>00117                 <span class="keywordflow">case</span> (NSStringEncoding) 0x8000020F: <span class="keywordflow">return</span> 'isL9';
+<a name="l00118"></a>00118                         
+<a name="l00119"></a>00119                 <span class="keywordflow">case</span> NSWindowsCP1250StringEncoding: <span class="keywordflow">return</span> 'cp50';
+<a name="l00120"></a>00120                 <span class="keywordflow">case</span> NSWindowsCP1251StringEncoding: <span class="keywordflow">return</span> 'cp51';
+<a name="l00121"></a>00121                 <span class="keywordflow">case</span> NSWindowsCP1252StringEncoding: <span class="keywordflow">return</span> 'cp52';
+<a name="l00122"></a>00122                         
+<a name="l00123"></a>00123                 <span class="keywordflow">case</span> NSMacOSRomanStringEncoding: <span class="keywordflow">return</span> 'mcRo';
+<a name="l00124"></a>00124                 <span class="keywordflow">case</span> (NSStringEncoding) 0x8000001D: <span class="keywordflow">return</span> 'mcEu';
+<a name="l00125"></a>00125                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000007: <span class="keywordflow">return</span> 'mcCy';
+<a name="l00126"></a>00126                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000001: <span class="keywordflow">return</span> 'mcJp';
+<a name="l00127"></a>00127                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000019: <span class="keywordflow">return</span> 'mcSc';
+<a name="l00128"></a>00128                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000002: <span class="keywordflow">return</span> 'mcTc';
+<a name="l00129"></a>00129                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000003: <span class="keywordflow">return</span> 'mcKr';
+<a name="l00130"></a>00130                         
+<a name="l00131"></a>00131                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000A02: <span class="keywordflow">return</span> 'ko8R';
+<a name="l00132"></a>00132                         
+<a name="l00133"></a>00133                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000421: <span class="keywordflow">return</span> 'wnSc';
+<a name="l00134"></a>00134                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000423: <span class="keywordflow">return</span> 'wnTc';
+<a name="l00135"></a>00135                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000422: <span class="keywordflow">return</span> 'wnKr';
+<a name="l00136"></a>00136                         
+<a name="l00137"></a>00137                 <span class="keywordflow">case</span> NSJapaneseEUCStringEncoding: <span class="keywordflow">return</span> 'jpUC';
+<a name="l00138"></a>00138                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000A01: <span class="keywordflow">return</span> 'sJiS';
+<a name="l00139"></a>00139                 <span class="keywordflow">case</span> NSShiftJISStringEncoding: <span class="keywordflow">return</span> 'sJiS';
+<a name="l00140"></a>00140                         
+<a name="l00141"></a>00141                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000940: <span class="keywordflow">return</span> 'krUC';
+<a name="l00142"></a>00142                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000930: <span class="keywordflow">return</span> 'scUC';
+<a name="l00143"></a>00143                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000931: <span class="keywordflow">return</span> 'tcUC';
+<a name="l00144"></a>00144                         
+<a name="l00145"></a>00145                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000632: <span class="keywordflow">return</span> 'gb30';
+<a name="l00146"></a>00146                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000631: <span class="keywordflow">return</span> 'gbKK';
+<a name="l00147"></a>00147                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000A03: <span class="keywordflow">return</span> 'biG5';
+<a name="l00148"></a>00148                 <span class="keywordflow">case</span> (NSStringEncoding) 0x80000A06: <span class="keywordflow">return</span> 'bG5H';
+<a name="l00149"></a>00149         }
+<a name="l00150"></a>00150         
+<a name="l00151"></a>00151         <span class="keywordflow">return</span> 'utF8'; <span class="comment">// default encoding</span>
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 
+<a name="l00154"></a><a class="code" href="class_n_s_string.html#a9e2c0efff639098b8c00ce250c18715">00154</a> + (NSStringEncoding) stringEncodingFromScriptTypedEncoding:(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) encoding {
+<a name="l00155"></a>00155         <span class="keywordflow">switch</span>( encoding ) {
+<a name="l00156"></a>00156                 <span class="keywordflow">default</span>:
+<a name="l00157"></a>00157                 <span class="keywordflow">case</span> 'utF8': <span class="keywordflow">return</span> NSUTF8StringEncoding;
+<a name="l00158"></a>00158                 <span class="keywordflow">case</span> 'ascI': <span class="keywordflow">return</span> NSASCIIStringEncoding;
+<a name="l00159"></a>00159                 <span class="keywordflow">case</span> 'nlAs': <span class="keywordflow">return</span> NSNonLossyASCIIStringEncoding;
+<a name="l00160"></a>00160                         
+<a name="l00161"></a>00161                 <span class="keywordflow">case</span> 'isL1': <span class="keywordflow">return</span> NSISOLatin1StringEncoding;
+<a name="l00162"></a>00162                 <span class="keywordflow">case</span> 'isL2': <span class="keywordflow">return</span> NSISOLatin2StringEncoding;
+<a name="l00163"></a>00163                 <span class="keywordflow">case</span> 'isL3': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000203;
+<a name="l00164"></a>00164                 <span class="keywordflow">case</span> 'isL4': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000204;
+<a name="l00165"></a>00165                 <span class="keywordflow">case</span> 'isL5': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000205;
+<a name="l00166"></a>00166                 <span class="keywordflow">case</span> 'isL9': <span class="keywordflow">return</span> (NSStringEncoding) 0x8000020F;
+<a name="l00167"></a>00167                         
+<a name="l00168"></a>00168                 <span class="keywordflow">case</span> 'cp50': <span class="keywordflow">return</span> NSWindowsCP1250StringEncoding;
+<a name="l00169"></a>00169                 <span class="keywordflow">case</span> 'cp51': <span class="keywordflow">return</span> NSWindowsCP1251StringEncoding;
+<a name="l00170"></a>00170                 <span class="keywordflow">case</span> 'cp52': <span class="keywordflow">return</span> NSWindowsCP1252StringEncoding;
+<a name="l00171"></a>00171                         
+<a name="l00172"></a>00172                 <span class="keywordflow">case</span> 'mcRo': <span class="keywordflow">return</span> NSMacOSRomanStringEncoding;
+<a name="l00173"></a>00173                 <span class="keywordflow">case</span> 'mcEu': <span class="keywordflow">return</span> (NSStringEncoding) 0x8000001D;
+<a name="l00174"></a>00174                 <span class="keywordflow">case</span> 'mcCy': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000007;
+<a name="l00175"></a>00175                 <span class="keywordflow">case</span> 'mcJp': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000001;
+<a name="l00176"></a>00176                 <span class="keywordflow">case</span> 'mcSc': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000019;
+<a name="l00177"></a>00177                 <span class="keywordflow">case</span> 'mcTc': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000002;
+<a name="l00178"></a>00178                 <span class="keywordflow">case</span> 'mcKr': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000003;
+<a name="l00179"></a>00179                         
+<a name="l00180"></a>00180                 <span class="keywordflow">case</span> 'ko8R': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000A02;
+<a name="l00181"></a>00181                         
+<a name="l00182"></a>00182                 <span class="keywordflow">case</span> 'wnSc': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000421;
+<a name="l00183"></a>00183                 <span class="keywordflow">case</span> 'wnTc': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000423;
+<a name="l00184"></a>00184                 <span class="keywordflow">case</span> 'wnKr': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000422;
+<a name="l00185"></a>00185                         
+<a name="l00186"></a>00186                 <span class="keywordflow">case</span> 'jpUC': <span class="keywordflow">return</span> NSJapaneseEUCStringEncoding;
+<a name="l00187"></a>00187                 <span class="keywordflow">case</span> 'sJiS': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000A01;
+<a name="l00188"></a>00188                         
+<a name="l00189"></a>00189                 <span class="keywordflow">case</span> 'krUC': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000940;
+<a name="l00190"></a>00190                 <span class="keywordflow">case</span> 'scUC': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000930;
+<a name="l00191"></a>00191                 <span class="keywordflow">case</span> 'tcUC': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000931;
+<a name="l00192"></a>00192                         
+<a name="l00193"></a>00193                 <span class="keywordflow">case</span> 'gb30': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000632;
+<a name="l00194"></a>00194                 <span class="keywordflow">case</span> 'gbKK': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000631;
+<a name="l00195"></a>00195                 <span class="keywordflow">case</span> 'biG5': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000A03;
+<a name="l00196"></a>00196                 <span class="keywordflow">case</span> 'bG5H': <span class="keywordflow">return</span> (NSStringEncoding) 0x80000A06;
+<a name="l00197"></a>00197         }
+<a name="l00198"></a>00198         
+<a name="l00199"></a>00199         <span class="keywordflow">return</span> NSUTF8StringEncoding; <span class="comment">// default encoding</span>
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201 
+<a name="l00202"></a>00202 <span class="preprocessor">#pragma mark -</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
+<a name="l00204"></a><a class="code" href="class_n_s_string.html#11a8659b680b691d5714ea0276029e1c">00204</a> - (<span class="keywordtype">id</span>) initWithBytes:(const <span class="keywordtype">void</span> *) bytes encoding:(NSStringEncoding) encoding {
+<a name="l00205"></a>00205         <span class="keywordflow">if</span>( bytes ) {
+<a name="l00206"></a>00206                 <span class="keywordtype">id</span> ret = [<span class="keyword">self</span> initWithBytes:bytes length:strlen( bytes ) encoding:encoding];
+<a name="l00207"></a>00207                 <span class="keywordflow">if</span>( ! ret ) [<span class="keyword">self</span> release];
+<a name="l00208"></a>00208                 <span class="keywordflow">return</span> ret;
+<a name="l00209"></a>00209         }
+<a name="l00210"></a>00210         
+<a name="l00211"></a>00211         [<span class="keyword">self</span> release];
+<a name="l00212"></a>00212         <span class="keywordflow">return</span> nil;
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 
+<a name="l00215"></a><a class="code" href="class_n_s_string.html#cac5970a77758f93d7936f4e5056576e">00215</a> - (<span class="keywordtype">id</span>) initWithBytesNoCopy:(<span class="keywordtype">void</span> *) bytes encoding:(NSStringEncoding) encoding freeWhenDone:(BOOL) free {
+<a name="l00216"></a>00216         <span class="keywordflow">if</span>( bytes ) {
+<a name="l00217"></a>00217                 <span class="keywordtype">id</span> ret = [<span class="keyword">self</span> initWithBytesNoCopy:bytes length:strlen( bytes ) encoding:encoding freeWhenDone:free];
+<a name="l00218"></a>00218                 <span class="keywordflow">if</span>( ! ret ) [<span class="keyword">self</span> release];
+<a name="l00219"></a>00219                 <span class="keywordflow">return</span> ret;
+<a name="l00220"></a>00220         }
+<a name="l00221"></a>00221         
+<a name="l00222"></a>00222         [<span class="keyword">self</span> release];
+<a name="l00223"></a>00223         <span class="keywordflow">return</span> nil;
+<a name="l00224"></a>00224 }
+<a name="l00225"></a>00225 
+<a name="l00226"></a><a class="code" href="class_n_s_string.html#51c1575cb215f459e5f35bbbdcb0d510">00226</a> + (<span class="keywordtype">id</span>) stringWithBytes:(const <span class="keywordtype">void</span> *) bytes encoding:(NSStringEncoding) encoding {
+<a name="l00227"></a>00227         <span class="keywordflow">return</span> [[[<span class="keyword">self</span> allocWithZone:nil] initWithBytes:bytes encoding:encoding] autorelease];
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 
+<a name="l00230"></a><a class="code" href="class_n_s_string.html#91932f609d3eeb432daabe5fdff1d229">00230</a> + (<span class="keywordtype">id</span>) stringWithBytesNoCopy:(<span class="keywordtype">void</span> *) bytes encoding:(NSStringEncoding) encoding freeWhenDone:(BOOL) free {
+<a name="l00231"></a>00231         <span class="keywordflow">return</span> [[[<span class="keyword">self</span> allocWithZone:nil] initWithBytesNoCopy:bytes encoding:encoding freeWhenDone:free] autorelease];
+<a name="l00232"></a>00232 }
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234 <span class="preprocessor">#pragma mark -</span>
+<a name="l00235"></a>00235 <span class="preprocessor"></span>
+<a name="l00236"></a><a class="code" href="class_n_s_string.html#701a226759e8b3b959555be69cf6b7f9">00236</a> - (const <span class="keywordtype">char</span> *) bytesUsingEncoding:(NSStringEncoding) encoding allowLossyConversion:(BOOL) lossy {
+<a name="l00237"></a>00237         NSMutableData *ret = [[[<span class="keyword">self</span> dataUsingEncoding:encoding allowLossyConversion:lossy] mutableCopyWithZone:nil] autorelease];
+<a name="l00238"></a>00238         [ret appendBytes:"\0" length:1];
+<a name="l00239"></a>00239         <span class="keywordflow">return</span> [ret bytes];
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241 
+<a name="l00242"></a><a class="code" href="class_n_s_string.html#ca1d5f24e250bfc55146640cf1c12d22">00242</a> - (const <span class="keywordtype">char</span> *) bytesUsingEncoding:(NSStringEncoding) encoding {
+<a name="l00243"></a>00243         <span class="keywordflow">return</span> [<span class="keyword">self</span> <a class="code" href="class_n_s_string.html#701a226759e8b3b959555be69cf6b7f9">bytesUsingEncoding</a>:encoding <a class="code" href="class_n_s_string.html#701a226759e8b3b959555be69cf6b7f9">allowLossyConversion</a>:NO];
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 
+<a name="l00246"></a>00246 <span class="preprocessor">#pragma mark -</span>
+<a name="l00247"></a>00247 <span class="preprocessor"></span>
+<a name="l00248"></a><a class="code" href="class_n_s_string.html#9338d7941ef0a081135536f7da8ca54e">00248</a> - (NSString *) stringByEncodingXMLSpecialCharactersAsEntities {
+<a name="l00249"></a>00249         <a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> *result = [<span class="keyword">self</span> mutableCopyWithZone:nil];
+<a name="l00250"></a>00250         [result <a class="code" href="class_n_s_mutable_string.html#8c6f4adaf11919b5e3323380fc2a8030">encodeXMLSpecialCharactersAsEntities</a>];
+<a name="l00251"></a>00251         <span class="keywordflow">return</span> [result autorelease];
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253 
+<a name="l00254"></a><a class="code" href="class_n_s_string.html#da2a84fa4207790b482d6698ff8d83e0">00254</a> - (NSString *) stringByDecodingXMLSpecialCharacterEntities {
+<a name="l00255"></a>00255         <a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> *result = [<span class="keyword">self</span> mutableCopyWithZone:nil];
+<a name="l00256"></a>00256         [result <a class="code" href="class_n_s_mutable_string.html#b4d95e9ca4c9107eb1ae681801bad462">decodeXMLSpecialCharacterEntities</a>];
+<a name="l00257"></a>00257         <span class="keywordflow">return</span> [result autorelease];
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260 <span class="preprocessor">#pragma mark -</span>
+<a name="l00261"></a>00261 <span class="preprocessor"></span>
+<a name="l00262"></a><a class="code" href="class_n_s_string.html#be4ef9db3789bf42d3850b2e0ddc03d9">00262</a> - (NSString *) stringByEscapingCharactersInSet:(NSCharacterSet *) set {
+<a name="l00263"></a>00263         <a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> *result = [<span class="keyword">self</span> mutableCopyWithZone:nil];
+<a name="l00264"></a>00264         [result <a class="code" href="class_n_s_mutable_string.html#bf212c9d68fb8a38eea0320a7587d6bf">escapeCharactersInSet</a>:set];
+<a name="l00265"></a>00265         <span class="keywordflow">return</span> [result autorelease];
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268 <span class="preprocessor">#pragma mark -</span>
+<a name="l00269"></a>00269 <span class="preprocessor"></span>
+<a name="l00270"></a><a class="code" href="class_n_s_string.html#6d09e884305880d7906628561e80fef9">00270</a> - (NSString *) stringByEncodingIllegalURLCharacters {
+<a name="l00271"></a>00271         <span class="keywordflow">return</span> [(<a class="code" href="class_n_s_string.html">NSString</a> *)<a class="code" href="class_n_s_string.html">CFURLCreateStringByAddingPercentEscapes</a>( NULL, (CFStringRef)self, NULL, CFSTR( ",;:/?@&amp;$=|^~`\{}[]" ), kCFStringEncodingUTF8 ) autorelease];
+<a name="l00272"></a>00272 }
+<a name="l00273"></a>00273 
+<a name="l00274"></a><a class="code" href="class_n_s_string.html#d7576ec383cdcc5bddfc353cbd63a1c1">00274</a> - (NSString *) stringByDecodingIllegalURLCharacters {
+<a name="l00275"></a>00275         <span class="keywordflow">return</span> [(<a class="code" href="class_n_s_string.html">NSString</a> *)<a class="code" href="class_n_s_string.html">CFURLCreateStringByReplacingPercentEscapes</a>( NULL, (CFStringRef)self, CFSTR( "" ) ) autorelease];
+<a name="l00276"></a>00276 }
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278 <span class="preprocessor">#pragma mark -</span>
+<a name="l00279"></a>00279 <span class="preprocessor"></span>
+<a name="l00280"></a><a class="code" href="class_n_s_string.html#b04204ccc16448a27c9bb9ad1a1b20bb">00280</a> - (NSString *) stringByStrippingIllegalXMLCharacters {
+<a name="l00281"></a>00281         <a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> *result = [<span class="keyword">self</span> mutableCopyWithZone:nil];
+<a name="l00282"></a>00282         [result <a class="code" href="class_n_s_mutable_string.html#0f15142f4a3a2907d5522d171b375e9d">stripIllegalXMLCharacters</a>];
+<a name="l00283"></a>00283         <span class="keywordflow">return</span> [result autorelease];
+<a name="l00284"></a>00284 }
+<a name="l00285"></a>00285 <span class="keyword">@end</span>
+<a name="l00286"></a>00286 
+<a name="l00287"></a>00287 <span class="preprocessor">#pragma mark -</span>
+<a name="l00288"></a>00288 <span class="preprocessor"></span>
+<a name="l00289"></a><a class="code" href="class_n_s_mutable_string.html">00289</a> <span class="keyword">@implementation </span><a class="code" href="class_n_s_mutable_string.html">NSMutableString</a> (NSMutableStringAdditions)
+<a name="l00290"></a><a class="code" href="class_n_s_mutable_string.html#8c6f4adaf11919b5e3323380fc2a8030">00290</a> - (<span class="keywordtype">void</span>) encodeXMLSpecialCharactersAsEntities {
+<a name="l00291"></a>00291         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;" withString:@"&amp;amp;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00292"></a>00292         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&lt;" withString:@"&amp;lt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00293"></a>00293         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&gt;" withString:@"&amp;gt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00294"></a>00294         [<span class="keyword">self</span> replaceOccurrencesOfString:@"\"" withString:@"&amp;quot;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00295"></a>00295         [<span class="keyword">self</span> replaceOccurrencesOfString:@"'" withString:@"&amp;apos;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 
+<a name="l00298"></a><a class="code" href="class_n_s_mutable_string.html#b4d95e9ca4c9107eb1ae681801bad462">00298</a> - (<span class="keywordtype">void</span>) decodeXMLSpecialCharacterEntities {
+<a name="l00299"></a>00299         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;amp;" withString:@"&amp;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00300"></a>00300         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;lt;" withString:@"&lt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00301"></a>00301         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;gt;" withString:@"&gt;" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00302"></a>00302         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;quot;" withString:@"\"" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00303"></a>00303         [<span class="keyword">self</span> replaceOccurrencesOfString:@"&amp;apos;" withString:@"'" options:NSLiteralSearch range:NSMakeRange( 0, [<span class="keyword">self</span> length] )];
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306 <span class="preprocessor">#pragma mark -</span>
+<a name="l00307"></a>00307 <span class="preprocessor"></span>
+<a name="l00308"></a><a class="code" href="class_n_s_mutable_string.html#bf212c9d68fb8a38eea0320a7587d6bf">00308</a> - (<span class="keywordtype">void</span>) escapeCharactersInSet:(NSCharacterSet *) set {
+<a name="l00309"></a>00309         NSScanner *scanner = [[NSScanner allocWithZone:nil] initWithString:self];
+<a name="l00310"></a>00310         <span class="keywordtype">int</span> offset = 0;
+<a name="l00311"></a>00311         <span class="keywordflow">while</span>( ! [scanner isAtEnd] ) {
+<a name="l00312"></a>00312                 [scanner scanUpToCharactersFromSet:set intoString:nil];
+<a name="l00313"></a>00313                 <span class="keywordflow">if</span>( ! [scanner isAtEnd] ) {
+<a name="l00314"></a>00314                         [<span class="keyword">self</span> insertString:@"\\" atIndex:[scanner scanLocation] + offset++];
+<a name="l00315"></a>00315                         [scanner setScanLocation:[scanner scanLocation] + 1];
+<a name="l00316"></a>00316                 }
+<a name="l00317"></a>00317         }
+<a name="l00318"></a>00318         [scanner release];
+<a name="l00319"></a>00319 }
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321 <span class="preprocessor">#pragma mark -</span>
+<a name="l00322"></a>00322 <span class="preprocessor"></span>
+<a name="l00323"></a><a class="code" href="class_n_s_mutable_string.html#cb7263d5e55af6cd94b86f289ef5579c">00323</a> - (<span class="keywordtype">void</span>) encodeIllegalURLCharacters {
+<a name="l00324"></a>00324         [<span class="keyword">self</span> setString:[<span class="keyword">self</span> stringByEncodingIllegalURLCharacters]];
+<a name="l00325"></a>00325 }
+<a name="l00326"></a>00326 
+<a name="l00327"></a><a class="code" href="class_n_s_mutable_string.html#718b972d1bcc14813c77bc11d1240995">00327</a> - (<span class="keywordtype">void</span>) decodeIllegalURLCharacters {
+<a name="l00328"></a>00328         [<span class="keyword">self</span> setString:[<span class="keyword">self</span> stringByDecodingIllegalURLCharacters]];
+<a name="l00329"></a>00329 }
+<a name="l00330"></a>00330 
+<a name="l00331"></a>00331 <span class="preprocessor">#pragma mark -</span>
+<a name="l00332"></a>00332 <span class="preprocessor"></span>
+<a name="l00333"></a><a class="code" href="class_n_s_mutable_string.html#0f15142f4a3a2907d5522d171b375e9d">00333</a> - (<span class="keywordtype">void</span>) stripIllegalXMLCharacters {
+<a name="l00334"></a>00334         NSMutableCharacterSet *illegalSet = [[[NSCharacterSet characterSetWithRange:NSMakeRange( 0, 0x1f )] mutableCopyWithZone:nil] autorelease];
+<a name="l00335"></a>00335         [illegalSet addCharactersInRange:NSMakeRange( 0x7f, 1 )];
+<a name="l00336"></a>00336         [illegalSet addCharactersInRange:NSMakeRange( 0xfffe, 1 )];
+<a name="l00337"></a>00337         [illegalSet addCharactersInRange:NSMakeRange( 0xffff, 1 )];
+<a name="l00338"></a>00338         
+<a name="l00339"></a>00339         NSRange range = [<span class="keyword">self</span> rangeOfCharacterFromSet:illegalSet];
+<a name="l00340"></a>00340         <span class="keywordflow">while</span>( range.location != NSNotFound ) {
+<a name="l00341"></a>00341                 [<span class="keyword">self</span> deleteCharactersInRange:range];
+<a name="l00342"></a>00342                 range = [<span class="keyword">self</span> rangeOfCharacterFromSet:illegalSet];
+<a name="l00343"></a>00343         }
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345 <span class="keyword">@end</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:05:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions)-members.html
===================================================================
--- /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions)-members.html (revision 24)
+++ /tags/release-0.8/docs/html/category_n_s_data(_n_s_data_additions)-members.html (revision 24)
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
+    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>NSData(NSDataAdditions) Member List</h1>This is the complete list of members for <a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a>, including all inherited members.<p><table>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#d1727e2f594cad1b56e1e405524bfc09">base64Encoding</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#ebeb4e9b80809f8a50051b054f998b93">base64EncodingWithLineLength:</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td></td></tr>
+  <tr class="memlist"><td>+&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#7ea1d9027d77f68091c2167ffe5d9e7d">dataWithBase64EncodedString:</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td><code> [static]</code></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#466369891c0c2138969106135bad11b4">hasPrefix:</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#d50d1632f3c1101293468b3bc7c00d94">hasPrefixBytes:length:</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td></td></tr>
+  <tr class="memlist"><td>-&nbsp;</td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html#06601e9b3858c1b7f4bfe872cb77af59">initWithBase64EncodedString:</a></td><td><a class="el" href="category_n_s_data(_n_s_data_additions).html">NSData(NSDataAdditions)</a></td><td></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_image_drag_area_8h.html
===================================================================
--- /tags/release-0.8/docs/html/_image_drag_area_8h.html (revision 24)
+++ /tags/release-0.8/docs/html/_image_drag_area_8h.html (revision 24)
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: ImageDragArea.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>ImageDragArea.h File Reference</h1>
+<p>
+<a href="_image_drag_area_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_image_drag_area.html">ImageDragArea</a></td></tr>
+
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:10:51 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_fence__vers_8c.html
===================================================================
--- /tags/release-0.8/docs/html/_fence__vers_8c.html (revision 20)
+++ /tags/release-0.8/docs/html/_fence__vers_8c.html (revision 20)
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: /Users/ngerakines/dev/6a/code/Fence/trunk/build/Fence.build/Debug/Fence.build/DerivedSources/Fence_vers.c File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>/Users/ngerakines/dev/6a/code/Fence/trunk/build/Fence.build/Debug/Fence.build/DerivedSources/Fence_vers.c File Reference</h1>
+<p>
+<a href="_fence__vers_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned char FenceVersionString[]&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="_fence__vers_8c.html#6ad04b57021fee6b644eb5867fe07d77">__attribute__</a> ((used)) = (double)30.</td></tr>
+
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="6ad04b57021fee6b644eb5867fe07d77"></a><!-- doxytag: member="Fence_vers.c::__attribute__" ref="6ad04b57021fee6b644eb5867fe07d77" args="((used))" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">const double FenceVersionNumber __attribute__           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">(used)&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap>          </td>
+          <td class="md" valign="top">&nbsp;)&nbsp;</td>
+          <td class="md" nowrap> = (double)30.</td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+    </td>
+  </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Jun 7 15:01:14 2006 for Fence by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>
Index: /tags/release-0.8/docs/html/_core_graphics_services_8h-source.html
===================================================================
--- /tags/release-0.8/docs/html/_core_graphics_services_8h-source.html (revision 19)
+++ /tags/release-0.8/docs/html/_core_graphics_services_8h-source.html (revision 19)
@@ -0,0 +1,293 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Fence: CoreGraphicsServices.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="classes.html"><span>Classes</span></a></li>
+    <li id="current"><a href="files.html"><span>Files</span></a></li>
+  </ul></div>
+<div class="tabs">
+  <ul>
+    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
+  </ul></div>
+<h1>CoreGraphicsServices.h</h1><a href="_core_graphics_services_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
+<a name="l00002"></a>00002 <span class="comment">//  CoreGraphicsServices.h</span>
+<a name="l00003"></a>00003 <span class="comment">//  TypePad-Uploader</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">//  Created by Nicholas Gerakines on 4/28/06.</span>
+<a name="l00006"></a>00006 <span class="comment">//  Copyright 2006 __MyCompanyName__. All rights reserved.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 
+<a name="l00009"></a>00009 <span class="preprocessor">#import &lt;Cocoa/Cocoa.h&gt;</span>
+<a name="l00010"></a>00010 
+<a name="l00011"></a>00011 <span class="preprocessor">#ifndef CORE_GRAPHICS_SERVICES_H</span>
+<a name="l00012"></a>00012 <span class="preprocessor"></span><span class="preprocessor">#define CORE_GRAPHICS_SERVICES_H</span>
+<a name="l00013"></a>00013 <span class="preprocessor"></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;Carbon/Carbon.h&gt;</span> <span class="comment">/* for ProcessSerialNumber */</span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="keyword">enum</span> { <span class="comment">// Error codes returned by CoreGraphics functions... implied meanings may be different from actual</span>
+<a name="l00018"></a>00018     <a class="code" href="_core_graphics_services_8h.html#06fc87d81c62e9abb8790b6e5713c55bb14c09c94baed1333d7e9a6d21fc6310">kCGSInvalidWID</a> = 1001,
+<a name="l00019"></a>00019     <a class="code" href="_core_graphics_services_8h.html#06fc87d81c62e9abb8790b6e5713c55bebf71678d9b17363cb4e6f87d90840df">kCGSInvalidCID</a> = 1002
+<a name="l00020"></a>00020 };
+<a name="l00021"></a>00021 
+<a name="l00022"></a><a class="code" href="_core_graphics_services_8h.html#9b28cb7f6e731448b18804a960b0344e">00022</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="_core_graphics_services_8h.html#9b28cb7f6e731448b18804a960b0344e">CGSWindow</a>; <span class="comment">/* Note that CGS can retrieve a particular window's CGSConnection automatically, given a CGSWindow, but many functions do not do this - unless explicitly stated, all CGSConnection arguments must be provided and valid */</span>
+<a name="l00023"></a><a class="code" href="_core_graphics_services_8h.html#81d08c0459b4d968f5e10f93551867cc">00023</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="_core_graphics_services_8h.html#81d08c0459b4d968f5e10f93551867cc">CGSConnection</a>;
+<a name="l00024"></a><a class="code" href="_core_graphics_services_8h.html#a44bd745b5928764aac9439c350d4c95">00024</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code" href="_core_graphics_services_8h.html#a44bd745b5928764aac9439c350d4c95">CGSValue</a>;
+<a name="l00025"></a><a class="code" href="_core_graphics_services_8h.html#b24f211656d0569cb91ba2092d8793c0">00025</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code" href="_core_graphics_services_8h.html#b24f211656d0569cb91ba2092d8793c0">CGSRegion</a>;
+<a name="l00026"></a><a class="code" href="_core_graphics_services_8h.html#2e75165ea39826aa5949269d538d3a15">00026</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code" href="_core_graphics_services_8h.html#2e75165ea39826aa5949269d538d3a15">CGSBoundingShape</a>;
+<a name="l00027"></a><a class="code" href="_core_graphics_services_8h.html#4530c77a71ec953a1e41f234b618e111">00027</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* <a class="code" href="_core_graphics_services_8h.html#4530c77a71ec953a1e41f234b618e111">CGSAnimationRef</a>; <span class="comment">/* Ref really is a pointer to some other structure.  *ref + 40 = window ID */</span>
+<a name="l00028"></a>00028 
+<a name="l00029"></a><a class="code" href="struct___c_g_s_mesh_cell.html">00029</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___c_g_s_mesh_cell.html">_CGSMeshCell</a> {
+<a name="l00030"></a><a class="code" href="struct___c_g_s_mesh_cell.html#eb3975687a749f4e5df1799fbd6800b6">00030</a>     <span class="keywordtype">float</span> <a class="code" href="struct___c_g_s_mesh_cell.html#eb3975687a749f4e5df1799fbd6800b6">unknown1</a>[8]; <span class="comment">// Judging by the lineEq function, {0, 1} -&gt; {4, 5}, {2, 1} -&gt; {6, 5}, {3, 2} -&gt; {7, 5}, etc... no sense.</span>
+<a name="l00031"></a><a class="code" href="struct___c_g_s_mesh_cell.html#6f476c1f0d829fdf179ebf15fedbf529">00031</a>     <span class="keywordtype">char</span> <a class="code" href="struct___c_g_s_mesh_cell.html#6f476c1f0d829fdf179ebf15fedbf529">unknown2</a>[298];
+<a name="l00032"></a>00032 } <a class="code" href="struct___c_g_s_mesh_cell.html">CGSMeshCell</a>;
+<a name="l00033"></a>00033 
+<a name="l00034"></a><a class="code" href="struct___c_g_s_mesh.html">00034</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___c_g_s_mesh.html">_CGSMesh</a> {
+<a name="l00035"></a><a class="code" href="struct___c_g_s_mesh.html#4dd634bda297375af52a0ae450d522ed">00035</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="struct___c_g_s_mesh.html#4dd634bda297375af52a0ae450d522ed">numberOfCells</a>;
+<a name="l00036"></a><a class="code" href="struct___c_g_s_mesh.html#4efa7b3a9f03865c9186e5c587aa4c65">00036</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="struct___c_g_s_mesh.html#4efa7b3a9f03865c9186e5c587aa4c65">unknown</a>; <span class="comment">// Set to zero in meshAlloc</span>
+<a name="l00037"></a><a class="code" href="struct___c_g_s_mesh.html#af28ec818167f104adbec69bfc019802">00037</a>     <a class="code" href="struct___c_g_s_mesh_cell.html">CGSMeshCell</a> <a class="code" href="struct___c_g_s_mesh.html#af28ec818167f104adbec69bfc019802">cells</a>[];
+<a name="l00038"></a>00038 } <a class="code" href="struct___c_g_s_mesh.html">CGSMesh</a>;
+<a name="l00039"></a>00039 
+<a name="l00040"></a><a class="code" href="_core_graphics_services_8h.html#a2706915e7ef7c1d1aa70f8cb0cbbaaf">00040</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="_core_graphics_services_8h.html#a2706915e7ef7c1d1aa70f8cb0cbbaaf">_CGSWindowOrderingMode</a> {
+<a name="l00041"></a>00041     <a class="code" href="_core_graphics_services_8h.html#a2706915e7ef7c1d1aa70f8cb0cbbaaf9e445fbf4cf477b49ec80ed44b45df83">kCGSOrderAbove</a>  =  1,
+<a name="l00042"></a>00042     <a class="code" href="_core_graphics_services_8h.html#a2706915e7ef7c1d1aa70f8cb0cbbaafd9b821c36a7e25bb876756dd1d7876fe">kCGSOrderBelow</a>  = -1,
+<a name="l00043"></a>00043     <a class="code" href="_core_graphics_services_8h.html#a2706915e7ef7c1d1aa70f8cb0cbbaaf67b2c6aa1de331d87900e4a38561ee6d">kCGSOrderOut</a>    =  0
+<a name="l00044"></a>00044 } <a class="code" href="_core_graphics_services_8h.html#6f3fa197b6bb273bc25ebd6e0edfcb90">CGSWindowOrderingMode</a>;
+<a name="l00045"></a>00045 
+<a name="l00046"></a><a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f">00046</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f">_CGSTransitionType</a> {
+<a name="l00047"></a>00047     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46fd80eb61c47e3653fcc395194a4cea684">CGSNone</a> = 0,    <span class="comment">// No transition effect.</span>
+<a name="l00048"></a>00048     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f0fc9f3ae14ea54cb4f9c3de90998f411">CGSFade</a>,        <span class="comment">// Cross-fade.</span>
+<a name="l00049"></a>00049     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46fc553624587f203cc7f35322c2ad7927e">CGSZoom</a>,        <span class="comment">// Zoom/fade towards us.</span>
+<a name="l00050"></a>00050     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46ffbf02d79cfda87dd37e288d7e637f6f6">CGSReveal</a>,      <span class="comment">// Reveal new desktop under old.</span>
+<a name="l00051"></a>00051     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f959b207d070250215fffaf98ec7bc218">CGSSlide</a>,       <span class="comment">// Slide old out and new in.</span>
+<a name="l00052"></a>00052     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f53579fb2c2aaa75f7661f4a19aa8cb07">CGSWarpFade</a>,    <span class="comment">// Warp old and fade out revealing new.</span>
+<a name="l00053"></a>00053     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f9dd7e244984a57d7c3a3e18fc4b59ac7">CGSSwap</a>,        <span class="comment">// Swap desktops over graphically.</span>
+<a name="l00054"></a>00054     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f9e5d510267ca6c402aadc5855b7f64e5">CGSCube</a>,        <span class="comment">// The well-known cube effect.</span>
+<a name="l00055"></a>00055     <a class="code" href="_core_graphics_services_8h.html#d52095024edadefc9824f0a577e6c46f52165471083298624ea7c38221342de4">CGSWarpSwitch</a>   <span class="comment">// Warp old, switch and un-warp.</span>
+<a name="l00056"></a>00056 } <a class="code" href="_core_graphics_services_8h.html#b26049fd7a47d054837141587fba512d">CGSTransitionType</a>;
+<a name="l00057"></a>00057 
+<a name="l00058"></a><a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869">00058</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869">_CGSTransitionOption</a> {
+<a name="l00059"></a>00059     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8698fcddd01f08c6ea64507e21833ed5274">CGSDown</a>,                <span class="comment">// Old desktop moves down.</span>
+<a name="l00060"></a>00060     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8696d8df4055114e44800f1474552f7f9a7">CGSLeft</a>,                <span class="comment">// Old desktop moves left.</span>
+<a name="l00061"></a>00061     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8697744557caccf74cb58cb44141dcc4c7e">CGSRight</a>,               <span class="comment">// Old desktop moves right.</span>
+<a name="l00062"></a>00062     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869a2d95095fb9fbd7ae668dad917c898f6">CGSInRight</a>,             <span class="comment">// CGSSwap: Old desktop moves into screen, </span>
+<a name="l00063"></a>00063                             <span class="comment">//                      new comes from right.</span>
+<a name="l00064"></a>00064     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869d523de7fa3d739105b3a173d631c47b7">CGSBottomLeft</a> = 5,      <span class="comment">// CGSSwap: Old desktop moves to bl,</span>
+<a name="l00065"></a>00065                             <span class="comment">//                      new comes from tr.</span>
+<a name="l00066"></a>00066     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8699e087013348d1a39157accdd67eb92d1">CGSBottomRight</a>,         <span class="comment">// Old desktop to br, New from tl.</span>
+<a name="l00067"></a>00067     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869181d1f0dd3c492166c4157a6d6656525">CGSDownTopRight</a>,        <span class="comment">// CGSSwap: Old desktop moves down, new from tr.</span>
+<a name="l00068"></a>00068     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe86906abb95d4fefe1862aa01ab8583eb1f9">CGSUp</a>,                  <span class="comment">// Old desktop moves up.</span>
+<a name="l00069"></a>00069     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869d68bdd043048cc530d1b69d454a248c8">CGSTopLeft</a>,             <span class="comment">// Old desktop moves tl.</span>
+<a name="l00070"></a>00070     
+<a name="l00071"></a>00071     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8697daea60ef2de7eddafdcf7d43e09cefc">CGSTopRight</a>,            <span class="comment">// CGSSwap: old to tr. new from bl.</span>
+<a name="l00072"></a>00072     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869a2a4f050947c18536c1a6e34220d7c01">CGSUpBottomRight</a>,       <span class="comment">// CGSSwap: old desktop up, new from br.</span>
+<a name="l00073"></a>00073     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869491b4951e5299116793bcb780ef5e314">CGSInBottom</a>,            <span class="comment">// CGSSwap: old in, new from bottom.</span>
+<a name="l00074"></a>00074     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe86902c1ad98d34c700b55e941c3380371e8">CGSLeftBottomRight</a>,     <span class="comment">// CGSSwap: old one moves left, new from br.</span>
+<a name="l00075"></a>00075     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe8692c4907d6fcf1335be8cc475bdccd03eb">CGSRightBottomLeft</a>,     <span class="comment">// CGSSwap: old one moves right, new from bl.</span>
+<a name="l00076"></a>00076     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe86993bad2218562934bfef05dcf5fc41ea9">CGSInBottomRight</a>,       <span class="comment">// CGSSwap: onl one in, new from br.</span>
+<a name="l00077"></a>00077     <a class="code" href="_core_graphics_services_8h.html#0434ff58d719cf04c1396ad7787fe869b28617452c24553cd22c4c25d74d51fd">CGSInOut</a>                <span class="comment">// CGSSwap: old in, new out.</span>
+<a name="l00078"></a>00078 } <a class="code" href="_core_graphics_services_8h.html#1994c9d308db527e82057d45dfbdaca1">CGSTransitionOption</a>;
+<a name="l00079"></a>00079 
+<a name="l00080"></a><a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c35">00080</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c35">_CGSWindowTag</a> {
+<a name="l00081"></a>00081     <a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c35949e4b3c6ee11f7f682cc952841471ff">CGSTagExposeFade</a>    = 0x0002,   <span class="comment">// Fade out when Expose activates.</span>
+<a name="l00082"></a>00082     <a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c35f01ae175440a2712c0bd341c589e60bb">CGSTagNoShadow</a>      = 0x0008,   <span class="comment">// No window shadow.</span>
+<a name="l00083"></a>00083     <a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c354f9ea345aceba196c8f9d2ef00136863">CGSTagTransparent</a>   = 0x0200,   <span class="comment">// Transparent to mouse clicks.</span>
+<a name="l00084"></a>00084     <a class="code" href="_core_graphics_services_8h.html#4875a56bdbea714150bff9c642cb2c350d1e01887013b31fe2710f6849e634ae">CGSTagSticky</a>        = 0x0800,   <span class="comment">// Appears on all workspaces.</span>
+<a name="l00085"></a>00085 } <a class="code" href="_core_graphics_services_8h.html#6ad1539e00d17c53cba63e3f41d79458">CGSWindowTag</a>;
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087 
