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