diff options
author | Ted Gould <ted@gould.cx> | 2009-12-17 00:08:42 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2009-12-17 00:08:42 -0600 |
commit | 97f6e62d618747a03ba44486f70a2230af5177fd (patch) | |
tree | 89c8aebd9d1d147c07bf6c1cedd8ddd583e5a0be /bindings | |
parent | 985c449e8efe4e258d286857f6a71a7726b43561 (diff) | |
parent | 8a26b8c15e726e090f7cab7afd366f764f2ab73c (diff) | |
download | ayatana-indicator-application-97f6e62d618747a03ba44486f70a2230af5177fd.tar.gz ayatana-indicator-application-97f6e62d618747a03ba44486f70a2230af5177fd.tar.bz2 ayatana-indicator-application-97f6e62d618747a03ba44486f70a2230af5177fd.zip |
Mono and Pythong bindings living together.
Diffstat (limited to 'bindings')
-rw-r--r-- | bindings/Makefile.am | 3 | ||||
-rw-r--r-- | bindings/mono/Makefile.am | 2 | ||||
-rw-r--r-- | bindings/mono/appindicator-sharp-0.1.pc.in | 6 | ||||
-rw-r--r-- | bindings/mono/appindicator-sharp.dll.config.in | 2 | ||||
-rw-r--r-- | bindings/python/Makefile.am | 40 | ||||
-rw-r--r-- | bindings/python/__init__.py | 27 | ||||
-rw-r--r-- | bindings/python/appindicator-arg-types.py | 27 | ||||
-rw-r--r-- | bindings/python/appindicator.defs | 121 | ||||
-rw-r--r-- | bindings/python/appindicator.override | 65 | ||||
-rw-r--r-- | bindings/python/appindicatormodule.c | 49 |
10 files changed, 336 insertions, 6 deletions
diff --git a/bindings/Makefile.am b/bindings/Makefile.am index bee9b1d..71abb6c 100644 --- a/bindings/Makefile.am +++ b/bindings/Makefile.am @@ -1,2 +1,3 @@ SUBDIRS = \ - mono + mono \ + python diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am index b03cde8..87f1e5a 100644 --- a/bindings/mono/Makefile.am +++ b/bindings/mono/Makefile.am @@ -11,7 +11,7 @@ METADATA = libappindicator-api.metadata ASSEMBLY_NAME = appindicator-sharp ASSEMBLY = appindicator-sharp.dll TARGET = $(ASSEMBLY) $(ASSEMBLY).config -assemblydir = $(libdir)/appindicator-sharp +assemblydir = $(libdir)/appindicator-sharp-0.1 assembly_DATA = $(TARGET) CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb generated-stamp generated/*.cs $(API) $(RAW_API) $(TEST) DISTCLEANFILES = $(ASSEMBLY).config diff --git a/bindings/mono/appindicator-sharp-0.1.pc.in b/bindings/mono/appindicator-sharp-0.1.pc.in index 16872ae..33ff1d7 100644 --- a/bindings/mono/appindicator-sharp-0.1.pc.in +++ b/bindings/mono/appindicator-sharp-0.1.pc.in @@ -1,6 +1,6 @@ -prefix=${pcfiledir}/../.. -exec_prefix=${prefix} -libdir=${exec_prefix}/lib +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ assemblies_dir=${libdir}/appindicator-sharp-0.1 Name: appindicator-sharp diff --git a/bindings/mono/appindicator-sharp.dll.config.in b/bindings/mono/appindicator-sharp.dll.config.in index c8caa80..d0e9e1e 100644 --- a/bindings/mono/appindicator-sharp.dll.config.in +++ b/bindings/mono/appindicator-sharp.dll.config.in @@ -1,5 +1,5 @@ <configuration> - <dllmap dll="libappindicator.dll" target="libappindicator@LIB_PREFIX@.0@LIB_SUFFIX@"/> + <dllmap dll="appindicator-sharp.dll" target="libappindicator@LIB_PREFIX@.0@LIB_SUFFIX@"/> <dllmap dll="libgtk-2.0-0.dll" target="libgtk-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/> <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/> <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/> diff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am new file mode 100644 index 0000000..0b606db --- /dev/null +++ b/bindings/python/Makefile.am @@ -0,0 +1,40 @@ +defsdir = $(datadir)/pygtk/2.0/defs +defs_DATA = appindicator.defs + +#CFLAGS = -Wall -Werror +INCLUDES = \ + -I$(top_srcdir)/src \ + -DG_LOG_DOMAIN=\"appindicator-python\" \ + -DDATADIR=\"$(datadir)\" \ + -DLIBDIR=\"$(libdir)\" \ + $(APPINDICATOR_PYTHON_CFLAGS) \ + $(PYTHON_INCLUDES) + +pkgpythondir = $(pyexecdir) +pkgpyexecdir = $(pyexecdir) + +pkgappindicatordir = $(pkgpythondir)/appindicator +pkgappindicator_PYTHON = __init__.py + +appindicatordir = $(pkgpyexecdir)/appindicator +appindicator_LTLIBRARIES = _appindicator.la + +_appindicator_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_appindicator -lpyglib-2.0-python2.6 +_appindicator_la_LIBADD = $(APPINDICATOR_PYTHON_LIBS) -L$(top_builddir)/src/.libs -lappindicator +_appindicator_la_SOURCES = appindicatormodule.c +nodist__appindicator_la_SOURCES = appindicator.c + +CLEANFILES = appindicator.c +EXTRA_DIST = appindicator.override appindicator-arg-types.py $(defs_DATA) +appindicator.c: $(defs_DATA) appindicator.override + +%.c: %.defs + (cd $(srcdir) \ + && $(PYGTK_CODEGEN) \ + --register $(PYGTK_DEFSDIR)/gtk-types.defs \ + --register $(PYGTK_DEFSDIR)/gdk-types.defs \ + --load-types appindicator-arg-types.py \ + --override $*.override \ + --prefix py$* $*.defs) > gen-$*.c \ + && cp gen-$*.c $*.c \ + && rm -f gen-$*.c diff --git a/bindings/python/__init__.py b/bindings/python/__init__.py new file mode 100644 index 0000000..20e2140 --- /dev/null +++ b/bindings/python/__init__.py @@ -0,0 +1,27 @@ +# Python bindings for libappindicator. +# +# Copyright 2009 Canonical Ltd. +# +# Authors: +# Eitan Isaacson <eitan@ascender.com> +# Neil Jagdish Patel <neil.patel@canonical.com> +# +# 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 _appindicator import * diff --git a/bindings/python/appindicator-arg-types.py b/bindings/python/appindicator-arg-types.py new file mode 100644 index 0000000..9d74aa0 --- /dev/null +++ b/bindings/python/appindicator-arg-types.py @@ -0,0 +1,27 @@ +# Python bindings for libappindicator. +# +# Copyright 2009 Canonical Ltd. +# +# Authors: +# Eitan Isaacson <eitan@ascender.com> +# +# 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 + diff --git a/bindings/python/appindicator.defs b/bindings/python/appindicator.defs new file mode 100644 index 0000000..0349b64 --- /dev/null +++ b/bindings/python/appindicator.defs @@ -0,0 +1,121 @@ +;; -*- scheme -*- +; object definitions ... +(define-object Indicator + (in-module "App") + (parent "GObject") + (c-name "AppIndicator") + (gtype-id "APP_TYPE_INDICATOR") +) + +;; Enumerations and flags ... + +(define-enum IndicatorCategory + (in-module "App") + (c-name "AppIndicatorCategory") + (gtype-id "APP_INDICATOR_TYPE_INDICATOR_CATEGORY") + (values + '("application-status" "APP_INDICATOR_CATEGORY_APPLICATION_STATUS") + '("communications" "APP_INDICATOR_CATEGORY_COMMUNICATIONS") + '("system-services" "APP_INDICATOR_CATEGORY_SYSTEM_SERVICES") + '("hardware" "APP_INDICATOR_CATEGORY_HARDWARE") + '("other" "APP_INDICATOR_CATEGORY_OTHER") + ) +) + +(define-enum IndicatorStatus + (in-module "App") + (c-name "AppIndicatorStatus") + (gtype-id "APP_INDICATOR_TYPE_INDICATOR_STATUS") + (values + '("passive" "APP_INDICATOR_STATUS_PASSIVE") + '("active" "APP_INDICATOR_STATUS_ACTIVE") + '("attention" "APP_INDICATOR_STATUS_ATTENTION") + ) +) + + +;; From app-indicator.h + +(define-function app_indicator_get_type + (c-name "app_indicator_get_type") + (return-type "GType") +) + +(define-function app_indicator_new + (c-name "app_indicator_new") + (is-constructor-of "AppIndicator") + (return-type "AppIndicator*") + (parameters + '("const-gchar*" "id") + '("const-gchar*" "icon_name") + '("AppIndicatorCategory" "category") + ) +) + +(define-method set_status + (of-object "AppIndicator") + (c-name "app_indicator_set_status") + (return-type "none") + (parameters + '("AppIndicatorStatus" "status") + ) +) + +(define-method set_attention_icon + (of-object "AppIndicator") + (c-name "app_indicator_set_attention_icon") + (return-type "none") + (parameters + '("const-gchar*" "icon_name") + ) +) + +(define-method set_menu + (of-object "AppIndicator") + (c-name "app_indicator_set_menu") + (return-type "none") + (parameters + '("GtkMenu*" "menu") + ) +) + +(define-method set_icon + (of-object "AppIndicator") + (c-name "app_indicator_set_icon") + (return-type "none") + (parameters + '("const-gchar*" "icon_name") + ) +) + +(define-method get_id + (of-object "AppIndicator") + (c-name "app_indicator_get_id") + (return-type "const-gchar*") +) + +(define-method get_category + (of-object "AppIndicator") + (c-name "app_indicator_get_category") + (return-type "AppIndicatorCategory") +) + +(define-method get_status + (of-object "AppIndicator") + (c-name "app_indicator_get_status") + (return-type "AppIndicatorStatus") +) + +(define-method get_icon + (of-object "AppIndicator") + (c-name "app_indicator_get_icon") + (return-type "const-gchar*") +) + +(define-method get_attention_icon + (of-object "AppIndicator") + (c-name "app_indicator_get_attention_icon") + (return-type "const-gchar*") +) + + diff --git a/bindings/python/appindicator.override b/bindings/python/appindicator.override new file mode 100644 index 0000000..a01a9a6 --- /dev/null +++ b/bindings/python/appindicator.override @@ -0,0 +1,65 @@ +/* +Python bindings for libappindicator. + +Copyright 2009 Canonical Ltd. + +Authors: + Eitan Isaacson <eitan@ascender.com> (original) + Neil Jagdish Patel <neil.patel@canonical.com> + +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 "../src/libappindicator/app-indicator.h" +#include "../src/libappindicator/app-indicator-enum-types.h" +#include <glib.h> +#include "pygobject.h" +#include "pyglib.h" +#include <pygtk/pygtk.h> + +typedef PyObject* (*to_pyobject_func) (gpointer data); + +#define APP_TYPE_INDICATOR APP_INDICATOR_TYPE + +void +_appindicator_add_constants(PyObject *module, const gchar *strip_prefix) +{ +#ifdef VERSION + PyModule_AddStringConstant(module, "__version__", VERSION); +#endif + pyg_enum_add(module, + "IndicatorCategory", + strip_prefix, + APP_INDICATOR_TYPE_INDICATOR_CATEGORY); + + pyg_enum_add(module, + "IndicatorStatus", + strip_prefix, + APP_INDICATOR_TYPE_INDICATOR_STATUS); + + if (PyErr_Occurred()) + PyErr_Print(); +} +%% +modulename appindicator +%% +import gobject.GObject as PyGObject_Type +import gtk.Menu as PyGtkMenu_Type diff --git a/bindings/python/appindicatormodule.c b/bindings/python/appindicatormodule.c new file mode 100644 index 0000000..b66639c --- /dev/null +++ b/bindings/python/appindicatormodule.c @@ -0,0 +1,49 @@ +/* +Python bindings for libappindicator. + +Copyright 2009 Canonical Ltd. + +Authors: + Eitan Isaacson <eitan@ascender.com> + Neil Jagdish Patel <neil.patel@canonical.com> + +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 pyappindicator_register_classes (PyObject *d); +extern PyMethodDef pyappindicator_functions[]; + +DL_EXPORT(void) +init_appindicator(void) +{ + PyObject *m, *d; + + init_pygobject (); + + m = Py_InitModule ("_appindicator", pyappindicator_functions); + d = PyModule_GetDict (m); + + pyappindicator_register_classes (d); + + _appindicator_add_constants (m, "APP_INDICATOR_"); + if (PyErr_Occurred ()) { + Py_FatalError ("can't initialise module appindicator"); + } +} |