← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ken-vandine/libindicate/mono_bindings into lp:libindicate

 

Ken VanDine has proposed merging lp:~ken-vandine/libindicate/mono_bindings into lp:libindicate.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)


Added mono bindings
-- 
https://code.launchpad.net/~ken-vandine/libindicate/mono_bindings/+merge/26618
Your team ayatana-commits is subscribed to branch lp:libindicate.
=== modified file 'Makefile.am'
--- Makefile.am	2010-02-11 19:21:21 +0000
+++ Makefile.am	2010-06-02 17:58:21 +0000
@@ -2,6 +2,7 @@
 SUBDIRS = \
 	libindicate \
 	libindicate-gtk \
+	bindings \
 	examples \
 	tests \
 	docs
@@ -13,7 +14,7 @@
 	xmldocs.make \
 	autogen.sh
 
-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper --disable-introspection
 
 DISTCLEANFILES = \
 	libindicate-*.tar.gz \

=== added file 'acinclude.m4'
--- acinclude.m4	1970-01-01 00:00:00 +0000
+++ acinclude.m4	2010-06-02 17:58:21 +0000
@@ -0,0 +1,247 @@
+## ------------------------
+## Python file handling
+## >From Andrew Dalke
+## Updated by James Henstridge
+## ------------------------
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+  dnl Find a Python interpreter.  Python versions prior to 1.5 are not
+  dnl supported because the default installation locations changed from
+  dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
+  dnl in 1.5.
+  m4_define([_AM_PYTHON_INTERPRETER_LIST],
+            [python python2 python2.4 python2.3 python2.2 dnl
+python2.1 python2.0 python1.6 python1.5])
+
+  m4_if([$1],[],[
+    dnl No version check is needed.
+    # Find any Python interpreter.
+    if test -z "$PYTHON"; then
+      PYTHON=:
+      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST)
+    fi
+    am_display_PYTHON=python
+  ], [
+    dnl A version check is needed.
+    if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      AC_MSG_CHECKING([whether $PYTHON version >= $1])
+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+			      [AC_MSG_RESULT(yes)],
+			      [AC_MSG_ERROR(too old)])
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+	[am_cv_pathless_PYTHON],[
+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+	  test "$am_cv_pathless_PYTHON" = none && break
+	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+	done])
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+	PYTHON=:
+      else
+        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
+  ])
+
+  if test "$PYTHON" = :; then
+  dnl Run any user-specified action, or abort.
+    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+  else
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+    [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+    [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behavior
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl Query distutils for this directory.  distutils does not exist in
+  dnl Python 1.5, so we fall back to the hardcoded directory if it
+  dnl doesn't work.
+  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+    [am_cv_python_pythondir],
+    [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
+     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`])
+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+
+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)
+  dnl Query distutils for this directory.  distutils does not exist in
+  dnl Python 1.5, so we fall back to the hardcoded directory if it
+  dnl doesn't work.
+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+    [am_cv_python_pyexecdir],
+    [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
+     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`])
+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+  dnl Run any user-specified action.
+  $2
+  fi
+
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# hexversion has been introduced in Python 1.5.2; it's probably not
+# worth to support older versions (1.5.1 was released on October 31, 1998).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys, string
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
+minverhex = 0
+for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+python.m4
+
+
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN([AM_CHECK_PYMOD],
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+        import $1
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  AC_MSG_RESULT(yes)
+  ifelse([$3], [],, [$3
+])dnl
+else
+  AC_MSG_RESULT(no)
+  ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])

=== added directory 'bindings'
=== added file 'bindings/Makefile.am'
--- bindings/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,1 @@
+SUBDIRS = mono python

=== added directory 'bindings/mono'
=== added file 'bindings/mono/Makefile.am'
--- bindings/mono/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/mono/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,1 @@
+SUBDIRS = indicate indicate-gtk

=== added directory 'bindings/mono/examples'
=== added file 'bindings/mono/examples/Makefile.am'
--- bindings/mono/examples/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/mono/examples/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,13 @@
+ASSEMBLY = IndicatorExample.exe
+CSFILES = IndicatorExample.cs
+CLEANFILES = $(ASSEMBLY)
+
+EXTRA_DIST = $(CSFILES) indicator-example.in indicator-example
+
+references = $(GTK_SHARP_LIBS) -r:$(builddir)/../indicate/indicate-sharp.dll 
+
+$(ASSEMBLY): $(CSFILES) Makefile.am
+	$(CSC) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(references) $(srcdir)/$(CSFILES)
+	chmod a+x indicator-example
+
+all: $(ASSEMBLY)

=== added directory 'bindings/mono/indicate'
=== added directory 'bindings/mono/indicate-gtk'
=== added file 'bindings/mono/indicate-gtk/AssemblyInfo.cs.in'
--- bindings/mono/indicate-gtk/AssemblyInfo.cs.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/AssemblyInfo.cs.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ *   Ken VanDine <ken.vandine@xxxxxxxxxxxxx>
+ */
+
+using System.Reflection;
+
+[assembly: AssemblyTitle ("IndicateGtk")]
+[assembly: AssemblyDescription ("LibIndicateGtk")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("Canonical, Ltd.")]
+[assembly: AssemblyProduct ("Ubuntu")]
+[assembly: AssemblyCopyright ("© 2010 Canonical, Ltd.")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+[assembly: AssemblyVersion ("@VERSION@")]

=== added file 'bindings/mono/indicate-gtk/Indicate.custom'
=== added file 'bindings/mono/indicate-gtk/Makefile.am'
--- bindings/mono/indicate-gtk/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,88 @@
+SUBDIRS = . 
+
+ASSEMBLY_NAME = indicate-gtk
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = $(ASSEMBLY_NAME)-sharp-0.1.pc
+
+API = $(ASSEMBLY_NAME)-api.xml
+MIDDLE_API = $(ASSEMBLY_NAME)-api.middle
+RAW_API = $(ASSEMBLY_NAME)-api.raw
+METADATA = $(ASSEMBLY_NAME)-api.metadata
+ASSEMBLY = $(ASSEMBLY_NAME)-sharp.dll
+TARGET = $(ASSEMBLY) $(ASSEMBLY).config
+assemblydir = $(libdir)/$(ASSEMBLY_NAME)-sharp-0.1
+assembly_DATA = $(TARGET)
+CLEANFILES =	$(ASSEMBLY)			\
+		$(ASSEMBLY).mdb			\
+		generated-stamp			\
+		generated/*.cs			\
+		$(API)				\
+		$(MIDDLE_API)			\
+		$(RAW_API)			\
+		$(ASSEMBLY_NAME)-sharp-0.1.pc	\
+		AssemblyInfo.cs
+DISTCLEANFILES = $(ASSEMBLY).config
+customs = Indicate.custom
+EXTRA_DIST =					\
+	$(RAW_API)				\
+	$(METADATA)				\
+	$(ASSEMBLY_NAME)-sharp-0.1.pc.in	\
+	$(ASSEMBLY_NAME)-sharp.dll.config.in	\
+	$(ASSEMBLY_NAME).sources.xml		\
+	$(ASSEMBLY_NAME).snk			\
+	$(customs)				
+
+GACUTIL_FLAGS="-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib"
+
+references = $(GTK_SHARP_LIBS) -r\:$(abs_builddir)/../indicate/indicate-sharp.dll
+
+api:
+	PERLLIB=$(PREFIX)/share/perl5 \
+	PATH=$(PREFIX)/bin:$$PATH \
+	$(GAPI_PARSER) $(ASSEMBLY_NAME).sources.xml
+
+$(RAW_API): $(ASSEMBLY_NAME).sources.xml
+	$(GAPI_PARSER) $(ASSEMBLY_NAME).sources.xml
+
+$(MIDDLE_API): $(METADATA) $(RAW_API)
+	cp $(srcdir)/$(RAW_API) $(MIDDLE_API)
+	chmod u+w $(MIDDLE_API)
+	@if test -n '$(METADATA)'; then							\
+		echo "$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA)"; 	\
+		$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA);		\
+	fi
+
+$(API): $(MIDDLE_API) Makefile.am
+	sed -e "s|PROP_ID_S|ID|" \
+		-e "s|PROP_ID_S|id|" \
+		-e "s|PROP_MENU|Menu|" \
+		-e "s|PROP_MENU|menu|" \
+		-e "s|PROP_DESKTOP|Desktop|" \
+		-e "s|PROP_DESKTOP|desktop|" \
+		$< > $@
+
+api_includes = $(GTK_SHARP_CFLAGS) -I:$(builddir)/../indicate/indicate-api.xml
+
+build_customs = $(addprefix $(srcdir)/, $(customs))
+
+generated-stamp: $(API) $(build_customs)
+	rm -f generated/* &&					\
+	$(GAPI_CODEGEN) --generate $(API) $(api_includes)	\
+	--customdir=$(srcdir)					\
+	--outdir=generated --assembly-name=$(ASSEMBLY_NAME)	\
+	&& touch generated-stamp
+
+$(ASSEMBLY): generated-stamp
+	@rm -f $(ASSEMBLY).mdb
+	$(CSC) $(CSFLAGS) -keyfile:$(srcdir)/$(ASSEMBLY_NAME).snk -nowarn:0169,0612,0618 -unsafe -out:$(ASSEMBLY) -target:library $(references) $(builddir)/$(GENERATED_SOURCES) AssemblyInfo.cs
+
+install-data-local:
+	echo "$(GACUTIL) -i $(ASSEMBLY)  -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib";  \
+            $(GACUTIL) -i $(ASSEMBLY)  -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib || exit 1;
+
+uninstall-local:
+	echo "$(GACUTIL) -u $(ASSEMBLY_NAME)-sharp -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib"; \
+            $(GACUTIL) -u $(ASSEMBLY_NAME)-sharp -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib || exit 1;
+
+all: $(API)

=== added file 'bindings/mono/indicate-gtk/indicate-gtk-api.metadata'
--- bindings/mono/indicate-gtk/indicate-gtk-api.metadata	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/indicate-gtk-api.metadata	2010-06-02 17:58:21 +0000
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<metadata>
+</metadata>

=== added file 'bindings/mono/indicate-gtk/indicate-gtk-sharp-0.1.pc.in'
--- bindings/mono/indicate-gtk/indicate-gtk-sharp-0.1.pc.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/indicate-gtk-sharp-0.1.pc.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+assemblies_dir=${libdir}/indicate-gtk-sharp-0.0
+
+Name: indicate-gtk-sharp
+Description: indicate-gtk for .NET
+Version: @VERSION@
+Libraries: ${assemblies_dir}/indicate-gtk-sharp.dll ${assemblies_dir}/indicate-gtk-sharp.dll.config
+Requires: gtk-sharp-2.0 indicate-sharp-0.0
+Cflags:
+Libs: -r:${assemblies_dir}/indicate-gtk-sharp.dll

=== added file 'bindings/mono/indicate-gtk/indicate-gtk-sharp.dll.config.in'
--- bindings/mono/indicate-gtk/indicate-gtk-sharp.dll.config.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/indicate-gtk-sharp.dll.config.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,3 @@
+<configuration>
+  <dllmap dll="indicate-gtk-sharp.dll" target="libindicate-gtk@LIB_PREFIX@.@LIBINDICATEGTK_CURRENT@.@LIBINDICATEGTK_AGE@.@LIBINDICATEGTK_REVISION@"/>
+</configuration>

=== added file 'bindings/mono/indicate-gtk/indicate-gtk.snk'
Binary files bindings/mono/indicate-gtk/indicate-gtk.snk	1970-01-01 00:00:00 +0000 and bindings/mono/indicate-gtk/indicate-gtk.snk	2010-06-02 17:58:21 +0000 differ
=== added file 'bindings/mono/indicate-gtk/indicate-gtk.sources.xml'
--- bindings/mono/indicate-gtk/indicate-gtk.sources.xml	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate-gtk/indicate-gtk.sources.xml	2010-06-02 17:58:21 +0000
@@ -0,0 +1,10 @@
+<gapi-parser-input>
+	<api filename="indicate-gtk-api.raw">
+		<library name="indicate-gtk-sharp.dll">
+			<namespace name="Indicate">
+				<file>../../../libindicate-gtk/indicator.h</file>
+				<file>../../../libindicate-gtk/listener.h</file>
+			</namespace>
+		</library>
+	</api>
+</gapi-parser-input>

=== added file 'bindings/mono/indicate/AssemblyInfo.cs.in'
--- bindings/mono/indicate/AssemblyInfo.cs.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/AssemblyInfo.cs.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010 Canonical Ltd.
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ *   Ken VanDine <ken.vandine@xxxxxxxxxxxxx>
+ */
+
+using System.Reflection;
+
+[assembly: AssemblyTitle ("Indicate")]
+[assembly: AssemblyDescription ("LibIndicate")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("Canonical, Ltd.")]
+[assembly: AssemblyProduct ("Ubuntu")]
+[assembly: AssemblyCopyright ("© 2010 Canonical, Ltd.")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+[assembly: AssemblyVersion ("@VERSION@")]

=== added file 'bindings/mono/indicate/Indicate.custom'
=== added file 'bindings/mono/indicate/Makefile.am'
--- bindings/mono/indicate/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,89 @@
+SUBDIRS = . 
+
+ASSEMBLY_NAME = indicate
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = $(ASSEMBLY_NAME)-sharp-0.1.pc
+
+API = $(ASSEMBLY_NAME)-api.xml
+MIDDLE_API = $(ASSEMBLY_NAME)-api.middle
+RAW_API = $(ASSEMBLY_NAME)-api.raw
+METADATA = $(ASSEMBLY_NAME)-api.metadata
+ASSEMBLY = $(ASSEMBLY_NAME)-sharp.dll
+TARGET = $(ASSEMBLY) $(ASSEMBLY).config
+assemblydir = $(libdir)/$(ASSEMBLY_NAME)-sharp-0.1
+assembly_DATA = $(TARGET)
+CLEANFILES =	$(ASSEMBLY)			\
+		$(ASSEMBLY).mdb			\
+		generated-stamp			\
+		generated/*.cs			\
+		$(API)				\
+		$(MIDDLE_API)			\
+		$(RAW_API)			\
+		$(ASSEMBLY_NAME)-sharp-0.1.pc	\
+		AssemblyInfo.cs
+
+DISTCLEANFILES = $(ASSEMBLY).config
+customs = Indicate.custom
+EXTRA_DIST =					\
+	$(RAW_API)				\
+	$(METADATA)				\
+	$(ASSEMBLY_NAME)-sharp-0.1.pc.in	\
+	$(ASSEMBLY_NAME)-sharp.dll.config.in	\
+	$(ASSEMBLY_NAME).sources.xml		\
+	$(ASSEMBLY_NAME).snk			\
+	$(customs)				
+
+GACUTIL_FLAGS="-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib"
+
+references = $(GTK_SHARP_LIBS)
+
+api:
+	PERLLIB=$(PREFIX)/share/perl5 \
+	PATH=$(PREFIX)/bin:$$PATH \
+	$(GAPI_PARSER) $(ASSEMBLY_NAME).sources.xml
+
+$(RAW_API): $(ASSEMBLY_NAME).sources.xml
+	$(GAPI_PARSER) $(ASSEMBLY_NAME).sources.xml
+
+$(MIDDLE_API): $(METADATA) $(RAW_API)
+	cp $(srcdir)/$(RAW_API) $(MIDDLE_API)
+	chmod u+w $(MIDDLE_API)
+	@if test -n '$(METADATA)'; then							\
+		echo "$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA)"; 	\
+		$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA);		\
+	fi
+
+$(API): $(MIDDLE_API) Makefile.am
+	sed -e "s|PROP_ID_S|ID|" \
+		-e "s|PROP_ID_S|id|" \
+		-e "s|PROP_MENU|Menu|" \
+		-e "s|PROP_MENU|menu|" \
+		-e "s|PROP_DESKTOP|Desktop|" \
+		-e "s|PROP_DESKTOP|desktop|" \
+		$< > $@
+
+api_includes = $(GTK_SHARP_CFLAGS)
+
+build_customs = $(addprefix $(srcdir)/, $(customs))
+
+generated-stamp: $(API) $(build_customs)
+	rm -f generated/* &&					\
+	$(GAPI_CODEGEN) --generate $(API) $(api_includes)	\
+	--customdir=$(srcdir)					\
+	--outdir=generated --assembly-name=$(ASSEMBLY_NAME)	\
+	&& touch generated-stamp
+
+$(ASSEMBLY): generated-stamp
+	@rm -f $(ASSEMBLY).mdb
+	$(CSC) $(CSFLAGS) -keyfile:$(srcdir)/$(ASSEMBLY_NAME).snk -nowarn:0169,0612,0618 -unsafe -out:$(ASSEMBLY) -target:library $(references) $(builddir)/$(GENERATED_SOURCES) AssemblyInfo.cs
+
+install-data-local:
+	echo "$(GACUTIL) -i $(ASSEMBLY)  -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib";  \
+            $(GACUTIL) -i $(ASSEMBLY)  -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib || exit 1;
+
+uninstall-local:
+	echo "$(GACUTIL) -u $(ASSEMBLY_NAME)-sharp -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib"; \
+            $(GACUTIL) -u $(ASSEMBLY_NAME)-sharp -package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib || exit 1;
+
+all: $(API)

=== added file 'bindings/mono/indicate/indicate-api.metadata'
--- bindings/mono/indicate/indicate-api.metadata	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/indicate-api.metadata	2010-06-02 17:58:21 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<metadata>
+	<remove-node path="/api/namespace/object[@cname='IndicateIndicator']/method[@name='UserDisplay']" />
+	<attr path="/api/namespace/object[@cname='IndicateServer']/method[@name='SetDesktopFile']" name="name">DesktopFile</attr>
+	<add-node path="/api/namespace/object[@cname='IndicateIndicator']">
+		<signal when="LAST" field_name="user_display" name="UserDisplay" cname="user_display">
+			<return-type type="void" />
+			<parameters>
+				<parameter type="IndicateIndicator*" name="indicator" />
+			</parameters>
+		</signal>
+	</add-node>
+	<add-node path="/api/namespace/object[@cname='IndicateServer']">
+		<signal when="LAST" field_name="server_display" name="ServerDisplay" cname="server_display">
+			<return-type type="void" />
+			<parameters>
+				<parameter type="IndicateServer*" name="server" />
+				<parameter type="guint" name="timestamp" />
+			</parameters>
+		</signal>
+	</add-node>
+</metadata>

=== added file 'bindings/mono/indicate/indicate-sharp-0.1.pc.in'
--- bindings/mono/indicate/indicate-sharp-0.1.pc.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/indicate-sharp-0.1.pc.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+assemblies_dir=${libdir}/indicate-sharp-0.0
+
+Name: indicate-sharp
+Description: indicate for .NET
+Version: @VERSION@
+Libraries: ${assemblies_dir}/indicate-sharp.dll ${assemblies_dir}/indicate-sharp.dll.config
+Requires: gtk-sharp-2.0
+Cflags:
+Libs: -r:${assemblies_dir}/indicate-sharp.dll

=== added file 'bindings/mono/indicate/indicate-sharp.dll.config.in'
--- bindings/mono/indicate/indicate-sharp.dll.config.in	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/indicate-sharp.dll.config.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,3 @@
+<configuration>
+  <dllmap dll="indicate-sharp.dll" target="libindicate@LIB_PREFIX@.@LIBINDICATE_CURRENT@.@LIBINDICATE_AGE@.@LIBINDICATE_REVISION@"/>
+</configuration>

=== added file 'bindings/mono/indicate/indicate.snk'
Binary files bindings/mono/indicate/indicate.snk	1970-01-01 00:00:00 +0000 and bindings/mono/indicate/indicate.snk	2010-06-02 17:58:21 +0000 differ
=== added file 'bindings/mono/indicate/indicate.sources.xml'
--- bindings/mono/indicate/indicate.sources.xml	1970-01-01 00:00:00 +0000
+++ bindings/mono/indicate/indicate.sources.xml	2010-06-02 17:58:21 +0000
@@ -0,0 +1,14 @@
+<gapi-parser-input>
+	<api filename="indicate-api.raw">
+		<library name="indicate-sharp.dll">
+			<namespace name="Indicate">
+				<file>../../../libindicate/indicate-enum-types.h</file>
+				<file>../../../libindicate/indicator.h</file>
+				<file>../../../libindicate/indicator-messages.h</file>
+				<file>../../../libindicate/interests.h</file>
+				<file>../../../libindicate/listener.h</file>
+				<file>../../../libindicate/server.h</file>
+			</namespace>
+		</library>
+	</api>
+</gapi-parser-input>

=== added directory 'bindings/python'
=== added file 'bindings/python/Makefile.am'
--- bindings/python/Makefile.am	1970-01-01 00:00:00 +0000
+++ bindings/python/Makefile.am	2010-06-02 17:58:21 +0000
@@ -0,0 +1,42 @@
+defsdir = $(datadir)/pygtk/2.0/defs
+defs_DATA = indicate.defs
+
+#CFLAGS = -Wall -Werror
+INCLUDES = \
+	-I$(top_srcdir) \
+        -DG_LOG_DOMAIN=\"indicate-python\" \
+        -DDATADIR=\"$(datadir)\" \
+        -DLIBDIR=\"$(libdir)\" \
+        $(INDICATE_PYTHON_CFLAGS) \
+        $(PYTHON_INCLUDES) \
+	$(LIBINDICATE_CFLAGS) \
+	$(LIBINDICATEGTK_CFLAGS)
+
+pkgpythondir = $(pyexecdir)
+pkgpyexecdir = $(pyexecdir)
+
+pkgindicatedir = $(pkgpythondir)/indicate
+pkgindicate_PYTHON = __init__.py
+
+indicatedir = $(pkgpyexecdir)/indicate
+indicate_LTLIBRARIES = _indicate.la
+
+_indicate_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_indicate -lpyglib-2.0-python2.6 -lpython2.6
+_indicate_la_LIBADD = $(INDICATE_PYTHON_LIBS)  -L$(top_builddir)/libindicate/.libs/ -lindicate -L$(top_builddir)/libindicate-gtk/.libs -lindicate-gtk $(LIBINDICATEGTK_LIBS)
+_indicate_la_SOURCES = indicatemodule.c
+nodist__indicate_la_SOURCES = indicate.c
+
+CLEANFILES = indicate.c
+EXTRA_DIST = indicate.override indicate-arg-types.py $(defs_DATA)
+indicate.c: $(defs_DATA) indicate.override
+
+%.c: %.defs
+	(cd $(srcdir) \
+	 && $(PYGTK_CODEGEN) \
+		--register $(PYGTK_DEFSDIR)/gtk-types.defs \
+		--register $(PYGTK_DEFSDIR)/gdk-types.defs \
+		--load-types indicate-arg-types.py \
+	    --override $*.override \
+	    --prefix py$* $*.defs) > gen-$*.c \
+	 && cp gen-$*.c $*.c \
+	 && rm -f gen-$*.c

=== added file 'bindings/python/__init__.py'
--- bindings/python/__init__.py	1970-01-01 00:00:00 +0000
+++ bindings/python/__init__.py	2010-06-02 17:58:21 +0000
@@ -0,0 +1,26 @@
+# Python bindings for libindicate.
+# 
+# Copyright 2009 Canonical Ltd.
+# 
+# Authors:
+#     Eitan Isaacson <eitan@xxxxxxxxxxxx>
+# 
+# This program is free software: you can redistribute it and/or modify it 
+# under the terms of either or both of the following licenses:
+# 
+# 1) the GNU Lesser General Public License version 3, as published by the 
+# Free Software Foundation; and/or
+# 2) the GNU Lesser General Public License version 2.1, as published by 
+# the Free Software Foundation.
+# 
+# This program is distributed in the hope that it will be useful, but 
+# WITHOUT ANY WARRANTY; without even the implied warranties of 
+# MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+# PURPOSE.  See the applicable version of the GNU Lesser General Public 
+# License for more details.
+# 
+# You should have received a copy of both the GNU Lesser General Public 
+# License version 3 and version 2.1 along with this program.  If not, see 
+# <http://www.gnu.org/licenses/>
+
+from _indicate import *

=== added file 'bindings/python/indicate-arg-types.py'
--- bindings/python/indicate-arg-types.py	1970-01-01 00:00:00 +0000
+++ bindings/python/indicate-arg-types.py	2010-06-02 17:58:21 +0000
@@ -0,0 +1,27 @@
+# Python bindings for libindicate.
+# 
+# Copyright 2009 Canonical Ltd.
+# 
+# Authors:
+#     Eitan Isaacson <eitan@xxxxxxxxxxxx>
+# 
+# This program is free software: you can redistribute it and/or modify it 
+# under the terms of either or both of the following licenses:
+# 
+# 1) the GNU Lesser General Public License version 3, as published by the 
+# Free Software Foundation; and/or
+# 2) the GNU Lesser General Public License version 2.1, as published by 
+# the Free Software Foundation.
+# 
+# This program is distributed in the hope that it will be useful, but 
+# WITHOUT ANY WARRANTY; without even the implied warranties of 
+# MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+# PURPOSE.  See the applicable version of the GNU Lesser General Public 
+# License for more details.
+# 
+# You should have received a copy of both the GNU Lesser General Public 
+# License version 3 and version 2.1 along with this program.  If not, see 
+# <http://www.gnu.org/licenses/>
+
+import argtypes
+

=== added file 'bindings/python/indicate.defs'
--- bindings/python/indicate.defs	1970-01-01 00:00:00 +0000
+++ bindings/python/indicate.defs	2010-06-02 17:58:21 +0000
@@ -0,0 +1,448 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Indicator
+  (in-module "Indicate")
+  (parent "GObject")
+  (c-name "IndicateIndicator")
+  (gtype-id "INDICATE_TYPE_INDICATOR")
+)
+
+(define-object Listener
+  (in-module "Indicate")
+  (parent "GObject")
+  (c-name "IndicateListener")
+  (gtype-id "INDICATE_TYPE_LISTENER")
+)
+
+(define-object Server
+  (in-module "Indicate")
+  (parent "GObject")
+  (c-name "IndicateServer")
+  (gtype-id "INDICATE_TYPE_SERVER")
+)
+
+;; Enumerations and flags ...
+
+(define-enum Interests
+  (in-module "Indicate")
+  (c-name "IndicateInterests")
+  (gtype-id "INDICATE_TYPE_INTERESTS")
+  (values
+    '("none" "INDICATE_INTEREST_NONE")
+    '("server-display" "INDICATE_INTEREST_SERVER_DISPLAY")
+    '("server-signal" "INDICATE_INTEREST_SERVER_SIGNAL")
+    '("indicator-display" "INDICATE_INTEREST_INDICATOR_DISPLAY")
+    '("indicator-signal" "INDICATE_INTEREST_INDICATOR_SIGNAL")
+    '("indicator-count" "INDICATE_INTEREST_INDICATOR_COUNT")
+    '("last" "INDICATE_INTEREST_LAST")
+  )
+)
+
+
+;; From indicator.h
+
+(define-function indicate_indicator_get_type
+  (c-name "indicate_indicator_get_type")
+  (return-type "GType")
+)
+
+(define-function indicate_indicator_new
+  (c-name "indicate_indicator_new")
+  (is-constructor-of "IndicateIndicator")
+  (return-type "IndicateIndicator*")
+)
+
+(define-method show
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_show")
+  (return-type "none")
+)
+
+(define-method hide
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_hide")
+  (return-type "none")
+)
+
+(define-method is_visible
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_is_visible")
+  (return-type "gboolean")
+)
+
+(define-method get_id
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_get_id")
+  (return-type "guint")
+)
+
+(define-method user_display
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_user_display")
+  (return-type "none")
+  (parameters
+    '("guint" "timestamp")
+  )
+)
+
+(define-method set_property
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_property")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "key")
+    '("const-gchar*" "data")
+  )
+)
+
+(define-method set_property_icon
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_property_icon")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "key")
+    '("const-GdkPixbuf*" "data")
+  )
+)
+
+(define-method set_property_time
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_property_time")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "key")
+    '("GTimeVal*" "time")
+  )
+)
+
+(define-method set_property_int
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_property_int")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "key")
+    '("gint" "value")
+  )
+)
+
+(define-method set_property_bool
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_property_bool")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "key")
+    '("gboolean" "value")
+  )
+)
+
+(define-method get_property
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_get_property")
+  (return-type "const-gchar*")
+  (parameters
+    '("const-gchar*" "key")
+  )
+)
+
+(define-method list_properties
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_list_properties")
+  (return-type "GPtrArray*")
+)
+
+(define-method set_displayed
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_set_displayed")
+  (return-type "none")
+  (parameters
+    '("gboolean" "displayed")
+  )
+)
+
+(define-method get_displayed
+  (of-object "IndicateIndicator")
+  (c-name "indicate_indicator_get_displayed")
+  (return-type "gboolean")
+)
+
+
+;; From listener.h
+
+(define-function indicate_listener_server_get_gtype
+  (c-name "indicate_listener_server_get_gtype")
+  (return-type "GType")
+)
+
+(define-pointer ListenerServer
+  (in-module "Indicate")
+  (c-name "IndicateListenerServer")
+  (gtype-id "INDICATE_TYPE_LISTENER_SERVER")    
+)
+
+(define-pointer ListenerIndicator
+  (in-module "Indicate")
+  (c-name "IndicateListenerIndicator")
+  (gtype-id "INDICATE_TYPE_LISTENER_INDICATOR")    
+)
+
+(define-function indicate_listener_get_type
+  (c-name "indicate_listener_get_type")
+  (return-type "GType")
+)
+
+(define-function indicate_listener_new
+  (c-name "indicate_listener_new")
+  (is-constructor-of "IndicateListener")
+  (return-type "IndicateListener*")
+)
+
+(define-function indicate_listener_ref_default
+  (c-name "indicate_listener_ref_default")
+  (return-type "IndicateListener*")
+)
+
+(define-method get_property
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_get_property")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateListenerIndicator*" "indicator")
+    '("gchar*" "property")
+    '("indicate_listener_get_property_cb" "callback")
+    '("gpointer" "data")
+  )
+)
+
+(define-method get_property_time
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_get_property_time")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateListenerIndicator*" "indicator")
+    '("gchar*" "property")
+    '("indicate_listener_get_property_time_cb" "callback")
+    '("gpointer" "data")
+  )
+)
+
+(define-method get_property_icon
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_get_property_icon")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateListenerIndicator*" "indicator")
+    '("gchar*" "property")
+    '("indicate_listener_get_property_icon_cb" "callback")
+    '("gpointer" "data")
+  )
+)
+
+(define-method display
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_display")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateListenerIndicator*" "indicator")
+    '("guint" "timestamp")
+  )
+)
+
+(define-method server_get_type
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_server_get_type")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("indicate_listener_get_server_property_cb" "callback")
+    '("gpointer" "data")
+  )
+)
+
+(define-method server_get_desktop
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_server_get_desktop")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("indicate_listener_get_server_property_cb" "callback")
+    '("gpointer" "data")
+  )
+)
+
+(define-method get_dbusname
+  (of-object "IndicateListenerServer")
+  (c-name "indicate_listener_server_get_dbusname")
+  (return-type "const-gchar*")
+)
+
+(define-method get_id
+  (of-object "IndicateListenerIndicator")
+  (c-name "indicate_listener_indicator_get_id")
+  (return-type "guint")
+)
+
+(define-method server_show_interest
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_server_show_interest")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateInterests" "interest")
+  )
+)
+
+(define-method server_remove_interest
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_server_remove_interest")
+  (return-type "none")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateInterests" "interest")
+  )
+)
+
+(define-method server_check_interest
+  (of-object "IndicateListener")
+  (c-name "indicate_listener_server_check_interest")
+  (return-type "gboolean")
+  (parameters
+    '("IndicateListenerServer*" "server")
+    '("IndicateInterests" "interest")
+  )
+)
+
+
+
+;; From listener-marshal.h
+
+
+
+;; From server.h
+
+(define-function indicate_server_get_type
+  (c-name "indicate_server_get_type")
+  (return-type "GType")
+)
+
+(define-function indicate_server_new
+  (c-name "indicate_server_new")
+  (is-constructor-of "IndicateServer")
+  (return-type "IndicateServer*")
+)
+
+(define-function indicate_server_set_dbus_object
+  (c-name "indicate_server_set_dbus_object")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "obj")
+  )
+)
+
+(define-method set_desktop_file
+  (of-object "IndicateServer")
+  (c-name "indicate_server_set_desktop_file")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "path")
+  )
+)
+
+(define-method set_type
+  (of-object "IndicateServer")
+  (c-name "indicate_server_set_type")
+  (return-type "none")
+  (parameters
+    '("const-gchar*" "type")
+  )
+)
+
+(define-method set_count
+  (of-object "IndicateServer")
+  (c-name "indicate_server_set_count")
+  (return-type "none")
+  (parameters
+    '("guint" "count")
+  )
+)
+
+(define-method show
+  (of-object "IndicateServer")
+  (c-name "indicate_server_show")
+  (return-type "none")
+)
+
+(define-method hide
+  (of-object "IndicateServer")
+  (c-name "indicate_server_hide")
+  (return-type "none")
+)
+
+(define-method get_next_id
+  (of-object "IndicateServer")
+  (c-name "indicate_server_get_next_id")
+  (return-type "guint")
+)
+
+(define-method add_indicator
+  (of-object "IndicateServer")
+  (c-name "indicate_server_add_indicator")
+  (return-type "none")
+  (parameters
+    '("IndicateIndicator*" "indicator")
+  )
+)
+
+(define-method remove_indicator
+  (of-object "IndicateServer")
+  (c-name "indicate_server_remove_indicator")
+  (return-type "none")
+  (parameters
+    '("IndicateIndicator*" "indicator")
+  )
+)
+
+(define-function indicate_server_ref_default
+  (c-name "indicate_server_ref_default")
+  (return-type "IndicateServer*")
+)
+
+(define-method set_default
+  (of-object "IndicateServer")
+  (c-name "indicate_server_set_default")
+  (return-type "none")
+)
+
+(define-method check_interest
+  (of-object "IndicateServer")
+  (c-name "indicate_server_check_interest")
+  (return-type "gboolean")
+  (parameters
+    '("IndicateInterests" "interest")
+  )
+)
+
+(define-method get_max_indicators
+  (of-object "IndicateServer")
+  (c-name "indicate_server_get_max_indicators")
+  (return-type "gint")
+)
+
+
+
+
+;; From interests.h
+
+
+
+;; From indicate-enum-types.h
+
+(define-function indicate_interests_get_type
+  (c-name "indicate_interests_get_type")
+  (return-type "GType")
+)
+
+

=== added file 'bindings/python/indicate.override'
--- bindings/python/indicate.override	1970-01-01 00:00:00 +0000
+++ bindings/python/indicate.override	2010-06-02 17:58:21 +0000
@@ -0,0 +1,554 @@
+/*
+Python bindings for libindicate.
+
+Copyright 2009 Canonical Ltd.
+
+Authors:
+    Eitan Isaacson <eitan@xxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the 
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by 
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the applicable version of the GNU Lesser General Public 
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public 
+License version 3 and version 2.1 along with this program.  If not, see 
+<http://www.gnu.org/licenses/>
+*/
+%%
+headers
+#include <Python.h>
+#include <libindicate/indicator.h>
+#include <libindicate/indicator-messages.h>
+#include <libindicate/listener.h>
+#include <libindicate/server.h>
+#include <libindicate/interests.h>
+#include <libindicate/indicate-enum-types.h>
+#include <libindicate-gtk/indicator.h>
+#include <libindicate-gtk/listener.h>
+#include <glib.h>
+#include "pygobject.h"
+#include "pyglib.h"
+
+typedef PyObject* (*to_pyobject_func) (gpointer data);
+
+typedef struct
+{
+		PyGObject       *listener;
+		PyObject        *callback;
+        to_pyobject_func pyobject_convert;
+		PyObject        *user_data;        
+} ListenerPropertyCbData;
+
+static void
+_listener_get_property_cb(IndicateListener * listener, 
+						  IndicateListenerServer * server, 
+						  IndicateListenerIndicator * indicator, 
+						  gchar * property, gpointer propertydata, 
+						  ListenerPropertyCbData *data)
+{
+        PyGILState_STATE state;
+        PyObject *args, *rv, *pyserver, *pyindicator, *pypropertydata = NULL;
+
+        state = pyg_gil_state_ensure();
+
+        pypropertydata = data->pyobject_convert(propertydata);
+
+        pyserver = pyg_pointer_new (INDICATE_TYPE_LISTENER_SERVER, server);
+        pyindicator = pyg_pointer_new (INDICATE_TYPE_LISTENER_INDICATOR, indicator);
+
+        if (data->user_data == Py_None)
+        {
+                args = Py_BuildValue("OOOsO", data->listener, 
+                                     pyserver, 
+                                     pyindicator,
+                                     property,
+                                     pypropertydata);
+        }
+        else
+        {
+                args = Py_BuildValue("OOOsOO", data->listener, 
+                                     pyserver, 
+                                     pyindicator,
+                                     property,
+                                     pypropertydata,
+                                     data->user_data);
+        }
+
+        Py_DECREF(data->user_data);
+
+        rv = PyEval_CallObject(data->callback, args);
+
+        if (rv == NULL)
+                PyErr_Print();
+        else
+                Py_DECREF(rv);
+
+        Py_DECREF(args);
+        Py_DECREF(data->callback);
+        g_free(data);
+
+        pyg_gil_state_release(state);
+}
+
+static void
+_listener_get_server_property_cb(IndicateListener * listener, 
+                                 IndicateListenerServer * server, 
+                                 gchar *value,
+                                 ListenerPropertyCbData *data)
+{
+		PyGILState_STATE state;
+		PyObject *args, *rv, *pyserver;
+
+        pyserver = pyg_pointer_new (INDICATE_TYPE_LISTENER_SERVER, server);
+
+		state = pyg_gil_state_ensure();
+
+		if (data->user_data == Py_None)
+		{
+				args = Py_BuildValue("OOs", data->listener, 
+									 pyserver, 
+									 value);
+		}
+		else
+		{
+				args = Py_BuildValue("OOsO", data->listener, 
+									 pyserver, 
+									 value,
+									 data->user_data);
+		}
+
+		Py_DECREF(data->user_data);
+
+		rv = PyEval_CallObject(data->callback, args);
+
+		if (rv == NULL)
+				PyErr_Print();
+		else
+				Py_DECREF(rv);
+
+		Py_DECREF(args);
+		Py_DECREF(data->callback);
+		g_free(data);
+
+		pyg_gil_state_release(state);
+}
+
+void
+_indicate_add_constants(PyObject *module, const gchar *strip_prefix)
+{
+#ifdef VERSION
+        PyModule_AddStringConstant(module, "__version__", VERSION);
+#endif
+        pyg_enum_add(module, "Interests", 
+                     strip_prefix, INDICATE_TYPE_INTERESTS);
+        
+        if (PyErr_Occurred())
+                PyErr_Print();
+}
+%%
+modulename indicate
+%%
+import gobject.GObject as PyGObject_Type
+import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
+%%
+ignore
+  indicate_listener_get_property
+  indicate_listener_get_property_time
+  indicate_listener_get_property_icon
+  indicate_indicator_get_type
+  indicate_indicator_message_get_type
+  indicate_listener_get_type
+  indicate_server_get_type
+  indicate_interests_get_type
+%%
+override indicate_indicator_set_property_time args
+static PyObject *
+_wrap_indicate_indicator_set_property_time(PyGObject *self, PyObject *args)
+{
+		double time;
+		gchar *key;
+		GTimeVal g_time, *g_timep;
+
+		if (!PyArg_ParseTuple(args, "sd:Indicator.set_property_time", 
+							  &key, &time))
+		{
+				return NULL;
+		}
+
+		if (time > 0.0) {
+				g_time.tv_sec = (glong) time;
+				g_time.tv_usec = (glong)((time - g_time.tv_sec)
+										 * G_USEC_PER_SEC);
+				g_timep = &g_time;
+		} else if (time == 0.0) {
+				g_timep = NULL;
+		} else {
+				PyErr_SetString(PyExc_ValueError, "time must be >= 0.0");
+				return NULL;
+		}
+
+		indicate_indicator_set_property_time(INDICATE_INDICATOR(self->obj), 
+											 key, g_timep);
+
+		Py_INCREF(Py_None);
+		return Py_None;
+}
+%%
+define IndicateListener.get_indicator_property kwargs
+static PyObject *
+_convert_string_to_pyobject(gpointer data)
+{
+        return PyString_FromString((gchar *)data);
+}
+
+static PyObject *
+_wrap_indicate_listener_get_indicator_property(PyGObject *self, 
+											   PyObject *args,
+											   PyObject *kwargs)
+{
+		static char *kwlist[] = { "server", "indicator", "property", "callback",
+								  "user_data", NULL };
+		ListenerPropertyCbData *listener_property_cb_data;
+		gchar *property;
+        PyGObject *server, *indicator;
+		PyGILState_STATE state;
+		PyObject *callback, *user_data = Py_None;
+		size_t len;
+
+		state = pyg_gil_state_ensure();
+
+		len = PyTuple_Size(args);
+
+		if (len < 4)
+		{
+				PyErr_SetString(PyExc_TypeError,
+								"IndicateListener.get_property requires at least "
+								"3 arguments");
+				return NULL;
+		}
+
+		if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+										 "OOsO|O:IndicateListener.get_property",
+										 kwlist,
+										 &server, &indicator, &property, &callback, &user_data))
+		{
+				return NULL;
+		}
+
+		if (!PyCallable_Check(callback))
+		{
+				PyErr_SetString(PyExc_TypeError, "fourth argument must be callable");
+				return NULL;
+		}
+
+		listener_property_cb_data = g_new0(ListenerPropertyCbData, 1);
+		listener_property_cb_data->callback = callback;
+		listener_property_cb_data->user_data = user_data;
+		listener_property_cb_data->listener = self;
+		listener_property_cb_data->pyobject_convert = _convert_string_to_pyobject;
+
+		Py_INCREF(callback);
+		Py_INCREF(user_data);
+
+		indicate_listener_get_property(INDICATE_LISTENER(self->obj),
+									   (IndicateListenerServer *)server->obj, 
+									   (IndicateListenerIndicator *)indicator->obj,
+									   property,
+									   (indicate_listener_get_property_cb)_listener_get_property_cb,
+									   listener_property_cb_data);
+
+		Py_INCREF(Py_None);
+		pyg_gil_state_release(state);
+		return Py_None;
+}
+%%
+define IndicateListener.get_indicator_property_icon kwargs
+static PyObject *
+_convert_pixbuf_to_pyobject(gpointer data)
+{
+        return pygobject_new(data);
+}
+
+static PyObject *
+_wrap_indicate_listener_get_indicator_property_icon(PyGObject *self, 
+                                                    PyObject *args,
+                                                    PyObject *kwargs)
+{
+		static char *kwlist[] = { "server", "indicator", "property", "callback",
+								  "user_data", NULL };
+		ListenerPropertyCbData *listener_property_cb_data;
+		gchar *property;
+        PyGObject *server, *indicator;
+		PyGILState_STATE state;
+		PyObject *callback, *user_data = Py_None;
+		size_t len;
+
+		state = pyg_gil_state_ensure();
+
+		len = PyTuple_Size(args);
+
+		if (len < 4)
+		{
+				PyErr_SetString(PyExc_TypeError,
+								"IndicateListener.get_property requires at least "
+								"3 arguments");
+				return NULL;
+		}
+
+		if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+										 "OOsO|O:IndicateListener.get_property",
+										 kwlist,
+										 &server, &indicator, &property, &callback, &user_data))
+		{
+				return NULL;
+		}
+
+		if (!PyCallable_Check(callback))
+		{
+				PyErr_SetString(PyExc_TypeError, "fourth argument must be callable");
+				return NULL;
+		}
+
+		listener_property_cb_data = g_new0(ListenerPropertyCbData, 1);
+		listener_property_cb_data->callback = callback;
+		listener_property_cb_data->user_data = user_data;
+		listener_property_cb_data->listener = self;
+		listener_property_cb_data->pyobject_convert = _convert_pixbuf_to_pyobject;
+
+		Py_INCREF(callback);
+		Py_INCREF(user_data);
+
+		indicate_listener_get_property_icon(
+				INDICATE_LISTENER(self->obj),
+				(IndicateListenerServer *)server->obj, 
+				(IndicateListenerIndicator *)indicator->obj,
+				property,
+				(indicate_listener_get_property_icon_cb)_listener_get_property_cb,
+				listener_property_cb_data);
+
+		Py_INCREF(Py_None);
+		pyg_gil_state_release(state);
+		return Py_None;
+}
+%%
+define IndicateListener.get_indicator_property_time kwargs
+PyObject *
+_convert_time_to_pyobject(gpointer data)
+{
+        GTimeVal *time = data;
+        return pyglib_float_from_timeval(*time);
+}
+
+static PyObject *
+_wrap_indicate_listener_get_indicator_property_time(PyGObject *self, 
+													PyObject *args,
+													PyObject *kwargs)
+{
+		static char *kwlist[] = { "server", "indicator", "property", "callback",
+								  "user_data", NULL };
+		ListenerPropertyCbData *listener_property_cb_data;
+		gchar *property;
+        PyGObject *server, *indicator;
+		PyGILState_STATE state;
+		PyObject *callback, *user_data = Py_None;
+		size_t len;
+
+		state = pyg_gil_state_ensure();
+
+		len = PyTuple_Size(args);
+
+		if (len < 4)
+		{
+				PyErr_SetString(PyExc_TypeError,
+								"IndicateListener.get_property requires at least "
+								"3 arguments");
+				return NULL;
+		}
+
+		if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+										 "OOsO|O:IndicateListener.get_property",
+										 kwlist,
+										 &server, &indicator, &property, &callback, &user_data))
+		{
+				return NULL;
+		}
+
+		if (!PyCallable_Check(callback))
+		{
+				PyErr_SetString(PyExc_TypeError, "fourth argument must be callable");
+				return NULL;
+		}
+
+		listener_property_cb_data = g_new0(ListenerPropertyCbData, 1);
+		listener_property_cb_data->callback = callback;
+		listener_property_cb_data->user_data = user_data;
+		listener_property_cb_data->listener = self;
+		listener_property_cb_data->pyobject_convert = _convert_time_to_pyobject;
+
+		Py_INCREF(callback);
+		Py_INCREF(user_data);
+
+		indicate_listener_get_property_time(INDICATE_LISTENER(self->obj),
+											(IndicateListenerServer *)server->obj, 
+											(IndicateListenerIndicator *)indicator->obj,
+											property,
+											(indicate_listener_get_property_time_cb)_listener_get_property_cb,
+											listener_property_cb_data);
+
+		Py_INCREF(Py_None);
+		pyg_gil_state_release(state);
+		return Py_None;
+}
+%%
+override indicate_listener_server_get_desktop kwargs
+static PyObject *
+_wrap_indicate_listener_server_get_desktop(PyGObject *self, 
+										   PyObject *args,
+										   PyObject *kwargs)
+{
+		static char *kwlist[] = { "server", "callback", "user_data", NULL };
+		ListenerPropertyCbData *listener_property_cb_data;
+		PyGObject *server;
+		PyGILState_STATE state;
+		PyObject *callback, *user_data = Py_None;
+		size_t len;
+
+		state = pyg_gil_state_ensure();
+
+		len = PyTuple_Size(args);
+
+		if (len < 2)
+		{
+				PyErr_SetString(PyExc_TypeError,
+								"IndicateListener.get_property requires at least "
+								"3 arguments");
+				return NULL;
+		}
+
+		if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+										 "OO|O:IndicateListener.get_property",
+										 kwlist,
+										 &server, &callback, &user_data))
+		{
+				return NULL;
+		}
+
+		if (!PyCallable_Check(callback))
+		{
+				PyErr_SetString(PyExc_TypeError, "second argument must be callable");
+				return NULL;
+		}
+
+		listener_property_cb_data = g_new0(ListenerPropertyCbData, 1);
+		listener_property_cb_data->callback = callback;
+		listener_property_cb_data->user_data = user_data;
+		listener_property_cb_data->listener = self;
+
+		Py_INCREF(callback);
+		Py_INCREF(user_data);
+
+		indicate_listener_server_get_desktop(
+                INDICATE_LISTENER(self->obj),
+                (IndicateListenerServer *)server->obj, 
+                (indicate_listener_get_server_property_cb)_listener_get_server_property_cb,
+                listener_property_cb_data);
+
+		Py_INCREF(Py_None);
+		pyg_gil_state_release(state);
+		return Py_None;
+}
+%%
+override indicate_listener_server_get_type kwargs
+static PyObject *
+_wrap_indicate_listener_server_get_type(PyGObject *self, 
+                                        PyObject *args,
+                                        PyObject *kwargs)
+{
+		static char *kwlist[] = { "server", "callback", "user_data", NULL };
+		ListenerPropertyCbData *listener_property_cb_data;
+		PyGObject *server;
+		PyGILState_STATE state;
+		PyObject *callback, *user_data = Py_None;
+		size_t len;
+
+		state = pyg_gil_state_ensure();
+
+		len = PyTuple_Size(args);
+
+		if (len < 2)
+		{
+				PyErr_SetString(PyExc_TypeError,
+								"IndicateListener.server_get_type requires at least "
+								"3 arguments");
+				return NULL;
+		}
+
+		if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+										 "OO|O:IndicateListener.server_get_type",
+										 kwlist,
+										 &server, &callback, &user_data))
+		{
+				return NULL;
+		}
+
+		if (!PyCallable_Check(callback))
+		{
+				PyErr_SetString(PyExc_TypeError, "second argument must be callable");
+				return NULL;
+		}
+
+		listener_property_cb_data = g_new0(ListenerPropertyCbData, 1);
+		listener_property_cb_data->callback = callback;
+		listener_property_cb_data->user_data = user_data;
+		listener_property_cb_data->listener = self;
+
+		Py_INCREF(callback);
+		Py_INCREF(user_data);
+
+		indicate_listener_server_get_type(INDICATE_LISTENER(self->obj),
+										  (IndicateListenerServer *)server->obj, 
+										  (indicate_listener_get_server_property_cb)_listener_get_server_property_cb,
+										  listener_property_cb_data);
+
+		Py_INCREF(Py_None);
+		pyg_gil_state_release(state);
+		return Py_None;
+}
+%%
+override indicate_indicator_list_properties
+static PyObject *
+_wrap_indicate_indicator_list_properties(PyGObject *self)
+{		
+		GPtrArray *property_list;
+		PyObject *pyprop_list;
+		guint i;
+
+		property_list = \
+				indicate_indicator_list_properties(
+						INDICATE_INDICATOR(self->obj));
+
+		pyprop_list = PyList_New (property_list->len);
+
+		for (i=0; i < property_list->len; i++) {
+				PyList_SET_ITEM(
+						pyprop_list, i, 
+						PyString_FromString(
+								g_ptr_array_index(property_list, i)));
+                g_free(g_ptr_array_index(property_list, i));
+        }
+
+        g_ptr_array_free (property_list, TRUE);
+
+		return pyprop_list;
+}
+%%

=== added file 'bindings/python/indicatemodule.c'
--- bindings/python/indicatemodule.c	1970-01-01 00:00:00 +0000
+++ bindings/python/indicatemodule.c	2010-06-02 17:58:21 +0000
@@ -0,0 +1,48 @@
+/*
+Python bindings for libindicate.
+
+Copyright 2009 Canonical Ltd.
+
+Authors:
+    Eitan Isaacson <eitan@xxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the 
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by 
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the applicable version of the GNU Lesser General Public 
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public 
+License version 3 and version 2.1 along with this program.  If not, see 
+<http://www.gnu.org/licenses/>
+*/
+#include <pygobject.h>
+ 
+void pyindicate_register_classes (PyObject *d); 
+extern PyMethodDef pyindicate_functions[];
+
+DL_EXPORT(void)
+init_indicate(void)
+{
+		PyObject *m, *d;
+		
+		init_pygobject ();
+		
+		m = Py_InitModule ("_indicate", pyindicate_functions);
+		d = PyModule_GetDict (m);
+		
+		pyindicate_register_classes (d);
+
+		_indicate_add_constants (m, "INDICATE_");
+		if (PyErr_Occurred ()) {
+				Py_FatalError ("can't initialise module indicate");
+		}
+}

=== modified file 'configure.ac'
--- configure.ac	2010-05-03 12:38:59 +0000
+++ configure.ac	2010-06-02 17:58:21 +0000
@@ -1,10 +1,10 @@
 
-AC_INIT(libindicate, 0.3.6, ted@xxxxxxxxxxxxx)
+AC_INIT(libindicate, 0.3.7, ted@xxxxxxxxxxxxx)
 
 AC_PREREQ(2.53)
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(libindicate, 0.3.6)
+AM_INIT_AUTOMAKE(libindicate, 0.3.7)
 
 AM_MAINTAINER_MODE
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
@@ -88,6 +88,86 @@
 AC_PATH_PROG([VALA_API_GEN], [vapigen])
 
 ###########################
+# Check for Mono support
+###########################
+
+MONO_REQUIRED_VERSION=1.0
+PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false)
+
+AC_PATH_PROG(AL, al, no)
+if test "x$AL" = "xno" ; then
+   AC_MSG_ERROR([No al tool found.  You need to install Mono.])
+fi
+
+if test "x$has_mono" = "xtrue" ; then
+   GENERATED_SOURCES=generated/*.cs
+   AC_PATH_PROG(RUNTIME, mono, no)
+
+   if test "x$RUNTIME" != "no" ; then
+      RUNTIME=mono
+   fi
+
+   AC_PATH_PROG(CSC, gmcs, no)
+   LIB_PREFIX=.so
+   LIB_SUFFIX=
+fi
+
+if test "x$CSC" = "xno" ; then
+   AC_MSG_ERROR([No Mono compiler found.])
+fi
+
+AC_PATH_PROG(GACUTIL, gacutil, no)
+if test "x$GACUTIL" = "xno" ; then
+   AC_MSG_ERROR([No gacutil tool found])
+fi
+
+AC_SUBST(RUNTIME)
+AC_SUBST(CSC)
+AC_SUBST(GACUTIL)
+AC_SUBST(LIB_PREFIX)
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(GENERATED_SOURCES)
+
+GLIB_SHARP_REQ_VERSION=2.12.1
+GTK_SHARP_REQ_VERSION=2.12
+PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 >= $GTK_SHARP_REQ_VERSION)
+AC_SUBST(GTK_SHARP_LIBS)
+AC_SUBST(GTK_SHARP_CFLAGS)
+
+PKG_CHECK_MODULES(GAPI, gapi-2.0 >= $GLIB_SHARP_REQ_VERSION)
+AC_PATH_PROG(GAPI_PARSER, gapi2-parser, no)
+AC_SUBST(GAPI_PARSER)
+AC_PATH_PROG(GAPI_CODEGEN, gapi2-codegen, no)
+AC_SUBST(GAPI_CODEGEN)
+AC_PATH_PROG(GAPI_FIXUP, gapi2-fixup, no)
+AC_SUBST(GAPI_FIXUP)
+
+###########################
+# Check for Python support
+###########################
+
+AM_PATH_PYTHON(2.3.5)
+AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
+
+PYGTK_REQUIRED=2.14.0
+PYGOBJECT_REQUIRED=0.22
+
+PKG_CHECK_MODULES(INDICATE_PYTHON, [pygtk-2.0 >= $PYGTK_REQUIRED
+				    pygobject-2.0 >= $PYGOBJECT_REQUIRED])
+AC_SUBST(INDICATE_PYTHON_CFLAGS)
+AC_SUBST(INDICATE_PYTHON_LIBS)
+
+AC_MSG_CHECKING(for pygtk defs)
+PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
+AC_SUBST(PYGTK_DEFSDIR)
+AC_MSG_RESULT($PYGTK_DEFSDIR)
+
+AC_MSG_CHECKING(for pygtk codegen)
+PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/codegen.py"
+AC_SUBST(PYGTK_CODEGEN)
+AC_MSG_RESULT($PYGTK_CODEGEN)
+
+###########################
 # GTK Doc 
 ###########################
 
@@ -151,10 +231,22 @@
 libindicate-gtk/Makefile
 libindicate-gtk/indicate-gtk.pc
 examples/Makefile
+examples/indicator-mono-example
 tests/Makefile
 docs/Makefile
 docs/reference/Makefile
 docs/reference/version.xml
+bindings/Makefile
+bindings/python/Makefile
+bindings/mono/Makefile
+bindings/mono/indicate/Makefile
+bindings/mono/indicate/indicate-sharp.dll.config
+bindings/mono/indicate/indicate-sharp-0.1.pc
+bindings/mono/indicate/AssemblyInfo.cs
+bindings/mono/indicate-gtk/Makefile
+bindings/mono/indicate-gtk/indicate-gtk-sharp.dll.config
+bindings/mono/indicate-gtk/indicate-gtk-sharp-0.1.pc
+bindings/mono/indicate-gtk/AssemblyInfo.cs
 ])
 
 ###########################

=== added file 'examples/IndicatorMonoExample.cs'
--- examples/IndicatorMonoExample.cs	1970-01-01 00:00:00 +0000
+++ examples/IndicatorMonoExample.cs	2010-06-02 17:58:21 +0000
@@ -0,0 +1,40 @@
+using System;
+using Indicate;
+using Gtk;
+using GLib;
+
+namespace IndicatorExample
+{
+	class MainClass
+	{
+		public static void Main(string[] args)
+		{
+			Application.Init ();
+			Indicate.Server server = Indicate.Server.RefDefault();
+			server.SetType("message.im");
+			server.DesktopFile("/usr/share/applications/empathy.desktop");
+			server.ServerDisplay += new Indicate.ServerDisplayHandler(ServerDisplay);
+			server.Show();
+
+			Indicator indicator = new Indicate.Indicator();
+			indicator.SetProperty("subtype", "im");
+			indicator.SetProperty("sender", "Barney Rubble");
+			indicator.UserDisplay += new EventHandler(UserDisplay);
+			indicator.Show();
+
+			Application.Run ();
+		}
+		
+		public static void ServerDisplay (object sender, Indicate.ServerDisplayArgs args)
+		{
+			Console.WriteLine ("Server was displayed");
+		}
+		
+		public static void UserDisplay (object sender, System.EventArgs args)
+		{
+			Console.WriteLine ("Indicator was displayed");
+			Indicate.Indicator indicator = sender as Indicate.Indicator;
+			indicator.Hide();
+		}
+	}
+}

=== modified file 'examples/Makefile.am'
--- examples/Makefile.am	2010-02-04 22:45:51 +0000
+++ examples/Makefile.am	2010-06-02 17:58:21 +0000
@@ -1,3 +1,6 @@
+ASSEMBLY = IndicatorMonoExample.exe
+CSFILES = IndicatorMonoExample.cs
+CLEANFILES = $(ASSEMBLY)
 
 libexec_PROGRAMS = \
 	indicate-and-crash \
@@ -72,12 +75,27 @@
 	../libindicate/libindicate.la \
 	$(LIBINDICATE_LIBS)
 
+python_examples = \
+	im-client.py \
+	listen-and-print.py
+
 examplesdir = $(docdir)/examples/
 
 examples_DATA = \
 	$(indicate_and_crash_SOURCES) \
 	$(indicate_alot_SOURCES) \
 	$(listen_and_print_SOURCES) \
-	$(im_client_SOURCES)
-
-EXTRA_DIST = $(examples_DATA)
+	$(im_client_SOURCES) \
+	$(python_examples)
+
+EXTRA_DIST = $(examples_DATA)		\
+	$(CSFILES)			\
+	indicator-mono-example.in	
+
+references = $(GTK_SHARP_LIBS) -r:$(builddir)/../bindings/mono/indicate/indicate-sharp.dll
+
+$(ASSEMBLY): $(CSFILES) Makefile.am
+	$(CSC) $(CSFLAGS) -out:$(ASSEMBLY) -target:exe $(references) $(srcdir)/$(CSFILES)
+	chmod a+x indicator-mono-example
+
+all: $(ASSEMBLY)

=== added file 'examples/im-client.py'
--- examples/im-client.py	1970-01-01 00:00:00 +0000
+++ examples/im-client.py	2010-06-02 17:58:21 +0000
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+#
+#Copyright 2009 Canonical Ltd.
+#
+#Authors:
+#    Eitan Isaacson <eitan@xxxxxxxxxxxx>
+#
+#This program is free software: you can redistribute it and/or modify it 
+#under the terms of either or both of the following licenses:
+#
+#1) the GNU Lesser General Public License version 3, as published by the 
+#Free Software Foundation; and/or
+#2) the GNU Lesser General Public License version 2.1, as published by 
+#the Free Software Foundation.
+#
+#This program is distributed in the hope that it will be useful, but 
+#WITHOUT ANY WARRANTY; without even the implied warranties of 
+#MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+#PURPOSE.  See the applicable version of the GNU Lesser General Public 
+#License for more details.
+#
+#You should have received a copy of both the GNU Lesser General Public 
+#License version 3 and version 2.1 along with this program.  If not, see 
+#<http://www.gnu.org/licenses/>
+#
+
+import indicate
+import gobject
+import gtk
+from time import time
+
+PATHA = "/usr/share/icons/hicolor/16x16/apps/empathy.png"
+PATHB = "/usr/share/icons/hicolor/22x22/apps/empathy.png"
+lastpath = None
+
+def timeout_cb(indicator):
+    print "Modifying properties"
+    global lastpath
+    indicator.set_property_time("time", time())
+    if lastpath == PATHA:
+        lastpath = PATHB
+    else:
+        lastpath = PATHA
+
+    pixbuf = gtk.gdk.pixbuf_new_from_file(lastpath)
+
+    indicator.set_property_icon("icon", pixbuf)
+
+    return True
+
+def display(indicator, timestamp):
+    print "Ah, my indicator has been displayed"
+
+def server_display(server, timestamp):
+    print "Ah, my server has been displayed"
+
+
+if __name__ == "__main__":
+    server = indicate.indicate_server_ref_default()
+    server.set_type("message.im")
+    server.set_desktop_file("/usr/share/applications/empathy.desktop")
+    server.connect("server-display", server_display)
+    
+    indicator = indicate.Indicator()
+    indicator.set_property("name", "IM Client Test")
+    indicator.set_property_time("time", time())
+    indicator.show()
+
+    indicator.connect("user-display", display)
+
+    gobject.timeout_add_seconds(5, timeout_cb, indicator)
+
+    gtk.main()

=== added file 'examples/indicator-mono-example.in'
--- examples/indicator-mono-example.in	1970-01-01 00:00:00 +0000
+++ examples/indicator-mono-example.in	2010-06-02 17:58:21 +0000
@@ -0,0 +1,2 @@
+#!/bin/sh
+MONO_PATH=@top_builddir@/bindings/mono/indicate mono @srcdir@/IndicatorMonoExample.exe

=== added file 'examples/listen-and-print.py'
--- examples/listen-and-print.py	1970-01-01 00:00:00 +0000
+++ examples/listen-and-print.py	2010-06-02 17:58:21 +0000
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+#
+#Copyright 2009 Canonical Ltd.
+#
+#Authors:
+#    Eitan Isaacson <eitan@xxxxxxxxxxxx>
+#
+#This program is free software: you can redistribute it and/or modify it 
+#under the terms of either or both of the following licenses:
+#
+#1) the GNU Lesser General Public License version 3, as published by the 
+#Free Software Foundation; and/or
+#2) the GNU Lesser General Public License version 2.1, as published by 
+#the Free Software Foundation.
+#
+#This program is distributed in the hope that it will be useful, but 
+#WITHOUT ANY WARRANTY; without even the implied warranties of 
+#MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
+#PURPOSE.  See the applicable version of the GNU Lesser General Public 
+#License for more details.
+#
+#You should have received a copy of both the GNU Lesser General Public 
+#License version 3 and version 2.1 along with this program.  If not, see 
+#<http://www.gnu.org/licenses/>
+#
+
+import indicate
+import gobject
+import gtk
+from time import time, ctime, strftime, localtime
+
+def show_property_cb(listener, server, indicator, prop, propertydata):
+    print "Indicator Property:       %s %s %s %s" % \
+        (server, indicator, prop, propertydata)
+
+def show_property_time_cb(listener, server, indicator, prop, propertydata):
+    print "Indicator Property:       %s %s %s %s" % \
+        (server, indicator, prop, 
+         strftime("%I:%M", localtime(propertydata)))
+
+def show_property_icon_cb(listener, server, indicator, prop, propertydata):
+    print "Indicator Property:       %s %s %s %dx%d" % \
+        (server, indicator, prop, 
+         propertydata.get_width(), propertydata.get_height())
+
+def show_property(listener, server, indicator, prop):
+    if prop == "icon":
+        listener.get_indicator_property_icon(server, indicator, 
+                                             prop, show_property_icon_cb)
+    elif prop == "time":
+        listener.get_indicator_property_time(server, indicator, 
+                                             prop, show_property_time_cb)
+    else:
+        listener.get_indicator_property(server, indicator, 
+                                        prop, show_property_cb)
+
+def get_properties(listener, server, indicator):
+    # TODO: Not in libindicate API yet.
+    return
+
+def indicator_added(listener, server, indicator):
+    print "Indicator Added:          %s %s" % \
+        (server, indicator)
+
+def indicator_removed(listener, server, indicator):
+    print "Indicator Removed:        %s %s" % \
+        (server, indicator)
+
+def indicator_modified(listener, server, indicator, prop):
+    print "Indicator Modified:       %s %s %s" % \
+        (server, indicator, prop)
+    show_property(listener, server, 
+                  indicator, prop)
+
+def type_cb(listener, server, value):
+    print "Indicator Server Type:    %s %s" % \
+        (server, value)
+
+def desktop_cb(listener, server, value):
+    print "Indicator Server Desktop: %s %s" % \
+        (server, value)
+
+def server_added(listener, server, typ):
+    print "Indicator Server Added:   %s %s" % \
+        (server.get_dbusname(), typ)
+    listener.server_get_type(server, type_cb)
+    listener.server_get_desktop(server, desktop_cb)
+
+def server_removed(listener, server, typ):
+    print "Indicator Server Removed: %s %s" % \
+        (server, typ)
+
+if __name__ == "__main__":
+    listener = indicate.indicate_listener_ref_default()
+    listener.connect("indicator-added", indicator_added)
+    listener.connect("indicator-removed", indicator_removed)
+    listener.connect("indicator-modified", indicator_modified)
+    listener.connect("server-added", server_added)
+    listener.connect("server-removed", server_removed)
+
+    gtk.main()

=== modified file 'libindicate/Makefile.am'
--- libindicate/Makefile.am	2010-05-21 17:46:44 +0000
+++ libindicate/Makefile.am	2010-06-02 17:58:21 +0000
@@ -39,11 +39,11 @@
 libindicateincludedir=$(includedir)/libindicate-0.2/libindicate
 
 indicate_headers = \
-	indicator.h \
-	indicator-messages.h \
-	listener.h \
-	server.h \
-	interests.h
+	$(srcdir)/indicator.h \
+	$(srcdir)/indicator-messages.h \
+	$(srcdir)/listener.h \
+	$(srcdir)/server.h \
+	$(srcdir)/interests.h
 
 libindicateinclude_HEADERS = \
 	$(indicate_headers) \


Follow ups