[Xfce4-commits] <exo:master> Drop the python bindings.

Nick Schermer noreply at xfce.org
Mon Jul 4 23:26:01 CEST 2011


Updating branch refs/heads/master
         to 921a5e9dfa2d9c0f9f4e209f96f47933e6932361 (commit)
       from 71423d81f9e54e6d78674424e1f3cfa5bbae246d (commit)

commit 921a5e9dfa2d9c0f9f4e209f96f47933e6932361
Author: Nick Schermer <nick at xfce.org>
Date:   Mon Jul 4 23:24:05 2011 +0200

    Drop the python bindings.

 Makefile.am                               |    6 -
 TODO                                      |    1 -
 configure.in.in                           |   58 --
 exo.spec.in                               |    2 +-
 python/Makefile.am                        |   76 --
 python/__init__.py                        |   37 -
 python/abicheck.sh                        |   23 -
 python/examples/Makefile.am               |   12 -
 python/examples/README                    |    2 -
 python/examples/binding.py                |  191 ----
 python/examples/ellipsizing.py            |  112 ---
 python/examples/iconview.py               |   96 --
 python/examples/preferred-applications.py |  153 ----
 python/examples/toolbars.py               |  114 ---
 python/examples/toolbars.ui               |   22 -
 python/exo.defs                           | 1392 -----------------------------
 python/exo.override                       |  493 ----------
 python/exomodule.c                        |  150 ---
 python/pyexo.h                            |   64 --
 python/pyexo.py                           |   87 --
 python/pyexobinding.c                     |  629 -------------
 21 files changed, 1 insertions(+), 3719 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 8c73f13..58797b6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,3 @@
-
-if HAVE_PYTHON
-PYTHON_SUBDIR=python
-endif
-
 SUBDIRS =								\
 	exo								\
 	exo-csource							\
@@ -14,7 +9,6 @@ SUBDIRS =								\
 	icons								\
 	pixmaps								\
 	po								\
-	$(PYTHON_SUBDIR)						\
 	tests
 
 AUTOMAKE_OPTIONS =							\
diff --git a/TODO b/TODO
index 773d573..f16aebc 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,3 @@
 - The current style and color handling in ExoIconBar isn't optimal and kinda
   hacky after all. We've to replace that with a better implementation one
   day.
-- Finish the Python bindings.
diff --git a/configure.in.in b/configure.in.in
index 29ad025..e465abb 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -198,61 +198,6 @@ dnl *** Check for gtk-doc ***
 dnl *************************
 GTK_DOC_CHECK([1.9])
 
-dnl ***********************************
-dnl *** Check for python (optional) ***
-dnl ***********************************
-AC_ARG_ENABLE([python], 
-  [AC_HELP_STRING([--enable-python], [build python bindings])],
-  [enable_python=$enableval],
-  [enable_python=auto])
-have_python=no
-if test x"$enable_python" != x"no"; then
-  AC_MSG_NOTICE([Checking to see if we can build Python bindings])
-  AM_PATH_PYTHON([2.2],, [:])
-
-  if test x"$PYTHON" = x":"; then
-    AC_MSG_WARN([Python not found])
-  else
-    XDT_CHECK_PYTHON_HEADERS([have_python_headers=yes],[have_python_headers=no])
-    XDT_CHECK_PACKAGE([PYGTK], [pygtk-2.0], [2.4.0], \
-                      [have_pygtk=yes], [have_pygtk=no])
-
-    AC_PATH_PROG([PYGOBJECT_CODEGEN], [pygobject-codegen-2.0], [no])
-
-    if test x"$have_python_headers" = x"yes" -a x"$have_pygtk" = x"yes" -a x"$PYGOBJECT_CODEGEN" != x"no"; then
-      have_python=yes
-
-      AC_MSG_CHECKING([for PyGTK defs])
-      PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
-      AC_MSG_RESULT([$PYGTK_DEFSDIR])
-      AC_SUBST([PYGTK_DEFSDIR])
-
-      dnl Check whether the compiler accepts -fno-strict-aliasing,
-      dnl which is required to compile the source generated by
-      dnl pygtk-codegen-2.0 with gcc 3.x.
-      save_CPPFLAGS="$CPPFLAGS"
-      CPPFLAGS="$CPPFLAGS -fno-strict-aliasing"
-      AC_MSG_CHECKING([whether $CC accepts -fno-strict-aliasing])
-      AC_COMPILE_IFELSE(AC_LANG_SOURCE([int x;]), [
-        AC_MSG_RESULT([yes])
-        PYGTK_CFLAGS="$PYGTK_CFLAGS -fno-strict-aliasing"
-      ], [
-        AC_MSG_RESULT([no])
-      ])
-      CPPFLAGS="$save_CPPFLAGS"
-    fi
-  fi
-
-  if test x"$have_python" = x"no"; then
-    if test x"$enable_python" = x"yes"; then
-      AC_MSG_ERROR([Building python explicitly requested, but cannot build python bindings])
-    else
-      AC_MSG_WARN([Could not find either PyGTK or the Python headers, not building Python bindings])
-    fi
-  fi
-fi
-AM_CONDITIONAL([HAVE_PYTHON], [test x"$have_python" = x"yes"])
-
 dnl ***************************************************
 dnl *** Check if we need to build the documentation ***
 dnl ***************************************************
@@ -357,8 +302,6 @@ icons/24x24/Makefile
 icons/48x48/Makefile
 pixmaps/Makefile
 po/Makefile.in
-python/Makefile
-python/examples/Makefile
 tests/Makefile
 tests/data/Makefile
 ])
@@ -386,5 +329,4 @@ else
 echo "* Documentation:        no"
 fi
 echo "* GNU Visibility:       $have_gnuc_visibility"
-echo "* Python Support:       $have_python"
 echo
diff --git a/exo.spec.in b/exo.spec.in
index 3ef14d9..11cd232 100644
--- a/exo.spec.in
+++ b/exo.spec.in
@@ -28,7 +28,7 @@ Static libraries and header files for the exo library.
 %setup -q
 
 %build
-%configure --enable-final --enable-gtk-doc --disable-python --enable-xsltproc
+%configure --enable-final --enable-gtk-doc --enable-xsltproc
 make
 
 %install
diff --git a/python/Makefile.am b/python/Makefile.am
deleted file mode 100644
index 1ff808d..0000000
--- a/python/Makefile.am
+++ /dev/null
@@ -1,76 +0,0 @@
-
-SUBDIRS =								\
-	examples
-
-defsdir = $(datadir)/pygtk/2.0/defs/exo-$(LIBEXO_VERSION_MAJOR).$(LIBEXO_VERSION_MINOR)
-defs_DATA = exo.defs
-
-pyexodir = $(pythondir)
-pyexo_PYTHON = pyexo.py
-
-exomoduledir = $(pyexecdir)/exo-$(LIBEXO_VERSION_MAJOR).$(LIBEXO_VERSION_MINOR)/exo
-exomodule_PYTHON = __init__.py
-
-exobindingsdir = $(pyexecdir)/exo-$(LIBEXO_VERSION_MAJOR).$(LIBEXO_VERSION_MINOR)
-exobindings_LTLIBRARIES = _exo.la
-
-_exo_la_CFLAGS =							\
-	-I$(top_srcdir)							\
-	$(GTK_CFLAGS)							\
-	$(LIBXFCE4UTIL_CFLAGS)						\
-	$(PYGTK_CFLAGS)							\
-	$(PYTHON_INCLUDES)
-
-_exo_la_LDFLAGS =							\
-	-avoid-version							\
-	-export-symbols-regex init_exo					\
-	-module								\
-	-no-undefined
-
-_exo_la_LIBADD =							\
-	$(top_builddir)/exo/libexo-$(LIBEXO_VERSION_API).la		\
-	$(GTK_LIBS)							\
-	$(LIBXFCE4UTIL_LIBS)
-
-_exo_la_SOURCES =							\
-	exomodule.c							\
-	pyexo.h								\
-	pyexobinding.c
-
-nodist__exo_la_SOURCES =						\
-	exo.c
-
-BUILT_SOURCES =								\
-	exo.c
-
-exo.c: $(defs_DATA) $(srcdir)/exo.override Makefile
-.defs.c:
-	$(AM_V_GEN) (cd $(srcdir)							\
-	 && $(PYGOBJECT_CODEGEN)						\
-	    --register $(PYGTK_DEFSDIR)/pango-types.defs		\
-	    --register $(PYGTK_DEFSDIR)/atk-types.defs			\
-	    --register $(PYGTK_DEFSDIR)/gdk-types.defs			\
-	    --register $(PYGTK_DEFSDIR)/gtk-types.defs			\
-	    --override $*.override					\
-	    --prefix $* $*.defs) > xgen-$*.c				\
-	&& cp xgen-$*.c $*.c						\
-	&& rm -f xgen-$*.c
-
-EXTRA_DIST =								\
-	$(defs_DATA)							\
-	$(exomodule_DATA)						\
-	$(pyexo_PYTHON)							\
-        abicheck.sh                                                     \
-	exo.override
-
-CLEANFILES =								\
-	actual-abi							\
-	exo.c								\
-	expected-abi
-
-if HAVE_GNUC_VISIBILITY
-TESTS =									\
-	abicheck.sh
-endif
-
-# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
diff --git a/python/__init__.py b/python/__init__.py
deleted file mode 100644
index 8fcda94..0000000
--- a/python/__init__.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# vim:set ts=4 sw=4 et ai syntax=python:
-#
-# Copyright (c) 2005-2006 os-cillation
-# Copyright (c) 1998-2002 James Henstridge
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-#
-
-# load the required modules:
-from _exo import *
-
-
-
-class BindingWithNegation(Binding):
-    def __init__(self, src_object, src_property, dst_object, dst_property):
-        Binding.__init__(self, src_object, src_property, dst_object, dst_property, lambda value: not value)
-
-
-
-class MutualBindingWithNegation(MutualBinding):
-    def __init__(self, src_object, src_property, dst_object, dst_property):
-        MutualBinding.__init__(self, src_object, src_property, dst_object, dst_property, lambda value: not value, lambda value: not value)
diff --git a/python/abicheck.sh b/python/abicheck.sh
deleted file mode 100755
index 96977f1..0000000
--- a/python/abicheck.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-
-echo 'init_exo' > expected-abi
-nm -D .libs/_exo.so|grep " T " | cut -d ' ' -f 3 | grep -v '^_.*' | sort > actual-abi
-diff -u expected-abi actual-abi && rm expected-abi actual-abi
diff --git a/python/examples/Makefile.am b/python/examples/Makefile.am
deleted file mode 100644
index 7d3c030..0000000
--- a/python/examples/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-noinst_DATA =								\
-	README								\
-	binding.py							\
-	ellipsizing.py							\
-	preferred-applications.py					\
-	toolbars.py							\
-	toolbars.ui
-
-EXTRA_DIST =								\
-	$(noinst_DATA)
-
-# vi:set ts=8 sw=8 noet ai nocindent:
diff --git a/python/examples/README b/python/examples/README
deleted file mode 100644
index 95e9733..0000000
--- a/python/examples/README
+++ /dev/null
@@ -1,2 +0,0 @@
-These are some simple examples, intended to help you see how to
-use libexo's python bindings (pyexo).
diff --git a/python/examples/binding.py b/python/examples/binding.py
deleted file mode 100755
index e129348..0000000
--- a/python/examples/binding.py
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/usr/bin/env python
-#
-# binding.py - Example demonstrating the usage of exo.Binding and
-#              exo.MutualBinding to automatically synchronize GObject
-#              properties.
-#
-#
-# Copyright (c) 2005-2006 os-cillation
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-import pygtk
-pygtk.require('2.0')
-import gobject
-import gtk
-
-import pyexo
-pyexo.require('0.5')
-import exo
-
-
-class BindingWindow(gtk.Window):
-    def __init__(self):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-        self.connect('destroy', gtk.main_quit)
-        self.set_default_size(400, 300)
-
-        self.vbox = gtk.VBox(False, 12);
-        self.vbox.set_border_width(12)
-        self.add(self.vbox)
-        self.vbox.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Binding</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        label = gtk.Label("Title:")
-        hbox.pack_start(label, False, False, 0)
-        label.show()
-
-        entry = gtk.Entry()
-        entry.set_text("Sample Title")
-        self.binding_title = exo.Binding(entry, "text", self, "title")
-        hbox.pack_start(entry, True, True, 0)
-        entry.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        self.button_bind = gtk.Button("Bind")
-        self.button_bind.set_sensitive(False)
-        self.button_bind.connect('clicked', lambda btn: self.bind_title(entry))
-        hbox.pack_start(self.button_bind, False, False, 0)
-        self.button_bind.show()
-
-        self.button_unbind = gtk.Button("Unbind")
-        self.button_unbind.connect('clicked', lambda btn: self.unbind_title())
-        hbox.pack_start(self.button_unbind, False, False, 0)
-        self.button_unbind.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Mutual Binding</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        label = gtk.Label("Text1:")
-        hbox.pack_start(label, False, False, 0)
-        label.show()
-
-        entry1 = gtk.Entry()
-        entry1.set_text("Sample Text")
-        hbox.pack_start(entry1, True, True, 0)
-        entry1.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        label = gtk.Label("Text2:")
-        hbox.pack_start(label, False, False, 0)
-        label.show()
-
-        entry2 = gtk.Entry()
-        hbox.pack_start(entry2, True, True, 0)
-        entry2.show()
-
-        exo.MutualBinding(entry1, "text", entry2, "text")
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Binding With Negation</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        button1 = gtk.CheckButton("Say yes")
-        hbox.pack_start(button1, False, False, 0)
-        button1.show()
-
-        button2 = gtk.CheckButton("Say no")
-        hbox.pack_start(button2, False, False, 0)
-        button2.show()
-
-        exo.MutualBindingWithNegation(button1, "active", button2, "active")
-
-        hbox = gtk.HButtonBox()
-        hbox.set_layout(gtk.BUTTONBOX_END)
-        self.vbox.pack_end(hbox, False, False, 0)
-        hbox.show()
-
-        button = gtk.Button(None, gtk.STOCK_CLOSE)
-        button.connect('clicked', gtk.main_quit)
-        hbox.pack_end(button, False, False, 0)
-        button.show()
-
-    def unbind_title(self):
-        self.binding_title.unbind()
-        self.button_bind.set_sensitive(True)
-        self.button_unbind.set_sensitive(False)
-
-    def bind_title(self, entry):
-        self.binding_title = exo.Binding(entry, "text", self, "title")
-        self.button_unbind.set_sensitive(True)
-        self.button_bind.set_sensitive(False)
-
-    def run(self):
-        self.show()
-        gtk.main()
-
-
-window = BindingWindow()
-window.run()
-
-# vim:set ts=4 sw=4 et ai syntax=python:
diff --git a/python/examples/ellipsizing.py b/python/examples/ellipsizing.py
deleted file mode 100755
index b8aad4f..0000000
--- a/python/examples/ellipsizing.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/env python
-#
-# ellipsizing.py - Simple example to demonstrate the usage of
-#                  exo.EllipsizedLabel and exo.CellRendererEllipsizedText,
-#                  which provide text ellipsizing support for Gtk 2.4,
-#                  which also works with Gtk 2.5 and above without the
-#                  need to change your code.
-#
-# vim:set ts=4 sw=4 et ai syntax=python:
-#
-# Copyright (c) 2005 os-cillation
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-import pygtk
-pygtk.require('2.0')
-import gobject
-import gtk
-
-import pyexo
-pyexo.require('0.3')
-import exo
-
-
-class EllipsizingStore(gtk.ListStore):
-    def __init__(self):
-        gtk.ListStore.__init__(self, gobject.TYPE_INT, gobject.TYPE_STRING)
-        for i in range(20):
-            self.append([i, 'Sample Ellipsizing Store Item #%s' % i])
-
-
-class EllipsizingTree(gtk.TreeView):
-    def __init__(self):
-        gtk.TreeView.__init__(self, EllipsizingStore())
-        self.set_headers_visible(True)
-        self.set_rules_hint(True)
-
-        column = gtk.TreeViewColumn('Index')
-        renderer = gtk.CellRendererText()
-        column.pack_start(renderer, True)
-        column.add_attribute(renderer, 'text', 0)
-        self.append_column(column)
-
-        column = gtk.TreeViewColumn('Description')
-        renderer = exo.CellRendererEllipsizedText()
-        renderer.set_property('ellipsize', "end")
-        renderer.set_property('ellipsize-set', True)
-        column.pack_start(renderer, True)
-        column.add_attribute(renderer, 'text', 1)
-        self.append_column(column)
-        self.set_expander_column(column)
-
-
-class EllipsizingWindow(gtk.Window):
-    def __init__(self):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-        self.connect('destroy', gtk.main_quit)
-        self.set_default_size(400, 300)
-        self.set_title('Ellipsizing Demo')
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        self.add(vbox)
-        vbox.show()
-
-        label = gtk.Label('Resize this window to see ' \
-                                    'the ellipsizing effects')
-        vbox.pack_start(label, False, True, 0)
-        label.show()
-
-        swin = gtk.ScrolledWindow()
-        swin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
-        swin.set_shadow_type(gtk.SHADOW_ETCHED_IN)
-        vbox.pack_start(swin, True, True, 0)
-        swin.show()
-
-        tree = EllipsizingTree()
-        swin.add(tree)
-        tree.show()
-
-        bbox = gtk.HButtonBox()
-        bbox.set_layout(gtk.BUTTONBOX_END)
-        vbox.pack_start(bbox, False, True, 0)
-        bbox.show()
-
-        button = gtk.Button(None, gtk.STOCK_QUIT)
-        button.connect('clicked', gtk.main_quit)
-        bbox.pack_start(button, False, False, 0)
-        button.show()
-
-    def run(self):
-        self.show()
-        gtk.main()
-
-
-window = EllipsizingWindow()
-window.run()
diff --git a/python/examples/iconview.py b/python/examples/iconview.py
deleted file mode 100755
index 9efb7d8..0000000
--- a/python/examples/iconview.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python
-#
-# iconview.py - Simple example to demonstrate the usage of
-#               exo.IconView, exo.CellRendererEllipsizedText
-#               and exo.CellRendererIcon classes.
-#
-# vim:set ts=4 sw=4 et ai syntax=python:
-#
-# Copyright (c) 2006 Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-import pygtk
-pygtk.require('2.0')
-import gobject
-import gtk
-
-import pyexo
-pyexo.require('0.5')
-import exo
-
-
-class IconStore(gtk.ListStore):
-    def __init__(self):
-        gtk.ListStore.__init__(self, gobject.TYPE_STRING, gobject.TYPE_STRING)
-        self.append(['gnome-dev-battery', 'Battery'])
-        self.append(['gnome-dev-cdrom', 'CD-ROM'])
-        self.append(['gnome-dev-floppy', 'Floppy'])
-        self.append(['gnome-dev-ipod', 'iPod'])
-        self.append(['gnome-dev-keyboard', 'Keyboard'])
-        self.append(['gnome-dev-printer', 'Printer'])
-
-
-class IconWindow(gtk.Window):
-    def __init__(self):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-        self.connect('destroy', gtk.main_quit)
-        self.set_default_size(400, 300)
-        self.set_title('IconView Demo')
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(6)
-        self.add(vbox)
-        vbox.show()
-
-        swin = gtk.ScrolledWindow()
-        swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        swin.set_shadow_type(gtk.SHADOW_ETCHED_IN)
-        vbox.pack_start(swin, True, True, 0)
-        swin.show()
-
-        view = exo.IconView()
-        view.set_model(IconStore())
-        swin.add(view)
-        view.show()
-
-        renderer = exo.CellRendererIcon()
-        view.pack_start(renderer, True)
-        view.add_attribute(renderer, 'icon', 0)
-
-        renderer = exo.CellRendererEllipsizedText()
-        renderer.set_property('follow-state', True)
-        renderer.set_property('xalign', 0.5)
-        view.pack_start(renderer, False)
-        view.add_attribute(renderer, 'text', 1)
-
-        bbox = gtk.HButtonBox()
-        bbox.set_layout(gtk.BUTTONBOX_END)
-        vbox.pack_start(bbox, False, True, 0)
-        bbox.show()
-
-        button = gtk.Button(None, gtk.STOCK_QUIT)
-        button.connect('clicked', gtk.main_quit)
-        bbox.pack_start(button, False, False, 0)
-        button.show()
-
-    def run(self):
-        self.show()
-        gtk.main()
-
-
-window = IconWindow()
-window.run()
diff --git a/python/examples/preferred-applications.py b/python/examples/preferred-applications.py
deleted file mode 100755
index 246edd1..0000000
--- a/python/examples/preferred-applications.py
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env python
-#
-# preferred-applications.py - Example demonstrating the usage of the preferred
-#                             applications and the URL modules in libexo.
-#
-#
-# Copyright (c) 2005-2006 os-cillation
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-import pygtk
-pygtk.require('2.0')
-import gobject
-import gtk
-
-import pyexo
-pyexo.require('0.5')
-import exo
-
-
-class PreferredWindow(gtk.Window):
-    def __init__(self):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-        self.connect('destroy', gtk.main_quit)
-        self.set_title("Preferred Applications")
-
-        self.vbox = gtk.VBox(False, 12);
-        self.vbox.set_border_width(12)
-        self.add(self.vbox)
-        self.vbox.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Preferred Applications</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-        
-        button = gtk.Button("Open Preferred Web Browser")
-        button.connect('clicked', lambda btn: exo.execute_preferred_application("WebBrowser"))
-        vbox.pack_start(button, False, False, 0)
-        button.show()
-
-        button = gtk.Button("Open Preferred Mail Reader")
-        button.connect('clicked', lambda btn: exo.execute_preferred_application("MailReader"))
-        vbox.pack_start(button, False, False, 0)
-        button.show()
-
-        button = gtk.Button("Open Preferred Terminal Emulator")
-        button.connect('clicked', lambda btn: exo.execute_preferred_application("TerminalEmulator"))
-        vbox.pack_start(button, False, False, 0)
-        button.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Executing in Terminal</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        entry_cmd = gtk.Entry()
-        entry_cmd.set_text("bash")
-        hbox.pack_start(entry_cmd, True, True, 0)
-        entry_cmd.show()
-
-        button = gtk.Button("Run in Terminal")
-        button.connect('clicked', lambda btn: exo.execute_terminal_shell(entry_cmd.get_text()))
-        hbox.pack_start(button, False, False, 0)
-        button.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_NONE)
-        self.vbox.pack_start(frame, False, False, 0)
-        frame.show()
-
-        label = gtk.Label("<b>Opening URLs</b>")
-        label.set_use_markup(True)
-        frame.set_label_widget(label)
-        label.show()
-
-        vbox = gtk.VBox(False, 12)
-        vbox.set_border_width(12)
-        frame.add(vbox)
-        vbox.show()
-
-        hbox = gtk.HBox(False, 6)
-        vbox.pack_start(hbox, False, False, 0)
-        hbox.show()
-
-        entry_url = gtk.Entry()
-        entry_url.set_text("http://www.xfce.org")
-        hbox.pack_start(entry_url, True, True, 0)
-        entry_url.show()
-
-        button = gtk.Button("Open URL")
-        button.connect('clicked', lambda btn: exo.url_show(entry_url.get_text()))
-        hbox.pack_start(button, False, False, 0)
-        button.show()
-
-        hbox = gtk.HButtonBox()
-        hbox.set_layout(gtk.BUTTONBOX_END)
-        self.vbox.pack_end(hbox, False, False, 0)
-        hbox.show()
-
-        button = gtk.Button(None, gtk.STOCK_CLOSE)
-        button.connect('clicked', gtk.main_quit)
-        hbox.pack_end(button, False, False, 0)
-        button.show()
-
-    def run(self):
-        self.show()
-        gtk.main()
-
-
-window = PreferredWindow()
-window.run()
-
-# vim:set ts=4 sw=4 et ai syntax=python:
diff --git a/python/examples/toolbars.py b/python/examples/toolbars.py
deleted file mode 100755
index 76ae4e4..0000000
--- a/python/examples/toolbars.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-#
-# toolbars.py - Simple example to demonstrate the usage of the editable
-#               toolbars framework in libexo.
-#
-# vim:set ts=4 sw=4 et ai syntax=python:
-#
-# Copyright (c) 2005 os-cillation
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-
-import pygtk
-pygtk.require('2.0')
-import gobject
-import gtk
-
-import pyexo
-pyexo.require('0.5')
-import exo
-
-
-class ToolbarsStore(exo.ToolbarsModel):
-    def __init__(self):
-        exo.ToolbarsModel.__init__(self)
-        self.set_actions(['up', 'down', 'forward', 'back', 'help', 'home'])
-        self.load_from_file('toolbars.ui')
-
-
-
-class ToolbarsView(exo.ToolbarsView):
-    def __init__(self, manager):
-        exo.ToolbarsView.__init__(self, manager, ToolbarsStore())
-        self.connect('customize', lambda self: self.customize())
-
-
-    def customize(self):
-        self.set_editing(True)
-
-        dialog = exo.ToolbarsEditorDialog(self.get_ui_manager(), self.get_model())
-        dialog.set_title('Toolbar Editor')
-        dialog.set_transient_for(self.get_toplevel())
-        dialog.connect('destroy', lambda dialog: self.set_editing(False))
-        dialog.show()
-
-
-
-class ToolbarsWindow(gtk.Window):
-    def __init__(self):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
-        self.connect('destroy', lambda self: gtk.main_quit())
-        self.set_default_size(400, 300)
-        self.set_title('Toolbars example')
-
-        group = gtk.ActionGroup('toolbars-window')
-        group.add_actions([
-              ('up', gtk.STOCK_GO_UP, 'Up', '<Control>u', None,
-               lambda btn, self: self.label.set_label('<big>Up</big>')),
-              ('down', gtk.STOCK_GO_DOWN, 'Down', '<Control>d', None,
-               lambda btn, self: self.label.set_label('<big>Down</big>')),
-              ('forward', gtk.STOCK_GO_FORWARD, 'Forward', '<Control>f', None,
-               lambda btn, self: self.label.set_label('<big>Forward</big>')),
-              ('back', gtk.STOCK_GO_BACK, 'Back', '<Control>b', None,
-               lambda btn, self: self.label.set_label('<big>Back</big>')),
-              ('help', gtk.STOCK_HELP, 'Help me', '<Control>h', None,
-               lambda btn, self: self.label.set_label('<big>Help ME!</big>')),
-              ('home', gtk.STOCK_HOME, 'Home', '<Control>a', None,
-               lambda btn, self: self.label.set_label('<big>Anybody\'s Home?</big>'))
-        ], self)
-
-        manager = gtk.UIManager()
-        manager.insert_action_group(group, 0)
-        self.add_accel_group(manager.get_accel_group())
-
-        vbox = gtk.VBox(False, 0)
-        self.add(vbox)
-        vbox.show()
-
-        view = ToolbarsView(manager)
-        vbox.pack_start(view, False, False, 0)
-        view.show()
-
-        frame = gtk.Frame()
-        frame.set_shadow_type(gtk.SHADOW_ETCHED_IN)
-        vbox.pack_start(frame, True, True, 0)
-        frame.show()
-
-        self.label = gtk.Label()
-        self.label.set_use_markup(True)
-        frame.add(self.label)
-        self.label.show()
-
-
-    def run(self):
-        self.show()
-        gtk.main()
-
-
-window = ToolbarsWindow()
-window.run()
diff --git a/python/examples/toolbars.ui b/python/examples/toolbars.ui
deleted file mode 100644
index 91cbf0b..0000000
--- a/python/examples/toolbars.ui
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE toolbars SYSTEM "toolbars.dtd">
-
-<!--
-  Copyright (c) 2005 os-cillation
-
-  Example toolbar configuration.
--->
-
-<toolbars>
-  <toolbar name="main" style="both-horiz">
-    <toolitem id="up" />
-    <toolitem id="down" />
-
-    <separator />
-
-    <toolitem id="forward" />
-    <toolitem id="back" />
-  </toolbar>
-</toolbars>
-
-<!-- vi:set ts=2 sw=2 ai et: -->
diff --git a/python/exo.defs b/python/exo.defs
deleted file mode 100644
index ea777ac..0000000
--- a/python/exo.defs
+++ /dev/null
@@ -1,1392 +0,0 @@
-;; -*- scheme -*-
-; object definitions ...
-(define-object CellRendererEllipsizedText
-  (in-module "Exo")
-  (parent "GtkCellRendererText")
-  (c-name "ExoCellRendererEllipsizedText")
-  (gtype-id "EXO_TYPE_CELL_RENDERER_ELLIPSIZED_TEXT")
-)
-
-(define-object CellRendererIcon
-  (in-module "Exo")
-  (parent "GtkCellRenderer")
-  (c-name "ExoCellRendererIcon")
-  (gtype-id "EXO_TYPE_CELL_RENDERER_ICON")
-)
-
-(define-object IconBar
-  (in-module "Exo")
-  (parent "GtkContainer")
-  (c-name "ExoIconBar")
-  (gtype-id "EXO_TYPE_ICON_BAR")
-)
-
-(define-object IconView
-  (in-module "Exo")
-  (parent "GtkContainer")
-  (c-name "ExoIconView")
-  (gtype-id "EXO_TYPE_ICON_VIEW")
-  (implements "GtkCellLayout")
-)
-
-(define-object ToolbarsEditor
-  (in-module "Exo")
-  (parent "GtkVBox")
-  (c-name "ExoToolbarsEditor")
-  (gtype-id "EXO_TYPE_TOOLBARS_EDITOR")
-)
-
-(define-object ToolbarsEditorDialog
-  (in-module "Exo")
-  (parent "GtkDialog")
-  (c-name "ExoToolbarsEditorDialog")
-  (gtype-id "EXO_TYPE_TOOLBARS_EDITOR_DIALOG")
-)
-
-(define-object ToolbarsModel
-  (in-module "Exo")
-  (parent "GObject")
-  (c-name "ExoToolbarsModel")
-  (gtype-id "EXO_TYPE_TOOLBARS_MODEL")
-)
-
-(define-object ToolbarsView
-  (in-module "Exo")
-  (parent "GtkVBox")
-  (c-name "ExoToolbarsView")
-  (gtype-id "EXO_TYPE_TOOLBARS_VIEW")
-)
-
-(define-object TreeView
-  (in-module "Exo")
-  (parent "GtkTreeView")
-  (c-name "ExoTreeView")
-  (gtype-id "EXO_TYPE_TREE_VIEW")
-)
-
-(define-object WrapTable
-  (in-module "Exo")
-  (parent "GtkContainer")
-  (c-name "ExoWrapTable")
-  (gtype-id "EXO_TYPE_WRAP_TABLE")
-)
-
-(define-object XsessionClient
-  (in-module "Exo")
-  (parent "GObject")
-  (c-name "ExoXsessionClient")
-  (gtype-id "EXO_TYPE_XSESSION_CLIENT")
-)
-
-;; Enumerations and flags ...
-
-(define-enum IconViewDropPosition
-  (in-module "Exo")
-  (c-name "ExoIconViewDropPosition")
-  (gtype-id "EXO_TYPE_ICON_VIEW_DROP_POSITION")
-  (values
-    '("no-drop" "EXO_ICON_VIEW_NO_DROP")
-    '("drop-into" "EXO_ICON_VIEW_DROP_INTO")
-    '("drop-left" "EXO_ICON_VIEW_DROP_LEFT")
-    '("drop-right" "EXO_ICON_VIEW_DROP_RIGHT")
-    '("drop-above" "EXO_ICON_VIEW_DROP_ABOVE")
-    '("drop-below" "EXO_ICON_VIEW_DROP_BELOW")
-  )
-)
-
-(define-flags ToolbarsModelFlags
-  (in-module "Exo")
-  (c-name "ExoToolbarsModelFlags")
-  (gtype-id "EXO_TYPE_TOOLBARS_MODEL_FLAGS")
-  (values
-    '("not-removable" "EXO_TOOLBARS_MODEL_NOT_REMOVABLE")
-    '("accept-items-only" "EXO_TOOLBARS_MODEL_ACCEPT_ITEMS_ONLY")
-    '("override-style" "EXO_TOOLBARS_MODEL_OVERRIDE_STYLE")
-  )
-)
-
-
-
-;; From ../exo/exo-cell-renderer-ellipsized-text.h
-
-(define-function exo_cell_renderer_ellipsized_text_get_type
-  (c-name "exo_cell_renderer_ellipsized_text_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_cell_renderer_ellipsized_text_new
-  (c-name "exo_cell_renderer_ellipsized_text_new")
-  (is-constructor-of "ExoCellRendererEllipsizedText")
-  (return-type "GtkCellRenderer*")
-)
-
-
-
-;; From ../exo/exo-cell-renderer-icon.h
-
-(define-function exo_cell_renderer_icon_get_type
-  (c-name "exo_cell_renderer_icon_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_cell_renderer_icon_new
-  (c-name "exo_cell_renderer_icon_new")
-  (is-constructor-of "ExoCellRendererIcon")
-  (return-type "GtkCellRenderer*")
-)
-
-
-
-;; From ../exo/exo-enum-types.h
-
-(define-function exo_icon_view_drop_position_get_type
-  (c-name "exo_icon_view_drop_position_get_type")
-  (return-type "GType")
-)
-
-
-(define-function exo_toolbars_model_flags_get_type
-  (c-name "exo_toolbars_model_flags_get_type")
-  (return-type "GType")
-)
-
-
-
-;; From ../exo/exo-execute.h
-
-(define-function execute_preferred_application
-  (c-name "exo_execute_preferred_application")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "category")
-    '("const-gchar*" "parameter")
-    '("const-gchar*" "working_directory")
-    '("gchar**" "envp")
-    '("GError**" "error")
-  )
-)
-
-(define-function execute_preferred_application_on_screen
-  (c-name "exo_execute_preferred_application_on_screen")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "category")
-    '("const-gchar*" "parameter")
-    '("const-gchar*" "working_directory")
-    '("gchar**" "envp")
-    '("GdkScreen*" "screen")
-    '("GError**" "error")
-  )
-)
-
-(define-function execute_terminal_shell
-  (c-name "exo_execute_terminal_shell")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "command_line")
-    '("const-gchar*" "working_directory")
-    '("gchar**" "envp")
-    '("GError**" "error")
-  )
-)
-
-(define-function execute_terminal_shell_on_screen
-  (c-name "exo_execute_terminal_shell_on_screen")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "command_line")
-    '("const-gchar*" "working_directory")
-    '("gchar**" "envp")
-    '("GdkScreen*" "screen")
-    '("GError**" "error")
-  )
-)
-
-
-
-;; From ../exo/exo-gdk-pixbuf-extensions.h
-
-(define-function exo_gdk_pixbuf_colorize
-  (c-name "exo_gdk_pixbuf_colorize")
-  (return-type "GdkPixbuf*")
-  (parameters
-    '("const-GdkPixbuf*" "src")
-    '("const-GdkColor*" "color")
-  )
-)
-
-(define-function exo_gdk_pixbuf_lucent
-  (c-name "exo_gdk_pixbuf_lucent")
-  (return-type "GdkPixbuf*")
-  (parameters
-    '("const-GdkPixbuf*" "src")
-    '("guint" "percent")
-  )
-)
-
-(define-function exo_gdk_pixbuf_spotlight
-  (c-name "exo_gdk_pixbuf_spotlight")
-  (return-type "GdkPixbuf*")
-  (parameters
-    '("const-GdkPixbuf*" "src")
-  )
-)
-
-(define-function exo_gdk_pixbuf_scale_down
-  (c-name "exo_gdk_pixbuf_scale_down")
-  (return-type "GdkPixbuf*")
-  (parameters
-    '("GdkPixbuf*" "source")
-    '("gboolean" "aspect_ratio")
-    '("gint" "dest_width")
-    '("gint" "dest_height")
-  )
-)
-
-(define-function exo_gdk_pixbuf_scale_ratio
-  (c-name "exo_gdk_pixbuf_scale_ratio")
-  (return-type "GdkPixbuf*")
-  (parameters
-    '("GdkPixbuf*" "source")
-    '("gint" "dest_size")
-  )
-)
-
-
-
-;; From ../exo/exo-icon-bar.h
-
-(define-function exo_icon_bar_get_type
-  (c-name "exo_icon_bar_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_icon_bar_new
-  (c-name "exo_icon_bar_new")
-  (is-constructor-of "ExoIconBar")
-  (return-type "GtkWidget*")
-)
-
-(define-function exo_icon_bar_new_with_model
-  (c-name "exo_icon_bar_new_with_model")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkTreeModel*" "model")
-  )
-)
-
-(define-method get_model
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_model")
-  (return-type "GtkTreeModel*")
-)
-
-(define-method set_model
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_model")
-  (return-type "none")
-  (parameters
-    '("GtkTreeModel*" "model")
-  )
-)
-
-(define-method get_pixbuf_column
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_pixbuf_column")
-  (return-type "gint")
-)
-
-(define-method set_pixbuf_column
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_pixbuf_column")
-  (return-type "none")
-  (parameters
-    '("gint" "column")
-  )
-)
-
-(define-method get_text_column
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_text_column")
-  (return-type "gint")
-)
-
-(define-method set_text_column
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_text_column")
-  (return-type "none")
-  (parameters
-    '("gint" "column")
-  )
-)
-
-(define-method get_orientation
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_orientation")
-  (return-type "GtkOrientation")
-)
-
-(define-method set_orientation
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_orientation")
-  (return-type "none")
-  (parameters
-    '("GtkOrientation" "orientation")
-  )
-)
-
-(define-method get_active
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_active")
-  (return-type "gint")
-)
-
-(define-method set_active
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_active")
-  (return-type "none")
-  (parameters
-    '("gint" "idx")
-  )
-)
-
-(define-method get_active_iter
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_get_active_iter")
-  (return-type "gboolean")
-  (parameters
-    '("GtkTreeIter*" "iter")
-  )
-)
-
-(define-method set_active_iter
-  (of-object "ExoIconBar")
-  (c-name "exo_icon_bar_set_active_iter")
-  (return-type "none")
-  (parameters
-    '("GtkTreeIter*" "iter")
-  )
-)
-
-
-
-;; From ../exo/exo-icon-view.h
-
-(define-function exo_icon_view_get_type
-  (c-name "exo_icon_view_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_icon_view_new
-  (c-name "exo_icon_view_new")
-  (is-constructor-of "ExoIconView")
-  (return-type "GtkWidget*")
-)
-
-(define-function exo_icon_view_new_with_model
-  (c-name "exo_icon_view_new_with_model")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkTreeModel*" "model")
-  )
-)
-
-(define-method get_model
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_model")
-  (return-type "GtkTreeModel*")
-)
-
-(define-method set_model
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_model")
-  (return-type "none")
-  (parameters
-    '("GtkTreeModel*" "model")
-  )
-)
-
-(define-method get_orientation
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_orientation")
-  (return-type "GtkOrientation")
-)
-
-(define-method set_orientation
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_orientation")
-  (return-type "none")
-  (parameters
-    '("GtkOrientation" "orientation")
-  )
-)
-
-(define-method get_columns
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_columns")
-  (return-type "gint")
-)
-
-(define-method set_columns
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_columns")
-  (return-type "none")
-  (parameters
-    '("gint" "columns")
-  )
-)
-
-(define-method get_item_width
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_item_width")
-  (return-type "gint")
-)
-
-(define-method set_item_width
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_item_width")
-  (return-type "none")
-  (parameters
-    '("gint" "item_width")
-  )
-)
-
-(define-method get_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_spacing")
-  (return-type "gint")
-)
-
-(define-method set_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_spacing")
-  (return-type "none")
-  (parameters
-    '("gint" "spacing")
-  )
-)
-
-(define-method get_row_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_row_spacing")
-  (return-type "gint")
-)
-
-(define-method set_row_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_row_spacing")
-  (return-type "none")
-  (parameters
-    '("gint" "row_spacing")
-  )
-)
-
-(define-method get_column_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_column_spacing")
-  (return-type "gint")
-)
-
-(define-method set_column_spacing
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_column_spacing")
-  (return-type "none")
-  (parameters
-    '("gint" "column_spacing")
-  )
-)
-
-(define-method get_margin
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_margin")
-  (return-type "gint")
-)
-
-(define-method set_margin
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_margin")
-  (return-type "none")
-  (parameters
-    '("gint" "margin")
-  )
-)
-
-(define-method get_selection_mode
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_selection_mode")
-  (return-type "GtkSelectionMode")
-)
-
-(define-method set_selection_mode
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_selection_mode")
-  (return-type "none")
-  (parameters
-    '("GtkSelectionMode" "mode")
-  )
-)
-
-(define-method get_single_click
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_single_click")
-  (return-type "gboolean")
-)
-
-(define-method set_single_click
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_single_click")
-  (return-type "none")
-  (parameters
-    '("gboolean" "single_click")
-  )
-)
-
-(define-method get_single_click_timeout
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_single_click_timeout")
-  (return-type "guint")
-)
-
-(define-method set_single_click_timeout
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_single_click_timeout")
-  (return-type "none")
-  (parameters
-    '("guint" "single_click_timeout")
-  )
-)
-
-(define-method widget_to_icon_coords
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_widget_to_icon_coords")
-  (return-type "none")
-  (parameters
-    '("gint" "wx")
-    '("gint" "wy")
-    '("gint*" "ix")
-    '("gint*" "iy")
-  )
-)
-
-(define-method icon_to_widget_coords
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_icon_to_widget_coords")
-  (return-type "none")
-  (parameters
-    '("gint" "ix")
-    '("gint" "iy")
-    '("gint*" "wx")
-    '("gint*" "wy")
-  )
-)
-
-(define-method get_path_at_pos
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_path_at_pos")
-  (return-type "GtkTreePath*")
-  (parameters
-    '("gint" "x")
-    '("gint" "y")
-  )
-)
-
-(define-method get_item_at_pos
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_item_at_pos")
-  (return-type "gboolean")
-  (parameters
-    '("gint" "x")
-    '("gint" "y")
-    '("GtkTreePath**" "path")
-    '("GtkCellRenderer**" "cell")
-  )
-)
-
-(define-method get_visible_range
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_visible_range")
-  (return-type "gboolean")
-  (parameters
-    '("GtkTreePath**" "start_path")
-    '("GtkTreePath**" "end_path")
-  )
-)
-
-(define-method selected_foreach
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_selected_foreach")
-  (return-type "none")
-  (parameters
-    '("ExoIconViewForeachFunc" "func")
-    '("gpointer" "data")
-  )
-)
-
-(define-method select_path
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_select_path")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-  )
-)
-
-(define-method unselect_path
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_unselect_path")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-  )
-)
-
-(define-method path_is_selected
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_path_is_selected")
-  (return-type "gboolean")
-  (parameters
-    '("GtkTreePath*" "path")
-  )
-)
-
-(define-method get_selected_items
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_selected_items")
-  (return-type "GList*")
-)
-
-(define-method select_all
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_select_all")
-  (return-type "none")
-)
-
-(define-method unselect_all
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_unselect_all")
-  (return-type "none")
-)
-
-(define-method item_activated
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_item_activated")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-  )
-)
-
-(define-method get_cursor
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_cursor")
-  (return-type "gboolean")
-  (parameters
-    '("GtkTreePath**" "path")
-    '("GtkCellRenderer**" "cell")
-  )
-)
-
-(define-method set_cursor
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_cursor")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-    '("GtkCellRenderer*" "cell")
-    '("gboolean" "start_editing")
-  )
-)
-
-(define-method scroll_to_path
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_scroll_to_path")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-    '("gboolean" "use_align")
-    '("gfloat" "row_align")
-    '("gfloat" "col_align")
-  )
-)
-
-(define-method enable_model_drag_source
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_enable_model_drag_source")
-  (return-type "none")
-  (parameters
-    '("GdkModifierType" "start_button_mask")
-    '("const-GtkTargetEntry*" "targets")
-    '("gint" "n_targets")
-    '("GdkDragAction" "actions")
-  )
-)
-
-(define-method enable_model_drag_dest
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_enable_model_drag_dest")
-  (return-type "none")
-  (parameters
-    '("const-GtkTargetEntry*" "targets")
-    '("gint" "n_targets")
-    '("GdkDragAction" "actions")
-  )
-)
-
-(define-method unset_model_drag_source
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_unset_model_drag_source")
-  (return-type "none")
-)
-
-(define-method unset_model_drag_dest
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_unset_model_drag_dest")
-  (return-type "none")
-)
-
-(define-method set_reorderable
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_reorderable")
-  (return-type "none")
-  (parameters
-    '("gboolean" "reorderable")
-  )
-)
-
-(define-method get_reorderable
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_reorderable")
-  (return-type "gboolean")
-)
-
-(define-method set_drag_dest_item
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_drag_dest_item")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath*" "path")
-    '("ExoIconViewDropPosition" "pos")
-  )
-)
-
-(define-method get_drag_dest_item
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_drag_dest_item")
-  (return-type "none")
-  (parameters
-    '("GtkTreePath**" "path")
-    '("ExoIconViewDropPosition*" "pos")
-  )
-)
-
-(define-method get_dest_item_at_pos
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_dest_item_at_pos")
-  (return-type "gboolean")
-  (parameters
-    '("gint" "drag_x")
-    '("gint" "drag_y")
-    '("GtkTreePath**" "path")
-    '("ExoIconViewDropPosition*" "pos")
-  )
-)
-
-(define-method create_drag_icon
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_create_drag_icon")
-  (return-type "GdkPixmap*")
-  (parameters
-    '("GtkTreePath*" "path")
-  )
-)
-
-(define-method get_enable_search
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_enable_search")
-  (return-type "gboolean")
-)
-
-(define-method set_enable_search
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_enable_search")
-  (return-type "none")
-  (parameters
-    '("gboolean" "enable_search")
-  )
-)
-
-(define-method get_search_column
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_search_column")
-  (return-type "gint")
-)
-
-(define-method set_search_column
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_search_column")
-  (return-type "none")
-  (parameters
-    '("gint" "search_column")
-  )
-)
-
-(define-method get_search_equal_func
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_search_equal_func")
-  (return-type "ExoIconViewSearchEqualFunc")
-)
-
-(define-method set_search_equal_func
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_search_equal_func")
-  (return-type "none")
-  (parameters
-    '("ExoIconViewSearchEqualFunc" "search_equal_func")
-    '("gpointer" "search_equal_data")
-    '("GDestroyNotify" "search_equal_destroy")
-  )
-)
-
-(define-method get_search_position_func
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_get_search_position_func")
-  (return-type "ExoIconViewSearchPositionFunc")
-)
-
-(define-method set_search_position_func
-  (of-object "ExoIconView")
-  (c-name "exo_icon_view_set_search_position_func")
-  (return-type "none")
-  (parameters
-    '("ExoIconViewSearchPositionFunc" "search_position_func")
-    '("gpointer" "search_position_data")
-    '("GDestroyNotify" "search_position_destroy")
-  )
-)
-
-
-
-;; From ../exo/exo-toolbars-editor-dialog.h
-
-(define-function exo_toolbars_editor_dialog_get_type
-  (c-name "exo_toolbars_editor_dialog_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_toolbars_editor_dialog_new_with_model
-  (c-name "exo_toolbars_editor_dialog_new_with_model")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-    '("ExoToolbarsModel*" "model")
-  )
-)
-
-
-
-;; From ../exo/exo-toolbars-editor.h
-
-(define-function exo_toolbars_editor_get_type
-  (c-name "exo_toolbars_editor_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_toolbars_editor_new
-  (c-name "exo_toolbars_editor_new")
-  (is-constructor-of "ExoToolbarsEditor")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-  )
-)
-
-(define-function exo_toolbars_editor_new_with_model
-  (c-name "exo_toolbars_editor_new_with_model")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-    '("ExoToolbarsModel*" "model")
-  )
-)
-
-(define-method get_model
-  (of-object "ExoToolbarsEditor")
-  (c-name "exo_toolbars_editor_get_model")
-  (return-type "ExoToolbarsModel*")
-)
-
-(define-method set_model
-  (of-object "ExoToolbarsEditor")
-  (c-name "exo_toolbars_editor_set_model")
-  (return-type "none")
-  (parameters
-    '("ExoToolbarsModel*" "model")
-  )
-)
-
-(define-method get_ui_manager
-  (of-object "ExoToolbarsEditor")
-  (c-name "exo_toolbars_editor_get_ui_manager")
-  (return-type "GtkUIManager*")
-)
-
-(define-method set_ui_manager
-  (of-object "ExoToolbarsEditor")
-  (c-name "exo_toolbars_editor_set_ui_manager")
-  (return-type "none")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-  )
-)
-
-
-
-;; From ../exo/exo-toolbars-model.h
-
-(define-function exo_toolbars_model_get_type
-  (c-name "exo_toolbars_model_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_toolbars_model_new
-  (c-name "exo_toolbars_model_new")
-  (is-constructor-of "ExoToolbarsModel")
-  (return-type "ExoToolbarsModel*")
-)
-
-(define-method set_actions
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_set_actions")
-  (return-type "none")
-  (parameters
-    '("gchar**" "actions")
-    '("guint" "n_actions")
-  )
-)
-
-(define-method get_actions
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_actions")
-  (return-type "gchar**")
-)
-
-(define-method load_from_file
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_load_from_file")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "filename")
-    '("GError**" "error")
-  )
-)
-
-(define-method save_to_file
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_save_to_file")
-  (return-type "gboolean")
-  (parameters
-    '("const-gchar*" "filename")
-    '("GError**" "error")
-  )
-)
-
-(define-method get_flags
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_flags")
-  (return-type "ExoToolbarsModelFlags")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method set_flags
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_set_flags")
-  (return-type "none")
-  (parameters
-    '("ExoToolbarsModelFlags" "flags")
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method get_style
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_style")
-  (return-type "GtkToolbarStyle")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method set_style
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_set_style")
-  (return-type "none")
-  (parameters
-    '("GtkToolbarStyle" "style")
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method unset_style
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_unset_style")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method get_item_type
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_item_type")
-  (return-type "gchar*")
-  (parameters
-    '("GdkAtom" "dnd_type")
-  )
-)
-
-(define-method get_item_id
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_item_id")
-  (return-type "gchar*")
-  (parameters
-    '("const-gchar*" "type")
-    '("const-gchar*" "name")
-  )
-)
-
-(define-method get_item_data
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_get_item_data")
-  (return-type "gchar*")
-  (parameters
-    '("const-gchar*" "type")
-    '("const-gchar*" "id")
-  )
-)
-
-(define-method add_item
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_add_item")
-  (return-type "gboolean")
-  (parameters
-    '("gint" "toolbar_position")
-    '("gint" "item_position")
-    '("const-gchar*" "id")
-    '("const-gchar*" "type")
-  )
-)
-
-(define-method add_separator
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_add_separator")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-    '("gint" "item_position")
-  )
-)
-
-(define-method add_toolbar
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_add_toolbar")
-  (return-type "gint")
-  (parameters
-    '("gint" "toolbar_position")
-    '("const-gchar*" "name")
-  )
-)
-
-(define-method move_item
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_move_item")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-    '("gint" "item_position")
-    '("gint" "new_toolbar_position")
-    '("gint" "new_item_position")
-  )
-)
-
-(define-method remove_item
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_remove_item")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-    '("gint" "item_position")
-  )
-)
-
-(define-method remove_toolbar
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_remove_toolbar")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method n_items
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_n_items")
-  (return-type "gint")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-(define-method item_nth
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_item_nth")
-  (return-type "none")
-  (parameters
-    '("gint" "toolbar_position")
-    '("gint" "item_position")
-    '("gboolean*" "is_separator")
-    '("const-gchar**" "id")
-    '("const-gchar**" "type")
-  )
-)
-
-(define-method n_toolbars
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_n_toolbars")
-  (return-type "gint")
-)
-
-(define-method toolbar_nth
-  (of-object "ExoToolbarsModel")
-  (c-name "exo_toolbars_model_toolbar_nth")
-  (return-type "const-gchar*")
-  (parameters
-    '("gint" "toolbar_position")
-  )
-)
-
-
-
-;; From ../exo/exo-toolbars-view.h
-
-(define-function exo_toolbars_view_get_type
-  (c-name "exo_toolbars_view_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_toolbars_view_new_with_model
-  (c-name "exo_toolbars_view_new_with_model")
-  (is-constructor-of "ExoToolbarsView")
-  (return-type "GtkWidget*")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-    '("ExoToolbarsModel*" "model")
-  )
-)
-
-(define-method get_editing
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_get_editing")
-  (return-type "gboolean")
-)
-
-(define-method set_editing
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_set_editing")
-  (return-type "none")
-  (parameters
-    '("gboolean" "editing")
-  )
-)
-
-(define-method get_model
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_get_model")
-  (return-type "ExoToolbarsModel*")
-)
-
-(define-method set_model
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_set_model")
-  (return-type "none")
-  (parameters
-    '("ExoToolbarsModel*" "model")
-  )
-)
-
-(define-method get_ui_manager
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_get_ui_manager")
-  (return-type "GtkUIManager*")
-)
-
-(define-method set_ui_manager
-  (of-object "ExoToolbarsView")
-  (c-name "exo_toolbars_view_set_ui_manager")
-  (return-type "none")
-  (parameters
-    '("GtkUIManager*" "ui_manager")
-  )
-)
-
-
-
-;; From ../exo/exo-tree-view.h
-
-(define-function exo_tree_view_get_type
-  (c-name "exo_tree_view_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_tree_view_new
-  (c-name "exo_tree_view_new")
-  (is-constructor-of "ExoTreeView")
-  (return-type "GtkWidget*")
-)
-
-(define-method get_single_click
-  (of-object "ExoTreeView")
-  (c-name "exo_tree_view_get_single_click")
-  (return-type "gboolean")
-)
-
-(define-method set_single_click
-  (of-object "ExoTreeView")
-  (c-name "exo_tree_view_set_single_click")
-  (return-type "none")
-  (parameters
-    '("gboolean" "single_click")
-  )
-)
-
-(define-method get_single_click_timeout
-  (of-object "ExoTreeView")
-  (c-name "exo_tree_view_get_single_click_timeout")
-  (return-type "guint")
-)
-
-(define-method set_single_click_timeout
-  (of-object "ExoTreeView")
-  (c-name "exo_tree_view_set_single_click_timeout")
-  (return-type "none")
-  (parameters
-    '("guint" "single_click_timeout")
-  )
-)
-
-
-
-;; From ../exo/exo-wrap-table.h
-
-(define-function exo_wrap_table_get_type
-  (c-name "exo_wrap_table_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_wrap_table_new
-  (c-name "exo_wrap_table_new")
-  (is-constructor-of "ExoWrapTable")
-  (return-type "GtkWidget*")
-  (parameters
-    '("gboolean" "homogeneous")
-  )
-)
-
-(define-method get_col_spacing
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_get_col_spacing")
-  (return-type "guint")
-)
-
-(define-method set_col_spacing
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_set_col_spacing")
-  (return-type "none")
-  (parameters
-    '("guint" "col_spacing")
-  )
-)
-
-(define-method get_row_spacing
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_get_row_spacing")
-  (return-type "guint")
-)
-
-(define-method set_row_spacing
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_set_row_spacing")
-  (return-type "none")
-  (parameters
-    '("guint" "row_spacing")
-  )
-)
-
-(define-method get_homogeneous
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_get_homogeneous")
-  (return-type "gboolean")
-)
-
-(define-method set_homogeneous
-  (of-object "ExoWrapTable")
-  (c-name "exo_wrap_table_set_homogeneous")
-  (return-type "none")
-  (parameters
-    '("gboolean" "homogeneous")
-  )
-)
-
-
-
-;; From ../exo/exo-xsession-client.h
-
-(define-function exo_xsession_client_get_type
-  (c-name "exo_xsession_client_get_type")
-  (return-type "GType")
-)
-
-(define-function exo_xsession_client_new_with_group
-  (c-name "exo_xsession_client_new_with_group")
-  (return-type "ExoXsessionClient*")
-  (parameters
-    '("GdkWindow*" "leader")
-  )
-)
-
-(define-method get_group
-  (of-object "ExoXsessionClient")
-  (c-name "exo_xsession_client_get_group")
-  (return-type "GdkWindow*")
-)
-
-(define-method set_group
-  (of-object "ExoXsessionClient")
-  (c-name "exo_xsession_client_set_group")
-  (return-type "none")
-  (parameters
-    '("GdkWindow*" "leader")
-  )
-)
-
-(define-method get_restart_command
-  (of-object "ExoXsessionClient")
-  (c-name "exo_xsession_client_get_restart_command")
-  (return-type "gboolean")
-  (parameters
-    '("gchar***" "argv")
-    '("gint*" "argc")
-  )
-)
-
-(define-method set_restart_command
-  (of-object "ExoXsessionClient")
-  (c-name "exo_xsession_client_set_restart_command")
-  (return-type "none")
-  (parameters
-    '("gchar**" "argv")
-    '("gint" "argc")
-  )
-)
-
diff --git a/python/exo.override b/python/exo.override
deleted file mode 100644
index 3b6b528..0000000
--- a/python/exo.override
+++ /dev/null
@@ -1,493 +0,0 @@
-/* vim:set ts=2 sw=2 et ai syntax=c cindent: */
-/*-
- * Copyright (c) 2005 os-cillation e.K.
- *
- * Written by Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-%%
-headers
-#include <Python.h>
-#include <pygtk/pygtk.h>
-#include "pyexo.h"
-
-/* mark internal symbols with G_GNUC_INTERNAL */
-G_GNUC_INTERNAL void exo_add_constants    (PyObject    *module,
-                                           const gchar *strip_prefix);
-G_GNUC_INTERNAL void exo_register_classes (PyObject    *d);
-
-%%
-modulename exo
-
-%%
-import gobject.GObject as PyGObject_Type
-import gtk.gdk.Window as PyGdkWindow_Type
-import gtk.CellLayout as PyGtkCellLayout_Type
-import gtk.CellRenderer as PyGtkCellRenderer_Type
-import gtk.CellRendererText as PyGtkCellRendererText_Type
-import gtk.Container as PyGtkContainer_Type
-import gtk.Dialog as PyGtkDialog_Type
-import gtk.Label as PyGtkLabel_Type
-import gtk.IconTheme as PyGtkIconTheme_Type
-import gtk.RadioAction as PyGtkRadioAction_Type
-import gtk.TreeModel as PyGtkTreeModel_Type
-import gtk.TreeView as PyGtkTreeView_Type
-import gtk.UIManager as PyGtkUIManager_Type
-import gtk.VBox as PyGtkVBox_Type
-import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
-import gtk.gdk.Screen as PyGdkScreen_Type
-
-%%
-ignore-glob
-  *_get_type
-
-%%
-ignore
-  exo_execute_preferred_application_on_screen
-  exo_execute_terminal_shell_on_screen
-  exo_icon_bar_new
-  exo_icon_view_new
-  exo_icon_view_selected_foreach
-  exo_toolbars_editor_new
-  exo_toolbars_view_new
-
-%%
-override exo_execute_preferred_application kwargs
-static PyObject*
-_wrap_exo_execute_preferred_application (PyObject *self,
-                                         PyObject *args,
-                                         PyObject *kwargs)
-{
-  static gchar *kwlist[] = { "category", "parameter", "working_directory", "environment", "screen", NULL };
-  const gchar  *working_directory = NULL;
-  const gchar  *parameter = NULL;
-  const gchar  *category;
-  GdkScreen    *screen;
-  PyObject     *sequence = Py_None;
-  PyObject     *item = Py_None;
-  GError       *error = NULL;
-  gchar       **envp = NULL;
-  gint          n;
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs, "s|ssOO:execute_preferred_application",
-                                    kwlist, &category, &parameter, &working_directory, &sequence, &item))
-    return NULL;
-
-  /* validate parameters */
-  if (sequence != Py_None && !PySequence_Check (sequence))
-    {
-      PyErr_SetString (PyExc_TypeError, "environment must be a sequence or None");
-      return NULL;
-    }
-  else if (item != Py_None && !pygobject_check (item, &PyGdkScreen_Type))
-    {
-      PyErr_SetString (PyExc_TypeError, "screen must be a gtk.gdk.Screen or None");
-      return NULL;
-    }
-
-  if (exo_str_is_empty (working_directory))
-    working_directory = NULL;
-
-  if (exo_str_is_empty (parameter))
-    parameter = NULL;
-
-  /* determine the screen */
-  screen = (item != Py_None) ? GDK_SCREEN (pygobject_get (item)) : gdk_screen_get_default ();
-
-  if (G_UNLIKELY (sequence != Py_None))
-    {
-      envp = g_new0 (gchar *, PySequence_Length (sequence) + 1);
-      for (n = 0; n < PySequence_Length (sequence); ++n)
-        {
-          item = PySequence_GetItem (sequence, n);
-          Py_DECREF (item);
-
-          if (!PyString_Check (item) && !PyUnicode_Check (item))
-            {
-              PyErr_SetString (PyExc_TypeError, "sequence item not a string or unicode object");
-              g_strfreev (envp);
-              return NULL;
-            }
-
-          envp[n] = g_strdup (PyString_AsString (item));
-        }
-    }
-
-  /* try to execute the preferred application */
-  exo_execute_preferred_application_on_screen (category, parameter, working_directory, envp, screen, &error);
-
-  /* release the environment */
-  g_strfreev (envp);
-
-  /* check for errors */
-  if (pyg_error_check (&error))
-    return NULL;
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
-
-%%
-override exo_execute_terminal_shell kwargs
-static PyObject*
-_wrap_exo_execute_terminal_shell (PyObject *self,
-                                  PyObject *args,
-                                  PyObject *kwargs)
-{
-  static gchar *kwlist[] = { "command_line", "working_directory", "environment", "screen", NULL };
-  const gchar  *working_directory = NULL;
-  const gchar  *command_line;
-  GdkScreen    *screen;
-  PyObject     *sequence = Py_None;
-  PyObject     *item = Py_None;
-  GError       *error = NULL;
-  gchar       **envp = NULL;
-  gint          n;
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs, "s|sOO:execute_terminal_shell",
-                                    kwlist, &command_line, &working_directory, &sequence, &item))
-    return NULL;
-
-  /* validate parameters */
-  if (sequence != Py_None && !PySequence_Check (sequence))
-    {
-      PyErr_SetString (PyExc_TypeError, "environment must be a sequence or None");
-      return NULL;
-    }
-  else if (item != Py_None && !pygobject_check (item, &PyGdkScreen_Type))
-    {
-      PyErr_SetString (PyExc_TypeError, "screen must be a gtk.gdk.Screen or None");
-      return NULL;
-    }
-
-  if (exo_str_is_empty (working_directory))
-    working_directory = NULL;
-
-  /* determine the screen */
-  screen = (item != Py_None) ? GDK_SCREEN (pygobject_get (item)) : gdk_screen_get_default ();
-
-  if (G_UNLIKELY (sequence != Py_None))
-    {
-      envp = g_new0 (gchar *, PySequence_Length (sequence) + 1);
-      for (n = 0; n < PySequence_Length (sequence); ++n)
-        {
-          item = PySequence_GetItem (sequence, n);
-          Py_DECREF (item);
-
-          if (!PyString_Check (item) && !PyUnicode_Check (item))
-            {
-              PyErr_SetString (PyExc_TypeError, "sequence item not a string or unicode object");
-              g_strfreev (envp);
-              return NULL;
-            }
-
-          envp[n] = g_strdup (PyString_AsString (item));
-        }
-    }
-
-  /* try to execute the terminal shell */
-  exo_execute_terminal_shell_on_screen (command_line, working_directory, envp, screen, &error);
-
-  /* release the environment */
-  g_strfreev (envp);
-
-  /* check for errors */
-  if (pyg_error_check (&error))
-    return NULL;
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
-
-%%
-override exo_icon_view_get_selected_items kwargs
-static PyObject*
-_wrap_exo_icon_view_get_selected_items (PyGObject *self,
-                                        PyObject  *args,
-                                        PyObject  *kwargs)
-{
-  PyObject *result;
-  PyObject *item;
-  GList    *items;
-  GList    *lp;
-
-  items = exo_icon_view_get_selected_items (EXO_ICON_VIEW (self->obj));
-
-  result = PyList_New (0);
-  if (G_UNLIKELY (result == NULL))
-    return NULL;
-
-  for (lp = items; lp != NULL; lp = lp->next)
-    {
-      item = pygtk_tree_path_to_pyobject (lp->data);
-      PyList_Append (result, item);
-      Py_DECREF (item);
-
-      gtk_tree_path_free (lp->data);
-    }
-
-  g_list_free (items);
-
-  return result;
-}
-
-%%
-override exo_toolbars_model_get_actions
-static PyObject*
-_wrap_exo_toolbars_model_get_actions (PyGObject *self)
-{
-  PyObject *result;
-  PyObject *value;
-  gchar   **actions;
-  guint     n;
-
-  actions = exo_toolbars_model_get_actions (EXO_TOOLBARS_MODEL (self->obj));
-  if (G_LIKELY (actions != NULL))
-    {
-      result = PyList_New (0);
-      if (G_UNLIKELY (result == NULL))
-        return NULL;
-
-      for (n = 0; actions[n] != NULL; ++n)
-        {
-          value = Py_BuildValue ("s", actions[n]);
-          PyList_Append (result, value);
-          Py_DECREF (value);
-        }
-
-      g_strfreev (actions);
-    }
-  else
-    {
-      Py_INCREF (Py_None);
-      result = Py_None;
-    }
-
-  return result;
-}
-
-%%
-override exo_toolbars_model_set_actions kwargs
-static PyObject*
-_wrap_exo_toolbars_model_set_actions (PyGObject *self,
-                                      PyObject  *args,
-                                      PyObject  *kwargs)
-{
-  static char *kwlist[] = { "args", NULL };
-  PyObject    *sequence;
-  PyObject    *item;
-  gchar      **actions;
-  guint        n_actions;
-  guint        n;
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                    "O:ExoToolbarsModel.set_actions",
-                                    kwlist, &sequence))
-    return NULL;
-
-  if (!PySequence_Check (sequence))
-    {
-      PyErr_SetString (PyExc_TypeError, "first argument must be a sequence");
-      return NULL;
-    }
-
-  n_actions = PySequence_Length (sequence);
-  actions = g_new0 (gchar *, n_actions + 1);
-
-  for (n = 0; n < n_actions; ++n)
-    {
-      item = PySequence_GetItem (sequence, n);
-      Py_DECREF (item);
-
-      if (!PyString_Check (item) && !PyUnicode_Check (item))
-        {
-          PyErr_SetString (PyExc_TypeError, "sequence item "
-                           "not a string or unicode object");
-          g_strfreev (actions);
-          return NULL;
-        }
-
-      actions[n] = g_strdup (PyString_AsString (item));
-    }
-
-  exo_toolbars_model_set_actions (EXO_TOOLBARS_MODEL (self->obj),
-                                  actions, n_actions);
-  g_strfreev (actions);
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
-
-%%
-override exo_toolbars_model_get_item_type kwargs
-static PyObject*
-_wrap_exo_toolbars_model_get_item_type (PyGObject *self,
-                                        PyObject  *args,
-                                        PyObject  *kwargs)
-{
-  static char *kwlist[] = { "dnd_type", NULL };
-  PyObject    *object;
-  GdkAtom      type;
-  gchar       *result;
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                    "O:ExoToolbarsModel.get_item_type",
-                                    kwlist, &object))
-    return NULL;
-
-  if (G_UNLIKELY (object == NULL))
-    type = NULL;
-  else if (PyString_Check (object))
-    type = gdk_atom_intern (PyString_AsString (object), FALSE);
-  else if (PyGdkAtom_Check (object))
-    type = PyGdkAtom_Get (object);
-  else
-    {
-      PyErr_SetString (PyExc_TypeError, "unable to convert argument to GdkAtom");
-      return NULL;
-    }
-
-  result = exo_toolbars_model_get_item_type (EXO_TOOLBARS_MODEL (self->obj), type);
-  if (G_LIKELY (result != NULL))
-    {
-      object = PyString_FromString (result);
-      g_free (result);
-    }
-  else
-    {
-      object = Py_None;
-      Py_INCREF (Py_None);
-    }
-
-  return object;
-}
-
-%%
-override exo_toolbars_model_item_nth kwargs
-static PyObject*
-_wrap_exo_toolbars_model_item_nth (PyGObject *self,
-                                   PyObject  *args,
-                                   PyObject  *kwargs)
-{
-  static char *kwlist[] = { "toolbar_position", "item_position", NULL };
-  const gchar *type;
-  const gchar *id;
-  gboolean     is_separator;
-  gint         toolbar_position;
-  gint         item_position;
-  
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                    "ii:ExoToolbarsModel.item_nth",
-                                    kwlist, &toolbar_position, &item_position))
-    return NULL;
-
-  exo_toolbars_model_item_nth (EXO_TOOLBARS_MODEL (self->obj),
-                               toolbar_position, item_position,
-                               &is_separator, &id, &type);
-
-  return Py_BuildValue ("(iss)", is_separator, id, type);
-}
-
-%%
-override exo_xsession_client_get_restart_command
-static PyObject*
-_wrap_exo_xsession_client_get_restart_command (PyGObject *self)
-{
-  PyObject *result;
-  PyObject *value;
-  gchar   **argv;
-  gint      argc;
-  gint      n;
-
-  if (exo_xsession_client_get_restart_command (EXO_XSESSION_CLIENT (self->obj),
-                                               &argv, &argc))
-    {
-      result = PyList_New (0);
-      if (G_UNLIKELY (result == NULL))
-        return NULL;
-
-      for (n = 0; n < argc; ++n)
-        {
-          value = Py_BuildValue ("s", argv[n]);
-          PyList_Append (result, value);
-          Py_DECREF (value);
-        }
-
-      g_strfreev (argv);
-    }
-  else
-    {
-      Py_INCREF (Py_None);
-      result = Py_None;
-    }
-
-  return result;
-}
-
-%%
-override exo_xsession_client_set_restart_command kwargs
-static PyObject*
-_wrap_exo_xsession_client_set_restart_command (PyGObject *self,
-                                               PyObject  *args,
-                                               PyObject  *kwargs)
-{
-  static char *kwlist[] = { "args", NULL };
-  PyObject    *sequence;
-  PyObject    *item;
-  gchar      **argv;
-  gint         argc;
-  gint         n;
-
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                    "0:ExoXsessionClient.set_restart_command",
-                                    kwlist, &sequence))
-    return NULL;
-
-  if (!PySequence_Check (sequence))
-    {
-      PyErr_SetString (PyExc_TypeError, "first argument must be a sequence");
-      return NULL;
-    }
-
-  argc = PySequence_Length (sequence);
-  argv = g_new0 (gchar *, argc + 1);
-
-  for (n = 0; n < argc; ++n)
-    {
-      item = PySequence_GetItem (sequence, n);
-      Py_DECREF (item);
-
-      if (!PyString_Check (item) && !PyUnicode_Check (item))
-        {
-          PyErr_SetString (PyExc_TypeError, "sequence item "
-                           "not a string or unicode object");
-          g_strfreev (argv);
-          return NULL;
-        }
-
-      argv[n] = g_strdup (PyString_AsString (item));
-    }
-
-  exo_xsession_client_set_restart_command (EXO_XSESSION_CLIENT (self->obj),
-                                           argv, argc);
-  g_strfreev (argv);
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
diff --git a/python/exomodule.c b/python/exomodule.c
deleted file mode 100644
index 8c488a6..0000000
--- a/python/exomodule.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*-
- * Copyright (c) 2005-2006 os-cillation e.K.
- *
- * Written by Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "pyexo.h"
-
-
-G_MODULE_EXPORT void init_exo (void);
-/* mark internal symbols with G_GNUC_INTERNAL */
-G_GNUC_INTERNAL void exo_add_constants    (PyObject    *module,
-                                           const gchar *strip_prefix);
-G_GNUC_INTERNAL void exo_register_classes (PyObject    *d);
-
-extern PyMethodDef exo_functions[];
-
-
-/* Unfortunately pygtk doesn't export the following functions,
- * that are required for the IconView, so we have to duplicate
- * them here.
- */
-#if !defined(pygtk_tree_path_from_pyobject)
-GtkTreePath*
-pygtk_tree_path_from_pyobject (PyObject *object)
-{
-  if (PyString_Check(object))
-    {
-      GtkTreePath *path;
-
-      path = gtk_tree_path_new_from_string (PyString_AsString (object));
-      return path;
-    }
-  else if (PyInt_Check(object))
-    {
-      GtkTreePath *path;
-
-      path = gtk_tree_path_new();
-      gtk_tree_path_append_index(path, PyInt_AsLong(object));
-      return path;
-    }
-  else if (PyTuple_Check(object))
-    {
-      GtkTreePath *path;
-      guint len, i;
-
-      len = PyTuple_Size(object);
-      if (len < 1)
-        return NULL;
-
-      path = gtk_tree_path_new();
-      for (i = 0; i < len; i++)
-        {
-          PyObject *item = PyTuple_GetItem(object, i);
-          gint index = PyInt_AsLong(item);
-
-          if (PyErr_Occurred())
-            {
-              gtk_tree_path_free(path);
-              PyErr_Clear();
-              return NULL;
-            }
-          gtk_tree_path_append_index(path, index);
-        }
-
-      return path;
-    }
-
-  return NULL;
-}
-#endif
-
-#if !defined(pygtk_tree_path_to_pyobject)
-PyObject*
-pygtk_tree_path_to_pyobject (GtkTreePath *path)
-{
-  gint len, i, *indices;
-  PyObject *ret;
-
-  len = gtk_tree_path_get_depth (path);
-  indices = gtk_tree_path_get_indices (path);
-
-  ret = PyTuple_New (len);
-  for (i = 0; i < len; i++)
-    PyTuple_SetItem (ret, i, PyInt_FromLong (indices[i]));
-  return ret;
-}
-#endif
-
-
-
-G_MODULE_EXPORT void
-init_exo (void)
-{
-  PyObject *d;
-  PyObject *m;
-
-  init_pygobject ();
-
-  m = Py_InitModule ("_exo", exo_functions);
-  d = PyModule_GetDict (m);
-
-  exo_register_classes (d);
-  exo_add_constants (m, "EXO_");
-
-  if (PyErr_Occurred ())
-    {
-      Py_FatalError ("cannot initialize module _exo");
-      return;
-    }
-
-  /* register additional types */
-#define REGISTER_TYPE(type, name)                     \
-  type.ob_type = &PyType_Type;                        \
-  type.tp_alloc = PyType_GenericAlloc;                \
-  type.tp_new = PyType_GenericNew;                    \
-  if (PyType_Ready (&type))                           \
-    return;                                           \
-  PyDict_SetItemString (d, name, (PyObject *) &type);
-
-  REGISTER_TYPE (PyExoBinding_Type, "Binding");
-  REGISTER_TYPE (PyExoMutualBinding_Type, "MutualBinding");
-
-#undef REGISTER_TYPE
-
-#if GTK_CHECK_VERSION (2, 18, 0)
-  /* use exo about dialog hook by default */
-  gtk_about_dialog_set_email_hook (exo_gtk_url_about_dialog_hook, NULL, NULL);
-  gtk_about_dialog_set_url_hook (exo_gtk_url_about_dialog_hook, NULL, NULL);
-#endif
-}
diff --git a/python/pyexo.h b/python/pyexo.h
deleted file mode 100644
index 6c89fc5..0000000
--- a/python/pyexo.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * Copyright (c) 2005-2006 os-cillation e.K.
- *
- * Written by Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __PYEXO_H__
-#define __PYEXO_H__
-
-#include <pygobject.h>
-#include <pygtk/pygtk.h>
-
-#include <exo/exo.h>
-
-G_BEGIN_DECLS
-
-/* ---------- ExoBinding ---------- */
-typedef struct
-{
-  PyObject_HEAD;
-  ExoBinding *binding;
-  PyObject   *transform_func;
-} PyExoBinding;
-
-extern PyTypeObject PyExoBinding_Type;
-
-/* ---------- ExoMutualBinding ---------- */
-typedef struct
-{
-  PyObject_HEAD;
-  ExoMutualBinding *binding;
-  PyObject         *transform_func;
-  PyObject         *rtransform_func;
-} PyExoMutualBinding;
-
-extern PyTypeObject PyExoMutualBinding_Type;
-
-/* ---------- PyGTK helpers ---------- */
-#if !defined(pygtk_tree_path_from_pyobject)
-G_GNUC_INTERNAL GtkTreePath *pygtk_tree_path_from_pyobject (PyObject *object);
-#endif
-
-#if !defined(pygtk_tree_path_to_pyobject)
-G_GNUC_INTERNAL PyObject *pygtk_tree_path_to_pyobject (GtkTreePath *path);
-#endif
-
-G_END_DECLS
-
-#endif /* !__PYEXO_H__ */
diff --git a/python/pyexo.py b/python/pyexo.py
deleted file mode 100644
index a05f099..0000000
--- a/python/pyexo.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# vim:set ts=4 sw=4 et ai syntax=python:
-#
-# Copyright (c) 2005 os-cillation
-# Copyright (c) 1998-2002 James Henstridge
-#
-# Written by Benedikt Meurer <benny at xfce.org>.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#                                                                             
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#                                                                             
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA
-#
-
-import fnmatch
-import glob
-import os
-import sys
-
-__all__ = ['require']
-
-_pyexo_dir_pattern = 'exo-[0-9].[0-9]'
-_pyexo_required_version = None
-
-def _get_available_versions():
-    versions = {}
-    for dir in sys.path:
-        if not dir:
-            dir = os.getcwd()
-
-        if not os.path.isdir(dir):
-            continue
-
-        # if the dir is a pyexo dir, skip it
-        if fnmatch.fnmatchcase(os.path.basename(dir), _pyexo_dir_pattern):
-            continue
-
-        for filename in glob.glob(os.path.join(dir, _pyexo_dir_pattern)):
-            pathname = os.path.join(dir, filename)
-
-            # skip non directories
-            if not os.path.isdir(pathname):
-                continue
-
-            # skip empty directories
-            if not os.listdir(pathname):
-                continue
-
-            if not versions.has_key(filename[-3:]):
-                versions[filename[-3:]] = pathname
-
-    return versions
-
-
-def require(version):
-    global _pyexo_required_version
-
-    if _pyexo_required_version != None:
-        assert _pyexo_required_version == version, \
-               "a different version of exo was already required"
-        return
-
-    assert not sys.modules.has_key('exo'), \
-           "pyexo.require() must be called before importing exo"
-
-    versions = _get_available_versions()
-    assert versions.has_key(version), \
-           "required version '%s' not found on system" % version
-
-    # remove any pyexo dirs first ...
-    for dir in sys.path:
-        if fnmatch.fnmatchcase(os.path.basename(dir), _pyexo_dir_pattern):
-            sys.path.remove(dir)
-
-    # prepend the pyexo path ...
-    sys.path.insert(0, versions[version])
-
-    _pyexo_required_version = version
diff --git a/python/pyexobinding.c b/python/pyexobinding.c
deleted file mode 100644
index aad4df2..0000000
--- a/python/pyexobinding.c
+++ /dev/null
@@ -1,629 +0,0 @@
-/*-
- * Copyright (c) 2005-2006 os-cillation e.K.
- *
- * Written by Benedikt Meurer <benny at xfce.org>.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "pyexo.h"
-
-
-
-static void      pyexo_binding_dealloc            (PyExoBinding       *self);
-static gint      pyexo_binding_compare            (PyExoBinding       *self,
-                                                   PyExoBinding       *other);
-static glong     pyexo_binding_hash               (PyExoBinding       *self);
-static PyObject *pyexo_binding_repr               (PyExoBinding       *self);
-static gint      pyexo_binding_init               (PyExoBinding       *self,
-                                                   PyObject           *args,
-                                                   PyObject           *kwargs);
-static PyObject *pyexo_binding_is_bound           (PyExoBinding       *self);
-static PyObject *pyexo_binding_unbind             (PyExoBinding       *self);
-static void      pyexo_binding_destroy            (PyExoBinding       *self);
-static gboolean  pyexo_binding_transform          (const GValue       *src_value,
-                                                   GValue             *dst_value,
-                                                   PyExoBinding       *self);
-static void      pyexo_mutual_binding_dealloc     (PyExoMutualBinding *self);
-static gint      pyexo_mutual_binding_compare     (PyExoMutualBinding *self,
-                                                   PyExoMutualBinding *other);
-static glong     pyexo_mutual_binding_hash        (PyExoMutualBinding *self);
-static PyObject *pyexo_mutual_binding_repr        (PyExoMutualBinding *self);
-static gint      pyexo_mutual_binding_init        (PyExoMutualBinding *self,
-                                                   PyObject           *args,
-                                                   PyObject           *kwargs);
-static PyObject *pyexo_mutual_binding_is_bound    (PyExoMutualBinding *self);
-static PyObject *pyexo_mutual_binding_unbind      (PyExoMutualBinding *self);
-static void      pyexo_mutual_binding_destroy     (PyExoMutualBinding *self);
-static gboolean  pyexo_mutual_binding_transform   (const GValue       *src_value,
-                                                   GValue             *dst_value,
-                                                   PyExoMutualBinding *self);
-static gboolean  pyexo_mutual_binding_rtransform  (const GValue       *src_value,
-                                                   GValue             *dst_value,
-                                                   PyExoMutualBinding *self);
-
-
-
-static PyMethodDef pyexo_binding_methods[] =
-{
-  { "is_bound", (PyCFunction) pyexo_binding_is_bound, METH_NOARGS, },
-  { "unbind",   (PyCFunction) pyexo_binding_unbind,   METH_NOARGS, },
-  { NULL,       NULL,                                 0,           },
-};
-
-static PyMethodDef pyexo_mutual_binding_methods[] =
-{
-  { "is_bound", (PyCFunction) pyexo_mutual_binding_is_bound, METH_NOARGS, },
-  { "unbind",   (PyCFunction) pyexo_mutual_binding_unbind,   METH_NOARGS, },
-  { NULL,       NULL,                                        0,           },
-};
-
-
-
-PyTypeObject PyExoBinding_Type =
-{
-  PyObject_HEAD_INIT(NULL)
-  0,
-  "exo.Binding",
-  sizeof (PyExoBinding),
-  0,
-  (destructor) pyexo_binding_dealloc,
-  (printfunc) NULL,
-  (getattrfunc) NULL,
-  (setattrfunc) NULL,
-  (cmpfunc) pyexo_binding_compare,
-  (reprfunc) pyexo_binding_repr,
-  0,
-  0,
-  0,
-  (hashfunc) pyexo_binding_hash,
-  (ternaryfunc) NULL,
-  (reprfunc) NULL,
-  (getattrofunc) NULL,
-  (setattrofunc) NULL,
-  0,
-  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-  NULL,
-  (traverseproc) NULL,
-  (inquiry) NULL,
-  (richcmpfunc) NULL,
-  0,
-  (getiterfunc) NULL,
-  (iternextfunc) NULL,
-  pyexo_binding_methods,
-  0,
-  0,
-  NULL,
-  NULL,
-  (descrgetfunc) NULL,
-  (descrsetfunc) NULL,
-  0,
-  (initproc) pyexo_binding_init,
-};
-
-PyTypeObject PyExoMutualBinding_Type =
-{
-  PyObject_HEAD_INIT(NULL)
-  0,
-  "exo.MutualBinding",
-  sizeof (PyExoMutualBinding),
-  0,
-  (destructor) pyexo_mutual_binding_dealloc,
-  (printfunc) NULL,
-  (getattrfunc) NULL,
-  (setattrfunc) NULL,
-  (cmpfunc) pyexo_mutual_binding_compare,
-  (reprfunc) pyexo_mutual_binding_repr,
-  0,
-  0,
-  0,
-  (hashfunc) pyexo_mutual_binding_hash,
-  (ternaryfunc) NULL,
-  (reprfunc) NULL,
-  (getattrofunc) NULL,
-  (setattrofunc) NULL,
-  0,
-  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
-  NULL,
-  (traverseproc) NULL,
-  (inquiry) NULL,
-  (richcmpfunc) NULL,
-  0,
-  (getiterfunc) NULL,
-  (iternextfunc) NULL,
-  pyexo_mutual_binding_methods,
-  0,
-  0,
-  NULL,
-  NULL,
-  (descrgetfunc) NULL,
-  (descrsetfunc) NULL,
-  0,
-  (initproc) pyexo_mutual_binding_init,
-};
-
-
-
-static void
-pyexo_binding_dealloc (PyExoBinding *self)
-{
-  /* release transform func */
-  Py_XDECREF (self->transform_func);
-
-  PyObject_Del (self);
-}
-
-
-
-static gint
-pyexo_binding_compare (PyExoBinding *self,
-                       PyExoBinding *other)
-{
-  if (self->binding == other->binding)
-    return 0;
-  else if (self->binding > other->binding)
-    return -1;
-  else
-    return 1;
-}
-
-
-
-static glong
-pyexo_binding_hash (PyExoBinding *self)
-{
-  return (glong) self->binding;
-}
-
-
-
-static PyObject*
-pyexo_binding_repr (PyExoBinding *self)
-{
-  gchar repr[128];
-  g_snprintf (repr, sizeof (repr), "<Binding at 0x%lx>", (glong) self->binding);
-  return PyString_FromString (repr);
-}
-
-
-
-static gint
-pyexo_binding_init (PyExoBinding *self,
-                    PyObject     *args,
-                    PyObject     *kwargs)
-{
-
-  const gchar  *kwlist[] = { "src_object", "src_property", "dst_object", "dst_property", "transform_func", NULL };
-  const gchar  *src_property;
-  const gchar  *dst_property;
-  PyObject     *transform_func = Py_None;
-  PyObject     *gobject_module;
-  PyObject     *gobject_type;
-  PyObject     *src_object;
-  PyObject     *dst_object;
-  gchar        *message;
-
-  /* parse the constructor arguments */
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs, "OsOs|O:Binding.__init__", (gchar **) kwlist,
-                                    &src_object, &src_property, &dst_object, &dst_property,
-                                    &transform_func))
-    {
-      return -1;
-    }
-
-  /* import module gobject */
-  gobject_module = PyImport_ImportModule ("gobject");
-  if (G_UNLIKELY (gobject_module == NULL))
-    {
-      PyErr_SetString (PyExc_ImportError, "could not import gobject");
-      return -1;
-    }
-
-  /* lookup type gobject.GObject */
-  gobject_type = PyDict_GetItemString (PyModule_GetDict (gobject_module), "GObject");
-  if (G_UNLIKELY (gobject_type == NULL))
-    {
-      PyErr_SetString (PyExc_ImportError, "cannot import name GObject from gobject");
-      return -1;
-    }
-
-  /* validate the constructor arguments */
-  if (!pygobject_check (src_object, (PyTypeObject *) gobject_type) || src_object == Py_None)
-    {
-      PyErr_SetString (PyExc_TypeError, "src_object must be a gobject.GObject");
-      return -1;
-    }
-  else if (!pygobject_check (dst_object, (PyTypeObject *) gobject_type) || dst_object == Py_None)
-    {
-      PyErr_SetString (PyExc_TypeError, "dst_object must be a gobject.GObject");
-      return -1;
-    }
-  else if (transform_func != Py_None && !PyCallable_Check (transform_func))
-    {
-      PyErr_SetString (PyExc_TypeError, "transform_func must be a callback object or None");
-      return -1;
-    }
-
-  /* setup transform func */
-  self->transform_func = transform_func;
-  Py_INCREF (transform_func);
-
-  /* allocate the binding */
-  self->binding = exo_binding_new_full (pygobject_get (src_object), src_property, pygobject_get (dst_object), dst_property,
-                                        (transform_func != Py_None) ? (ExoBindingTransform) pyexo_binding_transform : NULL,
-                                        (GDestroyNotify) pyexo_binding_destroy, self);
-  if (G_UNLIKELY (self->binding == NULL))
-    {
-      message = g_strdup_printf ("cannot bind property %s to property %s", src_property, dst_property);
-      PyErr_SetString (PyExc_TypeError, message);
-      g_free (message);
-      return -1;
-    }
-
-  /* take a reference, which will be released
-   * when the real binding is destroyed.
-   */
-  Py_INCREF (self);
-
-  return 0;
-}
-
-
-
-static PyObject*
-pyexo_binding_is_bound (PyExoBinding *self)
-{
-  return PyBool_FromLong (self->binding != NULL);
-}
-
-
-
-static PyObject*
-pyexo_binding_unbind (PyExoBinding *self)
-{
-  /* check if the binding is still active */
-  if (G_LIKELY (self->binding != NULL))
-    exo_binding_unbind (self->binding);
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
-
-
-
-static void
-pyexo_binding_destroy (PyExoBinding *self)
-{
-  /* make sure that the binding was still active */
-  if (G_LIKELY (self->binding != NULL))
-    {
-      /* reset to indicate that its invalid now */
-      self->binding = NULL;
-
-      /* release the extra reference on the Python object */
-      Py_DECREF (self);
-    }
-}
-
-
-
-static gboolean
-pyexo_binding_transform (const GValue *src_value,
-                         GValue       *dst_value,
-                         PyExoBinding *self)
-{
-  PyGILState_STATE state;
-  gboolean         result = FALSE;
-  PyObject        *src_object;
-  PyObject        *dst_object;
-
-  state = pyg_gil_state_ensure ();
-
-  src_object = pyg_value_as_pyobject (src_value, TRUE);
-  if (G_LIKELY (src_object != NULL))
-    {
-      dst_object = PyEval_CallFunction (self->transform_func, "(O)", src_object);
-      if (G_UNLIKELY (dst_object == NULL))
-        {
-          PyErr_Print ();
-        }
-      else
-        {
-          /* try to transform the result */
-          result = (pyg_value_from_pyobject (dst_value, dst_object) == 0);
-
-          /* release the result */
-          Py_DECREF (dst_object);
-        }
-
-      Py_DECREF (src_object);
-    }
-  else
-    {
-      PyErr_Print ();
-    }
-
-  pyg_gil_state_release (state);
-
-  return result;
-}
-
-
-
-static void
-pyexo_mutual_binding_dealloc (PyExoMutualBinding *self)
-{
-  /* release reverse transform func */
-  Py_XDECREF (self->rtransform_func);
-
-  /* release transform func */
-  Py_XDECREF (self->transform_func);
-
-  PyObject_Del (self);
-}
-
-
-
-static gint
-pyexo_mutual_binding_compare (PyExoMutualBinding *self,
-                              PyExoMutualBinding *other)
-{
-  if (self->binding == other->binding)
-    return 0;
-  else if (self->binding > other->binding)
-    return -1;
-  else
-    return 1;
-}
-
-
-
-static glong
-pyexo_mutual_binding_hash (PyExoMutualBinding *self)
-{
-  return (glong) self->binding;
-}
-
-
-
-static PyObject*
-pyexo_mutual_binding_repr (PyExoMutualBinding *self)
-{
-  gchar repr[128];
-  g_snprintf (repr, sizeof (repr), "<MutualBinding at 0x%lx>", (glong) self->binding);
-  return PyString_FromString (repr);
-}
-
-
-
-static gint
-pyexo_mutual_binding_init (PyExoMutualBinding *self,
-                           PyObject           *args,
-                           PyObject           *kwargs)
-{
-  const gchar  *kwlist[] = { "src_object", "src_property", "dst_object", "dst_property", "transform_func", "reverse_transform_func", NULL };
-  const gchar  *src_property;
-  const gchar  *dst_property;
-  PyObject     *rtransform_func = Py_None;
-  PyObject     *transform_func = Py_None;
-  PyObject     *gobject_module;
-  PyObject     *gobject_type;
-  PyObject     *src_object;
-  PyObject     *dst_object;
-  gchar        *message;
-
-  /* parse the constructor arguments */
-  if (!PyArg_ParseTupleAndKeywords (args, kwargs, "OsOs|OO:MutualBinding.__init__", (gchar **) kwlist,
-                                    &src_object, &src_property, &dst_object, &dst_property,
-                                    &transform_func, &rtransform_func))
-    {
-      return -1;
-    }
-
-  /* import module gobject */
-  gobject_module = PyImport_ImportModule ("gobject");
-  if (G_UNLIKELY (gobject_module == NULL))
-    {
-      PyErr_SetString (PyExc_ImportError, "could not import gobject");
-      return -1;
-    }
-
-  /* lookup type gobject.GObject */
-  gobject_type = PyDict_GetItemString (PyModule_GetDict (gobject_module), "GObject");
-  if (G_UNLIKELY (gobject_type == NULL))
-    {
-      PyErr_SetString (PyExc_ImportError, "cannot import name GObject from gobject");
-      return -1;
-    }
-
-  /* validate the constructor arguments */
-  if (!pygobject_check (src_object, (PyTypeObject *) gobject_type) || src_object == Py_None)
-    {
-      PyErr_SetString (PyExc_TypeError, "src_object must be a gobject.GObject");
-      return -1;
-    }
-  else if (!pygobject_check (dst_object, (PyTypeObject *) gobject_type) || dst_object == Py_None)
-    {
-      PyErr_SetString (PyExc_TypeError, "dst_object must be a gobject.GObject");
-      return -1;
-    }
-  else if (transform_func != Py_None && !PyCallable_Check (transform_func))
-    {
-      PyErr_SetString (PyExc_TypeError, "transform_func must be a callable object or None");
-      return -1;
-    }
-  else if (rtransform_func != Py_None && !PyCallable_Check (rtransform_func))
-    {
-      PyErr_SetString (PyExc_TypeError, "reverse_transform_func must be a callable object or None");
-      return -1;
-    }
-
-  /* setup transform func */
-  self->transform_func = transform_func;
-  Py_INCREF (self->transform_func);
-
-  /* setup reverse transform func */
-  self->rtransform_func = rtransform_func;
-  Py_INCREF (self->rtransform_func);
-
-  /* allocate the binding */
-  self->binding = exo_mutual_binding_new_full (pygobject_get (src_object), src_property, pygobject_get (dst_object), dst_property,
-                                               (transform_func != Py_None) ? (ExoBindingTransform) pyexo_mutual_binding_transform : NULL,
-                                               (rtransform_func != Py_None) ? (ExoBindingTransform) pyexo_mutual_binding_rtransform : NULL,
-                                               (GDestroyNotify) pyexo_mutual_binding_destroy, self);
-  if (G_UNLIKELY (self->binding == NULL))
-    {
-      message = g_strdup_printf ("cannot bind property %s to property %s", src_property, dst_property);
-      PyErr_SetString (PyExc_TypeError, message);
-      g_free (message);
-      return -1;
-    }
-
-  /* take a reference, which will be released
-   * when the real binding is destroyed.
-   */
-  Py_INCREF (self);
-
-  return 0;
-}
-
-
-
-static PyObject*
-pyexo_mutual_binding_is_bound (PyExoMutualBinding *self)
-{
-  return PyBool_FromLong (self->binding != NULL);
-}
-
-
-
-static PyObject*
-pyexo_mutual_binding_unbind (PyExoMutualBinding *self)
-{
-  /* check if the binding is still active */
-  if (G_LIKELY (self->binding != NULL))
-    exo_mutual_binding_unbind (self->binding);
-
-  Py_INCREF (Py_None);
-  return Py_None;
-}
-
-
-
-static void
-pyexo_mutual_binding_destroy (PyExoMutualBinding *self)
-{
-  /* make sure that the binding was still active */
-  if (G_LIKELY (self->binding != NULL))
-    {
-      /* reset to indicate that its invalid now */
-      self->binding = NULL;
-
-      /* release the extra reference on the Python object */
-      Py_DECREF (self);
-    }
-}
-
-
-
-static gboolean
-pyexo_mutual_binding_transform (const GValue       *src_value,
-                                GValue             *dst_value,
-                                PyExoMutualBinding *self)
-{
-  PyGILState_STATE state;
-  gboolean         result = FALSE;
-  PyObject        *src_object;
-  PyObject        *dst_object;
-
-  state = pyg_gil_state_ensure ();
-
-  src_object = pyg_value_as_pyobject (src_value, TRUE);
-  if (G_LIKELY (src_object != NULL))
-    {
-      dst_object = PyEval_CallFunction (self->transform_func, "(O)", src_object);
-      if (G_UNLIKELY (dst_object == NULL))
-        {
-          PyErr_Print ();
-        }
-      else
-        {
-          /* try to transform the result */
-          result = (pyg_value_from_pyobject (dst_value, dst_object) == 0);
-
-          /* release the result */
-          Py_DECREF (dst_object);
-        }
-
-      Py_DECREF (src_object);
-    }
-  else
-    {
-      PyErr_Print ();
-    }
-
-  pyg_gil_state_release (state);
-
-  return result;
-}
-
-
-
-static gboolean
-pyexo_mutual_binding_rtransform (const GValue       *src_value,
-                                 GValue             *dst_value,
-                                 PyExoMutualBinding *self)
-{
-  PyGILState_STATE state;
-  gboolean         result = FALSE;
-  PyObject        *src_object;
-  PyObject        *dst_object;
-
-  state = pyg_gil_state_ensure ();
-
-  src_object = pyg_value_as_pyobject (src_value, TRUE);
-  if (G_LIKELY (src_object != NULL))
-    {
-      dst_object = PyEval_CallFunction (self->rtransform_func, "(O)", src_object);
-      if (G_UNLIKELY (dst_object == NULL))
-        {
-          PyErr_Print ();
-        }
-      else
-        {
-          /* try to transform the result */
-          result = (pyg_value_from_pyobject (dst_value, dst_object) == 0);
-
-          /* release the result */
-          Py_DECREF (dst_object);
-        }
-
-      Py_DECREF (src_object);
-    }
-  else
-    {
-      PyErr_Print ();
-    }
-
-  pyg_gil_state_release (state);
-
-  return result;
-}
-



More information about the Xfce4-commits mailing list