aboutsummaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2009-12-16 14:32:39 -0500
committerKen VanDine <ken.vandine@canonical.com>2009-12-16 14:32:39 -0500
commit4d9d260b7528dc9b1c2f1e205b38f29b34c8c320 (patch)
tree71df84215f1270ae62fe834b3cb863e111a505ff /bindings
parent985c449e8efe4e258d286857f6a71a7726b43561 (diff)
parent251da6dc9c3ce7e84e83d734bb08cc42c6db2480 (diff)
downloadayatana-indicator-application-4d9d260b7528dc9b1c2f1e205b38f29b34c8c320.tar.gz
ayatana-indicator-application-4d9d260b7528dc9b1c2f1e205b38f29b34c8c320.tar.bz2
ayatana-indicator-application-4d9d260b7528dc9b1c2f1e205b38f29b34c8c320.zip
merged in python bindings branch and some of my fixes needed for packaging
Diffstat (limited to 'bindings')
-rw-r--r--bindings/Makefile.am3
-rw-r--r--bindings/python/Makefile.am40
-rw-r--r--bindings/python/__init__.py27
-rw-r--r--bindings/python/appindicator-arg-types.py27
-rw-r--r--bindings/python/appindicator.defs121
-rw-r--r--bindings/python/appindicator.override65
-rw-r--r--bindings/python/appindicatormodule.c49
7 files changed, 331 insertions, 1 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/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");
+ }
+}