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:
-rw-r--r--Makefile.am12
-rw-r--r--README.osx99
-rw-r--r--TODO.osx38
-rwxr-xr-xautogen.sh14
-rw-r--r--configure.ac77
-rw-r--r--data/nibs/Gajim.nib/classes.nib4
-rw-r--r--data/nibs/Gajim.nib/info.nib21
-rw-r--r--data/nibs/Gajim.nib/keyedobjects.nibbin0 -> 6413 bytes
-rw-r--r--data/pixmaps/gajim.icnsbin0 -> 42918 bytes
-rwxr-xr-xlaunch.sh9
-rw-r--r--setup_osx.py362
-rw-r--r--src/Makefile.am3
-rw-r--r--src/common/config.py19
-rw-r--r--src/common/dbus_support.py9
-rw-r--r--src/common/helpers.py8
-rw-r--r--src/common/proxy65_manager.py2
-rw-r--r--src/common/sleepy.py4
-rw-r--r--src/config.py53
-rw-r--r--src/conversation_textview.py4
-rw-r--r--src/dialogs.py5
-rw-r--r--src/features_window.py7
-rwxr-xr-xsrc/gajim-remote.py3
-rwxr-xr-xsrc/gajim.py30
-rw-r--r--src/groupchat_control.py2
-rw-r--r--src/network_manager_listener.py44
-rw-r--r--src/notify.py13
-rw-r--r--src/osx/.deps/idle_la-idle.Plo1
-rw-r--r--src/osx/.deps/nsapp.Plo1
-rw-r--r--src/osx/Makefile761
-rw-r--r--src/osx/Makefile.am45
-rw-r--r--src/osx/Makefile.in761
-rw-r--r--src/osx/__init__.py45
-rw-r--r--src/osx/__init__.pyobin0 -> 1367 bytes
-rw-r--r--src/osx/dbus.py131
-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
-rw-r--r--src/osx/growler.py63
-rw-r--r--src/osx/idle.c174
-rw-r--r--src/osx/nsapp.h19
-rw-r--r--src/osx/nsapp.m239
-rw-r--r--src/osx/setup.py20
-rw-r--r--src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo1
-rw-r--r--src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo1
-rw-r--r--src/osx/syncmenu/Makefile575
-rw-r--r--src/osx/syncmenu/Makefile.am21
-rw-r--r--src/osx/syncmenu/Makefile.in575
-rw-r--r--src/osx/syncmenu/pysyncmenu.c55
-rw-r--r--src/osx/syncmenu/setup.py27
-rw-r--r--src/osx/syncmenu/sync-menu.c722
-rw-r--r--src/osx/syncmenu/sync-menu.h27
-rw-r--r--src/osx/syncmenu/test-menu.c107
-rw-r--r--src/osx/syncmenu/test-menu.py78
-rw-r--r--src/roster_window.py84
-rw-r--r--src/statusicon.py18
61 files changed, 7451 insertions, 72 deletions
diff --git a/Makefile.am b/Makefile.am
index 50329095c..59a6d995d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -48,6 +48,16 @@ MAINTAINERCLEANFILES = \
compile \
depcomp \
config.guess \
+ config.log \
config.sub \
+ config.status \
aclocal.m4 \
- libtool
+ libtool \
+ po/POTFILES.in \
+ src/trayicon_la-eggtrayicon.loT \
+ m4/intltool.m4
+
+MAINTAINERCLEANDIRS = \
+ autom4te.cache \
+ build \
+ dist
diff --git a/README.osx b/README.osx
new file mode 100644
index 000000000..64c45ad85
--- /dev/null
+++ b/README.osx
@@ -0,0 +1,99 @@
+Introduction
+------------
+
+This is an alpha release of Gajim for OS/X using native GTK+. It is not finished
+nor is it relatively stable. The native port of GTK+ is alpha and not stable
+yet, though it has proven to be usable for Gajim. Having said that it is usable,
+basic functionality works. See the TODO file for a list of what is and is not
+working.
+
+
+
+Installing
+----------
+
+Install the GTK+ framework into your /Library/Frameworks directory. It can be
+found at http://codepunks.org/misc/gtk/osx.
+
+Copy the Gajim.app into the /Applications directory or any other directory.
+
+
+Installing language dictionaries
+--------------------------------
+
+The codepunks.org build of the GTK+ framework comes with the US English
+dictionary pre-installed. If you wish to install a different dictionary download
+the appropriate dictionary from here:
+
+http://ftp.gnu.org/gnu/aspell/dict/
+
+Then follow these instructions:
+
+source /Library/Frameworks/GTK+.framework/Versions/Current/bin/env
+tar -jxf aspell-<lang>-<version>.tbz2
+cd aspell-<lang>-<version>
+./configure
+make
+make install
+
+
+Compiling Requirements
+----------------------
+These instructions were gathered for building a universal binary on a PPC. The
+steps for building on an i386 should be essentially the same.
+
+Requirements:
+- OS/X 10.4, i386 or ppc
+- Universal MacPython 2.5
+ http://www.pythonmac.org/packages/py25-fat/index.html
+- Latest XCode (2.4.0 or greater)
+- py2app
+ http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html
+
+Install all of the requirements. Make sure that the universal MacPython is
+installed before py2app. Then ensure that this is the first python in your
+PATH.
+
+ export PATH=/Library/Frameworks/Python.framework/Versions/2.5/bin:$PATH
+
+Then install py2app.
+
+
+Compiling
+---------
+
+In the top level run the configure script. If this is source is from subversion
+then run the autogen.sh script. Follow it up with a make:
+
+ ./configure
+ or
+ ./autogen.sh
+ make
+
+Once that is done Gajim can be run from the source tree. You may also create an
+app bundle suitable for use or distribution. To do that run:
+
+ python setup_osx.py build
+
+The Gajim.app bundle is created in the dist directory. This bundle is ready
+for use as is. Copy it to your /Applications directory and you're good to go.
+
+You now have a self contained (almost, requires GTK+.framework still) universal
+native build of Gajim.
+
+Optionally to create a distribution of the Gajim app bundle do:
+
+ python setup_osx.py dist
+
+
+
+Development
+-----------
+
+It is possible to run Gajim correctly from the app bundle but still use the
+python code in the source tree. This line must be added to the _run() function
+in the Gajim.app/Resources/__boot__.py file. It needs to be located just after
+the sys module is imported. Font forget to fix the path to match your
+environment.
+
+sys.path = ["/Users/user/Source/gajim/src"] + sys.path
diff --git a/TODO.osx b/TODO.osx
new file mode 100644
index 000000000..7216d3aea
--- /dev/null
+++ b/TODO.osx
@@ -0,0 +1,38 @@
+The bits that work
+------------------
+
+-idle checking
+-dbus and gajim-remote, using dbus from GTK+.framework.
+-systray icon
+-app bundle with universal binaries. Depends on the GTK+.framework.
+-notifications through growl, internal fallback works fine as well
+-spell checking
+-running apps and opening files/urls
+-playing sounds
+-Network monitoring
+-Mostly everything else except for whats below.
+
+
+
+The bits that dont work
+-----------------------
+
+-Application start/stop/doc/DnD handling
+-finish the .app bundle
+ - setup gajim-remote, maybe install it to /usr/local
+ - fix user session management
+-integrate the Gajim and gajim-remote scripts with autoconf and add GTK
+ framework detection
+-Pass icons to OS/X menu
+-set the LSEnvironment in Info.plist for gtk paths instead of hard coding in
+ gajim.py
+-Maybe setup the pasteboard services for an OS/X alternative to the
+ gajim_remote
+-CFBundleDocumentTypes.NSDocument
+
+
+Native GTK bugs
+----------------
+
+-cut and paste blows up Finder and the os/x GUI server. very very nasty.
+-with mutiple displays, popup menus show up on the wrong display
diff --git a/autogen.sh b/autogen.sh
index dbf2cc812..76c221430 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -8,11 +8,19 @@
echo "See README.html for build requirements."
exit 1
fi
- set -x
+ AM_ARGS="--add-missing --gnu --copy"
+ CONF_ARGS=""
+ if test x`uname -s 2>/dev/null` = 'xDarwin';then
+ . /Library/Frameworks/GTK+.framework/Versions/Current/env
+ #export PATH=/Library/Frameworks/GTK+.framework/Versions/Current/bin/:$PATH
+ #export PKG_CONFIG_PATH=/Library/Frameworks/GTK+.framework/Versions/Current/lib/pkgconfig
+ AM_ARGS="${AM_ARGS} --ignore-deps"
+ CONF_ARGS="${CONF_ARGS} --disable-idle --without-x"
+ fi
intltoolize --force --automake \
&& aclocal -I ./m4 \
&& libtoolize --copy --force --automake \
&& autoheader \
&& autoconf \
- && automake --add-missing --gnu --copy \
- && ./configure $@
+ && automake ${AM_ARGS} \
+ && ./configure ${CONF_ARGS} $@
diff --git a/configure.ac b/configure.ac
index f859ad970..0087842f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,9 @@ AC_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
AM_MAINTAINER_MODE
+dnl Make Objective-C work with automake
+AM_CONDITIONAL([am__fastdepOBJC], false)
+
IT_PROG_INTLTOOL([0.35.0])
PKG_PROG_PKG_CONFIG([0.19])
@@ -128,6 +131,75 @@ AC_ARG_ENABLE(trayicon,
test "x$enable_trayicon" = "xyes" && have_trayicon=true || have_trayicon=false
AM_CONDITIONAL(BUILD_TRAYICON, $have_trayicon)
+dnl ****
+dnl Cocoa
+dnl ****
+AC_ARG_ENABLE([cocoa],
+ [ --disable-cocoa build cocoa integration [default auto]],
+ enable_cocoa=$enableval, enable_cocoa=yes)
+
+if test "x$enable_cocoa" = "xyes";then
+ dnl There is no pkgconfig for cocoa; lets do a header check
+ temp_save_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -ObjC"
+ AC_CHECK_HEADER(Cocoa/Cocoa.h, [have_cocoa=true], [have_cocoa=false])
+ AC_CHECK_HEADER(AppKit/AppKit.h, [have_appkit=true], [have_appkit=false])
+ CFLAGS="$temp_save_cflags"
+
+ if test "x$have_cocoa" = "xtrue";then
+ COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker Cocoa"
+ fi
+ if test "x$have_appkit" = "xtrue";then
+ COCOA_LIBS="$COCOA_LIBS -Xlinker -framework -Xlinker AppKit"
+ fi
+ if test "x$COCOA_LIBS" != "x";then
+ AC_SUBST(COCOA_LIBS)
+ true
+ fi
+fi
+AM_CONDITIONAL(BUILD_COCOA, $have_cocoa)
+
+dnl ****
+dnl Carbon
+dnl ****
+AC_ARG_ENABLE([carbon],
+ [ --disable-carbon build with carbon [default auto]],
+ enable_carbon=$enableval, enable_carbon=yes)
+
+if test "x$enable_carbon" = "xyes";then
+ dnl There is no pkgconfig for carbon; lets do a header check
+ AC_CHECK_HEADER(Carbon/Carbon.h, [have_carbon=true], [have_carbon=false])
+ AC_CHECK_HEADER(IOKit/IOKitLib.h, [have_iokit=true], [have_iokit=false])
+
+ if test "x$have_carbon" = "xtrue";then
+ CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker Carbon"
+ fi
+ if test "x$have_iokit" = "xtrue";then
+ CARBON_LIBS="$CARBON_LIBS -Xlinker -framework -Xlinker IOKit"
+ fi
+ if test "x$CARBON_LIBS" != "x";then
+ AC_SUBST(CARBON_LIBS)
+ have_idle_osx=true
+ dnl Disable X11 idle
+ have_idle=false
+ AM_CONDITIONAL(BUILD_IDLE, false)
+ dnl Disable custom trayicon
+ have_trayicon=gtk+
+ AM_CONDITIONAL(BUILD_TRAYICON, false)
+ dnl Hack to work around failure in gettext package detection on OS/X
+ if test "x$GMSGFMT" = "x";then
+ AC_SUBST(GMSGFMT, msgfmt)
+ AC_SUBST(MSGFMT, msgfmt)
+ AC_SUBST(XGETTEXT, xgettext)
+ fi
+ else
+ have_carbon=false
+ have_idle_osx=false
+ fi
+fi
+AM_CONDITIONAL(BUILD_IDLE_OSX, $have_carbon)
+AM_CONDITIONAL(BUILD_CARBON, $have_carbon)
+
ACLOCAL_AMFLAGS="\${ACLOCAL_FLAGS}"
AC_SUBST(ACLOCAL_AMFLAGS)
@@ -159,6 +231,9 @@ AC_CONFIG_FILES([
data/defs.py
src/Makefile
src/common/Makefile
+ src/osx/Makefile
+ src/osx/growl/Makefile
+ src/osx/syncmenu/Makefile
scripts/gajim
scripts/gajim-remote
po/Makefile.in
@@ -171,4 +246,6 @@ echo "
idle module ...... ${have_idle}
remote control ... ${have_remote}
trayicon ......... ${have_trayicon}
+ idle module OSX .. ${have_idle_osx}
+ cocoa ............ ${have_cocoa}
*****************************"
diff --git a/data/nibs/Gajim.nib/classes.nib b/data/nibs/Gajim.nib/classes.nib
new file mode 100644
index 000000000..b9b4b09f6
--- /dev/null
+++ b/data/nibs/Gajim.nib/classes.nib
@@ -0,0 +1,4 @@
+{
+ IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; });
+ IBVersion = 1;
+} \ No newline at end of file
diff --git a/data/nibs/Gajim.nib/info.nib b/data/nibs/Gajim.nib/info.nib
new file mode 100644
index 000000000..90bdefffb
--- /dev/null
+++ b/data/nibs/Gajim.nib/info.nib
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>69 10 356 240 0 0 1280 832 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>29</key>
+ <string>245 312 185 44 0 0 1280 832 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>446.1</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>29</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8R218</string>
+</dict>
+</plist>
diff --git a/data/nibs/Gajim.nib/keyedobjects.nib b/data/nibs/Gajim.nib/keyedobjects.nib
new file mode 100644
index 000000000..bc313d484
--- /dev/null
+++ b/data/nibs/Gajim.nib/keyedobjects.nib
Binary files differ
diff --git a/data/pixmaps/gajim.icns b/data/pixmaps/gajim.icns
new file mode 100644
index 000000000..37516d5e8
--- /dev/null
+++ b/data/pixmaps/gajim.icns
Binary files differ
diff --git a/launch.sh b/launch.sh
index 08b9110a0..1b23c5c4d 100755
--- a/launch.sh
+++ b/launch.sh
@@ -1,3 +1,10 @@
#!/bin/bash
-cd `dirname $0`/src
+BASE=`pwd`/`dirname $0`
+OS=`uname -s`
+
+if [ "x${OS}" == "xDarwin" ]; then
+ export RESOURCEPATH="${BASE}/dist/Gajim.app/Contents/Resources"
+fi
+
+cd ${BASE}/src
exec -a gajim python -OOt gajim.py $@
diff --git a/setup_osx.py b/setup_osx.py
new file mode 100644
index 000000000..960686597
--- /dev/null
+++ b/setup_osx.py
@@ -0,0 +1,362 @@
+"""
+Usage:
+ python setup_osx.py [build | dist]
+"""
+
+from setuptools import setup
+import sys, glob, os, commands, types
+from os import system, unlink, symlink, getcwd, mkdir, utime
+from shutil import move, copy, copytree, rmtree
+
+###
+### Globals
+###
+
+GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current"
+NAME = 'Gajim'
+VERSION = '0.11'
+DESCRIPTION = 'A full featured Jabber client'
+AUTHOR = 'Gajim Development Team'
+URL = 'http://www.gajim.org/'
+DOWNLOAD_URL = 'http://www.gajim.org/downloads.php'
+LICENSE = 'GPL'
+PWD = getcwd()
+APP_RS = "dist/Gajim.app/Contents/Resources"
+
+GAJIM_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+export PATH=%s/bin:$PATH \n\
+exec ${0}.bin \n\
+' % (GTK_DIR, GTK_DIR)
+
+GAJIM_REMOTE_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+TOPDIR=${0%%/MacOS/gajim-remote} \n\
+echo "${TOPDIR}" | grep -e "^/" \n\
+[ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\
+export RESOURCEPATH=${TOPDIR}/Resources \n\
+export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\
+export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\
+cd ${RESOURCEPATH} \n\
+exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\
+' % GTK_DIR
+
+###
+### Functions
+###
+
+def check(ret):
+ if type(ret) == types.ListType:
+ if ret[0] != 0:
+ raise Exception("Command failed: " + ret[1])
+ elif type(ret) == types.IntType:
+ if ret != 0:
+ raise Exception("Command failed")
+ return
+
+
+def force(func):
+ try:
+ func()
+ except:
+ pass
+ return
+
+
+def writeScript(filename, contents):
+ script = file(filename, "w+")
+ script.write(contents)
+ script.close()
+ system("chmod +x %s" % filename)
+ return
+
+
+def cleanup():
+ force(lambda:rmtree("build"))
+ force(lambda:rmtree("dist"))
+
+def stageInstall():
+ check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD)))
+ force(lambda:unlink("src/osx/growl/_growl.so"))
+ force(lambda:unlink("src/osx/growl/_growlImage.so"))
+ force(lambda:unlink("src/osx/idle.so"))
+ force(lambda:unlink("src/osx/nsapp.so"))
+ force(lambda:unlink("src/osx/syncmenu.so"))
+ force(lambda:unlink("src/gtkspell.so"))
+ symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so")
+ symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD,
+ "src/osx/growl/_growlImage.so")
+ symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so")
+ symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so")
+ symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so")
+ if os.path.isfile("build/inst/lib/gajim/gtkspell.so"):
+ symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so")
+ return
+
+
+def buildApp():
+ sys.path.append('src')
+ sys.path.append(GTK_DIR + "/lib/python2.5/site-packages")
+ sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0")
+ OPTIONS = {'argv_emulation':True,
+ 'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo',
+ 'iconfile':'data/pixmaps/gajim.icns',
+ 'includes':'osx,ConfigParser,compiler,UserString,history_manager',
+ 'plist':{'LSMinimumSystemVersion':'10.4.0',
+ 'NSHumanReadableCopyright':'GNU General Public License',
+ 'CFBundleIdentifier':'org.gajim',
+ 'NSMainNibFile':'Gajim',
+ },
+ }
+ setup(
+ name = NAME, version = VERSION, description = DESCRIPTION,
+ author = AUTHOR, url = URL, download_url = DOWNLOAD_URL,
+ license = LICENSE,
+ app=['src/gajim.py'],
+ data_files=['data/nibs/Gajim.nib'],
+ options={'py2app': OPTIONS},
+ setup_requires=['py2app'],
+ )
+ return
+
+
+def finishApp():
+ # setup gajim dirs
+ copytree("build/inst/share/gajim/data", APP_RS + "/data")
+ copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps")
+ copytree("build/inst/locale", APP_RS + "/locale")
+ copytree("build/inst/share/man", APP_RS + "/man")
+ force(lambda:unlink("dist/Gajim.app/Contents/data"))
+ symlink("Resources/data", "dist/Gajim.app/Contents/data")
+ copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources")
+ # Nuke libs that are in the framework
+ move("dist/Gajim.app/Contents/Frameworks/Python.framework",
+ "dist/Gajim.app/Contents/Python.framework")
+ rmtree("dist/Gajim.app/Contents/Frameworks")
+ mkdir("dist/Gajim.app/Contents/Frameworks")
+ move("dist/Gajim.app/Contents/Python.framework",
+ "dist/Gajim.app/Contents/Frameworks/Python.framework")
+ # Adjust the running of the app
+ move("dist/Gajim.app/Contents/MacOS/Gajim",
+ "dist/Gajim.app/Contents/MacOS/Gajim.bin")
+ writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT)
+ # Setup the gajim-remote script
+ writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote",
+ GAJIM_REMOTE_SCRIPT)
+ # Touch the top dir so Finder knows to update its idea of this bundle
+ utime("dist/Gajim.app", None)
+ return
+
+
+def distApp():
+ force(lambda:rmtree("dist/Gajim"))
+ force(lambda:rmtree("dist/Gajim.tar.bz2"))
+ mkdir("dist/Gajim")
+ check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim"))
+ copy("README.osx", "dist/Gajim/README")
+ copy("TODO.osx", "dist/Gajim/TODO")
+ check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim"))
+ rmtree("dist/Gajim")
+ return
+
+
+
+###
+### Start
+###
+if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and
+ (sys.argv[1] != "dist"))):
+ print "usage: python setup_osx.py [build]"
+ print " or: python setup_osx.py [dist]"
+ sys.exit(1)
+elif sys.argv[1] == "build":
+ sys.argv[1] = "py2app"
+ cleanup()
+ stageInstall()
+ buildApp()
+ finishApp()
+elif sys.argv[1] == "dist":
+ distApp()
+"""
+Usage:
+ python setup_osx.py [build | dist]
+"""
+
+from setuptools import setup
+import sys, glob, os, commands, types
+from os import system, unlink, symlink, getcwd, mkdir, utime
+from shutil import move, copy, copytree, rmtree
+
+###
+### Globals
+###
+
+GTK_DIR="/Library/Frameworks/GTK+.framework/Versions/Current"
+NAME = 'Gajim'
+VERSION = '0.11'
+DESCRIPTION = 'A full featured Jabber client'
+AUTHOR = 'Gajim Development Team'
+URL = 'http://www.gajim.org/'
+DOWNLOAD_URL = 'http://www.gajim.org/downloads.php'
+LICENSE = 'GPL'
+PWD = getcwd()
+APP_RS = "dist/Gajim.app/Contents/Resources"
+
+GAJIM_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+export PATH=%s/bin:$PATH \n\
+exec ${0}.bin \n\
+' % (GTK_DIR, GTK_DIR)
+
+GAJIM_REMOTE_SCRIPT = \
+'#!/bin/bash \n\
+export DYLD_LIBRARY_PATH=%s/lib \n\
+TOPDIR=${0%%/MacOS/gajim-remote} \n\
+echo "${TOPDIR}" | grep -e "^/" \n\
+[ $? -ne 0 ] && TOPDIR=`pwd`/${TOPDIR} \n\
+export RESOURCEPATH=${TOPDIR}/Resources \n\
+export PYTHONHOME=${RESOURCEPATH}/lib/python2.5 \n\
+export PYTHONPATH=${RESOURCEPATH}/lib/python2.5/lib-dynload:${RESOURCEPATH}/lib/python2.5/site-packages.zip:${PYTHONPATH} \n\
+cd ${RESOURCEPATH} \n\
+exec ${TOPDIR}/MacOS/Python ${RESOURCEPATH}/gajim-remote.py $* \n\
+' % GTK_DIR
+
+###
+### Functions
+###
+
+def check(ret):
+ if type(ret) == types.ListType:
+ if ret[0] != 0:
+ raise Exception("Command failed: " + ret[1])
+ elif type(ret) == types.IntType:
+ if ret != 0:
+ raise Exception("Command failed")
+ return
+
+
+def force(func):
+ try:
+ func()
+ except:
+ pass
+ return
+
+
+def writeScript(filename, contents):
+ script = file(filename, "w+")
+ script.write(contents)
+ script.close()
+ system("chmod +x %s" % filename)
+ return
+
+
+def cleanup():
+ force(lambda:rmtree("build"))
+ force(lambda:rmtree("dist"))
+
+def stageInstall():
+ check(system("make DATADIR=%s/build/inst LIBDIR=%s/build/inst prefix=%s/build/inst DOCDIR=%s/build/inst/share/doc install" % (PWD, PWD, PWD, PWD)))
+ force(lambda:unlink("src/osx/growl/_growl.so"))
+ force(lambda:unlink("src/osx/growl/_growlImage.so"))
+ force(lambda:unlink("src/osx/idle.so"))
+ force(lambda:unlink("src/osx/nsapp.so"))
+ force(lambda:unlink("src/osx/syncmenu.so"))
+ force(lambda:unlink("src/gtkspell.so"))
+ symlink("%s/build/inst/lib/gajim/_growl.so" % PWD, "src/osx/growl/_growl.so")
+ symlink("%s/build/inst/lib/gajim/_growlImage.so" % PWD,
+ "src/osx/growl/_growlImage.so")
+ symlink("%s/build/inst/lib/gajim/idle.so" % PWD, "src/osx/idle.so")
+ symlink("%s/build/inst/lib/gajim/nsapp.so" % PWD, "src/osx/nsapp.so")
+ symlink("%s/build/inst/lib/gajim/syncmenu.so" % PWD, "src/osx/syncmenu.so")
+ if os.path.isfile("build/inst/lib/gajim/gtkspell.so"):
+ symlink("%s/build/inst/lib/gajim/gtkspell.so" % PWD, "src/gtkspell.so")
+ return
+
+
+def buildApp():
+ sys.path.append('src')
+ sys.path.append(GTK_DIR + "/lib/python2.5/site-packages")
+ sys.path.append(GTK_DIR + "/lib/python2.5/site-packages/gtk-2.0")
+ OPTIONS = {'argv_emulation':True,
+ 'excludes':'docutils,Crypto,dbus,OpenSSL,cairo,gtk,gobject,atk,pangocairo',
+ 'iconfile':'data/pixmaps/gajim.icns',
+ 'includes':'osx,ConfigParser,compiler,UserString,history_manager',
+ 'plist':{'LSMinimumSystemVersion':'10.4.0',
+ 'NSHumanReadableCopyright':'GNU General Public License',
+ 'CFBundleIdentifier':'org.gajim',
+ 'NSMainNibFile':'Gajim',
+ },
+ }
+ setup(
+ name = NAME, version = VERSION, description = DESCRIPTION,
+ author = AUTHOR, url = URL, download_url = DOWNLOAD_URL,
+ license = LICENSE,
+ app=['src/gajim.py'],
+ data_files=['data/nibs/Gajim.nib'],
+ options={'py2app': OPTIONS},
+ setup_requires=['py2app'],
+ )
+ return
+
+
+def finishApp():
+ # setup gajim dirs
+ copytree("build/inst/share/gajim/data", APP_RS + "/data")
+ copy("data/pixmaps/gajim.icns", APP_RS + "/data/pixmaps")
+ copytree("build/inst/locale", APP_RS + "/locale")
+ copytree("build/inst/share/man", APP_RS + "/man")
+ force(lambda:unlink("dist/Gajim.app/Contents/data"))
+ symlink("Resources/data", "dist/Gajim.app/Contents/data")
+ copy("src/gajim-remote.py", "dist/Gajim.app/Contents/Resources")
+ # Nuke libs that are in the framework
+ move("dist/Gajim.app/Contents/Frameworks/Python.framework",
+ "dist/Gajim.app/Contents/Python.framework")
+ rmtree("dist/Gajim.app/Contents/Frameworks")
+ mkdir("dist/Gajim.app/Contents/Frameworks")
+ move("dist/Gajim.app/Contents/Python.framework",
+ "dist/Gajim.app/Contents/Frameworks/Python.framework")
+ # Adjust the running of the app
+ move("dist/Gajim.app/Contents/MacOS/Gajim",
+ "dist/Gajim.app/Contents/MacOS/Gajim.bin")
+ writeScript("dist/Gajim.app/Contents/MacOS/Gajim", GAJIM_SCRIPT)
+ # Setup the gajim-remote script
+ writeScript("dist/Gajim.app/Contents/MacOS/gajim-remote",
+ GAJIM_REMOTE_SCRIPT)
+ # Touch the top dir so Finder knows to update its idea of this bundle
+ utime("dist/Gajim.app", None)
+ return
+
+
+def distApp():
+ force(lambda:rmtree("dist/Gajim"))
+ force(lambda:rmtree("dist/Gajim.tar.bz2"))
+ mkdir("dist/Gajim")
+ check(system("tar -cf - -C dist Gajim.app | tar -xf - -C dist/Gajim"))
+ copy("README.osx", "dist/Gajim/README")
+ copy("TODO.osx", "dist/Gajim/TODO")
+ check(system("tar -C dist -jcf dist/Gajim-OSX-`date | awk '{printf(\"%s-%s-%s\", $6, $2, $3);}'`.tar.bz2 Gajim"))
+ rmtree("dist/Gajim")
+ return
+
+
+
+###
+### Start
+###
+if ((len(sys.argv) != 2) or ((sys.argv[1] != "build") and
+ (sys.argv[1] != "dist"))):
+ print "usage: python setup_osx.py [build]"
+ print " or: python setup_osx.py [dist]"
+ sys.exit(1)
+elif sys.argv[1] == "build":
+ sys.argv[1] = "py2app"
+ cleanup()
+ stageInstall()
+ buildApp()
+ finishApp()
+elif sys.argv[1] == "dist":
+ distApp()
diff --git a/src/Makefile.am b/src/Makefile.am
index 30eb995a9..27a734196 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,9 +1,10 @@
-SUBDIRS = common
+SUBDIRS = common osx
CLEANFILES = \
trayicon.c
INCLUDES = \
$(PYTHON_INCLUDES)
+export MACOSX_DEPLOYMENT_TARGET=10.4
if BUILD_GTKSPELL
gtkspelllib_LTLIBRARIES = gtkspell.la
diff --git a/src/common/config.py b/src/common/config.py
index 5408fe14e..878fa58e1 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -26,6 +26,7 @@
##
+import sys
import re
import copy
import defs
@@ -50,6 +51,16 @@ opt_treat_incoming_messages = ['', 'chat', 'normal']
class Config:
DEFAULT_ICONSET = 'dcraven'
+ if sys.platform == 'darwin':
+ DEFAULT_OPENWITH = 'open'
+ DEFAULT_BROWSER = 'open -a firefox'
+ DEFAULT_MAILAPP = 'open -a thunderbird'
+ DEFAULT_FILE_MANAGER = 'open'
+ else:
+ DEFAULT_OPENWITH = 'gnome-open'
+ DEFAULT_BROWSER = 'firefox'
+ DEFAULT_MAILAPP = 'mozilla-thunderbird -compose'
+ DEFAULT_FILE_MANAGER = 'xffm'
__options = {
# name: [ type, default_value, help_string ]
@@ -108,10 +119,10 @@ class Config:
'sounds_on': [ opt_bool, True ],
# 'aplay', 'play', 'esdplay', 'artsplay' detected first time only
'soundplayer': [ opt_str, '' ],
- 'openwith': [ opt_str, 'gnome-open' ],
- 'custombrowser': [ opt_str, 'firefox' ],
- 'custommailapp': [ opt_str, 'mozilla-thunderbird -compose' ],
- 'custom_file_manager': [ opt_str, 'xffm' ],
+ 'openwith': [ opt_str, DEFAULT_OPENWITH ],
+ 'custombrowser': [ opt_str, DEFAULT_BROWSER ],
+ 'custommailapp': [ opt_str, DEFAULT_MAILAPP ],
+ 'custom_file_manager': [ opt_str, DEFAULT_FILE_MANAGER ],
'gc-hpaned-position': [opt_int, 430],
'gc_refer_to_nick_char': [opt_str, ',', _('Character to add after nickname when using nick completion (tab) in group chat.')],
'gc_proposed_nick_char': [opt_str, '_', _('Character to propose to add after desired nickname when desired nickname is used by someone else in group chat.')],
diff --git a/src/common/dbus_support.py b/src/common/dbus_support.py
index d91a727bd..71695036a 100644
--- a/src/common/dbus_support.py
+++ b/src/common/dbus_support.py
@@ -20,7 +20,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
##
-import os
+import os, sys
from common import gajim
from common import exceptions
@@ -28,10 +28,13 @@ from common import exceptions
_GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error'
try:
+ if sys.platform == 'darwin':
+ import osx.dbus
+ osx.dbus.load(True)
import dbus
import dbus.service
import dbus.glib
- supported = True # does use have D-Bus bindings?
+ supported = True # does user have D-Bus bindings?
except ImportError:
supported = False
if not os.name == 'nt': # only say that to non Windows users
@@ -103,7 +106,7 @@ class SessionBus:
session_bus = SessionBus()
def get_interface(interface, path):
- '''Returns an interface on the current SessionBus. If the interface isn't
+ '''Returns an interface on the current SessionBus. If the interface isn\'t
running, it tries to start it first.'''
if not supported:
return None
diff --git a/src/common/helpers.py b/src/common/helpers.py
index 623ab522f..7cc5658a2 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -30,6 +30,7 @@ import urllib
import errno
import select
import sha
+import sys
from encodings.punycode import punycode_encode
from encodings import idna
@@ -39,6 +40,9 @@ from i18n import ngettext
from xmpp_stringprep import nodeprep, resourceprep, nameprep
+if sys.platform == 'darwin':
+ from osx import nsapp
+
try:
import winsound # windows-only built-in module for playing wav
import win32api
@@ -474,7 +478,9 @@ def play_sound_file(path_to_soundfile):
return
if path_to_soundfile is None or not os.path.exists(path_to_soundfile):
return
- if os.name == 'nt':
+ if sys.platform == 'darwin':
+ nsapp.playFile(path_to_soundfile)
+ elif os.name == 'nt':
try:
winsound.PlaySound(path_to_soundfile,
winsound.SND_FILENAME|winsound.SND_ASYNC)
diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py
index 542119a7a..29627478f 100644
--- a/src/common/proxy65_manager.py
+++ b/src/common/proxy65_manager.py
@@ -258,7 +258,7 @@ class HostTester(Socks5, IdleObject):
except Exception, ee:
(errnum, errstr) = ee
# 56 is for freebsd
- if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK, 56):
+ if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK):
# still trying to connect
return
# win32 needs this
diff --git a/src/common/sleepy.py b/src/common/sleepy.py
index b515b9821..bcc5f73c3 100644
--- a/src/common/sleepy.py
+++ b/src/common/sleepy.py
@@ -25,7 +25,7 @@
##
from common import gajim
-import os
+import os, sys
STATE_UNKNOWN = 'OS probably not supported'
@@ -47,6 +47,8 @@ try:
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = ctypes.sizeof(lastInputInfo)
+ elif sys.platform == 'darwin':
+ import osx.idle as idle
else: # unix
import idle
except:
diff --git a/src/config.py b/src/config.py
index 61ba66aa1..4112ba67d 100644
--- a/src/config.py
+++ b/src/config.py
@@ -24,7 +24,7 @@
import gtk
import gobject
-import os
+import os, sys
import common.config
import common.sleepy
from common.i18n import Q_
@@ -259,7 +259,7 @@ class PreferencesWindow:
self.auto_popup_away_checkbutton.set_active(st)
# sounds
- if os.name == 'nt':
+ if ((os.name == 'nt') or (sys.platform == 'darwin')):
# if windows, player must not become visible on show_all
soundplayer_hbox = self.xml.get_widget('soundplayer_hbox')
soundplayer_hbox.set_no_show_all(True)
@@ -397,6 +397,12 @@ class PreferencesWindow:
'applications_combobox')
self.xml.get_widget('custom_apps_frame').hide()
self.xml.get_widget('custom_apps_frame').set_no_show_all(True)
+
+ if sys.platform == 'darwin':
+ self.applications_combobox.remove_text(3)
+ self.applications_combobox.remove_text(2)
+ self.applications_combobox.remove_text(1)
+
if gajim.config.get('autodetect_browser_mailer'):
self.applications_combobox.set_active(0)
# else autodetect_browser_mailer is False.
@@ -408,7 +414,10 @@ class PreferencesWindow:
elif gajim.config.get('openwith') == 'exo-open':
self.applications_combobox.set_active(3)
elif gajim.config.get('openwith') == 'custom':
- self.applications_combobox.set_active(4)
+ if sys.platform == 'darwin':
+ self.applications_combobox.set_active(1)
+ else:
+ self.applications_combobox.set_active(4)
self.xml.get_widget('custom_apps_frame').show()
self.xml.get_widget('custom_browser_entry').set_text(
@@ -898,19 +907,27 @@ class PreferencesWindow:
def on_applications_combobox_changed(self, widget):
gajim.config.set('autodetect_browser_mailer', False)
- if widget.get_active() == 4:
- self.xml.get_widget('custom_apps_frame').show()
- gajim.config.set('openwith', 'custom')
- else:
+ if sys.platform == 'darwin':
if widget.get_active() == 0:
gajim.config.set('autodetect_browser_mailer', True)
+ self.xml.get_widget('custom_apps_frame').hide()
elif widget.get_active() == 1:
- gajim.config.set('openwith', 'gnome-open')
- elif widget.get_active() == 2:
- gajim.config.set('openwith', 'kfmclient exec')
- elif widget.get_active() == 3:
- gajim.config.set('openwith', 'exo-open')
- self.xml.get_widget('custom_apps_frame').hide()
+ self.xml.get_widget('custom_apps_frame').show()
+ gajim.config.set('openwith', 'custom')
+ else:
+ if widget.get_active() == 4:
+ self.xml.get_widget('custom_apps_frame').show()
+ gajim.config.set('openwith', 'custom')
+ else:
+ if widget.get_active() == 0:
+ gajim.config.set('autodetect_browser_mailer', True)
+ elif widget.get_active() == 1:
+ gajim.config.set('openwith', 'gnome-open')
+ elif widget.get_active() == 2:
+ gajim.config.set('openwith', 'kfmclient exec')
+ elif widget.get_active() == 3:
+ gajim.config.set('openwith', 'exo-open')
+ self.xml.get_widget('custom_apps_frame').hide()
gajim.interface.save_config()
def on_custom_browser_entry_changed(self, widget):
@@ -2105,7 +2122,7 @@ class AccountsWindow:
else:
gajim.interface.roster.regroup = False
gajim.interface.roster.draw_roster()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
elif not gajim.config.get('enable_zeroconf') and widget.get_active():
self.xml.get_widget('zeroconf_notebook').set_sensitive(True)
@@ -2137,7 +2154,7 @@ class AccountsWindow:
else:
gajim.interface.roster.regroup = False
gajim.interface.roster.draw_roster()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
gajim.interface.save_config()
self.on_checkbutton_toggled(widget, 'enable_zeroconf')
@@ -2564,7 +2581,7 @@ class RemoveAccountWindow:
else:
gajim.interface.roster.regroup = False
gajim.interface.roster.draw_roster()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
if gajim.interface.instances.has_key('accounts'):
gajim.interface.instances['accounts'].init_accounts()
self.window.destroy()
@@ -2760,7 +2777,7 @@ class ManageBookmarksWindow:
gajim.connections[account_unicode].bookmarks.append(bmdict)
gajim.connections[account_unicode].store_bookmarks()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
self.window.destroy()
def on_cancel_button_clicked(self, widget):
@@ -3347,5 +3364,5 @@ class AccountCreationWizardWindow:
else:
gajim.interface.roster.regroup = False
gajim.interface.roster.draw_roster()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
gajim.interface.save_config()
diff --git a/src/conversation_textview.py b/src/conversation_textview.py
index c14336067..53b3a68b1 100644
--- a/src/conversation_textview.py
+++ b/src/conversation_textview.py
@@ -318,6 +318,10 @@ class ConversationTextview:
return True
def smooth_scroll_timeout(self):
+ gobject.idle_add(self.do_smooth_scroll_timeout)
+ return
+
+ def do_smooth_scroll_timeout(self):
if not self.smooth_id:
# we finished scrolling
return
diff --git a/src/dialogs.py b/src/dialogs.py
index 2635f82a5..821562bc6 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -881,7 +881,9 @@ class AboutDialog:
artists = ['Anders Ström', 'Christophe Got', 'Dennis Craven',
'Guillaume Morin', 'Josef Vybíral', 'Membris Khan']
dlg.set_artists(artists)
+ gobject.idle_add(self.dorun, dlg)
+ def dorun(self, dlg):
rep = dlg.run()
dlg.destroy()
@@ -1932,6 +1934,7 @@ class SingleMessageWindow:
self.message_tv_buffer.place_cursor(end_iter)
def save_pos(self):
+ print 'save_pos'
if gajim.config.get('saveposition'):
# save the window size and position
x, y = self.window.get_position()
@@ -1943,6 +1946,7 @@ class SingleMessageWindow:
gajim.interface.save_config()
def on_single_message_window_delete_event(self, window, ev):
+ print 'delete_event'
self.save_pos()
def prepare_widgets_for(self, action):
@@ -2019,6 +2023,7 @@ class SingleMessageWindow:
self.window.destroy()
def on_close_button_clicked(self, widget):
+ print 'close'
self.save_pos()
self.window.destroy()
diff --git a/src/features_window.py b/src/features_window.py
index be22f2433..a20083297 100644
--- a/src/features_window.py
+++ b/src/features_window.py
@@ -19,6 +19,7 @@
##
import os
+import sys
import gtk
import gobject
import gtkgui_helpers
@@ -219,6 +220,12 @@ class FeaturesWindow:
def notification_available(self):
if os.name == 'nt':
return False
+ elif sys.platform == 'darwin':
+ try:
+ import osx.growler
+ except:
+ return False
+ return True
from common import dbus_support
if self.dbus_available() and dbus_support.get_notifications_interface():
return True
diff --git a/src/gajim-remote.py b/src/gajim-remote.py
index abbaa0090..892375a39 100755
--- a/src/gajim-remote.py
+++ b/src/gajim-remote.py
@@ -40,6 +40,9 @@ def send_error(error_message):
sys.exit(1)
try:
+ if sys.platform == 'darwin':
+ import osx.dbus
+ osx.dbus.load(False)
import dbus
import dbus.service
import dbus.glib
diff --git a/src/gajim.py b/src/gajim.py
index b5d1f7c7f..51d616106 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -25,10 +25,17 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
##
+
import sys
import os
import urllib
+if sys.platform == 'darwin':
+ OSX_FRAMEWORK='/Library/Frameworks/GTK+.framework/Versions/Current'
+ sys.path.append('%s/lib/python2.5/site-packages' % OSX_FRAMEWORK)
+ sys.path.append('%s/lib/python2.5/site-packages/gtk-2.0' % OSX_FRAMEWORK)
+ os.environ['PATH'] = '%s/bin:' % OSX_FRAMEWORK + os.environ['PATH']
+
import logging
consoleloghandler = logging.StreamHandler()
consoleloghandler.setLevel(1)
@@ -294,6 +301,9 @@ def pid_alive():
if get_p(pid) in ('python.exe', 'gajim.exe'):
return True
return False
+ elif sys.platform == 'darwin':
+ from osx import checkPID
+ return checkPID(pid, 'gajim')
try:
if not os.path.exists('/proc'):
return True # no /proc, assume Gajim is running
@@ -356,6 +366,9 @@ def on_exit():
# delete pid file on normal exit
if os.path.exists(pid_filename):
os.remove(pid_filename)
+ if sys.platform == 'darwin':
+ import osx
+ osx.shutdown()
import atexit
atexit.register(on_exit)
@@ -1430,7 +1443,7 @@ class Interface:
# We received a bookmark item from the server (JEP48)
# Auto join GC windows if neccessary
- self.roster.actions_menu_needs_rebuild = True
+ self.roster.set_actions_menu_needs_rebuild()
invisible_show = gajim.SHOW_LIST.index('invisible')
# do not autojoin if we are invisible
if gajim.connections[account].connected == invisible_show:
@@ -1793,7 +1806,7 @@ class Interface:
'''SIGNED_IN event is emitted when we sign in, so handle it'''
# block signed in notifications for 30 seconds
gajim.block_signed_in_notifications[account] = True
- self.roster.actions_menu_needs_rebuild = True
+ self.roster.set_actions_menu_needs_rebuild()
if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \
gajim.connections[account].connected in (2, 3):
# we go online or free for chat, so we activate auto status
@@ -2736,9 +2749,10 @@ class Interface:
self.systray_enabled = False
self.systray_capabilities = False
-
- if os.name == 'nt' and gtk.pygtk_version >= (2, 10, 0) and\
- gtk.gtk_version >= (2, 10, 0):
+
+ if (((os.name == 'nt') or (sys.platform == 'darwin')) and
+ (gtk.pygtk_version >= (2, 10, 0)) and
+ (gtk.gtk_version >= (2, 10, 0))):
import statusicon
self.systray = statusicon.StatusIcon()
self.systray_capabilities = True
@@ -2792,7 +2806,7 @@ if __name__ == '__main__':
print >> sys.stderr, "Encodings: d:%s, fs:%s, p:%s" % \
(sys.getdefaultencoding(), sys.getfilesystemencoding(), locale.getpreferredencoding())
- if os.name != 'nt':
+ if ((os.name != 'nt') and (sys.platform != 'darwin')):
# Session Management support
try:
import gnome.ui
@@ -2820,5 +2834,9 @@ if __name__ == '__main__':
check_paths.check_and_possibly_create_paths()
+ if sys.platform == 'darwin':
+ import osx
+ osx.init()
+
Interface()
gtk.main()
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 65ad1fc00..6d0259006 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1709,7 +1709,7 @@ class GroupchatControl(ChatControlBase):
gajim.connections[self.account].bookmarks.append(bm)
gajim.connections[self.account].store_bookmarks()
- gajim.interface.roster.actions_menu_needs_rebuild = True
+ gajim.interface.roster.set_actions_menu_needs_rebuild()
dialogs.InformationDialog(
_('Bookmark has been added successfully'),
diff --git a/src/network_manager_listener.py b/src/network_manager_listener.py
index 15d07ad66..e6d42fee1 100644
--- a/src/network_manager_listener.py
+++ b/src/network_manager_listener.py
@@ -18,6 +18,7 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
##
+import sys
from common import gajim
def device_now_active(self, *args):
@@ -34,23 +35,26 @@ def device_no_longer_active(self, *args):
supported = False
-try:
- from common.dbus_support import system_bus
-
- bus = system_bus.SystemBus()
-
- if 'org.freedesktop.NetworkManager' in bus.list_names():
- supported = True
- bus.add_signal_receiver(device_no_longer_active,
- 'DeviceNoLongerActive',
- 'org.freedesktop.NetworkManager',
- 'org.freedesktop.NetworkManager',
- '/org/freedesktop/NetworkManager')
-
- bus.add_signal_receiver(device_now_active,
- 'DeviceNowActive',
- 'org.freedesktop.NetworkManager',
- 'org.freedesktop.NetworkManager',
- '/org/freedesktop/NetworkManager')
-except:
- pass
+if sys.platform == 'darwin':
+ supported = True
+else:
+ try:
+ from common.dbus_support import system_bus
+
+ bus = system_bus.SystemBus()
+
+ if 'org.freedesktop.NetworkManager' in bus.list_names():
+ supported = True
+ bus.add_signal_receiver(device_no_longer_active,
+ 'DeviceNoLongerActive',
+ 'org.freedesktop.NetworkManager',
+ 'org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
+
+ bus.add_signal_receiver(device_now_active,
+ 'DeviceNowActive',
+ 'org.freedesktop.NetworkManager',
+ 'org.freedesktop.NetworkManager',
+ '/org/freedesktop/NetworkManager')
+ except:
+ pass
diff --git a/src/notify.py b/src/notify.py
index 8cdc25de1..aae559a9c 100644
--- a/src/notify.py
+++ b/src/notify.py
@@ -46,6 +46,14 @@ try:
except ImportError:
USER_HAS_PYNOTIFY = False
+USER_HAS_GROWL = True
+try:
+ import osx.growler
+ osx.growler.init()
+except:
+ USER_HAS_GROWL = False
+
+
def get_show_in_roster(event, account, contact):
'''Return True if this event must be shown in roster, else False'''
if event == 'gc_message_received':
@@ -344,6 +352,11 @@ def popup(event_type, jid, account, msg_type = '', path_to_image = None,
except gobject.GError, e:
# Connection to notification-daemon failed, see #2893
gajim.log.debug(str(e))
+ # try os/x growl
+ if USER_HAS_GROWL:
+ osx.growler.notify(event_type, jid, account, msg_type, path_to_image,
+ title, text)
+ return
# go old style
instance = dialogs.PopupNotificationWindow(event_type, jid, account,
diff --git a/src/osx/.deps/idle_la-idle.Plo b/src/osx/.deps/idle_la-idle.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/.deps/idle_la-idle.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/.deps/nsapp.Plo b/src/osx/.deps/nsapp.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/.deps/nsapp.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/Makefile b/src/osx/Makefile
new file mode 100644
index 000000000..d92ee6843
--- /dev/null
+++ b/src/osx/Makefile
@@ -0,0 +1,761 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/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
+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)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"
+idlelibLTLIBRARIES_INSTALL = $(INSTALL)
+nsapplibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(idlelib_LTLIBRARIES) $(nsapplib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+#idle_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__idle_la_SOURCES_DIST = idle.c
+#am_idle_la_OBJECTS = idle_la-idle.lo
+idle_la_OBJECTS = $(am_idle_la_OBJECTS)
+#am_idle_la_rpath = -rpath $(idlelibdir)
+#nsapp_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__nsapp_la_SOURCES_DIST = nsapp.m
+#am_nsapp_la_OBJECTS = nsapp.lo
+nsapp_la_OBJECTS = $(am_nsapp_la_OBJECTS)
+#am_nsapp_la_rpath = -rpath $(nsapplibdir)
+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 = $(idle_la_SOURCES) $(nsapp_la_SOURCES)
+DIST_SOURCES = $(am__idle_la_SOURCES_DIST) \
+ $(am__nsapp_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/asterix/gajim/missing --run aclocal-1.9
+ACLOCAL_AMFLAGS = -I ../m4
+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 =
+SUBDIRS = growl syncmenu
+OBJC = gcc
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+#idlelib_LTLIBRARIES = idle.la
+#idlelibdir = $(libdir)/gajim
+#idle_la_LIBADD = $(CARBON_LIBS)
+#idle_la_SOURCES = idle.c
+#idle_la_LDFLAGS = \
+# -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#nsapplib_LTLIBRARIES = nsapp.la
+#nsapplibdir = $(libdir)/gajim
+#nsapp_la_LIBADD = $(COCOA_LIBS)
+#nsapp_la_SOURCES = nsapp.m
+#nsapp_la_LDFLAGS = \
+# -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+#nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+#AM_OBJCFLAGS = $(nsapp_la_CFLAGS)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.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/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/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-idlelibLTLIBRARIES: $(idlelib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idlelibdir)" || $(mkdir_p) "$(DESTDIR)$(idlelibdir)"
+ @list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idlelibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idlelibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idlelibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(idlelibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(idlelibdir)/$$p"; \
+ done
+
+clean-idlelibLTLIBRARIES:
+ -test -z "$(idlelib_LTLIBRARIES)" || rm -f $(idlelib_LTLIBRARIES)
+ @list='$(idlelib_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-nsapplibLTLIBRARIES: $(nsapplib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(nsapplibdir)" || $(mkdir_p) "$(DESTDIR)$(nsapplibdir)"
+ @list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(nsapplibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nsapplibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-nsapplibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nsapplibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nsapplibdir)/$$p"; \
+ done
+
+clean-nsapplibLTLIBRARIES:
+ -test -z "$(nsapplib_LTLIBRARIES)" || rm -f $(nsapplib_LTLIBRARIES)
+ @list='$(nsapplib_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
+idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES)
+ $(LINK) $(am_idle_la_rpath) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS)
+nsapp.la: $(nsapp_la_OBJECTS) $(nsapp_la_DEPENDENCIES)
+ $(OBJCLINK) $(am_nsapp_la_rpath) $(nsapp_la_LDFLAGS) $(nsapp_la_OBJECTS) $(nsapp_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/idle_la-idle.Plo
+include ./$(DEPDIR)/nsapp.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 $@ $<
+
+idle_la-idle.lo: idle.c
+ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -MT idle_la-idle.lo -MD -MP -MF "$(DEPDIR)/idle_la-idle.Tpo" -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c; \
+ then mv -f "$(DEPDIR)/idle_la-idle.Tpo" "$(DEPDIR)/idle_la-idle.Plo"; else rm -f "$(DEPDIR)/idle_la-idle.Tpo"; exit 1; fi
+# source='idle.c' object='idle_la-idle.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.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:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+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: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ 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: ctags-recursive $(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
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+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-recursive
+
+clean-am: clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+ clean-nsapplibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-idlelibLTLIBRARIES \
+ install-nsapplibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-idlelibLTLIBRARIES uninstall-info-am \
+ uninstall-nsapplibLTLIBRARIES
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+ clean-nsapplibLTLIBRARIES clean-recursive ctags \
+ ctags-recursive distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-recursive distclean-tags distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-idlelibLTLIBRARIES install-info install-info-am \
+ install-man install-nsapplibLTLIBRARIES install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-idlelibLTLIBRARIES uninstall-info-am \
+ uninstall-nsapplibLTLIBRARIES
+
+
+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/Makefile.am b/src/osx/Makefile.am
new file mode 100644
index 000000000..1ccc8309a
--- /dev/null
+++ b/src/osx/Makefile.am
@@ -0,0 +1,45 @@
+SUBDIRS = growl syncmenu
+
+ACLOCAL_AMFLAGS = -I ../m4
+
+OBJC = gcc
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+if BUILD_IDLE_OSX
+idlelib_LTLIBRARIES = idle.la
+idlelibdir = $(libdir)/gajim
+
+idle_la_LIBADD = $(CARBON_LIBS)
+
+idle_la_SOURCES = idle.c
+
+idle_la_LDFLAGS = \
+ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+endif
+
+if BUILD_COCOA
+nsapplib_LTLIBRARIES = nsapp.la
+nsapplibdir = $(libdir)/gajim
+
+nsapp_la_LIBADD = $(COCOA_LIBS)
+
+nsapp_la_SOURCES = nsapp.m
+
+nsapp_la_LDFLAGS = \
+ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+nsapp_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+
+AM_OBJCFLAGS = $(nsapp_la_CFLAGS)
+endif
+
+DISTCLEANFILES =
+
+EXTRA_DIST =
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/Makefile.in b/src/osx/Makefile.in
new file mode 100644
index 000000000..93d4919d6
--- /dev/null
+++ b/src/osx/Makefile.in
@@ -0,0 +1,761 @@
+# 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
+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)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"
+idlelibLTLIBRARIES_INSTALL = $(INSTALL)
+nsapplibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(idlelib_LTLIBRARIES) $(nsapplib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@BUILD_IDLE_OSX_TRUE@idle_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__idle_la_SOURCES_DIST = idle.c
+@BUILD_IDLE_OSX_TRUE@am_idle_la_OBJECTS = idle_la-idle.lo
+idle_la_OBJECTS = $(am_idle_la_OBJECTS)
+@BUILD_IDLE_OSX_TRUE@am_idle_la_rpath = -rpath $(idlelibdir)
+@BUILD_COCOA_TRUE@nsapp_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__nsapp_la_SOURCES_DIST = nsapp.m
+@BUILD_COCOA_TRUE@am_nsapp_la_OBJECTS = nsapp.lo
+nsapp_la_OBJECTS = $(am_nsapp_la_OBJECTS)
+@BUILD_COCOA_TRUE@am_nsapp_la_rpath = -rpath $(nsapplibdir)
+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 = $(idle_la_SOURCES) $(nsapp_la_SOURCES)
+DIST_SOURCES = $(am__idle_la_SOURCES_DIST) \
+ $(am__nsapp_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I ../m4
+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@
+SUBDIRS = growl syncmenu
+OBJC = gcc
+INCLUDES = \
+ $(PYTHON_INCLUDES)
+
+@BUILD_IDLE_OSX_TRUE@idlelib_LTLIBRARIES = idle.la
+@BUILD_IDLE_OSX_TRUE@idlelibdir = $(libdir)/gajim
+@BUILD_IDLE_OSX_TRUE@idle_la_LIBADD = $(CARBON_LIBS)
+@BUILD_IDLE_OSX_TRUE@idle_la_SOURCES = idle.c
+@BUILD_IDLE_OSX_TRUE@idle_la_LDFLAGS = \
+@BUILD_IDLE_OSX_TRUE@ -module -avoid-version -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386
+
+@BUILD_IDLE_OSX_TRUE@idle_la_CFLAGS = -Xcompiler -isysroot -Xcompiler /Developer/SDKs/MacOSX10.4u.sdk -Xcompiler -arch -Xcompiler ppc -Xcompiler -arch -Xcompiler i386 $(PYTHON_INCLUDES)
+@BUILD_COCOA_TRUE@nsapplib_LTLIBRARIES = nsapp.la
+@BUILD_COCOA_TRUE@nsapplibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@nsapp_la_LIBADD = $(COCOA_LIBS)
+@BUILD_COCOA_TRUE@nsapp_la_SOURCES = nsapp.m
+@BUILD_COCOA_TRUE@nsapp_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@nsapp_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 = $(nsapp_la_CFLAGS)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.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/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/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-idlelibLTLIBRARIES: $(idlelib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(idlelibdir)" || $(mkdir_p) "$(DESTDIR)$(idlelibdir)"
+ @list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idlelibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idlelibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-idlelibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(idlelibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(idlelibdir)/$$p"; \
+ done
+
+clean-idlelibLTLIBRARIES:
+ -test -z "$(idlelib_LTLIBRARIES)" || rm -f $(idlelib_LTLIBRARIES)
+ @list='$(idlelib_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-nsapplibLTLIBRARIES: $(nsapplib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(nsapplibdir)" || $(mkdir_p) "$(DESTDIR)$(nsapplibdir)"
+ @list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(nsapplibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(nsapplibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nsapplibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-nsapplibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(nsapplib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nsapplibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nsapplibdir)/$$p"; \
+ done
+
+clean-nsapplibLTLIBRARIES:
+ -test -z "$(nsapplib_LTLIBRARIES)" || rm -f $(nsapplib_LTLIBRARIES)
+ @list='$(nsapplib_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
+idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES)
+ $(LINK) $(am_idle_la_rpath) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS)
+nsapp.la: $(nsapp_la_OBJECTS) $(nsapp_la_DEPENDENCIES)
+ $(OBJCLINK) $(am_nsapp_la_rpath) $(nsapp_la_LDFLAGS) $(nsapp_la_OBJECTS) $(nsapp_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idle_la-idle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsapp.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 $@ $<
+
+idle_la-idle.lo: idle.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -MT idle_la-idle.lo -MD -MP -MF "$(DEPDIR)/idle_la-idle.Tpo" -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/idle_la-idle.Tpo" "$(DEPDIR)/idle_la-idle.Plo"; else rm -f "$(DEPDIR)/idle_la-idle.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='idle.c' object='idle_la-idle.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) $(idle_la_CFLAGS) $(CFLAGS) -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.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:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+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: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ 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: ctags-recursive $(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
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(idlelibdir)" "$(DESTDIR)$(nsapplibdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+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-recursive
+
+clean-am: clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+ clean-nsapplibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-idlelibLTLIBRARIES \
+ install-nsapplibLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-idlelibLTLIBRARIES uninstall-info-am \
+ uninstall-nsapplibLTLIBRARIES
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-idlelibLTLIBRARIES clean-libtool \
+ clean-nsapplibLTLIBRARIES clean-recursive ctags \
+ ctags-recursive distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-recursive distclean-tags distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-idlelibLTLIBRARIES install-info install-info-am \
+ install-man install-nsapplibLTLIBRARIES install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-idlelibLTLIBRARIES uninstall-info-am \
+ uninstall-nsapplibLTLIBRARIES
+
+
+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/__init__.py b/src/osx/__init__.py
new file mode 100644
index 000000000..ee21386cb
--- /dev/null
+++ b/src/osx/__init__.py
@@ -0,0 +1,45 @@
+import sys, commands
+from network_manager_listener import device_now_active, device_no_longer_active
+import nsapp
+
+
+if sys.platform != "darwin":
+ raise ImportError("System platform is not OS/X")
+
+
+net_device_active = True
+
+
+###
+### Utility functions
+###
+
+def checkPID(pid, procname):
+ out = commands.getstatusoutput("ps -wwp %d" % pid)
+ arr = out[1].split("\n")
+ if ((len(arr) == 2) and (arr[1].find(procname) >= 0)):
+ return True
+ return False
+
+
+def init():
+ nsapp.init()
+ nsapp.setNetworkCB(netDeviceChanged)
+ return
+
+
+def shutdown():
+ import dbus
+ dbus.shutdown()
+ return
+
+
+def netDeviceChanged():
+ global net_device_active
+ if net_device_active:
+ net_device_active = False
+ device_no_longer_active(None)
+ else:
+ net_device_active = True
+ device_now_active(None)
+ return
diff --git a/src/osx/__init__.pyo b/src/osx/__init__.pyo
new file mode 100644
index 000000000..af16f9e9a
--- /dev/null
+++ b/src/osx/__init__.pyo
Binary files differ
diff --git a/src/osx/dbus.py b/src/osx/dbus.py
new file mode 100644
index 000000000..41f1e83c5
--- /dev/null
+++ b/src/osx/dbus.py
@@ -0,0 +1,131 @@
+###
+### Internal dbus management. This can go away once native gtk+ is in fink or
+### macports and we can require their dbus.
+###
+
+
+
+import os, sys, commands, signal
+
+if sys.platform != "darwin":
+ raise ImportError("System platform is not OS/X")
+
+import osx, osx.nsapp
+from common.configpaths import gajimpaths
+
+
+_GTK_BASE = "/Library/Frameworks/GTK+.framework/Versions/Current"
+
+
+def readEnv():
+ gajimpaths.add_from_root(u'dbus.env', u'dbus.env')
+ try:
+ dbus_env = file(gajimpaths[u'dbus.env'], "r")
+ except:
+ return False
+ try:
+ line1 = dbus_env.readline()
+ line2 = dbus_env.readline()
+ dbus_env.close()
+ except:
+ print "Invalid dbus.env file"
+ return False
+ return parseEnv(line1, line2)
+
+
+def parseEnv(line1, line2):
+ try:
+ if not line1 or not line2:
+ return False
+ if (not line1.startswith("DBUS_SESSION_BUS_ADDRESS=") or
+ not line2.startswith("DBUS_SESSION_BUS_PID=")):
+ return False
+ arr = line2.split("=")
+ pid = arr[1].strip().strip('"')
+ if not osx.checkPID(int(pid), "dbus-daemon"):
+ return False
+ line1 = line1.strip()
+ loc = line1.find("=")
+ address = line1[loc + 1:]
+ address = address.strip().strip('"')
+ return [address, pid]
+ except Exception, e:
+ print "Invalid dbus.env file", e
+ return False
+ return None
+
+
+def setEnv(env):
+ os.environ['DBUS_SESSION_BUS_ADDRESS'] = env[0]
+ os.environ['DBUS_SESSION_BUS_PID'] = env[1]
+ return
+
+
+def writeEnv(env):
+ gajimpaths.add_from_root(u'dbus.env', u'dbus.env')
+ try:
+ dbus_env = file(gajimpaths[u'dbus.env'], "w+")
+ dbus_env.write("DBUS_SESSION_BUS_ADDRESS=\"" + env[0] + "\"\n")
+ dbus_env.write("DBUS_SESSION_BUS_PID=\"" + env[1] + "\"\n")
+ dbus_env.close()
+ except Exception, e:
+ print "Failed to write file: %s" % gajimpaths[u'dbus.env']
+ print str(e)
+ return
+
+
+def checkUUID():
+ if os.path.exists(_GTK_BASE + "/var/lib/dbus/machine-id"):
+ return
+ ret = commands.getstatusoutput(_GTK_BASE + "/bin/dbus-uuidgen --ensure")
+ if ret[0] != 0:
+ print "Failed to initialize dbus machine UUID:", ret[1]
+ return
+
+
+def load(start):
+ # Look for existing external session and just use it if it exists
+ if (('DBUS_SESSION_BUS_ADDRESS' in os.environ) and
+ ('DBUS_SESSION_BUS_PID' in os.environ) and
+ osx.checkPID(int(os.environ['DBUS_SESSION_BUS_PID']), 'dbus-daemon')):
+ return True
+
+ # Look for our own internal session
+ env = readEnv()
+ if env:
+ # We have a valid existing dbus session, yay
+ setEnv(env)
+ return True
+
+ # Initialize the machine's UUID if not done yet
+ checkUUID()
+
+ if start:
+ # None found, start a new session
+ print "Starting new dbus session"
+ #cmd = os.path.join(osx.nsapp.getBundlePath(),
+ # "Contents/Resources/bin/dbus-launch --exit-with-session")
+ cmd = _GTK_BASE + "/bin/dbus-launch --exit-with-session"
+ ret = commands.getstatusoutput(cmd)
+ arr = ret[1].split("\n")
+ if len(arr) != 2:
+ print "Failed to start internal dbus session:"
+ print ret[1]
+ return
+ env = parseEnv(arr[0].strip(), arr[1].strip())
+ if not env:
+ print "Failed to start internal dbus session:"
+ print ret[1]
+ return
+ setEnv(env)
+ writeEnv(env)
+ return True
+ return False
+
+
+def shutdown():
+ env = readEnv()
+ if not env:
+ return
+ os.kill(int(env[1]), signal.SIGINT)
+ return
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 )
+
diff --git a/src/osx/growler.py b/src/osx/growler.py
new file mode 100644
index 000000000..c3ea320cf
--- /dev/null
+++ b/src/osx/growler.py
@@ -0,0 +1,63 @@
+import sys, os
+from growl.Growl import GrowlNotifier
+from common import gajim, helpers
+
+
+if sys.platform != "darwin":
+ raise ImportError("System platform is not OS/X")
+
+
+GENERIC_NOTIF = _('Generic')
+notifications = [
+ _('Contact Signed In'), _('Contact Signed Out'), _('New Message'),
+ _('New Single Message'), _('New Private Message'), _('New E-mail'),
+ _('File Transfer Request'), _('File Transfer Error'),
+ _('File Transfer Completed'), _('File Transfer Stopped'),
+ _('Groupchat Invitation'), _('Contact Changed Status'),
+ _('Connection Failed'), GENERIC_NOTIF
+ ]
+
+growler = None
+
+
+
+def init():
+ global growler, notifications
+ icon = file(os.path.join(gajim.DATA_DIR, "pixmaps", "gajim.icns"), "r")
+ growler = GrowlNotifier(applicationName = "Gajim",
+ notifications = notifications,
+ applicationIcon = icon.read(),
+ notify_cb = notifyCB)
+ growler.register()
+ return
+
+
+def notify(event_type, jid, account, msg_type, path_to_image, title, text):
+ global notifications
+ if not event_type in notifications:
+ event_type = GENERIC_NOTIF
+ if not text:
+ text = gajim.get_name_from_jid(account, jid) # default value of text
+ text = filterString(text)
+ if not title:
+ title = event_type
+ title = filterString(title)
+ if not path_to_image:
+ path_to_image = os.path.abspath(
+ os.path.join(gajim.DATA_DIR, 'pixmaps', 'events',
+ 'chat_msg_recv.png')) # img to display
+ icon = file(path_to_image, "r")
+ context = [account, jid, msg_type]
+ growler.notify(event_type, title, text, icon.read(), False, None,
+ context)
+ return
+
+
+def notifyCB(data):
+ gajim.interface.handle_event(data[0], data[1], data[2])
+
+
+def filterString(string):
+ string = string.replace("&quot;", "'")
+ return string
+
diff --git a/src/osx/idle.c b/src/osx/idle.c
new file mode 100644
index 000000000..c24c30438
--- /dev/null
+++ b/src/osx/idle.c
@@ -0,0 +1,174 @@
+/*****
+ This is a modified form of idler.c. The original copyright notice follows.
+ **/
+
+/*****************************************
+ * idler.c
+ *
+ * Uses IOKit to figure out the idle time of the system. The idle time
+ * is stored as a property of the IOHIDSystem class; the name is
+ * HIDIdleTime. Stored as a 64-bit int, measured in ns.
+ *
+ * The program itself just prints to stdout the time that the computer
+has
+ * been idle in seconds.
+ *
+ * Compile with gcc -Wall -framework IOKit -framework Carbon idler.c -o
+ * idler
+ *
+ * Copyright (c) 2003, Stanford University
+ * 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 Stanford University 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 OWNER 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.
+ */
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <IOKit/IOKitLib.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <Python.h>
+
+/* 10^9 -- number of ns in a second */
+#define NS_SECONDS 1000000000
+
+
+static mach_port_t __idle_osx_master_port;
+io_registry_entry_t __idle_osx_service;
+
+
+static PyObject * idle_init(PyObject *self, PyObject *args)
+{
+ io_iterator_t iter;
+ CFMutableDictionaryRef hid_match;
+
+ IOMasterPort(MACH_PORT_NULL, &__idle_osx_master_port);
+
+ /* Get IOHIDSystem */
+ hid_match = IOServiceMatching("IOHIDSystem");
+ IOServiceGetMatchingServices(__idle_osx_master_port, hid_match, &iter);
+ if (iter == 0) {
+ printf("Error accessing IOHIDSystem\n");
+ }
+
+ __idle_osx_service = IOIteratorNext(iter);
+ if (__idle_osx_service == 0) {
+ printf("Iterator's empty!\n");
+ }
+
+ IOObjectRelease(iter);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject * idle_getIdleSec(PyObject *self, PyObject *args)
+{
+ CFMutableDictionaryRef properties = 0;
+ CFTypeRef obj = NULL;
+ uint64_t tHandle = 0;
+
+ if (IORegistryEntryCreateCFProperties(__idle_osx_service, &properties,
+ kCFAllocatorDefault, 0) ==
+ KERN_SUCCESS && properties != NULL)
+ {
+ obj = CFDictionaryGetValue(properties, CFSTR("HIDIdleTime"));
+ CFRetain(obj);
+ }
+ else
+ {
+ printf("Couldn't grab properties of system\n");
+ }
+
+ if (obj)
+ {
+ CFTypeID type = CFGetTypeID(obj);
+
+ if (type == CFDataGetTypeID())
+ {
+ CFDataGetBytes((CFDataRef) obj,
+ CFRangeMake(0, sizeof(tHandle)),
+ (UInt8*) &tHandle);
+ }
+ else if (type == CFNumberGetTypeID())
+ {
+ CFNumberGetValue((CFNumberRef)obj,
+ kCFNumberSInt64Type,
+ &tHandle);
+ }
+ else
+ {
+ printf("%d: unsupported type\n", (int)type);
+ }
+
+ CFRelease(obj);
+
+ // essentially divides by 10^9
+ tHandle >>= 30;
+ }
+ else
+ {
+ printf("Can't find idle time\n");
+ }
+
+ CFRelease((CFTypeRef)properties);
+ return Py_BuildValue("L", tHandle);
+}
+
+static PyObject * idle_close(PyObject *self, PyObject *args)
+{
+ /* Release our resources */
+ IOObjectRelease(__idle_osx_service);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyMethodDef idleMethods[] =
+{
+ {"init", idle_init, METH_VARARGS, "init idle"},
+ {"getIdleSec", idle_getIdleSec, METH_VARARGS, "Get idle time in seconds"},
+ {"close", idle_close, METH_VARARGS, "close idle"},
+ {NULL, NULL, 0, NULL}
+};
+
+PyMODINIT_FUNC initidle(void)
+{
+ (void) Py_InitModule("idle", idleMethods);
+}
diff --git a/src/osx/nsapp.h b/src/osx/nsapp.h
new file mode 100644
index 000000000..dd86960c2
--- /dev/null
+++ b/src/osx/nsapp.h
@@ -0,0 +1,19 @@
+#import <Cocoa/Cocoa.h>
+
+
+@interface NSApplication (Gajim)
+
+- (void) initGajim;
+- (void) initGUI;
+- (BOOL) initNetNotify;
+- (void) orderFrontStandardAboutPanel: (id)sender;
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
+- (BOOL) application:(NSApplication *)theApplication
+ openFile:(NSString *)filename;
+- (void) application:(NSApplication *)sender openFiles:(NSArray *)filenames;
+- (BOOL) applicationOpenUntitledFile:(NSApplication *)theApplication;
+- (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender;
+
++ (void) netNotifyCB: (NSNotification*)notif;
+
+@end
diff --git a/src/osx/nsapp.m b/src/osx/nsapp.m
new file mode 100644
index 000000000..4e7b6bde4
--- /dev/null
+++ b/src/osx/nsapp.m
@@ -0,0 +1,239 @@
+#import "nsapp.h"
+#include <notify.h>
+
+#include <AppKit/NSSound.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <Python.h>
+
+
+#define GAJIM_POOL_ALLOC \
+ NSAutoreleasePool *gajim_pool = [[NSAutoreleasePool alloc] init];
+#define GAJIM_POOL_FREE [gajim_pool release];
+
+
+static PyObject *netChangedCB = NULL;
+static NSFileHandle* netNotifyFH = nil;
+static int netNotifyToken = -1;
+
+
+@implementation NSApplication (Gajim)
+
+- (void) initGUI
+{
+ [NSBundle loadNibNamed:@"Gajim" owner:NSApp];
+}
+
++ (void) netNotifyCB: (NSNotification*) notif
+{
+ NSLog(@"Network changed notification");
+
+ if (netChangedCB)
+ {
+ PyObject_CallObject(netChangedCB, NULL);
+ }
+
+ [[notif object] readInBackgroundAndNotify];
+}
+
+- (BOOL) initNetNotify
+{
+ int fd = 0;
+
+ if (notify_register_file_descriptor(
+ "com.apple.system.config.network_change", &fd, 0,
+ &netNotifyToken) != NOTIFY_STATUS_OK)
+ {
+ return FALSE;
+ }
+
+ netNotifyFH = [[NSFileHandle alloc] initWithFileDescriptor: fd];
+ [[NSNotificationCenter defaultCenter] addObserver: [self class]
+ selector: @selector(netNotifyCB:)
+ name: NSFileHandleReadCompletionNotification
+ object: netNotifyFH];
+ [netNotifyFH readInBackgroundAndNotify];
+
+ return TRUE;
+}
+
+- (void) initGajim
+{
+ GAJIM_POOL_ALLOC
+
+ [self initGUI];
+ [self initNetNotify];
+
+ [NSApp setDelegate:self];
+ [NSApp finishLaunching];
+
+ GAJIM_POOL_FREE
+}
+
+- (void) orderFrontStandardAboutPanel: (id)sender
+{
+ PyRun_SimpleString("\n\
+import gobject\n\
+import dialogs\n\
+def doAbout():\n\
+ dialogs.AboutDialog()\n\
+ return None\n\
+gobject.idle_add(doAbout)\n\
+");
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
+{
+/*
+ PyRun_SimpleString("\n\
+import gajim\n\
+import gobject\n\
+def doQuit():\n\
+ gajim.interface.roster.on_quit_menuitem_activate(None)\n\
+ return None\n\
+gobject.idle_add(doQuit)\n\
+");
+*/
+ return NSTerminateNow;
+}
+
+- (BOOL) application:(NSApplication *)theApplication
+ openFile:(NSString *)filename
+{
+ NSLog(@"openFile");
+ NSLog(filename);
+ return YES;
+}
+
+- (void)application:(NSApplication *)sender openFiles:(NSArray *)filenames
+{
+ NSLog(@"openFiles");
+
+ NSEnumerator* iter = [filenames objectEnumerator];
+ NSString* str;
+ while ((str = [iter nextObject]))
+ {
+ NSLog(str);
+ }
+ return;
+}
+
+- (BOOL)applicationOpenUntitledFile:(NSApplication *)theApplication
+{
+ NSLog(@"openUntitledFile");
+ return YES;
+}
+
+- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
+{
+ NSLog(@"shouldOpenUntitledFile");
+ return YES;
+}
+
+@end
+
+
+static PyObject * nsapp_init(PyObject *self, PyObject *args)
+{
+ [NSApp initGajim];
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject * nsapp_setNetworkCB(PyObject *self, PyObject *args)
+{
+ PyArg_UnpackTuple(args, "netcb", 1, 1, &netChangedCB);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject * nsapp_requestUserAttention(PyObject *self, PyObject *args)
+{
+ GAJIM_POOL_ALLOC
+ [NSApp requestUserAttention:NSInformationalRequest];
+ GAJIM_POOL_FREE
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject * nsapp_playFile(PyObject *self, PyObject *args)
+{
+ GAJIM_POOL_ALLOC
+
+ const char* cstr = NULL;
+
+ if (!PyArg_ParseTuple(args, "s", &cstr))
+ {
+ return NULL;
+ }
+
+ NSSound* snd = [[NSSound alloc] initWithContentsOfFile:
+ [[NSString alloc] initWithUTF8String: cstr]
+ byReference: YES];
+ if (!snd)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ if (![snd play])
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ GAJIM_POOL_FREE
+
+ return Py_BuildValue("b", 1);
+}
+
+static PyObject * nsapp_getBundlePath(PyObject *self, PyObject *args)
+{
+ GAJIM_POOL_ALLOC
+
+ NSBundle* bundle = [NSBundle mainBundle];
+ if (!bundle)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ NSString* nspath = [bundle bundlePath];
+ if (!nspath)
+ {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ const char* path = [nspath UTF8String];
+ PyObject* pypath = Py_BuildValue("s", path);
+
+ GAJIM_POOL_FREE
+
+ return pypath;
+}
+
+static PyMethodDef nsappMethods[] =
+{
+ {"init", nsapp_init, METH_VARARGS, "init nsapp"},
+ {"setNetworkCB", nsapp_setNetworkCB, METH_VARARGS,
+ "Callback to call when the network state changes"},
+ {"getBundlePath", nsapp_getBundlePath, METH_VARARGS,
+ "Get the path to the bundle we were run from"},
+ {"playFile", nsapp_playFile, METH_VARARGS,
+ "Play a sound file"},
+ {"requestUserAttention", nsapp_requestUserAttention, METH_VARARGS,
+ "Sends a request for the users attention to the window manager"},
+ {NULL, NULL, 0, NULL}
+};
+
+PyMODINIT_FUNC initnsapp(void)
+{
+ (void) Py_InitModule("nsapp", nsappMethods);
+}
diff --git a/src/osx/setup.py b/src/osx/setup.py
new file mode 100644
index 000000000..2eaeb1bb9
--- /dev/null
+++ b/src/osx/setup.py
@@ -0,0 +1,20 @@
+from distutils.core import setup, Extension
+
+setup(
+ name = 'Gajim',
+ version = '0.11',
+ description = 'A full featured Jabber client',
+ author = 'Gajim Development Team',
+ url = 'http://www.gajim.org/',
+ download_url = 'http://www.gajim.org/downloads.php',
+ license = 'GPL',
+
+ ext_modules=[
+ Extension('idle', ['idle.c'],
+ extra_compile_args=['-Wall'],
+ extra_link_args=['-framework', 'IOKit', '-framework', 'Carbon']),
+ Extension('nsapp', ['nsapp.m'],
+ extra_compile_args=['-Wall'],
+ extra_link_args=['-framework', 'AppKit', '-framework', 'Cocoa']),
+ ]
+)
diff --git a/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/syncmenu/.deps/syncmenu_la-pysyncmenu.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo
new file mode 100644
index 000000000..9ce06a81e
--- /dev/null
+++ b/src/osx/syncmenu/.deps/syncmenu_la-sync-menu.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/src/osx/syncmenu/Makefile b/src/osx/syncmenu/Makefile
new file mode 100644
index 000000000..82364336a
--- /dev/null
+++ b/src/osx/syncmenu/Makefile
@@ -0,0 +1,575 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/osx/syncmenu/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/syncmenu
+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)$(syncmenulibdir)"
+syncmenulibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(syncmenulib_LTLIBRARIES)
+syncmenu_la_LIBADD =
+am__syncmenu_la_SOURCES_DIST = sync-menu.c pysyncmenu.c
+#am_syncmenu_la_OBJECTS = syncmenu_la-sync-menu.lo \
+# syncmenu_la-pysyncmenu.lo
+syncmenu_la_OBJECTS = $(am_syncmenu_la_OBJECTS)
+#am_syncmenu_la_rpath = -rpath $(syncmenulibdir)
+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 $@
+SOURCES = $(syncmenu_la_SOURCES)
+DIST_SOURCES = $(am__syncmenu_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 =
+GTKPATH = "/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+INCLUDES = $(PYTHON_INCLUDES)
+GTKLDFLAGS = `$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0`
+GTKCFLAGS = `$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+#syncmenulib_LTLIBRARIES = syncmenu.la
+#syncmenulibdir = $(libdir)/gajim
+#syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+#syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+#syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .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/syncmenu/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/syncmenu/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-syncmenulibLTLIBRARIES: $(syncmenulib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(syncmenulibdir)" || $(mkdir_p) "$(DESTDIR)$(syncmenulibdir)"
+ @list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(syncmenulibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(syncmenulibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-syncmenulibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(syncmenulibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(syncmenulibdir)/$$p"; \
+ done
+
+clean-syncmenulibLTLIBRARIES:
+ -test -z "$(syncmenulib_LTLIBRARIES)" || rm -f $(syncmenulib_LTLIBRARIES)
+ @list='$(syncmenulib_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
+syncmenu.la: $(syncmenu_la_OBJECTS) $(syncmenu_la_DEPENDENCIES)
+ $(LINK) $(am_syncmenu_la_rpath) $(syncmenu_la_LDFLAGS) $(syncmenu_la_OBJECTS) $(syncmenu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/syncmenu_la-pysyncmenu.Plo
+include ./$(DEPDIR)/syncmenu_la-sync-menu.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 $@ $<
+
+syncmenu_la-sync-menu.lo: sync-menu.c
+ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-sync-menu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c; \
+ then mv -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" "$(DEPDIR)/syncmenu_la-sync-menu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo"; exit 1; fi
+# source='sync-menu.c' object='syncmenu_la-sync-menu.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c
+
+syncmenu_la-pysyncmenu.lo: pysyncmenu.c
+ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-pysyncmenu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c; \
+ then mv -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" "$(DEPDIR)/syncmenu_la-pysyncmenu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo"; exit 1; fi
+# source='pysyncmenu.c' object='syncmenu_la-pysyncmenu.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c
+
+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)$(syncmenulibdir)"; 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-generic clean-libtool clean-syncmenulibLTLIBRARIES \
+ 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-syncmenulibLTLIBRARIES
+
+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-info-am uninstall-syncmenulibLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-syncmenulibLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip install-syncmenulibLTLIBRARIES 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-am uninstall-info-am \
+ uninstall-syncmenulibLTLIBRARIES
+
+
+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/syncmenu/Makefile.am b/src/osx/syncmenu/Makefile.am
new file mode 100644
index 000000000..797476559
--- /dev/null
+++ b/src/osx/syncmenu/Makefile.am
@@ -0,0 +1,21 @@
+GTKPATH="/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+INCLUDES = $(PYTHON_INCLUDES)
+
+GTKLDFLAGS=`$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0`
+GTKCFLAGS=`$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+
+if BUILD_COCOA
+syncmenulib_LTLIBRARIES = syncmenu.la
+syncmenulibdir = $(libdir)/gajim
+syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+endif
+
+DISTCLEANFILES =
+
+EXTRA_DIST =
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/osx/syncmenu/Makefile.in b/src/osx/syncmenu/Makefile.in
new file mode 100644
index 000000000..bae1c97d9
--- /dev/null
+++ b/src/osx/syncmenu/Makefile.in
@@ -0,0 +1,575 @@
+# 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/syncmenu
+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)$(syncmenulibdir)"
+syncmenulibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(syncmenulib_LTLIBRARIES)
+syncmenu_la_LIBADD =
+am__syncmenu_la_SOURCES_DIST = sync-menu.c pysyncmenu.c
+@BUILD_COCOA_TRUE@am_syncmenu_la_OBJECTS = syncmenu_la-sync-menu.lo \
+@BUILD_COCOA_TRUE@ syncmenu_la-pysyncmenu.lo
+syncmenu_la_OBJECTS = $(am_syncmenu_la_OBJECTS)
+@BUILD_COCOA_TRUE@am_syncmenu_la_rpath = -rpath $(syncmenulibdir)
+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 $@
+SOURCES = $(syncmenu_la_SOURCES)
+DIST_SOURCES = $(am__syncmenu_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@
+GTKPATH = "/Library/Frameworks/GTK+.framework/Versions/Current/bin"
+INCLUDES = $(PYTHON_INCLUDES)
+GTKLDFLAGS = `$(GTKPATH)/pkg-config --libs gtk+-2.0 pygobject-2.0`
+GTKCFLAGS = `$(GTKPATH)/pkg-config --cflags gtk+-2.0 pygobject-2.0`
+@BUILD_COCOA_TRUE@syncmenulib_LTLIBRARIES = syncmenu.la
+@BUILD_COCOA_TRUE@syncmenulibdir = $(libdir)/gajim
+@BUILD_COCOA_TRUE@syncmenu_la_SOURCES = sync-menu.c pysyncmenu.c
+@BUILD_COCOA_TRUE@syncmenu_la_LDFLAGS = -module -avoid-version $(GTKLDFLAGS)
+@BUILD_COCOA_TRUE@syncmenu_la_CFLAGS = $(GTKCFLAGS) -Wall -g $(INCLUDES)
+DISTCLEANFILES =
+EXTRA_DIST =
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .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/syncmenu/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/osx/syncmenu/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-syncmenulibLTLIBRARIES: $(syncmenulib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(syncmenulibdir)" || $(mkdir_p) "$(DESTDIR)$(syncmenulibdir)"
+ @list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(syncmenulibdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(syncmenulibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(syncmenulibdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-syncmenulibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(syncmenulib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(syncmenulibdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(syncmenulibdir)/$$p"; \
+ done
+
+clean-syncmenulibLTLIBRARIES:
+ -test -z "$(syncmenulib_LTLIBRARIES)" || rm -f $(syncmenulib_LTLIBRARIES)
+ @list='$(syncmenulib_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
+syncmenu.la: $(syncmenu_la_OBJECTS) $(syncmenu_la_DEPENDENCIES)
+ $(LINK) $(am_syncmenu_la_rpath) $(syncmenu_la_LDFLAGS) $(syncmenu_la_OBJECTS) $(syncmenu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syncmenu_la-pysyncmenu.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syncmenu_la-sync-menu.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 $@ $<
+
+syncmenu_la-sync-menu.lo: sync-menu.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-sync-menu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo" "$(DEPDIR)/syncmenu_la-sync-menu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-sync-menu.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync-menu.c' object='syncmenu_la-sync-menu.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) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-sync-menu.lo `test -f 'sync-menu.c' || echo '$(srcdir)/'`sync-menu.c
+
+syncmenu_la-pysyncmenu.lo: pysyncmenu.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(syncmenu_la_CFLAGS) $(CFLAGS) -MT syncmenu_la-pysyncmenu.lo -MD -MP -MF "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo" "$(DEPDIR)/syncmenu_la-pysyncmenu.Plo"; else rm -f "$(DEPDIR)/syncmenu_la-pysyncmenu.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pysyncmenu.c' object='syncmenu_la-pysyncmenu.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) $(syncmenu_la_CFLAGS) $(CFLAGS) -c -o syncmenu_la-pysyncmenu.lo `test -f 'pysyncmenu.c' || echo '$(srcdir)/'`pysyncmenu.c
+
+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)$(syncmenulibdir)"; 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-generic clean-libtool clean-syncmenulibLTLIBRARIES \
+ 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-syncmenulibLTLIBRARIES
+
+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-info-am uninstall-syncmenulibLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-syncmenulibLTLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip install-syncmenulibLTLIBRARIES 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-am uninstall-info-am \
+ uninstall-syncmenulibLTLIBRARIES
+
+
+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/syncmenu/pysyncmenu.c b/src/osx/syncmenu/pysyncmenu.c
new file mode 100644
index 000000000..d2e304f9f
--- /dev/null
+++ b/src/osx/syncmenu/pysyncmenu.c
@@ -0,0 +1,55 @@
+#include <errno.h>
+#include <string.h>
+#include <Python.h>
+#include <pygobject.h>
+#include "sync-menu.h"
+
+
+PyDoc_STRVAR(pysync_menu_takeover_menu__doc__,
+"Receives: a GtkMenuShell\n"
+"Returns:\n");
+
+static PyObject *pysync_menu_takeover_menu(PyObject *s, PyObject *args)
+{
+ PyObject *obj = NULL;
+
+ if (!PyArg_ParseTuple(args, "O:GtkMenuShell", &obj))
+ {
+ PyErr_SetString(PyExc_TypeError, "Failed to process parameter1");
+ return NULL;
+ }
+
+ Py_INCREF(obj);
+
+ GtkMenuShell* menu = pyg_boxed_get(obj, GtkMenuShell);
+ if (!menu)
+ {
+ PyErr_SetString(PyExc_TypeError, "Failed to process parameter2");
+ return NULL;
+ }
+
+ sync_menu_takeover_menu(menu);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyMethodDef syncmenuModuleMethods[] =
+{
+ {"takeover_menu", (PyCFunction)pysync_menu_takeover_menu,
+ METH_VARARGS, pysync_menu_takeover_menu__doc__},
+ {NULL}
+};
+
+PyDoc_STRVAR(modsyncmenu__doc__,
+ "GTK+ Integration for the Mac OS X Menubar.\n");
+
+void initsyncmenu(void)
+{
+ if (!Py_InitModule3("syncmenu", syncmenuModuleMethods, modsyncmenu__doc__))
+ {
+ PyErr_SetString(PyExc_ImportError,
+ "Py_InitModule3(\"syncmenu\") failed");
+ return;
+ }
+}
diff --git a/src/osx/syncmenu/setup.py b/src/osx/syncmenu/setup.py
new file mode 100644
index 000000000..7b20709f9
--- /dev/null
+++ b/src/osx/syncmenu/setup.py
@@ -0,0 +1,27 @@
+from distutils.core import setup, Extension
+import commands
+
+
+retval, output = commands.getstatusoutput("pkg-config --cflags gtk+-2.0 pygtk-2.0")
+if retval != 0:
+ print "Failed to find package details for gtk+-2.0"
+ print
+ print output
+ sys.exit(1)
+cflags = output.strip().split()
+retval, output = commands.getstatusoutput("pkg-config --libs gtk+-2.0 pygtk-2.0")
+if retval != 0:
+ print "Failed to find package details for gtk+-2.0"
+ print
+ print output
+ sys.exit(1)
+libs = output.strip().split()
+
+
+setup(name='syncmenu', version='0.2',
+ author='James Newton', author_email='baron@codepunks.org',
+ ext_modules=[
+ Extension('syncmenu', ['pysyncmenu.c', 'sync-menu.c'],
+ extra_link_args=libs + ['-framework', 'Carbon'],
+ extra_compile_args=['-Wall'] + cflags)
+ ])
diff --git a/src/osx/syncmenu/sync-menu.c b/src/osx/syncmenu/sync-menu.c
new file mode 100644
index 000000000..dde97d7f1
--- /dev/null
+++ b/src/osx/syncmenu/sync-menu.c
@@ -0,0 +1,722 @@
+/* GTK+ Integration for the Mac OS X Menubar.
+ *
+ * Copyright (C) 2007 Pioneer Research Center USA, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <Carbon/Carbon.h>
+
+#include "sync-menu.h"
+
+
+/* TODO
+ *
+ * - Setup shortcuts, possibly transforming ctrl->cmd
+ * - Sync menus
+ * - Create on demand? (can this be done with gtk+? ie fill in menu items when the menu is opened)
+ * - Figure out what to do per app/window...
+ * - Toggle/radio items
+ *
+ */
+
+#define GTK_QUARTZ_MENU_CREATOR 'GTKC'
+#define GTK_QUARTZ_ITEM_WIDGET 'GWID'
+
+
+static void sync_menu_shell (GtkMenuShell *menu_shell,
+ MenuRef carbon_menu,
+ gboolean toplevel);
+
+
+/*
+ * utility functions
+ */
+
+static GtkWidget *
+find_menu_label (GtkWidget *widget)
+{
+ GtkWidget *label = NULL;
+
+ if (GTK_IS_LABEL (widget))
+ return widget;
+
+ if (GTK_IS_CONTAINER (widget))
+ {
+ GList *children;
+ GList *l;
+
+ children = gtk_container_get_children (GTK_CONTAINER (widget));
+
+ for (l = children; l; l = l->next)
+ {
+ label = find_menu_label (l->data);
+ if (label)
+ break;
+ }
+
+ g_list_free (children);
+ }
+
+ return label;
+}
+
+static const gchar *
+get_menu_label_text (GtkWidget *menu_item,
+ GtkWidget **label)
+{
+ *label = find_menu_label (menu_item);
+ if (!*label)
+ return NULL;
+
+ return gtk_label_get_text (GTK_LABEL (*label));
+}
+
+static gboolean
+accel_find_func (GtkAccelKey *key,
+ GClosure *closure,
+ gpointer data)
+{
+ return (GClosure *) data == closure;
+}
+
+
+/*
+ * CarbonMenu functions
+ */
+
+typedef struct
+{
+ MenuRef menu;
+} CarbonMenu;
+
+static GQuark carbon_menu_quark = 0;
+
+static CarbonMenu *
+carbon_menu_new (void)
+{
+ return g_slice_new0 (CarbonMenu);
+}
+
+static void
+carbon_menu_free (CarbonMenu *menu)
+{
+ g_slice_free (CarbonMenu, menu);
+}
+
+static CarbonMenu *
+carbon_menu_get (GtkWidget *widget)
+{
+ return g_object_get_qdata (G_OBJECT (widget), carbon_menu_quark);
+}
+
+static void
+carbon_menu_connect (GtkWidget *menu,
+ MenuRef menuRef)
+{
+ CarbonMenu *carbon_menu = carbon_menu_get (menu);
+
+ if (!carbon_menu)
+ {
+ carbon_menu = carbon_menu_new ();
+
+ g_object_set_qdata_full (G_OBJECT (menu), carbon_menu_quark,
+ carbon_menu,
+ (GDestroyNotify) carbon_menu_free);
+ }
+
+ carbon_menu->menu = menuRef;
+}
+
+
+/*
+ * CarbonMenuItem functions
+ */
+
+typedef struct
+{
+ MenuRef menu;
+ MenuItemIndex index;
+ MenuRef submenu;
+ GClosure *accel_closure;
+} CarbonMenuItem;
+
+static GQuark carbon_menu_item_quark = 0;
+
+static CarbonMenuItem *
+carbon_menu_item_new (void)
+{
+ return g_slice_new0 (CarbonMenuItem);
+}
+
+static void
+carbon_menu_item_free (CarbonMenuItem *menu_item)
+{
+ if (menu_item->accel_closure)
+ g_closure_unref (menu_item->accel_closure);
+
+ g_slice_free (CarbonMenuItem, menu_item);
+}
+
+static CarbonMenuItem *
+carbon_menu_item_get (GtkWidget *widget)
+{
+ return g_object_get_qdata (G_OBJECT (widget), carbon_menu_item_quark);
+}
+
+static void
+carbon_menu_item_update_state (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ gboolean sensitive;
+ gboolean visible;
+ UInt32 set_attrs = 0;
+ UInt32 clear_attrs = 0;
+
+ g_object_get (widget,
+ "sensitive", &sensitive,
+ "visible", &visible,
+ NULL);
+
+ if (!sensitive)
+ set_attrs |= kMenuItemAttrDisabled;
+ else
+ clear_attrs |= kMenuItemAttrDisabled;
+
+ if (!visible)
+ set_attrs |= kMenuItemAttrHidden;
+ else
+ clear_attrs |= kMenuItemAttrHidden;
+
+ ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index,
+ set_attrs, clear_attrs);
+}
+
+static void
+carbon_menu_item_update_active (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ gboolean active;
+
+ g_object_get (widget,
+ "active", &active,
+ NULL);
+
+ CheckMenuItem (carbon_item->menu, carbon_item->index,
+ active);
+}
+
+static void
+carbon_menu_item_update_submenu (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ GtkWidget *submenu;
+
+ submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
+
+ if (submenu)
+ {
+ GtkWidget *label = NULL;
+
+ carbon_item->submenu = NULL;
+ GetMenuItemHierarchicalMenu(carbon_item->menu, carbon_item->index,
+ &carbon_item->submenu);
+ if (!carbon_item->submenu)
+ {
+ const gchar *label_text;
+ CFStringRef cfstr = NULL;
+
+ label_text = get_menu_label_text (widget, &label);
+ if (label_text)
+ cfstr = CFStringCreateWithCString (NULL, label_text,
+ kCFStringEncodingUTF8);
+ CreateNewMenu (0, 0, &carbon_item->submenu);
+ SetMenuTitleWithCFString (carbon_item->submenu, cfstr);
+ SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index,
+ carbon_item->submenu);
+ if (cfstr)
+ CFRelease (cfstr);
+ }
+
+ sync_menu_shell (GTK_MENU_SHELL (submenu), carbon_item->submenu, FALSE);
+ }
+ else
+ {
+ SetMenuItemHierarchicalMenu (carbon_item->menu, carbon_item->index,
+ NULL);
+ carbon_item->submenu = NULL;
+ }
+}
+
+static void
+carbon_menu_item_update_label (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ GtkWidget *label;
+ const gchar *label_text;
+ CFStringRef cfstr = NULL;
+
+ label_text = get_menu_label_text (widget, &label);
+ if (label_text)
+ cfstr = CFStringCreateWithCString (NULL, label_text,
+ kCFStringEncodingUTF8);
+
+ SetMenuItemTextWithCFString (carbon_item->menu, carbon_item->index,
+ cfstr);
+
+ if (cfstr)
+ CFRelease (cfstr);
+}
+
+static void
+carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ GtkWidget *label;
+
+ get_menu_label_text (widget, &label);
+
+ if (GTK_IS_ACCEL_LABEL (label) &&
+ GTK_ACCEL_LABEL (label)->accel_closure)
+ {
+ GtkAccelKey *key;
+
+ key = gtk_accel_group_find (GTK_ACCEL_LABEL (label)->accel_group,
+ accel_find_func,
+ GTK_ACCEL_LABEL (label)->accel_closure);
+
+ if (key &&
+ key->accel_key &&
+ key->accel_flags & GTK_ACCEL_VISIBLE)
+ {
+ GdkDisplay *display = gtk_widget_get_display (widget);
+ GdkKeymap *keymap = gdk_keymap_get_for_display (display);
+ GdkKeymapKey *keys;
+ gint n_keys;
+
+ if (gdk_keymap_get_entries_for_keyval (keymap, key->accel_key,
+ &keys, &n_keys))
+ {
+ UInt8 modifiers = 0;
+
+ SetMenuItemCommandKey (carbon_item->menu, carbon_item->index,
+ true, keys[0].keycode);
+
+ g_free (keys);
+
+ if (key->accel_mods)
+ {
+ if (key->accel_mods & GDK_SHIFT_MASK)
+ modifiers |= kMenuShiftModifier;
+
+ if (key->accel_mods & GDK_MOD1_MASK)
+ modifiers |= kMenuOptionModifier;
+ }
+
+ if (!(key->accel_mods & GDK_CONTROL_MASK))
+ {
+ modifiers |= kMenuNoCommandModifier;
+ }
+
+ SetMenuItemModifiers (carbon_item->menu, carbon_item->index,
+ modifiers);
+
+ return;
+ }
+ }
+ }
+
+ /* otherwise, clear the menu shortcut */
+ SetMenuItemModifiers (carbon_item->menu, carbon_item->index,
+ kMenuNoModifiers | kMenuNoCommandModifier);
+ ChangeMenuItemAttributes (carbon_item->menu, carbon_item->index,
+ 0, kMenuItemAttrUseVirtualKey);
+ SetMenuItemCommandKey (carbon_item->menu, carbon_item->index,
+ false, 0);
+}
+
+static void
+carbon_menu_item_accel_changed (GtkAccelGroup *accel_group,
+ guint keyval,
+ GdkModifierType modifier,
+ GClosure *accel_closure,
+ GtkWidget *widget)
+{
+ CarbonMenuItem *carbon_item = carbon_menu_item_get (widget);
+ GtkWidget *label;
+
+ get_menu_label_text (widget, &label);
+
+ if (GTK_IS_ACCEL_LABEL (label) &&
+ GTK_ACCEL_LABEL (label)->accel_closure == accel_closure)
+ carbon_menu_item_update_accelerator (carbon_item, widget);
+}
+
+static void
+carbon_menu_item_update_accel_closure (CarbonMenuItem *carbon_item,
+ GtkWidget *widget)
+{
+ GtkAccelGroup *group;
+ GtkWidget *label;
+
+ get_menu_label_text (widget, &label);
+
+ if (carbon_item->accel_closure)
+ {
+ group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure);
+ if (group)
+ g_signal_handlers_disconnect_by_func (group,
+ carbon_menu_item_accel_changed,
+ widget);
+
+ g_closure_unref (carbon_item->accel_closure);
+ carbon_item->accel_closure = NULL;
+ }
+
+ if (GTK_IS_ACCEL_LABEL (label))
+ carbon_item->accel_closure = GTK_ACCEL_LABEL (label)->accel_closure;
+
+ if (carbon_item->accel_closure)
+ {
+ g_closure_ref (carbon_item->accel_closure);
+
+ group = gtk_accel_group_from_accel_closure (carbon_item->accel_closure);
+
+ g_signal_connect_object (group, "accel-changed",
+ G_CALLBACK (carbon_menu_item_accel_changed),
+ widget, 0);
+ }
+
+ carbon_menu_item_update_accelerator (carbon_item, widget);
+}
+
+static void
+carbon_menu_item_notify (GObject *object,
+ GParamSpec *pspec,
+ CarbonMenuItem *carbon_item)
+{
+ if (!strcmp (pspec->name, "sensitive") ||
+ !strcmp (pspec->name, "visible"))
+ {
+ carbon_menu_item_update_state (carbon_item, GTK_WIDGET (object));
+ }
+ else if (!strcmp (pspec->name, "active"))
+ {
+ carbon_menu_item_update_active (carbon_item, GTK_WIDGET (object));
+ }
+ else if (!strcmp (pspec->name, "submenu"))
+ {
+ carbon_menu_item_update_submenu (carbon_item, GTK_WIDGET (object));
+ }
+}
+
+static void
+carbon_menu_item_notify_label (GObject *object,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ CarbonMenuItem *carbon_item = carbon_menu_item_get (GTK_WIDGET (object));
+
+ if (!strcmp (pspec->name, "label"))
+ {
+ carbon_menu_item_update_label (carbon_item,
+ GTK_WIDGET (object));
+ }
+ else if (!strcmp (pspec->name, "accel-closure"))
+ {
+ carbon_menu_item_update_accel_closure (carbon_item,
+ GTK_WIDGET (object));
+ }
+}
+
+static CarbonMenuItem *
+carbon_menu_item_connect (GtkWidget *menu_item,
+ GtkWidget *label,
+ MenuRef menu,
+ MenuItemIndex index)
+{
+ CarbonMenuItem *carbon_item = carbon_menu_item_get (menu_item);
+
+ if (!carbon_item)
+ {
+ carbon_item = carbon_menu_item_new ();
+
+ g_object_set_qdata_full (G_OBJECT (menu_item), carbon_menu_item_quark,
+ carbon_item,
+ (GDestroyNotify) carbon_menu_item_free);
+
+ g_signal_connect (menu_item, "notify",
+ G_CALLBACK (carbon_menu_item_notify),
+ carbon_item);
+
+ if (label)
+ g_signal_connect_swapped (label, "notify::label",
+ G_CALLBACK (carbon_menu_item_notify_label),
+ menu_item);
+ }
+
+ carbon_item->menu = menu;
+ carbon_item->index = index;
+
+ return carbon_item;
+}
+
+
+/*
+ * carbon event handler
+ */
+
+static OSStatus
+menu_event_handler_func (EventHandlerCallRef event_handler_call_ref,
+ EventRef event_ref,
+ void *data)
+{
+ UInt32 event_class = GetEventClass (event_ref);
+ UInt32 event_kind = GetEventKind (event_ref);
+ MenuRef menu_ref;
+
+ switch (event_class)
+ {
+ case kEventClassCommand:
+ /* This is called when activating (is that the right GTK+ term?)
+ * a menu item.
+ */
+ if (event_kind == kEventCommandProcess)
+ {
+ HICommand command;
+ OSStatus err;
+
+ //g_print ("Menu: kEventClassCommand/kEventCommandProcess\n");
+
+ err = GetEventParameter (event_ref, kEventParamDirectObject,
+ typeHICommand, 0,
+ sizeof (command), 0, &command);
+
+ if (err == noErr)
+ {
+ GtkWidget *widget = NULL;
+
+ if (command.commandID == kHICommandQuit)
+ {
+ gtk_main_quit (); /* Just testing... */
+ return noErr;
+ }
+
+ /* Get any GtkWidget associated with the item. */
+ err = GetMenuItemProperty (command.menu.menuRef,
+ command.menu.menuItemIndex,
+ GTK_QUARTZ_MENU_CREATOR,
+ GTK_QUARTZ_ITEM_WIDGET,
+ sizeof (widget), 0, &widget);
+ if (err == noErr && widget)
+ {
+ gtk_menu_item_activate (GTK_MENU_ITEM (widget));
+ return noErr;
+ }
+ }
+ }
+ break;
+
+ case kEventClassMenu:
+ GetEventParameter (event_ref,
+ kEventParamDirectObject,
+ typeMenuRef,
+ NULL,
+ sizeof (menu_ref),
+ NULL,
+ &menu_ref);
+
+ switch (event_kind)
+ {
+ case kEventMenuTargetItem:
+ /* This is called when an item is selected (what is the
+ * GTK+ term? prelight?)
+ */
+ //g_print ("kEventClassMenu/kEventMenuTargetItem\n");
+ break;
+
+ case kEventMenuOpening:
+ /* Is it possible to dynamically build the menu here? We
+ * can at least set visibility/sensitivity.
+ */
+ //g_print ("kEventClassMenu/kEventMenuOpening\n");
+ break;
+
+ case kEventMenuClosed:
+ //g_print ("kEventClassMenu/kEventMenuClosed\n");
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ default:
+ break;
+ }
+
+ return CallNextEventHandler (event_handler_call_ref, event_ref);
+}
+
+static void
+setup_menu_event_handler (void)
+{
+ EventHandlerUPP menu_event_handler_upp;
+ EventHandlerRef menu_event_handler_ref;
+ const EventTypeSpec menu_events[] = {
+ { kEventClassCommand, kEventCommandProcess },
+ { kEventClassMenu, kEventMenuTargetItem },
+ { kEventClassMenu, kEventMenuOpening },
+ { kEventClassMenu, kEventMenuClosed }
+ };
+
+ /* FIXME: We might have to install one per window? */
+
+ menu_event_handler_upp = NewEventHandlerUPP (menu_event_handler_func);
+ InstallEventHandler (GetApplicationEventTarget (), menu_event_handler_upp,
+ GetEventTypeCount (menu_events), menu_events, 0,
+ &menu_event_handler_ref);
+
+#if 0
+ /* FIXME: Remove the handler with: */
+ RemoveEventHandler(menu_event_handler_ref);
+ DisposeEventHandlerUPP(menu_event_handler_upp);
+#endif
+}
+
+static void
+sync_menu_shell (GtkMenuShell *menu_shell,
+ MenuRef carbon_menu,
+ gboolean toplevel)
+{
+ GList *children;
+ GList *l;
+ MenuItemIndex carbon_index = 1;
+
+ carbon_menu_connect (GTK_WIDGET (menu_shell), carbon_menu);
+
+ children = gtk_container_get_children (GTK_CONTAINER (menu_shell));
+
+ UInt16 carbon_item_count = CountMenuItems(carbon_menu);
+
+ for (l = children; l; l = l->next)
+ {
+ GtkWidget *menu_item = l->data;
+ CarbonMenuItem *carbon_item;
+
+ if (GTK_IS_TEAROFF_MENU_ITEM (menu_item))
+ continue;
+
+ if (toplevel && g_object_get_data (G_OBJECT (menu_item),
+ "gtk-empty-menu-item"))
+ continue;
+
+ GtkWidget *label = NULL;
+ const gchar *label_text = NULL;
+
+ label_text = get_menu_label_text (menu_item, &label);
+ if (label_text && strcmp(label_text, "_SKIP_") == 0)
+ {
+ carbon_index++;
+ continue;
+ }
+ else if (!label_text)
+ label_text = "";
+
+ MenuItemAttributes attributes = 0;
+ if (GTK_IS_SEPARATOR_MENU_ITEM (menu_item))
+ attributes |= kMenuItemAttrSeparator;
+ if (!GTK_WIDGET_IS_SENSITIVE (menu_item))
+ attributes |= kMenuItemAttrDisabled;
+ if (!GTK_WIDGET_VISIBLE (menu_item))
+ attributes |= kMenuItemAttrHidden;
+
+ CFStringRef cfstr = CFStringCreateWithCString (NULL, label_text,
+ kCFStringEncodingUTF8);
+ if (carbon_index > carbon_item_count)
+ AppendMenuItemTextWithCFString(carbon_menu, cfstr, attributes, 0,
+ NULL);
+ else if (!toplevel && (carbon_index > carbon_item_count))
+ InsertMenuItemTextWithCFString (carbon_menu, cfstr,
+ carbon_index, attributes, 0);
+ else
+ SetMenuItemTextWithCFString(carbon_menu, carbon_index, cfstr);
+ CFRelease (cfstr);
+
+ MenuItemAttributes c_attributes = kMenuItemAttrSectionHeader |
+ kMenuItemAttrAutoDisable;
+ if (!(attributes & kMenuItemAttrDisabled))
+ c_attributes |= kMenuItemAttrDisabled;
+ if (!(attributes & kMenuItemAttrSeparator))
+ c_attributes |= kMenuItemAttrSeparator;
+ if (!(attributes & kMenuItemAttrHidden))
+ c_attributes |= kMenuItemAttrHidden;
+ ChangeMenuItemAttributes(carbon_menu, carbon_index,
+ attributes, c_attributes);
+ SetMenuItemProperty (carbon_menu, carbon_index,
+ GTK_QUARTZ_MENU_CREATOR,
+ GTK_QUARTZ_ITEM_WIDGET,
+ sizeof (menu_item), &menu_item);
+
+ carbon_item = carbon_menu_item_connect (menu_item, label,
+ carbon_menu,
+ carbon_index);
+
+ if (GTK_IS_CHECK_MENU_ITEM (menu_item))
+ carbon_menu_item_update_active (carbon_item, menu_item);
+
+ carbon_menu_item_update_accel_closure (carbon_item, menu_item);
+
+ if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item)))
+ carbon_menu_item_update_submenu (carbon_item, menu_item);
+
+ carbon_index++;
+ }
+
+ while (carbon_index <= carbon_item_count)
+ {
+ DeleteMenuItem (carbon_menu, carbon_index);
+ carbon_index++;
+ }
+
+ g_list_free (children);
+}
+
+void
+sync_menu_takeover_menu (GtkMenuShell *menu_shell)
+{
+ static MenuRef carbon_menubar = NULL;
+
+ g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell));
+
+ if (carbon_menu_quark == 0)
+ carbon_menu_quark = g_quark_from_static_string ("CarbonMenu");
+
+ if (carbon_menu_item_quark == 0)
+ carbon_menu_item_quark = g_quark_from_static_string ("CarbonMenuItem");
+
+ if (!carbon_menubar)
+ {
+ carbon_menubar = AcquireRootMenu();
+ setup_menu_event_handler ();
+ }
+
+ sync_menu_shell (menu_shell, carbon_menubar, TRUE);
+}
diff --git a/src/osx/syncmenu/sync-menu.h b/src/osx/syncmenu/sync-menu.h
new file mode 100644
index 000000000..0715a31e2
--- /dev/null
+++ b/src/osx/syncmenu/sync-menu.h
@@ -0,0 +1,27 @@
+/* GTK+ Integration for the Mac OS X Menubar.
+ *
+ * Copyright (C) 2007 Pioneer Research Center USA, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+void sync_menu_takeover_menu (GtkMenuShell *menu_shell);
+
+G_END_DECLS
diff --git a/src/osx/syncmenu/test-menu.c b/src/osx/syncmenu/test-menu.c
new file mode 100644
index 000000000..102ec5287
--- /dev/null
+++ b/src/osx/syncmenu/test-menu.c
@@ -0,0 +1,107 @@
+#include <gtk/gtk.h>
+
+#include "sync-menu.h"
+
+GtkWidget *open_item;
+GtkWidget *copy_item;
+
+static void
+menu_item_activate_cb (GtkWidget *item,
+ gpointer user_data)
+{
+ gboolean visible;
+ gboolean sensitive;
+
+ g_print ("Item activated: %s\n", (gchar *) user_data);
+
+ g_object_get (G_OBJECT (copy_item),
+ "visible", &visible,
+ "sensitive", &sensitive,
+ NULL);
+
+ if (item == open_item) {
+ gtk_widget_set_sensitive (copy_item, !sensitive);
+ /*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL);*/
+ }
+}
+
+static GtkWidget *
+test_setup_menu (void)
+{
+ GtkWidget *menubar;
+ GtkWidget *menu;
+ GtkWidget *item;
+
+ menubar = gtk_menu_bar_new ();
+
+ item = gtk_menu_item_new_with_label ("File");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+ menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+ item = gtk_menu_item_new_with_label ("Open");
+ open_item = item;
+ g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "open");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ item = gtk_menu_item_new_with_label ("Quit");
+ g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "quit");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ item = gtk_menu_item_new_with_label ("Edit");
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+ menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+ item = gtk_menu_item_new_with_label ("Copy");
+ copy_item = item;
+ g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "copy");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ item = gtk_menu_item_new_with_label ("Paste");
+ g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "paste");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ item = gtk_menu_item_new_with_label ("Help");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menubar), item);
+ menu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+ item = gtk_menu_item_new_with_label ("About");
+ g_signal_connect (item, "activate", G_CALLBACK (menu_item_activate_cb), "about");
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+ return menubar;
+}
+
+int
+main (int argc, char **argv)
+{
+ GtkWidget *window;
+ GtkWidget *vbox;
+ GtkWidget *menubar;
+
+ gtk_init (&argc, &argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);
+ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+
+ menubar = test_setup_menu ();
+ gtk_box_pack_start (GTK_BOX (vbox),
+ menubar,
+ FALSE, TRUE, 0);
+
+ gtk_box_pack_start (GTK_BOX (vbox),
+ gtk_label_new ("Some window content here"),
+ TRUE, TRUE, 0);
+
+ gtk_widget_show_all (window);
+
+ gtk_widget_hide (menubar);
+
+ sync_menu_takeover_menu (GTK_MENU_SHELL (menubar));
+
+ gtk_main ();
+
+ return 0;
+}
diff --git a/src/osx/syncmenu/test-menu.py b/src/osx/syncmenu/test-menu.py
new file mode 100644
index 000000000..b9c4471c8
--- /dev/null
+++ b/src/osx/syncmenu/test-menu.py
@@ -0,0 +1,78 @@
+import gtk, syncmenu
+
+
+open_item = None
+copy_item = None
+
+
+def menu_item_activate_cb(item, user_data):
+ global open_item, copy_item
+ print "Item activated: %s" % user_data
+
+ #g_object_get (G_OBJECT (copy_item),
+ # "visible", &visible,
+ # "sensitive", &sensitive,
+ # NULL)
+
+ #if (item == open_item) {
+ #gtk_widget_set_sensitive (copy_item, !sensitive)
+ #/*g_object_set (G_OBJECT (copy_item), "visible", !visible, NULL)*/
+
+
+def test_setup_menu():
+ global open_item, copy_item
+ menubar = gtk.MenuBar()
+
+ item = gtk.MenuItem("File")
+ menubar.append(item)
+ menu = gtk.Menu()
+ item.set_submenu(menu)
+ item = gtk.MenuItem("Open")
+ open_item = item
+ item.connect("activate", menu_item_activate_cb, "open")
+ menu.append(item)
+ item = gtk.MenuItem("Quit")
+ item.connect("activate", menu_item_activate_cb, "quit")
+ menu.append(item)
+
+ item = gtk.MenuItem("Edit")
+
+ menubar.append(item)
+ menu = gtk.Menu()
+ item.set_submenu(menu)
+ item = gtk.MenuItem("Copy")
+ copy_item = item
+ item.connect("activate", menu_item_activate_cb, "copy")
+ menu.append(item)
+ item = gtk.MenuItem("Paste")
+ item.connect("activate", menu_item_activate_cb, "paste")
+ menu.append(item)
+
+ item = gtk.MenuItem("Help")
+ menubar.append(item)
+ menu = gtk.Menu()
+ item.set_submenu(menu)
+ item = gtk.MenuItem("About")
+ item.connect("activate", menu_item_activate_cb, "about")
+ menu.append(item)
+
+ return menubar
+
+
+window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+window.set_default_size(400, 300)
+window.connect("destroy", gtk.main_quit, None)
+
+vbox = gtk.VBox(False, 0)
+window.add(vbox)
+
+menubar = test_setup_menu()
+vbox.pack_start(menubar, False, True, 0)
+vbox.pack_start(gtk.Label("Some window content here"), True, True, 0)
+
+window.show_all()
+menubar.hide()
+
+syncmenu.takeover_menu(menubar)
+
+gtk.main()
diff --git a/src/roster_window.py b/src/roster_window.py
index d52b149e1..18557f94d 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -61,6 +61,11 @@ if dbus_support.supported:
from music_track_listener import MusicTrackListener
import dbus
+import sys
+if sys.platform == 'darwin':
+ from osx import syncmenu
+
+
#(icon, name, type, jid, account, editable, second pixbuf)
(
C_IMG, # image to show state (online, new message etc)
@@ -903,9 +908,17 @@ class RosterWindow:
return advanced_menuitem_menu
- def make_menu(self):
- '''create the main window's menus'''
- if not self.actions_menu_needs_rebuild:
+ def set_actions_menu_needs_rebuild(self):
+ self.actions_menu_needs_rebuild = True
+ # Force the rebuild now since the on_activates on the menu itself does
+ # not work with the os/x top level menubar
+ if sys.platform == 'darwin':
+ self.make_menu(force = True)
+ return
+
+ def make_menu(self, force = False):
+ '''create the main window\'s menus'''
+ if not force and not self.actions_menu_needs_rebuild:
return
new_chat_menuitem = self.xml.get_widget('new_chat_menuitem')
single_message_menuitem = self.xml.get_widget('send_single_message_menuitem')
@@ -1171,6 +1184,9 @@ class RosterWindow:
advanced_menuitem.set_submenu(advanced_sub_menu)
advanced_sub_menu.show_all()
+ if sys.platform == 'darwin':
+ syncmenu.takeover_menu(self.xml.get_widget('menubar'))
+
self.actions_menu_needs_rebuild = False
def _add_history_manager_menuitem(self, menu):
@@ -1973,7 +1989,7 @@ class RosterWindow:
dialogs.AddSpecialNotificationDialog(jid)
def make_contact_menu(self, event, iter):
- '''Make contact's popup menu'''
+ '''Make contact\'s popup menu'''
model = self.tree.get_model()
jid = model[iter][C_JID].decode('utf-8')
tree_path = model.get_path(iter)
@@ -2206,7 +2222,7 @@ class RosterWindow:
status_menuitems.append(status_menuitem)
if len(contacts) > 1: # several resources
def resources_submenu(action, room_jid = None, room_account = None):
- ''' Build a submenu with contact's resources.
+ ''' Build a submenu with contact\'s resources.
room_jid and room_account are for action self.on_invite_to_room '''
sub_menu = gtk.Menu()
@@ -2767,7 +2783,7 @@ class RosterWindow:
menu.popup(None, None, None, event_button, event.time)
def make_transport_menu(self, event, iter):
- '''Make transport's popup menu'''
+ '''Make transport\'s popup menu'''
model = self.tree.get_model()
jid = model[iter][C_JID].decode('utf-8')
path = model.get_path(iter)
@@ -3806,6 +3822,10 @@ class RosterWindow:
self.chg_contact_status(contact, 'offline', '', account)
self.actions_menu_needs_rebuild = True
self.update_status_combobox()
+ # Force the rebuild now since the on_activates on the menu itself does
+ # not work with the os/x top level menubar
+ if sys.platform == 'darwin':
+ self.make_menu(force = True)
def new_private_chat(self, gc_contact, account, session = None):
contact = gajim.contacts.contact_from_gc_contact(gc_contact)
@@ -4164,6 +4184,9 @@ class RosterWindow:
gtk.main_quit()
def on_quit_menuitem_activate(self, widget):
+ gobject.idle_add(self.on_quit_menuitem_activate_real, widget)
+
+ def on_quit_menuitem_activate_real(self, widget):
accounts = gajim.connections.keys()
get_msg = False
for acct in accounts:
@@ -5154,6 +5177,52 @@ class RosterWindow:
self._last_selected_contact.append((jid, account))
self.draw_contact(jid, account, selected = True)
+ def setup_for_osx(self):
+ # Massage the GTK menu so it will match up to the OS/X nib style menu
+ # when passed to sync-menu and merged
+ main_menu = self.xml.get_widget('menubar')
+ app_item = gtk.MenuItem('Gajim')
+ main_menu.insert(app_item, 0)
+ win_item = gtk.MenuItem('Window')
+ main_menu.insert(win_item, 4)
+ actions_menu = self.xml.get_widget('actions_menu_menu')
+ quit_item = self.xml.get_widget('quit_menuitem')
+ actions_menu.remove(quit_item)
+ actions_menu.remove(self.xml.get_widget('separator1'))
+ edit_menu = self.xml.get_widget('edit_menu_menu')
+ edit_menu.remove(self.xml.get_widget('preferences_menuitem'))
+ edit_menu.remove(self.xml.get_widget('separator2'))
+ help_menu = self.xml.get_widget('help_menu_menu')
+ about_item = self.xml.get_widget('about_menuitem')
+ help_menu.remove(about_item)
+ # Build up App menu
+ app_menu = gtk.Menu()
+ app_item.set_submenu(app_menu)
+ app_menu.append(about_item)
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ prefs_item = gtk.MenuItem('Preferences...')
+ prefs_item.connect("activate", self.on_preferences_menuitem_activate)
+ accels = gtk.AccelGroup()
+ self.xml.get_widget('roster_window').add_accel_group(accels)
+ prefs_item.add_accelerator('activate', accels, ord(','),
+ gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
+ app_menu.append(prefs_item)
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(gtk.MenuItem('__SKIP__'))
+ app_menu.append(quit_item)
+ app_menu.show_all()
+ # Do the merge baby!
+ syncmenu.takeover_menu(main_menu)
+ self.make_menu(force = True)
+ # Hide the GTK menubar itself and let the OS/X menubar do its thing
+ self.xml.get_widget('menubar').hide()
+ return
+
def __init__(self):
self.xml = gtkgui_helpers.get_glade('roster_window.glade')
self.window = self.xml.get_widget('roster_window')
@@ -5370,3 +5439,6 @@ class RosterWindow:
# Create zeroconf in config file
zeroconf = common.zeroconf.connection_zeroconf.ConnectionZeroconf(
gajim.ZEROCONF_ACC_NAME)
+
+ if sys.platform == 'darwin':
+ self.setup_for_osx()
diff --git a/src/statusicon.py b/src/statusicon.py
index 1f2316015..4a49f8669 100644
--- a/src/statusicon.py
+++ b/src/statusicon.py
@@ -19,12 +19,16 @@
## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
##
+import sys
import gtk
import systray
from common import gajim
from common import helpers
+if sys.platform == 'darwin':
+ import osx
+
class StatusIcon(systray.Systray):
'''Class for the notification area icon'''
#FIXME: when we migrate to GTK 2.10 stick only to this class
@@ -44,13 +48,15 @@ class StatusIcon(systray.Systray):
self.on_status_icon_right_clicked)
self.set_img()
- self.status_icon.props.visible = True
+ self.status_icon.set_visible(True)
+ self.subscribe_events()
def on_status_icon_right_clicked(self, widget, event_button, event_time):
self.make_menu(event_button, event_time)
def hide_icon(self):
- self.status_icon.props.visible = False
+ self.status_icon.set_visible(False)
+ self.unsubscribe_events()
def on_status_icon_left_clicked(self, widget):
self.on_left_click()
@@ -62,16 +68,18 @@ class StatusIcon(systray.Systray):
text = helpers.get_notification_icon_tooltip_text()
self.status_icon.set_tooltip(text)
if gajim.events.get_nb_systray_events():
+ if sys.platform == 'darwin':
+ osx.nsapp.requestUserAttention()
state = 'event'
- self.status_icon.props.blinking = True
+ self.status_icon.set_blinking(True)
else:
state = self.status
- self.status_icon.props.blinking = False
+ self.status_icon.set_blinking(False)
#FIXME: do not always use 16x16 (ask actually used size and use that)
image = gajim.interface.roster.jabber_state_images['16'][state]
if image.get_storage_type() == gtk.IMAGE_PIXBUF:
- self.status_icon.props.pixbuf = image.get_pixbuf()
+ self.status_icon.set_from_pixbuf(image.get_pixbuf())
#FIXME: oops they forgot to support GIF animation?
#or they were lazy to get it to work under Windows! WTF!
#elif image.get_storage_type() == gtk.IMAGE_ANIMATION: