Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/osx/growl')
-rw-r--r--src/osx/growl/.deps/_growlImage.Plo1
-rw-r--r--src/osx/growl/.deps/_growl_la-_growl.Plo1
-rw-r--r--src/osx/growl/Growl.py247
-rw-r--r--src/osx/growl/Makefile651
-rw-r--r--src/osx/growl/Makefile.am41
-rw-r--r--src/osx/growl/Makefile.in651
-rw-r--r--src/osx/growl/_growl.c239
-rw-r--r--src/osx/growl/_growlImage.m274
-rw-r--r--src/osx/growl/setup.py25
9 files changed, 2130 insertions, 0 deletions
diff --git a/src/osx/growl/.deps/_growlImage.Plo b/src/osx/growl/.deps/_growlImage.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/growl/.deps/_growlImage.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/growl/.deps/_growl_la-_growl.Plo b/src/osx/growl/.deps/_growl_la-_growl.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/growl/.deps/_growl_la-_growl.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/growl/Growl.py b/src/osx/growl/Growl.py
new file mode 100644
index 000000000..15e037673
--- /dev/null
+++ b/src/osx/growl/Growl.py
@@ -0,0 +1,247 @@
+"""
+A Python module that enables posting notifications to the Growl daemon.
+See <http://growl.info/> for more information.
+"""
+__version__ = "0.7"
+__author__ = "Mark Rowe <bdash@users.sourceforge.net>"
+__copyright__ = "(C) 2003 Mark Rowe <bdash@users.sourceforge.net>. Released under the BSD license."
+__contributors__ = ["Ingmar J Stein (Growl Team)",
+ "Rui Carmo (http://the.taoofmac.com)",
+ "Jeremy Rossi <jeremy@jeremyrossi.com>"
+ ]
+
+try:
+ import _growl
+except:
+ _growl = False
+import types
+import struct
+import md5
+import socket
+
+GROWL_UDP_PORT=9887
+GROWL_PROTOCOL_VERSION=1
+GROWL_TYPE_REGISTRATION=0
+GROWL_TYPE_NOTIFICATION=1
+
+GROWL_APP_NAME="ApplicationName"
+GROWL_APP_ICON="ApplicationIcon"
+GROWL_NOTIFICATIONS_DEFAULT="DefaultNotifications"
+GROWL_NOTIFICATIONS_ALL="AllNotifications"
+GROWL_NOTIFICATIONS_USER_SET="AllowedUserNotifications"
+
+GROWL_NOTIFICATION_NAME="NotificationName"
+GROWL_NOTIFICATION_TITLE="NotificationTitle"
+GROWL_NOTIFICATION_DESCRIPTION="NotificationDescription"
+GROWL_NOTIFICATION_ICON="NotificationIcon"
+GROWL_NOTIFICATION_APP_ICON="NotificationAppIcon"
+GROWL_NOTIFICATION_PRIORITY="NotificationPriority"
+
+GROWL_NOTIFICATION_STICKY="NotificationSticky"
+GROWL_NOTIFICATION_CLICK_CONTEXT="NotificationClickContext"
+
+GROWL_APP_REGISTRATION="GrowlApplicationRegistrationNotification"
+GROWL_APP_REGISTRATION_CONF="GrowlApplicationRegistrationConfirmationNotification"
+GROWL_NOTIFICATION="GrowlNotification"
+GROWL_SHUTDOWN="GrowlShutdown"
+GROWL_PING="Honey, Mind Taking Out The Trash"
+GROWL_PONG="What Do You Want From Me, Woman"
+GROWL_IS_READY="Lend Me Some Sugar; I Am Your Neighbor!"
+
+GROWL_NOTIFICATION_CLICKED="GrowlClicked!"
+GROWL_NOTIFICATION_TIMED_OUT="GrowlTimedOut!"
+GROWL_KEY_CLICKED_CONTEXT="ClickedContext"
+
+
+growlPriority = {"Very Low":-2,"Moderate":-1,"Normal":0,"High":1,"Emergency":2}
+
+class netgrowl:
+ """Builds a Growl Network Registration packet.
+ Defaults to emulating the command-line growlnotify utility."""
+
+ __notAllowed__ = [GROWL_APP_ICON, GROWL_NOTIFICATION_ICON, GROWL_NOTIFICATION_APP_ICON]
+
+ def __init__(self, hostname, password ):
+ self.hostname = hostname
+ self.password = password
+ self.socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
+
+ def send(self, data):
+ self.socket.sendto(data, (self.hostname, GROWL_UDP_PORT))
+
+ def PostNotification(self, userInfo):
+ if userInfo.has_key(GROWL_NOTIFICATION_PRIORITY):
+ priority = userInfo[GROWL_NOTIFICATION_PRIORITY]
+ else:
+ priority = 0
+ if userInfo.has_key(GROWL_NOTIFICATION_STICKY):
+ sticky = userInfo[GROWL_NOTIFICATION_STICKY]
+ else:
+ priority = False
+ data = self.encodeNotify(userInfo[GROWL_APP_NAME],
+ userInfo[GROWL_NOTIFICATION_NAME],
+ userInfo[GROWL_NOTIFICATION_TITLE],
+ userInfo[GROWL_NOTIFICATION_DESCRIPTION],
+ priority,
+ sticky)
+ return self.send(data)
+
+ def PostRegistration(self, userInfo):
+ data = self.encodeRegistration(userInfo[GROWL_APP_NAME],
+ userInfo[GROWL_NOTIFICATIONS_ALL],
+ userInfo[GROWL_NOTIFICATIONS_DEFAULT])
+ return self.send(data)
+
+ def encodeRegistration(self, application, notifications, defaultNotifications):
+ data = struct.pack("!BBH",
+ GROWL_PROTOCOL_VERSION,
+ GROWL_TYPE_REGISTRATION,
+ len(application) )
+ data += struct.pack("BB",
+ len(notifications),
+ len(defaultNotifications) )
+ data += application
+ for i in notifications:
+ encoded = i.encode("utf-8")
+ data += struct.pack("!H", len(encoded))
+ data += encoded
+ for i in defaultNotifications:
+ data += struct.pack("B", i)
+ return self.encodePassword(data)
+
+ def encodeNotify(self, application, notification, title, description,
+ priority = 0, sticky = False):
+
+ application = application.encode("utf-8")
+ notification = notification.encode("utf-8")
+ title = title.encode("utf-8")
+ description = description.encode("utf-8")
+ flags = (priority & 0x07) * 2
+ if priority < 0:
+ flags |= 0x08
+ if sticky:
+ flags = flags | 0x0001
+ data = struct.pack("!BBHHHHH",
+ GROWL_PROTOCOL_VERSION,
+ GROWL_TYPE_NOTIFICATION,
+ flags,
+ len(notification),
+ len(title),
+ len(description),
+ len(application) )
+ data += notification
+ data += title
+ data += description
+ data += application
+ return self.encodePassword(data)
+
+ def encodePassword(self, data):
+ checksum = md5.new()
+ checksum.update(data)
+ if self.password:
+ checksum.update(self.password)
+ data += checksum.digest()
+ return data
+
+class _ImageHook(type):
+ def __getattribute__(self, attr):
+ global Image
+ if Image is self:
+ from _growlImage import Image
+
+ return getattr(Image, attr)
+
+class Image(object):
+ __metaclass__ = _ImageHook
+
+class _RawImage(object):
+ def __init__(self, data): self.rawImageData = data
+
+class GrowlNotifier(object):
+ """
+ A class that abstracts the process of registering and posting
+ notifications to the Growl daemon.
+
+ You can either pass `applicationName', `notifications',
+ `defaultNotifications' and `applicationIcon' to the constructor
+ or you may define them as class-level variables in a sub-class.
+
+ `defaultNotifications' is optional, and defaults to the value of
+ `notifications'. `applicationIcon' is also optional but defaults
+ to a pointless icon so is better to be specified.
+ """
+
+ applicationName = 'GrowlNotifier'
+ notifications = []
+ defaultNotifications = []
+ applicationIcon = None
+ _notifyMethod = _growl
+ _notify_cb = None
+
+ def __init__(self, applicationName=None, notifications=None, defaultNotifications=None, applicationIcon=None, hostname=None, password=None, notify_cb=None):
+ assert(applicationName is not None, 'an application name is required')
+ self.applicationName = applicationName
+
+ assert(notifications, 'a sequence of one or more notification names is required')
+ self.notifications = list(notifications)
+ if defaultNotifications is not None:
+ self.defaultNotifications = list(defaultNotifications)
+ else:
+ self.defaultNotifications = list(self.notifications)
+
+ if applicationIcon is not None:
+ self.applicationIcon = self._checkIcon(applicationIcon)
+
+ if hostname is not None and password is not None:
+ self._notifyMethod = netgrowl(hostname, password)
+ elif hostname is not None or password is not None:
+ raise KeyError, "Hostname and Password are both required for a network notification"
+
+ if notify_cb is not None:
+ self._notify_cb = notify_cb
+ else:
+ self._notify_cb = self.notifyCB
+
+ if hostname is None and password is None:
+ self._notifyMethod.Init(applicationName, self._notify_cb)
+
+ def _checkIcon(self, data):
+ if isinstance(data, str):
+ return _RawImage(data)
+ else:
+ return data
+
+ def register(self):
+ if self.applicationIcon is not None:
+ self.applicationIcon = self._checkIcon(self.applicationIcon)
+
+ regInfo = {GROWL_APP_NAME: self.applicationName,
+ GROWL_NOTIFICATIONS_ALL: self.notifications,
+ GROWL_NOTIFICATIONS_DEFAULT: self.defaultNotifications,
+ GROWL_APP_ICON:self.applicationIcon,
+ }
+ self._notifyMethod.PostRegistration(regInfo)
+
+ def notify(self, noteType, title, description, icon=None, sticky=False, priority=None, context=None):
+ assert noteType in self.notifications
+ notifyInfo = {GROWL_NOTIFICATION_NAME: noteType,
+ GROWL_APP_NAME: self.applicationName,
+ GROWL_NOTIFICATION_TITLE: title,
+ GROWL_NOTIFICATION_DESCRIPTION: description,
+ }
+ if sticky:
+ notifyInfo[GROWL_NOTIFICATION_STICKY] = 1
+
+ if priority is not None:
+ notifyInfo[GROWL_NOTIFICATION_PRIORITY] = priority
+
+ if icon:
+ notifyInfo[GROWL_NOTIFICATION_ICON] = self._checkIcon(icon)
+
+ if context:
+ notifyInfo[GROWL_NOTIFICATION_CLICK_CONTEXT] = context
+
+ self._notifyMethod.PostNotification(notifyInfo)
+
+ def notifyCB(self, userdata):
+ print "Got notify in pyland", userdata
diff --git a/src/osx/growl/Makefile b/src/osx/growl/Makefile
new file mode 100644
index 000000000..66866c8b4
--- /dev/null
+++ b/src/osx/growl/Makefile
@@ -0,0 +1,651 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/growl/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../../..
+
+pkgdatadir = $(datadir)/gajim
+pkglibdir = $(libdir)/gajim
+pkgincludedir = $(includedir)/gajim
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = src/osx/growl
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(_growlImagelibdir)" \
+ "$(DESTDIR)$(_growllibdir)"
+_growlImagelibLTLIBRARIES_INSTALL = $(INSTALL)
+_growllibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(_growlImagelib_LTLIBRARIES) $(_growllib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+#_growl_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growl_la_SOURCES_DIST = _growl.c
+#am__growl_la_OBJECTS = _growl_la-_growl.lo
+_growl_la_OBJECTS = $(am__growl_la_OBJECTS)
+#am__growl_la_rpath = -rpath $(_growllibdir)
+#_growlImage_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growlImage_la_SOURCES_DIST = _growlImage.m
+#am__growlImage_la_OBJECTS = _growlImage.lo
+_growlImage_la_OBJECTS = $(am__growlImage_la_OBJECTS)
+#am__growlImage_la_rpath = -rpath \
+# $(_growlImagelibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+ $(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(_growl_la_SOURCES) $(_growlImage_la_SOURCES)
+DIST_SOURCES = $(am___growl_la_SOURCES_DIST) \
+ $(am___growlImage_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/asterix/gajim/missing --run aclocal-1.9
+ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
+ALL_LINGUAS =
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/asterix/gajim/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/asterix/gajim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/asterix/gajim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/asterix/gajim/missing --run automake-1.9
+AWK = gawk
+BUILD_CARBON_FALSE =
+BUILD_CARBON_TRUE = #
+BUILD_COCOA_FALSE =
+BUILD_COCOA_TRUE = #
+BUILD_GTKSPELL_FALSE = #
+BUILD_GTKSPELL_TRUE =
+BUILD_IDLE_FALSE = #
+BUILD_IDLE_OSX_FALSE =
+BUILD_IDLE_OSX_TRUE = #
+BUILD_IDLE_TRUE =
+BUILD_REMOTE_CONTROL_FALSE = #
+BUILD_REMOTE_CONTROL_TRUE =
+BUILD_TRAYICON_FALSE = #
+BUILD_TRAYICON_TRUE =
+CARBON_LIBS =
+CATALOGS =
+CATOBJEXT = .gmo
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+COCOA_LIBS =
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DATADIR = /usr/local/share
+DATADIRNAME = share
+DBUS_CFLAGS = -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include
+DBUS_LIBS = -ldbus-1
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DOCDIR = /usr/local/share/doc/gajim
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = /bin/grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GETTEXT_PACKAGE = gajim
+GMOFILES =
+GMSGFMT = /usr/bin/msgfmt
+GREP = /bin/grep
+GTKSPELL_CFLAGS = -I/usr/include/gtkspell-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12
+GTKSPELL_LIBS = -lgtkspell -laspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+INSTOBJEXT = .mo
+INTLLIBS =
+INTLTOOL_CAVES_RULE = %.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DESKTOP_RULE = %.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_DIRECTORY_RULE = %.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_EXTRACT = $(top_builddir)/intltool-extract
+INTLTOOL_KBD_RULE = %.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_KEYS_RULE = %.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_MERGE = $(top_builddir)/intltool-merge
+INTLTOOL_OAF_RULE = %.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@
+INTLTOOL_PERL = /usr/bin/perl
+INTLTOOL_POLICY_RULE = %.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PONG_RULE = %.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_PROP_RULE = %.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SCHEMAS_RULE = %.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVER_RULE = %.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SERVICE_RULE = %.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SHEET_RULE = %.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_SOUNDLIST_RULE = %.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_THEME_RULE = %.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UI_RULE = %.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_UPDATE = $(top_builddir)/intltool-update
+INTLTOOL_XAM_RULE = %.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+INTLTOOL_XML_NOMERGE_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@
+INTLTOOL_XML_RULE = %.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+LDFLAGS =
+LIBDIR = /usr/local/lib
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/asterix/gajim/missing --run makeinfo
+MKINSTALLDIRS = ./mkinstalldirs
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_OPTS = -c
+OBJEXT = o
+PACKAGE = gajim
+PACKAGE_BUGREPORT = http://trac.gajim.org/
+PACKAGE_NAME = Gajim - A Jabber Instant Messager
+PACKAGE_STRING = Gajim - A Jabber Instant Messager 0.11.2.2-svn
+PACKAGE_TARNAME = gajim
+PACKAGE_VERSION = 0.11.2.2-svn
+PATH_SEPARATOR = :
+PKG_CONFIG = /usr/bin/pkg-config
+POFILES =
+POSUB = po
+PO_IN_DATADIR_FALSE =
+PO_IN_DATADIR_TRUE =
+PYGTK_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pygtk-2.0
+PYGTK_DEFS = /usr/share/pygtk/2.0/defs
+PYGTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgmodule-2.0 -ldl -lffi -lgobject-2.0 -lglib-2.0
+PYTHON = /usr/bin/python
+PYTHON_EXEC_PREFIX = ${exec_prefix}
+PYTHON_INCLUDES = -I/usr/include/python2.4
+PYTHON_PLATFORM = linux2
+PYTHON_PREFIX = ${prefix}
+PYTHON_VERSION = 2.4
+RANLIB = ranlib
+SED = /bin/sed
+SET_MAKE =
+SHELL = /bin/sh
+STRIP = strip
+USE_NLS = yes
+VERSION = 0.11.2.2-svn
+XGETTEXT = /usr/bin/xgettext
+XMKMF =
+XSCRNSAVER_CFLAGS =
+XSCRNSAVER_LIBS = -lXss
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 =
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__fastdepOBJC_FALSE =
+am__fastdepOBJC_TRUE = #
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/asterix/gajim/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+pkgpyexecdir = ${pyexecdir}/gajim
+pkgpythondir = ${pythondir}/gajim
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pyexecdir = ${exec_prefix}/lib/python2.4/site-packages
+pythondir = ${prefix}/lib/python2.4/site-packages
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+OBJC = gcc
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+#_growllib_LTLIBRARIES = _growl.la
+#_growllibdir = $(libdir)/gajim
+#_growl_la_LIBADD = $(CARBON_LIBS)
+#_growl_la_SOURCES = _growl.c
+#_growl_la_LDFLAGS = \
+# -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#_growlImagelib_LTLIBRARIES = _growlImage.la
+#_growlImagelibdir = $(libdir)/gajim
+#_growlImage_la_LIBADD = $(COCOA_LIBS)
+#_growlImage_la_SOURCES = _growlImage.m
+#_growlImage_la_LDFLAGS = \
+# -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/osx/growl/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/growl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-_growlImagelibLTLIBRARIES: $(_growlImagelib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(_growlImagelibdir)" || $(mkdir_p) "$(DESTDIR)$(_growlImagelibdir)"
+ @list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growlImagelibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growlImagelibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-_growlImagelibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growlImagelibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growlImagelibdir)/$$p"; \
+ done
+
+clean-_growlImagelibLTLIBRARIES:
+ -test -z "$(_growlImagelib_LTLIBRARIES)" || rm -f $(_growlImagelib_LTLIBRARIES)
+ @list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-_growllibLTLIBRARIES: $(_growllib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(_growllibdir)" || $(mkdir_p) "$(DESTDIR)$(_growllibdir)"
+ @list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growllibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growllibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-_growllibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growllibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growllibdir)/$$p"; \
+ done
+
+clean-_growllibLTLIBRARIES:
+ -test -z "$(_growllib_LTLIBRARIES)" || rm -f $(_growllib_LTLIBRARIES)
+ @list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+_growl.la: $(_growl_la_OBJECTS) $(_growl_la_DEPENDENCIES)
+ $(LINK) $(am__growl_la_rpath) $(_growl_la_LDFLAGS) $(_growl_la_OBJECTS) $(_growl_la_LIBADD) $(LIBS)
+_growlImage.la: $(_growlImage_la_OBJECTS) $(_growlImage_la_DEPENDENCIES)
+ $(OBJCLINK) $(am__growlImage_la_rpath) $(_growlImage_la_LDFLAGS) $(_growlImage_la_OBJECTS) $(_growlImage_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/_growlImage.Plo
+include ./$(DEPDIR)/_growl_la-_growl.Plo
+
+.c.o:
+ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(COMPILE) -c $<
+
+.c.obj:
+ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(LTCOMPILE) -c -o $@ $<
+
+_growl_la-_growl.lo: _growl.c
+ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -MT _growl_la-_growl.lo -MD -MP -MF "$(DEPDIR)/_growl_la-_growl.Tpo" -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c; \
+ then mv -f "$(DEPDIR)/_growl_la-_growl.Tpo" "$(DEPDIR)/_growl_la-_growl.Plo"; else rm -f "$(DEPDIR)/_growl_la-_growl.Tpo"; exit 1; fi
+# source='_growl.c' object='_growl_la-_growl.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c
+
+.m.o:
+# if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+# then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ source='$<' object='$@' libtool=no \
+ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+ $(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+# if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+# then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ source='$<' object='$@' libtool=no \
+ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+ $(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+# if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+# then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ source='$<' object='$@' libtool=yes \
+ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) \
+ $(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(_growlImagelibdir)" "$(DESTDIR)$(_growllibdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+ clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-_growlImagelibLTLIBRARIES \
+ install-_growllibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-_growlImagelibLTLIBRARIES \
+ uninstall-_growllibLTLIBRARIES uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+ clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install \
+ install-_growlImagelibLTLIBRARIES install-_growllibLTLIBRARIES \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall \
+ uninstall-_growlImagelibLTLIBRARIES \
+ uninstall-_growllibLTLIBRARIES uninstall-am uninstall-info-am
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/growl/Makefile.am b/src/osx/growl/Makefile.am
new file mode 100644
index 000000000..df48b58d8
--- /dev/null
+++ b/src/osx/growl/Makefile.am
@@ -0,0 +1,41 @@
+OBJC = gcc
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+if BUILD_CARBON
+_growllib_LTLIBRARIES = _growl.la
+_growllibdir = $(libdir)/gajim
+
+_growl_la_LIBADD = $(CARBON_LIBS)
+
+_growl_la_SOURCES = _growl.c
+
+_growl_la_LDFLAGS = \
+ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+endif
+
+if BUILD_COCOA
+_growlImagelib_LTLIBRARIES = _growlImage.la
+_growlImagelibdir = $(libdir)/gajim
+
+_growlImage_la_LIBADD = $(COCOA_LIBS)
+
+_growlImage_la_SOURCES = _growlImage.m
+
+_growlImage_la_LDFLAGS = \
+ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+
+AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+endif
+
+DISTCLEANFILES =
+
+EXTRA_DIST =
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/growl/Makefile.in b/src/osx/growl/Makefile.in
new file mode 100644
index 000000000..44222f33e
--- /dev/null
+++ b/src/osx/growl/Makefile.in
@@ -0,0 +1,651 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/osx/growl
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(_growlImagelibdir)" \
+ "$(DESTDIR)$(_growllibdir)"
+_growlImagelibLTLIBRARIES_INSTALL = $(INSTALL)
+_growllibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(_growlImagelib_LTLIBRARIES) $(_growllib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_CARBON_TRUE@_growl_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growl_la_SOURCES_DIST = _growl.c
+@BUILD_CARBON_TRUE@am__growl_la_OBJECTS = _growl_la-_growl.lo
+_growl_la_OBJECTS = $(am__growl_la_OBJECTS)
+@BUILD_CARBON_TRUE@am__growl_la_rpath = -rpath $(_growllibdir)
+@BUILD_COCOA_TRUE@_growlImage_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am___growlImage_la_SOURCES_DIST = _growlImage.m
+@BUILD_COCOA_TRUE@am__growlImage_la_OBJECTS = _growlImage.lo
+_growlImage_la_OBJECTS = $(am__growlImage_la_OBJECTS)
+@BUILD_COCOA_TRUE@am__growlImage_la_rpath = -rpath \
+@BUILD_COCOA_TRUE@ $(_growlImagelibdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
+LTOBJCCOMPILE = $(LIBTOOL) --mode=compile $(OBJC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_OBJCFLAGS) $(OBJCFLAGS)
+OBJCLD = $(OBJC)
+OBJCLINK = $(LIBTOOL) --mode=link $(OBJCLD) $(AM_OBJCFLAGS) \
+ $(OBJCFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(_growl_la_SOURCES) $(_growlImage_la_SOURCES)
+DIST_SOURCES = $(am___growl_la_SOURCES_DIST) \
+ $(am___growlImage_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_CARBON_FALSE = @BUILD_CARBON_FALSE@
+BUILD_CARBON_TRUE = @BUILD_CARBON_TRUE@
+BUILD_COCOA_FALSE = @BUILD_COCOA_FALSE@
+BUILD_COCOA_TRUE = @BUILD_COCOA_TRUE@
+BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@
+BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@
+BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@
+BUILD_IDLE_OSX_FALSE = @BUILD_IDLE_OSX_FALSE@
+BUILD_IDLE_OSX_TRUE = @BUILD_IDLE_OSX_TRUE@
+BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@
+BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@
+BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@
+BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@
+BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@
+CARBON_LIBS = @CARBON_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+COCOA_LIBS = @COCOA_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DATADIRNAME = @DATADIRNAME@
+DBUS_CFLAGS = @DBUS_CFLAGS@
+DBUS_LIBS = @DBUS_LIBS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOCDIR = @DOCDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@
+GTKSPELL_LIBS = @GTKSPELL_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_POLICY_RULE = @INTLTOOL_POLICY_RULE@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBDIR = @LIBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+PYGTK_CFLAGS = @PYGTK_CFLAGS@
+PYGTK_DEFS = @PYGTK_DEFS@
+PYGTK_LIBS = @PYGTK_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XMKMF = @XMKMF@
+XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@
+XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__fastdepOBJC_FALSE = @am__fastdepOBJC_FALSE@
+am__fastdepOBJC_TRUE = @am__fastdepOBJC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+OBJC = gcc
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+@BUILD_CARBON_TRUE@_growllib_LTLIBRARIES = _growl.la
+@BUILD_CARBON_TRUE@_growllibdir = $(libdir)/gajim
+@BUILD_CARBON_TRUE@_growl_la_LIBADD = $(CARBON_LIBS)
+@BUILD_CARBON_TRUE@_growl_la_SOURCES = _growl.c
+@BUILD_CARBON_TRUE@_growl_la_LDFLAGS = \
+@BUILD_CARBON_TRUE@ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_CARBON_TRUE@_growl_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@_growlImagelib_LTLIBRARIES = _growlImage.la
+@BUILD_COCOA_TRUE@_growlImagelibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@_growlImage_la_LIBADD = $(COCOA_LIBS)
+@BUILD_COCOA_TRUE@_growlImage_la_SOURCES = _growlImage.m
+@BUILD_COCOA_TRUE@_growlImage_la_LDFLAGS = \
+@BUILD_COCOA_TRUE@ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_COCOA_TRUE@_growlImage_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@AM_OBJCFLAGS = $(_growlImage_la_CFLAGS)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/osx/growl/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/growl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-_growlImagelibLTLIBRARIES: $(_growlImagelib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(_growlImagelibdir)" || $(mkdir_p) "$(DESTDIR)$(_growlImagelibdir)"
+ @list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growlImagelibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(_growlImagelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growlImagelibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-_growlImagelibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growlImagelibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growlImagelibdir)/$$p"; \
+ done
+
+clean-_growlImagelibLTLIBRARIES:
+ -test -z "$(_growlImagelib_LTLIBRARIES)" || rm -f $(_growlImagelib_LTLIBRARIES)
+ @list='$(_growlImagelib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+install-_growllibLTLIBRARIES: $(_growllib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(_growllibdir)" || $(mkdir_p) "$(DESTDIR)$(_growllibdir)"
+ @list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(_growllibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(_growllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(_growllibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-_growllibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(_growllibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(_growllibdir)/$$p"; \
+ done
+
+clean-_growllibLTLIBRARIES:
+ -test -z "$(_growllib_LTLIBRARIES)" || rm -f $(_growllib_LTLIBRARIES)
+ @list='$(_growllib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+_growl.la: $(_growl_la_OBJECTS) $(_growl_la_DEPENDENCIES)
+ $(LINK) $(am__growl_la_rpath) $(_growl_la_LDFLAGS) $(_growl_la_OBJECTS) $(_growl_la_LIBADD) $(LIBS)
+_growlImage.la: $(_growlImage_la_OBJECTS) $(_growlImage_la_DEPENDENCIES)
+ $(OBJCLINK) $(am__growlImage_la_rpath) $(_growlImage_la_LDFLAGS) $(_growlImage_la_OBJECTS) $(_growlImage_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_growlImage.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_growl_la-_growl.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+_growl_la-_growl.lo: _growl.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -MT _growl_la-_growl.lo -MD -MP -MF "$(DEPDIR)/_growl_la-_growl.Tpo" -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/_growl_la-_growl.Tpo" "$(DEPDIR)/_growl_la-_growl.Plo"; else rm -f "$(DEPDIR)/_growl_la-_growl.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_growl.c' object='_growl_la-_growl.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_growl_la_CFLAGS) $(CFLAGS) -c -o _growl_la-_growl.lo `test -f '_growl.c' || echo '$(srcdir)/'`_growl.c
+
+.m.o:
+@am__fastdepOBJC_TRUE@ if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@ $(OBJCCOMPILE) -c -o $@ $<
+
+.m.obj:
+@am__fastdepOBJC_TRUE@ if $(OBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepOBJC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@ $(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.m.lo:
+@am__fastdepOBJC_TRUE@ if $(LTOBJCCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepOBJC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepOBJC_FALSE@ $(LTOBJCCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(_growlImagelibdir)" "$(DESTDIR)$(_growllibdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+ clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-_growlImagelibLTLIBRARIES \
+ install-_growllibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-_growlImagelibLTLIBRARIES \
+ uninstall-_growllibLTLIBRARIES uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+ clean-_growlImagelibLTLIBRARIES clean-_growllibLTLIBRARIES \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install \
+ install-_growlImagelibLTLIBRARIES install-_growllibLTLIBRARIES \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall \
+ uninstall-_growlImagelibLTLIBRARIES \
+ uninstall-_growllibLTLIBRARIES uninstall-am uninstall-info-am
+
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/osx/growl/_growl.c b/src/osx/growl/_growl.c
new file mode 100644
index 000000000..11ac07e93
--- /dev/null
+++ b/src/osx/growl/_growl.c
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2004-2005 The Growl Project.
+ * Created by Jeremy Rossi <jeremy@jeremyrossi.com>
+ * Released under the BSD license.
+ */
+
+#include <Python.h>
+#include <CoreFoundation/CoreFoundation.h>
+
+#define str(cfstr) CFStringGetCStringPtr(cfstr, kCFStringEncodingMacRoman)
+#define cfstr(str) CFStringCreateWithCString(kCFAllocatorDefault, str, kCFStringEncodingMacRoman)
+
+static PyObject * _notify_cb = NULL;
+
+
+static PyObject * growl_PostDictionary(CFStringRef name, PyObject *self, PyObject *args) {
+ int i, j;
+
+ PyObject *inputDict;
+ PyObject *pKeys = NULL;
+ PyObject *pKey, *pValue;
+
+ CFMutableDictionaryRef note = CFDictionaryCreateMutable(kCFAllocatorDefault,
+ /*capacity*/ 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+
+ if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &inputDict))
+ goto error;
+
+ pKeys = PyDict_Keys(inputDict);
+ for (i = 0; i < PyList_Size(pKeys); ++i) {
+ CFStringRef convertedKey;
+
+ /* Converting the PyDict key to NSString and used for key in note */
+ pKey = PyList_GetItem(pKeys, i);
+ if (!pKey)
+ // Exception already set
+ goto error;
+ pValue = PyDict_GetItem(inputDict, pKey);
+ if (!pValue) {
+ // XXX Neeed a real Error message here.
+ PyErr_SetString(PyExc_TypeError," ");
+ goto error;
+ }
+ if (PyUnicode_Check(pKey)) {
+ convertedKey = CFStringCreateWithBytes(kCFAllocatorDefault,
+ (const UInt8 *)PyUnicode_AS_DATA(pKey),
+ PyUnicode_GET_DATA_SIZE(pKey),
+ kCFStringEncodingUnicode,
+ false);
+ } else if (PyString_Check(pKey)) {
+ convertedKey = CFStringCreateWithCString(kCFAllocatorDefault,
+ PyString_AsString(pKey),
+ kCFStringEncodingUTF8);
+ } else {
+ PyErr_SetString(PyExc_TypeError,"The Dict keys must be strings/unicode");
+ goto error;
+ }
+
+ /* Converting the PyDict value to NSString or NSData based on class */
+ if (PyString_Check(pValue)) {
+ CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault,
+ PyString_AS_STRING(pValue),
+ kCFStringEncodingUTF8);
+ CFDictionarySetValue(note, convertedKey, convertedValue);
+ CFRelease(convertedValue);
+ } else if (PyUnicode_Check(pValue)) {
+ CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault,
+ (const UInt8 *)PyUnicode_AS_DATA(pValue),
+ PyUnicode_GET_DATA_SIZE(pValue),
+ kCFStringEncodingUnicode,
+ false);
+ CFDictionarySetValue(note, convertedKey, convertedValue);
+ CFRelease(convertedValue);
+ } else if (PyInt_Check(pValue)) {
+ long v = PyInt_AS_LONG(pValue);
+ CFNumberRef convertedValue = CFNumberCreate(kCFAllocatorDefault,
+ kCFNumberLongType,
+ &v);
+ CFDictionarySetValue(note, convertedKey, convertedValue);
+ CFRelease(convertedValue);
+ } else if (pValue == Py_None) {
+ CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault, NULL, 0);
+ CFDictionarySetValue(note, convertedKey, convertedValue);
+ CFRelease(convertedValue);
+ } else if (PyList_Check(pValue)) {
+ int size = PyList_Size(pValue);
+ CFMutableArrayRef listHolder = CFArrayCreateMutable(kCFAllocatorDefault,
+ size,
+ &kCFTypeArrayCallBacks);
+ for (j = 0; j < size; ++j) {
+ PyObject *lValue = PyList_GetItem(pValue, j);
+ if (PyString_Check(lValue)) {
+ CFStringRef convertedValue = CFStringCreateWithCString(kCFAllocatorDefault,
+ PyString_AS_STRING(lValue),
+ kCFStringEncodingUTF8);
+ CFArrayAppendValue(listHolder, convertedValue);
+ CFRelease(convertedValue);
+ } else if (PyUnicode_Check(lValue)) {
+ CFStringRef convertedValue = CFStringCreateWithBytes(kCFAllocatorDefault,
+ (const UInt8 *)PyUnicode_AS_DATA(lValue),
+ PyUnicode_GET_DATA_SIZE(lValue),
+ kCFStringEncodingUnicode,
+ false);
+ CFArrayAppendValue(listHolder, convertedValue);
+ CFRelease(convertedValue);
+ } else {
+ CFRelease(convertedKey);
+ PyErr_SetString(PyExc_TypeError,"The lists must only contain strings");
+ goto error;
+ }
+ }
+ CFDictionarySetValue(note, convertedKey, listHolder);
+ CFRelease(listHolder);
+ } else if (PyObject_HasAttrString(pValue, "rawImageData")) {
+ PyObject *lValue = PyObject_GetAttrString(pValue, "rawImageData");
+ if (!lValue) {
+ goto error;
+ } else if (PyString_Check(lValue)) {
+ CFDataRef convertedValue = CFDataCreate(kCFAllocatorDefault,
+ (const UInt8 *)PyString_AsString(lValue),
+ PyString_Size(lValue));
+ CFDictionarySetValue(note, convertedKey, convertedValue);
+ CFRelease(convertedValue);
+ } else {
+ CFRelease(convertedKey);
+ PyErr_SetString(PyExc_TypeError, "Icon with rawImageData attribute present must ensure it is a string.");
+ goto error;
+ }
+ } else {
+ CFRelease(convertedKey);
+ PyErr_SetString(PyExc_TypeError, "Value is not of Str/List");
+ goto error;
+ }
+ CFRelease(convertedKey);
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(),
+ /*name*/ name,
+ /*object*/ NULL,
+ /*userInfo*/ note,
+ /*deliverImmediately*/ false);
+ CFRelease(note);
+ Py_END_ALLOW_THREADS
+
+ Py_DECREF(pKeys);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+
+error:
+ CFRelease(note);
+
+ Py_XDECREF(pKeys);
+
+ return NULL;
+}
+
+static void growl_NotifyCB(CFNotificationCenterRef center, void *observer,
+ CFStringRef name, const void *object,
+ CFDictionaryRef userInfo)
+{
+ CFIndex size, len;
+ const void * keys[1];
+ const void * values[1];
+ CFArrayRef arr;
+ CFStringRef cfstr;
+ CFRange cfrange;
+ UInt8 *buff;
+ int i;
+ PyObject * pylist;
+
+ cfrange.location = 0;
+ CFDictionaryGetKeysAndValues(userInfo, keys, values);
+ arr = (CFArrayRef)values[0];
+ size = CFArrayGetCount(arr);
+ pylist = PyList_New(size);
+ for (i=0; i < size; ++i)
+ {
+ cfstr = (CFStringRef)CFArrayGetValueAtIndex(arr, i);
+ cfrange.length = CFStringGetLength(cfstr);
+ CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false,
+ NULL, 0, &len);
+ buff = (UInt8*)malloc(len);
+ CFStringGetBytes(cfstr, cfrange, kCFStringEncodingUnicode, 0, false,
+ buff, len, &len);
+ PyList_SetItem(pylist, i,
+ PyUnicode_DecodeUTF16((char*)buff, len, NULL, NULL));
+ free(buff);
+ }
+
+ PyObject_CallObject(_notify_cb, Py_BuildValue("(O)", pylist));
+ Py_DECREF(pylist);
+}
+
+static PyObject * growl_Init(PyObject *self, PyObject *args)
+{
+ char* name = NULL;
+
+ if (!PyArg_ParseTuple(args, "sO", &name, &_notify_cb))
+ return NULL;
+
+ Py_INCREF(_notify_cb);
+
+ char* buff = (char*)malloc(strlen(name) + 14);
+ strcpy(buff, name);
+ strcat(buff, "GrowlClicked!");
+ CFStringRef cfbuff = cfstr(buff);
+ CFNotificationCenterAddObserver(
+ CFNotificationCenterGetDistributedCenter(), NULL, &growl_NotifyCB,
+ cfbuff, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
+ free(buff);
+ CFRelease(cfbuff);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject * growl_PostRegistration(PyObject *self, PyObject *args) {
+ return growl_PostDictionary(CFSTR("GrowlApplicationRegistrationNotification"), self, args);
+}
+
+static PyObject * growl_PostNotification(PyObject *self, PyObject *args) {
+ return growl_PostDictionary(CFSTR("GrowlNotification"), self, args);
+}
+
+static PyMethodDef GrowlMethods[] = {
+ {"Init", growl_Init, METH_VARARGS, "Initialize notifications with GrowlHelperApp"},
+ {"PostNotification", growl_PostNotification, METH_VARARGS, "Send a notification to GrowlHelperApp"},
+ {"PostRegistration", growl_PostRegistration, METH_VARARGS, "Send a registration to GrowlHelperApp"},
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+
+PyMODINIT_FUNC init_growl(void) {
+ Py_InitModule("_growl", GrowlMethods);
+}
diff --git a/src/osx/growl/_growlImage.m b/src/osx/growl/_growlImage.m
new file mode 100644
index 000000000..d4b2b72f9
--- /dev/null
+++ b/src/osx/growl/_growlImage.m
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2004 Mark Rowe <bdash@users.sourceforge.net>
+ * Released under the BSD license.
+ */
+
+#include "Python.h"
+#import <Cocoa/Cocoa.h>
+
+typedef struct
+{
+ PyObject_HEAD
+ NSImage *theImage;
+} ImageObject;
+
+
+static PyTypeObject ImageObject_Type;
+
+#define ImageObject_Check(v) ((v)->ob_type == &ImageObject_Type)
+
+static ImageObject *
+newImageObject(NSImage *img)
+{
+ ImageObject *self;
+ if (! img)
+ {
+ PyErr_SetString(PyExc_TypeError, "Invalid image.");
+ return NULL;
+ }
+
+ self = PyObject_New(ImageObject, &ImageObject_Type);
+ if (! self)
+ return NULL;
+
+ self->theImage = [img retain];
+ return self;
+}
+
+static void
+ImageObject_dealloc(ImageObject *self)
+{
+ PyObject_Del(self);
+}
+
+static PyObject *
+ImageObject_getAttr(PyObject *self, PyObject *attr)
+{
+ char *theAttr = PyString_AsString(attr);
+ NSAutoreleasePool *pool = nil;
+
+ if (strcmp(theAttr, "rawImageData") == 0)
+ {
+ pool = [[NSAutoreleasePool alloc] init];
+ NSData *imageData = [((ImageObject *) self)->theImage TIFFRepresentation];
+ PyObject *pyImageData = PyString_FromStringAndSize([imageData bytes], [imageData length]);
+ [pool release];
+ return pyImageData;
+ }
+ else
+ return PyObject_GenericGetAttr(self, attr);
+}
+
+
+static PyObject *
+ImageObject_imageFromPath(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ char *fileName_ = NULL;
+ NSString *fileName = nil;
+ NSImage *theImage = nil;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, "et:imageFromPath",
+ Py_FileSystemDefaultEncoding, &fileName_))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ fileName = [NSString stringWithUTF8String:fileName_];
+ theImage = [[[NSImage alloc] initWithContentsOfFile:fileName] autorelease];
+ self = newImageObject(theImage);
+
+ [pool release];
+ return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithData(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ char *imageData = NULL;
+ int imageDataSize = 0;
+ NSImage *theImage = nil;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, "s#:imageWithData",
+ &imageData, &imageDataSize))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+
+ theImage = [[[NSImage alloc] initWithData:[NSData dataWithBytes:imageData
+ length:imageDataSize]] autorelease];
+ self = newImageObject(theImage);
+
+ [pool release];
+ return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForFile(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ char *fileName_ = NULL;
+ NSString *fileName = nil;
+ NSImage *theImage = nil;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, "et:imageWithIconForFile",
+ Py_FileSystemDefaultEncoding, &fileName_))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ fileName = [NSString stringWithUTF8String:fileName_];
+ theImage = [[NSWorkspace sharedWorkspace] iconForFile:fileName];
+ self = newImageObject(theImage);
+
+ [pool release];
+ return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForFileType(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ char *fileType = NULL;
+ NSImage *theImage = nil;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, "s:imageWithIconForFileType",
+ &fileType))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ theImage = [[NSWorkspace sharedWorkspace] iconForFileType:[NSString stringWithUTF8String:fileType]];
+ self = newImageObject(theImage);
+
+ [pool release];
+ return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForCurrentApplication(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, ":imageWithIconForCurrentApplication"))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ self = newImageObject([NSApp applicationIconImage]);
+
+ [pool release];
+ return (PyObject *) self;
+}
+
+static PyObject *
+ImageObject_imageWithIconForApplication(PyTypeObject *cls, PyObject *args)
+{
+ ImageObject *self;
+ char *appName_ = NULL;
+ NSString *appName = nil;
+ NSString *appPath = nil;
+ NSImage *theImage = nil;
+ NSAutoreleasePool *pool = nil;
+
+ if (! PyArg_ParseTuple(args, "et:imageWithIconForApplication",
+ Py_FileSystemDefaultEncoding, &appName_))
+ return NULL;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ appName = [NSString stringWithUTF8String:appName_];
+ appPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:appName];
+ if (! appPath)
+ {
+ PyErr_Format(PyExc_RuntimeError, "Application named '%s' not found", appName_);
+ self = NULL;
+ goto done;
+ }
+ theImage = [[NSWorkspace sharedWorkspace] iconForFile:appPath];
+ self = newImageObject(theImage);
+
+done:
+ [pool release];
+ return (PyObject *) self;
+}
+
+
+static PyMethodDef ImageObject_methods[] = {
+ {"imageFromPath", (PyCFunction)ImageObject_imageFromPath, METH_VARARGS | METH_CLASS},
+ {"imageWithData", (PyCFunction)ImageObject_imageWithData, METH_VARARGS | METH_CLASS},
+ {"imageWithIconForFile", (PyCFunction)ImageObject_imageWithIconForFile, METH_VARARGS | METH_CLASS},
+ {"imageWithIconForFileType", (PyCFunction)ImageObject_imageWithIconForFileType, METH_VARARGS | METH_CLASS},
+ {"imageWithIconForCurrentApplication", (PyCFunction)ImageObject_imageWithIconForCurrentApplication, METH_VARARGS | METH_CLASS},
+ {"imageWithIconForApplication", (PyCFunction)ImageObject_imageWithIconForApplication, METH_VARARGS | METH_CLASS},
+ {NULL, NULL} /* sentinel */
+};
+
+static PyTypeObject ImageObject_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /*ob_size*/
+ "_growlImage.Image", /*tp_name*/
+ sizeof(ImageObject), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ /* methods */
+ (destructor)ImageObject_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash*/
+ 0, /*tp_call*/
+ 0, /*tp_str*/
+ ImageObject_getAttr, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_CLASS, /*tp_flags*/
+ 0, /*tp_doc*/
+ 0, /*tp_traverse*/
+ 0, /*tp_clear*/
+ 0, /*tp_richcompare*/
+ 0, /*tp_weaklistoffset*/
+ 0, /*tp_iter*/
+ 0, /*tp_iternext*/
+ ImageObject_methods, /*tp_methods*/
+ 0, /*tp_members*/
+ 0, /*tp_getset*/
+ 0, /*tp_base*/
+ 0, /*tp_dict*/
+ 0, /*tp_descr_get*/
+ 0, /*tp_descr_set*/
+ 0, /*tp_dictoffset*/
+ 0, /*tp_init*/
+ PyType_GenericAlloc, /*tp_alloc*/
+ 0, /*tp_new*/
+ 0, /*tp_free*/
+ 0, /*tp_is_gc*/
+};
+
+static PyMethodDef _growlImage_methods[] = {
+ {NULL, NULL}
+};
+
+PyMODINIT_FUNC
+init_growlImage(void)
+{
+ PyObject *m;
+
+ if (PyType_Ready(&ImageObject_Type) < 0)
+ return;
+
+ m = Py_InitModule("_growlImage", _growlImage_methods);
+
+ PyModule_AddObject(m, "Image", (PyObject *)&ImageObject_Type);
+}
diff --git a/src/osx/growl/setup.py b/src/osx/growl/setup.py
new file mode 100644
index 000000000..5a7235dee
--- /dev/null
+++ b/src/osx/growl/setup.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+from distutils.core import setup, Extension
+import sys
+
+_growl = Extension('_growl',
+ extra_link_args = ["-framework","CoreFoundation"],
+ sources = ['libgrowl.c'])
+_growlImage = Extension('_growlImage',
+ extra_link_args = ["-framework","Cocoa"],
+ sources = ['growlImage.m'])
+
+if sys.platform.startswith("darwin"):
+ modules = [_growl, _growlImage]
+else:
+ modules = []
+
+setup(name="py-Growl",
+ version="0.0.7",
+ description="Python bindings for posting notifications to the Growl daemon",
+ author="Mark Rowe",
+ author_email="bdash@users.sourceforge.net",
+ url="http://growl.info",
+ py_modules=["Growl"],
+ ext_modules = modules )
+