adium 2766:b08debbcadf8: I'm dual-licensing these localization-a...

commits at adium.im commits at adium.im
Fri Oct 23 22:29:23 UTC 2009


details:	http://hg.adium.im/adium/rev/b08debbcadf8
revision:	2766:b08debbcadf8
author:		Evan Schoenberg
date:		Fri Oct 23 17:28:21 2009 -0500

I'm dual-licensing these localization-assistance classes files as BSD 3-clause and GPL.
Subject: adium 2767:ea08449f2408: Mergetastic. My apologies for not updating before commiting my PREV.

details:	http://hg.adium.im/adium/rev/ea08449f2408
revision:	2767:ea08449f2408
author:		Evan Schoenberg
date:		Fri Oct 23 17:31:47 2009 -0500

Mergetastic. My apologies for not updating before commiting my PREV.

diffs (truncated from 329939 to 1000 lines):

diff -r 14cef01e09dc -r ea08449f2408 .hgignore
--- a/.hgignore	Sat Sep 12 15:04:44 2009 -0400
+++ b/.hgignore	Fri Oct 23 17:31:47 2009 -0500
@@ -14,3 +14,4 @@
 Dependencies/source
 Dependencies/Frameworks
 Dependencies/build.log
+Dependencies/error.log
diff -r 14cef01e09dc -r ea08449f2408 Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Sat Sep 12 15:04:44 2009 -0400
+++ b/Adium.xcodeproj/project.pbxproj	Fri Oct 23 17:31:47 2009 -0500
@@ -644,12 +644,10 @@
 		34B4B5A40708B049002C4C6D /* ESDebugController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B4B5A20708B049002C4C6D /* ESDebugController.m */; };
 		34B588A1058D833A00E7EF0D /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B588A0058D833A00E7EF0D /* ExceptionHandling.framework */; };
 		34B5E2600A7C94D3005186E6 /* AILogDateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B5E25E0A7C94D3005186E6 /* AILogDateFormatter.m */; };
-		34B8936B102BCDAB000ABB8E /* libxml.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89366102BCDAB000ABB8E /* libxml.framework */; };
 		34B8936C102BCDAB000ABB8E /* libgstreamer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89367102BCDAB000ABB8E /* libgstreamer.framework */; };
 		34B8936D102BCDAB000ABB8E /* libgstinterfaces.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89368102BCDAB000ABB8E /* libgstinterfaces.framework */; };
 		34B8936E102BCDAB000ABB8E /* libgstfarsight.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89369102BCDAB000ABB8E /* libgstfarsight.framework */; };
 		34B8936F102BCDAB000ABB8E /* libgstbase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34B8936A102BCDAB000ABB8E /* libgstbase.framework */; };
-		34B89477102BCDB4000ABB8E /* libxml.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89366102BCDAB000ABB8E /* libxml.framework */; };
 		34B89478102BCDB4000ABB8E /* libgstreamer.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89367102BCDAB000ABB8E /* libgstreamer.framework */; };
 		34B89479102BCDB4000ABB8E /* libgstinterfaces.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89368102BCDAB000ABB8E /* libgstinterfaces.framework */; };
 		34B8947A102BCDB4000ABB8E /* libgstfarsight.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 34B89369102BCDAB000ABB8E /* libgstfarsight.framework */; };
@@ -1444,8 +1442,8 @@
 		7E824CE106387FAF00813072 /* SHAutoValidatingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CD206387FAF00813072 /* SHAutoValidatingTextView.m */; };
 		7E824CE306387FAF00813072 /* SHLinkEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CD406387FAF00813072 /* SHLinkEditorWindowController.m */; };
 		7E824CEB06387FAF00813072 /* SHLinkManagementPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E824CDC06387FAF00813072 /* SHLinkManagementPlugin.m */; };
-		7E9A8CB3104DEBC400F210CC /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9A8CB2104DEBC400F210CC /* Growl.framework */; };
-		7EE09627104DFCBC00587F35 /* Growl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9A8CB2104DEBC400F210CC /* Growl.framework */; };
+		7EDAC0A31072596200B77631 /* Growl-WithInstaller.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EDAC0A21072596200B77631 /* Growl-WithInstaller.framework */; };
+		7EDAC0D0107259A900B77631 /* Growl-WithInstaller.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 7EDAC0A21072596200B77631 /* Growl-WithInstaller.framework */; };
 		811033510CDE170B00EC6038 /* ssl-cdsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 811033500CDE170B00EC6038 /* ssl-cdsa.c */; };
 		811034050CDE216F00EC6038 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340C1ABE0BD58FAB00D09235 /* Security.framework */; };
 		811035180CDE783800EC6038 /* SecurityInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 811035170CDE783800EC6038 /* SecurityInterface.framework */; };
@@ -1698,8 +1696,7 @@
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
-				7EE09627104DFCBC00587F35 /* Growl.framework in Copy Frameworks */,
-				34B89477102BCDB4000ABB8E /* libxml.framework in Copy Frameworks */,
+				7EDAC0D0107259A900B77631 /* Growl-WithInstaller.framework in Copy Frameworks */,
 				34B89478102BCDB4000ABB8E /* libgstreamer.framework in Copy Frameworks */,
 				34B89479102BCDB4000ABB8E /* libgstinterfaces.framework in Copy Frameworks */,
 				34B8947A102BCDB4000ABB8E /* libgstfarsight.framework in Copy Frameworks */,
@@ -3529,7 +3526,6 @@
 		34B82C80085A85D800864531 /* AIChatController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIChatController.m; path = Source/AIChatController.m; sourceTree = "<group>"; };
 		34B82C89085A87B000864531 /* AdiumMessageEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AdiumMessageEvents.h; path = Source/AdiumMessageEvents.h; sourceTree = "<group>"; };
 		34B82C8A085A87B000864531 /* AdiumMessageEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AdiumMessageEvents.m; path = Source/AdiumMessageEvents.m; sourceTree = "<group>"; };
-		34B89366102BCDAB000ABB8E /* libxml.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libxml.framework; path = Frameworks/libxml.framework; sourceTree = "<group>"; };
 		34B89367102BCDAB000ABB8E /* libgstreamer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libgstreamer.framework; path = Frameworks/libgstreamer.framework; sourceTree = "<group>"; };
 		34B89368102BCDAB000ABB8E /* libgstinterfaces.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libgstinterfaces.framework; path = Frameworks/libgstinterfaces.framework; sourceTree = "<group>"; };
 		34B89369102BCDAB000ABB8E /* libgstfarsight.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libgstfarsight.framework; path = Frameworks/libgstfarsight.framework; sourceTree = "<group>"; };
@@ -4632,6 +4628,7 @@
 		7E824CDB06387FAF00813072 /* SHLinkManagementPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SHLinkManagementPlugin.h; sourceTree = "<group>"; };
 		7E824CDC06387FAF00813072 /* SHLinkManagementPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SHLinkManagementPlugin.m; sourceTree = "<group>"; };
 		7E9A8CB2104DEBC400F210CC /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Growl.framework; path = Frameworks/Growl.framework; sourceTree = "<group>"; };
+		7EDAC0A21072596200B77631 /* Growl-WithInstaller.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Growl-WithInstaller.framework"; path = "Frameworks/Growl-WithInstaller.framework"; sourceTree = "<group>"; };
 		811033500CDE170B00EC6038 /* ssl-cdsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "ssl-cdsa.c"; sourceTree = "<group>"; };
 		811035170CDE783800EC6038 /* SecurityInterface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityInterface.framework; path = /System/Library/Frameworks/SecurityInterface.framework; sourceTree = "<absolute>"; };
 		811036160CDE8A2500EC6038 /* AIPurpleCertificateViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIPurpleCertificateViewer.h; path = "Plugins/Purple Service/AIPurpleCertificateViewer.h"; sourceTree = "<group>"; };
@@ -4807,7 +4804,6 @@
 				633405990F9C2C00003C77A9 /* AIUtilities.framework in Frameworks */,
 				3485D8EB09EB446900232CC4 /* Adium.framework in Frameworks */,
 				118A44500FEEA828008153C0 /* libjson-glib.framework in Frameworks */,
-				34B8936B102BCDAB000ABB8E /* libxml.framework in Frameworks */,
 				34B8936C102BCDAB000ABB8E /* libgstreamer.framework in Frameworks */,
 				34B8936D102BCDAB000ABB8E /* libgstinterfaces.framework in Frameworks */,
 				34B8936E102BCDAB000ABB8E /* libgstfarsight.framework in Frameworks */,
@@ -4860,7 +4856,7 @@
 				118A44510FEEA828008153C0 /* libjson-glib.framework in Frameworks */,
 				34C846AF101E515900140B4B /* QTKit.framework in Frameworks */,
 				34C846E6101E518F00140B4B /* QuickTime.framework in Frameworks */,
-				7E9A8CB3104DEBC400F210CC /* Growl.framework in Frameworks */,
+				7EDAC0A31072596200B77631 /* Growl-WithInstaller.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4955,7 +4951,6 @@
 		1172FCA10CDAA8DE00B8E233 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				34B89366102BCDAB000ABB8E /* libxml.framework */,
 				34B89367102BCDAB000ABB8E /* libgstreamer.framework */,
 				34B89368102BCDAB000ABB8E /* libgstinterfaces.framework */,
 				34B89369102BCDAB000ABB8E /* libgstfarsight.framework */,
@@ -5139,6 +5134,7 @@
 		29B97323FDCFA39411CA2CEA /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				7EDAC0A21072596200B77631 /* Growl-WithInstaller.framework */,
 				34C846E5101E518F00140B4B /* QuickTime.framework */,
 				34C846AE101E515900140B4B /* QTKit.framework */,
 				11879DF70F6FFC0B00CACFB1 /* OAuthConsumer.framework */,
@@ -10042,14 +10038,14 @@
 			);
 			inputPaths = (
 				"$(SRCROOT)/Frameworks/libpurple.framework/Versions/Current/libpurple",
-				"$(SRCROOT)/Frameworks/Growl/Versions/A/Growl-WithInstaller",
+				"$(SRCROOT)/Frameworks/Growl-WithInstaller/Versions/A/Growl-WithInstaller",
 				"$(SRCROOT)/Frameworks/LMX.framework/Versions/A/LMX",
 				"$(SRCROOT)/Frameworks/PSMTabBarControl.framework/Versions/A/PSMTabBarControl",
 				"$(SRCROOT)/Frameworks/Sparkle.framework/Versions/A/Sparkle",
 				"$(SRCROOT)/Frameworks/libotr.framework/Versions/A/OTR",
 			);
 			outputPaths = (
-				"$(SRCROOT)/Frameworks/Growl.framework",
+				"$(SRCROOT)/Frameworks/Growl-WithInstaller.framework",
 				"$(SRCROOT)/Frameworks/libpurple.framework",
 				"$(SRCROOT)/Frameworks/LMX.framework",
 				"$(SRCROOT)/Frameworks/PSMTabBarControl.framework",
@@ -10058,7 +10054,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "#############################################################################################\n# Set framework bundles to have their executables' dates, thereby letting Xcode suck less.  #\n#############################################################################################\ntouch \"$SRCROOT/Frameworks/libpurple.framework\"\ntouch \"$SRCROOT/Frameworks/Growl.framework\"\ntouch \"$SRCROOT/Frameworks/LMX.framework\"\ntouch \"$SRCROOT/Frameworks/PSMTabBarControl.framework\"\ntouch \"$SRCROOT/Frameworks/Sparkle.framework\"\ntouch \"$SRCROOT/Frameworks/libotr.framework\"\n";
+			shellScript = "#############################################################################################\n# Set framework bundles to have their executables' dates, thereby letting Xcode suck less.  #\n#############################################################################################\ntouch \"$SRCROOT/Frameworks/libpurple.framework\"\ntouch \"$SRCROOT/Frameworks/Growl-WithInstaller.framework\"\ntouch \"$SRCROOT/Frameworks/LMX.framework\"\ntouch \"$SRCROOT/Frameworks/PSMTabBarControl.framework\"\ntouch \"$SRCROOT/Frameworks/Sparkle.framework\"\ntouch \"$SRCROOT/Frameworks/libotr.framework\"\n";
 		};
 		F53C25AD0A2F95F100F7B73D /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
diff -r 14cef01e09dc -r ea08449f2408 Dependencies/copy_frameworks.sh
--- a/Dependencies/copy_frameworks.sh	Sat Sep 12 15:04:44 2009 -0400
+++ b/Dependencies/copy_frameworks.sh	Fri Oct 23 17:31:47 2009 -0500
@@ -8,7 +8,7 @@
 
 ADIUM="`dirname $0`/.."
 
-cp -r "$ROOTDIR"/Frameworks/*.subproj/*.framework "$ADIUM/Frameworks/"
+cp -R "$ROOTDIR"/Frameworks/*.subproj/*.framework "$ADIUM/Frameworks/"
 
 pushd "$ADIUM/build" > /dev/null 2>&1
 	rm -rf */AdiumLibpurple.framework 
diff -r 14cef01e09dc -r ea08449f2408 Dependencies/phases/build_purple.sh
--- a/Dependencies/phases/build_purple.sh	Sat Sep 12 15:04:44 2009 -0400
+++ b/Dependencies/phases/build_purple.sh	Fri Oct 23 17:31:47 2009 -0500
@@ -47,8 +47,8 @@
 		status "Pulling updates to monotone database"
 		$MTN -d "pidgin.mtn" pull --set-default "mtn.pidgin.im" "im.pidgin.*"
 	
-		status "Checking out im.pidgin.adium.1-4 branch"
-		$MTN -d "pidgin.mtn" co -b "im.pidgin.adium.1-4" .
+		status "Checking out im.pidgin.adium branch"
+		$MTN -d "pidgin.mtn" co -b "im.pidgin.adium" .
 	
 	fi
 	
diff -r 14cef01e09dc -r ea08449f2408 Dependencies/phases/build_vv_dependencies.sh
--- a/Dependencies/phases/build_vv_dependencies.sh	Sat Sep 12 15:04:44 2009 -0400
+++ b/Dependencies/phases/build_vv_dependencies.sh	Fri Oct 23 17:31:47 2009 -0500
@@ -1,36 +1,6 @@
 #!/bin/bash -eu
 
 ##
-# xml2
-#
-XML_VERSION=2.2
-build_libxml2() {
-	prereq "xml2" \
-		"ftp://xmlsoft.org:21//libxml2/libxml2-sources-2.7.3.tar.gz"
-	
-	quiet pushd "$ROOTDIR/source/xml2"
-	
-	if needsconfigure $@; then
-	(
-		status "Configuring xml2"
-		export CFLAGS="$ARCH_CFLAGS"
-		export LDFLAGS="$ARCH_LDFLAGS"
-		log ./configure \
-			--prefix="$ROOTDIR/build" \
-			--with-python=no \
-			--disable-dependency-tracking
-	)
-	fi
-	
-	status "Building and installing xml2"
-	log make -j $NUMBER_OF_CORES
-	log make install
-	
-	quiet popd
-}
-
-
-##
 # liboil
 # liboil needs special threatment.  Rather than placing platform specific code
 # in a ifdef, it sequesters it by directory and invokes a makefile.  woowoo.
@@ -67,6 +37,19 @@
 		export NM="nm -arch all"
 		CONFIG_CMD="./configure \
 				--prefix=$ROOTDIR/build \
+				--disable-examples \
+				--disable-playback \
+				--disable-audiotestsrc \
+				--disable-cdparanoia \
+				--disable-subparse \
+				--disable-videotestsrc \
+				--disable-x \
+				--disable-xvideo \
+				--disable-xshm \
+				--disable-gst_v4l \
+				--disable-alsa \
+				--disable-gnome_vfs \
+				--disable-libvisual \
 				--disable-dependency-tracking"
 		xconfigure "${BASE_CFLAGS}" "${BASE_LDFLAGS}" "${CONFIG_CMD}" \
 			"${ROOTDIR}/source/gst-plugins-base/config.h" \
@@ -97,9 +80,46 @@
 		CONFIG_CMD="./configure \
 				--prefix=$ROOTDIR/build \
 				--disable-aalib \
+				--disable-videofilter \
+				--disable-apetag \
+				--disable-alpha \
+				--disable-audiofx \
+				--disable-auparse \
+				--disable-avi \
+				--disable-cutter \
+				--disable-debugutils \
+				--disable-deinterlace \
+				--disable-effectv \
+				--disable-flv \
+				--disable-id3demux \
+				--disable-icydemux \
 				--disable-examples \
+				--disable-interleave \
 				--disable-goom \
 				--disable-goom2k1 \
+				--disable-matroska \
+				--disable-monoscope \
+				--disable-multifile \
+				--disable-multipart \
+				--disable-qtdemux \
+				--disable-replaygain \
+				--disable-smpte \
+				--disable-spectrum \
+				--disable-directsound \
+				--disable-oss \
+				--disable-sunaudio \
+				--disable-gst_v4l2 \
+				--disable-x \
+				--disable-xshm \
+				--disable-xvideo \
+				--disable-annodex \
+				--disable-cairo \
+				--disable-esd \
+				--disable-flac \
+				--disable-libcaca \
+				--disable-taglib  \
+				--disable-wavpack \
+				--disable-shout2 \
 				--disable-dependency-tracking"
 		xconfigure "${BASE_CFLAGS}" "${BASE_LDFLAGS}" "${CONFIG_CMD}" \
 			"${ROOTDIR}/source/gst-plugins-good/config.h" \
@@ -180,7 +200,7 @@
 	build_liboil $@
 	build_gst_plugins_base $@
 	build_gst_plugins_good $@
-	build_gst_plugins_bad $@
+#	build_gst_plugins_bad $@
 	build_gst_plugins_farsight $@
 }
 
@@ -189,8 +209,6 @@
 #
 GSTREAMER_VERSION=0.10
 build_gstreamer() {
-    build_libxml2 $@
-
 	prereq "gstreamer" \
 		"http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.24.tar.gz"
 	
@@ -199,8 +217,11 @@
 	if needsconfigure $@; then
 	(
 		status "Configuring gstreamer"
+		export XML_CFLAGS=" -I$SDK_ROOT/usr/include/libxml2"
 		CONFIG_CMD="./configure \
 				--prefix=$ROOTDIR/build \
+				--disable-examples \
+				--disable-tests \
 				--disable-dependency-tracking"
 		xconfigure "${BASE_CFLAGS}" "${BASE_LDFLAGS}" "${CONFIG_CMD}" \
 			"$ROOTDIR/source/gstreamer/gst/gstconfig.h" \
@@ -275,4 +296,4 @@
 	log make install
 	
 	quiet popd
-}
\ No newline at end of file
+}
diff -r 14cef01e09dc -r ea08449f2408 Dependencies/phases/make_frameworks.sh
--- a/Dependencies/phases/make_frameworks.sh	Sat Sep 12 15:04:44 2009 -0400
+++ b/Dependencies/phases/make_frameworks.sh	Fri Oct 23 17:31:47 2009 -0500
@@ -77,12 +77,6 @@
 			touch "${ROOTDIR}/build/lib/include/${no_include_lib}/no_headers_here.txt"
 		done
 		
-		#libxml
-		status "Staging libxml headers"
-		local xml2Dir="${ROOTDIR}/build/lib/include/libxml-${XML_VERSION}"
-		quiet mkdir "${xml2Dir}" || true
-		log cp -R "${ROOTDIR}/build/include/libxml2" "${xml2Dir}"
-		
 		#libpurple
 		status "Staging libpurple headers"
 		local purpleDir="${ROOTDIR}/build/lib/include/libpurple-${LIBPURPLE_VERSION}"
@@ -124,7 +118,7 @@
 		
 		log cp "${ROOTDIR}/Libotr-Info.plist" \
 			"${FRAMEWORK_DIR}/libotr.subproj/libotr.framework/Resources/Info.plist"
-		else
+	else
 		status "Making a framework for libpurple-${LIBPURPLE_VERSION} and all dependencies..."
 		log python "${ROOTDIR}/framework_maker/frameworkize.py" \
 			"${ROOTDIR}/build/lib/libpurple.${LIBPURPLE_VERSION}.dylib" \
@@ -136,6 +130,13 @@
 
 		log cp "${ROOTDIR}/Libpurple-Info.plist" \
 			"${FRAMEWORK_DIR}/libpurple.subproj/libpurple.framework/Resources/Info.plist"
+		
+		status "Adding gst plugins..."
+		GST_PLUGINS_DIR="${ROOTDIR}/Frameworks/libgstreamer.subproj/libgstreamer.framework/PlugIns"
+		quiet mkdir "${GST_PLUGINS_DIR}"
+		pushd "${ROOTDIR}/build/lib/gstreamer-0.10/"
+		log cp *.so "${GST_PLUGINS_DIR}"
+		popd
 	fi
 	
 	status "Done!"
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Resources/en.lproj/Localizable.strings
Binary file Frameworks/Adium Framework/Resources/en.lproj/Localizable.strings has changed
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AIContactMenu.m
--- a/Frameworks/Adium Framework/Source/AIContactMenu.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIContactMenu.m	Fri Oct 23 17:31:47 2009 -0500
@@ -294,7 +294,9 @@
 			displayName = listObject.formattedUID;
 		}
 		
-		[menuItem setTitle:displayName];
+		if (displayName)
+			[menuItem setTitle:displayName];
+		
 		[menuItem setToolTip:(shouldSetTooltip ? [listObject.statusMessage string] : nil)];
 
 		[[menuItem menu] setMenuChangedMessagesEnabled:YES];
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AIContentStatus.m
--- a/Frameworks/Adium Framework/Source/AIContentStatus.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIContentStatus.m	Fri Oct 23 17:31:47 2009 -0500
@@ -70,9 +70,13 @@
 	NSMutableArray *classes = [super displayClasses];
 	
 	//The notion of direction is not very useful on statuses
-	NSUInteger idx = [classes indexOfObject:@"incoming"];
-	if(idx != NSNotFound)
-		[classes removeObjectAtIndex:idx];
+	NSUInteger idxin = [classes indexOfObject:@"incoming"];
+	if(idxin != NSNotFound)
+		[classes removeObjectAtIndex:idxin];
+	
+	NSUInteger idxout = [classes indexOfObject:@"outgoing"];
+	if(idxout != NSNotFound)
+		[classes removeObjectAtIndex:idxout];
 	
 	[classes addObject:@"status"];
 	[classes addObject:statusType];
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AICorePluginLoader.m
--- a/Frameworks/Adium Framework/Source/AICorePluginLoader.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AICorePluginLoader.m	Fri Oct 23 17:31:47 2009 -0500
@@ -46,6 +46,7 @@
 @interface AICorePluginLoader ()
 - (void)loadPlugins;
 + (BOOL)confirmPluginAtPath:(NSString *)pluginPath;
++ (BOOL)confirmPluginArchitectureAtPath:(NSString *)pluginPath;
 + (BOOL)confirmMinimumVersionMetForPluginAtPath:(NSString *)pluginPath;
 + (void)disablePlugin:(NSString *)pluginPath;
 + (BOOL)allDependenciesMetForPluginAtPath:(NSString *)pluginPath;
@@ -145,6 +146,19 @@
 #ifdef PLUGIN_LOAD_TIMING
 	NSDate *start = [NSDate date];
 #endif	
+	// Confirm plugins can load on this arch
+	if(![self confirmPluginArchitectureAtPath:pluginPath]) {
+		NSRunInformationalAlertPanel([NSString stringWithFormat:AILocalizedString(@"Plugin %@ Will be Disabled", "%@ will be the name of a plugin. This is the title of the dialogue shown when an plugin is loaded on an unsupported architecture."),
+									  [[pluginPath lastPathComponent] stringByDeletingPathExtension]],
+									 AILocalizedString(@"This plugin does not support your native architecture.", nil),
+									 AILocalizedString(@"Disable", nil),
+									 nil,
+									 nil);
+		[self disablePlugin:pluginPath];
+		return;
+	}
+	
+	
 	//Confirm the presence of external plugins with the user
 	if (confirmLoading && 
 		(![self confirmMinimumVersionMetForPluginAtPath:pluginPath] ||
@@ -238,6 +252,26 @@
 	return loadPlugin;
 }
 
++ (BOOL)confirmPluginArchitectureAtPath:(NSString *)pluginPath
+{
+#ifndef CURRENT_BUNDLE_ARCH_IS_DEFINED
+	#if defined(__x86_64__)
+		#define CURRENT_BUNDLE_ARCH NSBundleExecutableArchitectureX86_64
+	#elif defined(__i386__)
+		#define CURRENT_BUNDLE_ARCH NSBundleExecutableArchitectureI386
+	#elif defined(__ppc__)
+		#define CURRENT_BUNDLE_ARCH NSBundleExecutableArchitecturePPC
+	#else
+		#error Unsupported Architecture!
+	#endif
+	#define CURRENT_BUNDLE_ARCH_IS_DEFINED 1
+#endif
+	NSBundle *pluginBundle = [NSBundle bundleWithPath:pluginPath];
+	NSArray *pluginArchs = [pluginBundle executableArchitectures];
+	
+	return [pluginArchs containsObject:[NSNumber numberWithInteger:CURRENT_BUNDLE_ARCH]];
+}
+
 + (BOOL)confirmMinimumVersionMetForPluginAtPath:(NSString *)pluginPath
 {
 	NSString *minimumVersionOfPlugin = [[[NSBundle bundleWithPath:pluginPath] infoDictionary] objectForKey:@"AIMinimumAdiumVersionRequirement"];
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationAssistance.h
--- a/Frameworks/Adium Framework/Source/AILocalizationAssistance.h	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationAssistance.h	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationButton.h
--- a/Frameworks/Adium Framework/Source/AILocalizationButton.h	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationButton.h	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationButton.m
--- a/Frameworks/Adium Framework/Source/AILocalizationButton.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationButton.m	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationButtonCell.h
--- a/Frameworks/Adium Framework/Source/AILocalizationButtonCell.h	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationButtonCell.h	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationButtonCell.m
--- a/Frameworks/Adium Framework/Source/AILocalizationButtonCell.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationButtonCell.m	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationControl.m
--- a/Frameworks/Adium Framework/Source/AILocalizationControl.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationControl.m	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationTextField.h
--- a/Frameworks/Adium Framework/Source/AILocalizationTextField.h	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationTextField.h	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AILocalizationTextField.m
--- a/Frameworks/Adium Framework/Source/AILocalizationTextField.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AILocalizationTextField.m	Fri Oct 23 17:31:47 2009 -0500
@@ -1,3 +1,28 @@
+/*
+ Note: This file is dual-licensed under the BSD "3-Clause" license and the GPL license.
+ 
+ Copyright (c) 2009, Evan Schoenberg
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+ following conditions are met:
+ 
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided with the distribution.
+ Neither the name of the Adium nor the names of its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /* 
  * Adium is the legal property of its developers, whose names are listed in the copyright file included
  * with this source distribution.
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AIService.h
--- a/Frameworks/Adium Framework/Source/AIService.h	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIService.h	Fri Oct 23 17:31:47 2009 -0500
@@ -53,6 +53,7 @@
 @property (readonly, nonatomic) NSString *UIDPlaceholder;
 @property (readonly, nonatomic) AIServiceImportance serviceImportance;
 - (NSImage *)defaultServiceIconOfType:(AIServiceIconType)iconType;
+- (NSString *)pathForDefaultServiceIconOfType:(AIServiceIconType)iconType;
 
 //Service Properties
 @property (readonly, nonatomic) NSCharacterSet *allowedCharacters;
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AIService.m
--- a/Frameworks/Adium Framework/Source/AIService.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIService.m	Fri Oct 23 17:31:47 2009 -0500
@@ -238,6 +238,19 @@
 	return nil;
 }
 
+/*!
+ * @brief Path for default icon
+ *
+ * For use in message views, this is the path to a default icon as described above.
+ *
+ * @param iconType The AIServiceIconType of the icon to return.
+ * @return The path to the image, otherwise nil.
+ */
+- (NSString *)pathForDefaultServiceIconOfType:(AIServiceIconType)iconType
+{
+	return nil;
+}
+
 //Service Properties ---------------------------------------------------------------------------------------------------
 #pragma mark Service Properties
 /*!
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Adium Framework/Source/AIServiceIcons.m
--- a/Frameworks/Adium Framework/Source/AIServiceIcons.m	Sat Sep 12 15:04:44 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIServiceIcons.m	Fri Oct 23 17:31:47 2009 -0500
@@ -17,6 +17,7 @@
 #import <Adium/AIListObject.h>
 #import <Adium/AIService.h>
 #import <Adium/AIServiceIcons.h>
+#import <Adium/AIAccountControllerProtocol.h>
 
 static NSMutableDictionary	*serviceIcons[NUMBER_OF_SERVICE_ICON_TYPES][NUMBER_OF_ICON_DIRECTIONS];
 
@@ -68,7 +69,18 @@
 
 + (NSString *)pathForServiceIconForServiceID:(NSString *)serviceID type:(AIServiceIconType)iconType
 {
-	return [serviceIconBasePath stringByAppendingPathComponent:[serviceIconNames[iconType] objectForKey:serviceID]];
+	NSString *iconName = [serviceIconNames[iconType] objectForKey:serviceID];
+	
+	if (iconName) {
+		return [serviceIconBasePath stringByAppendingPathComponent:iconName];
+	} else {
+		AIService *service = [adium.accountController firstServiceWithServiceID:serviceID];
+		if (service) {
+			return [service pathForDefaultServiceIconOfType:iconType];
+		} else {
+			return nil;
+		}
+	}
 }
 
 //Retrieve the correct service icon for a service by ID
@@ -85,19 +97,24 @@
 
 		if (path) {
 			serviceIcon = [[NSImage alloc] initWithContentsOfFile:path];
+		} else {
+			AIService *service = [adium.accountController firstServiceWithServiceID:serviceID];
+			if (service) {
+				serviceIcon = [[service defaultServiceIconOfType:iconType] retain];
+			}
+		}
 
+		if (serviceIcon) {
+			if (iconDirection == AIIconFlipped) [serviceIcon setFlipped:YES];
+			[serviceIcons[iconType][iconDirection] setObject:serviceIcon forKey:serviceID];
+			[serviceIcon release];
+		} else {
+			//Attempt to load the default service icon
+			serviceIcon = [self defaultServiceIconForType:iconType serviceID:serviceID];
 			if (serviceIcon) {
+				//Cache the default service icon (until the pack is changed) so we have it immediately next time
 				if (iconDirection == AIIconFlipped) [serviceIcon setFlipped:YES];
 				[serviceIcons[iconType][iconDirection] setObject:serviceIcon forKey:serviceID];
-				[serviceIcon release];
-			} else {
-				//Attempt to load the default service icon
-				serviceIcon = [self defaultServiceIconForType:iconType serviceID:serviceID];
-				if (serviceIcon) {
-					//Cache the default service icon (until the pack is changed) so we have it immediately next time
-					if (iconDirection == AIIconFlipped) [serviceIcon setFlipped:YES];
-					[serviceIcons[iconType][iconDirection] setObject:serviceIcon forKey:serviceID];
-				}
 			}
 		}
 	}
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller	Fri Oct 23 17:31:47 2009 -0500
@@ -0,0 +1,1 @@
+Versions/Current/Growl-WithInstaller
\ No newline at end of file
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Headers
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/Growl-WithInstaller.framework/Headers	Fri Oct 23 17:31:47 2009 -0500
@@ -0,0 +1,1 @@
+Versions/Current/Headers
\ No newline at end of file
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Resources
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/Growl-WithInstaller.framework/Resources	Fri Oct 23 17:31:47 2009 -0500
@@ -0,0 +1,1 @@
+Versions/Current/Resources
\ No newline at end of file
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Versions/A/Growl-WithInstaller
Binary file Frameworks/Growl-WithInstaller.framework/Versions/A/Growl-WithInstaller has changed
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/Growl.h	Fri Oct 23 17:31:47 2009 -0500
@@ -0,0 +1,6 @@
+#include "GrowlDefines.h"
+
+#ifdef __OBJC__
+#	include "GrowlApplicationBridge.h"
+#endif
+#include "GrowlApplicationBridge-Carbon.h"
diff -r 14cef01e09dc -r ea08449f2408 Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Frameworks/Growl-WithInstaller.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h	Fri Oct 23 17:31:47 2009 -0500
@@ -0,0 +1,780 @@
+//
+//  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>
+
+#ifndef GROWL_EXPORT
+#define GROWL_EXPORT __attribute__((visibility("default"))) DEPRECATED_ATTRIBUTE
+#endif
+
+/*!	@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 *);




More information about the commits mailing list