ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #01527
[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