[rhythmbox] Generate gobject-introspection data and allow it to be loaded



commit 76b50bf4ba0de77b15f699d9a71aab38b6ca4c30
Author: Jonathan Matthew <jonathan d14n org>
Date:   Tue Feb 1 22:09:20 2011 +1000

    Generate gobject-introspection data and allow it to be loaded

 .gitignore              |    4 +
 Makefile.am             |    4 +-
 bindings/Makefile.am    |    2 +-
 bindings/gi/Makefile.am |  149 +++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac            |    7 ++
 rhythmbox.h             |   86 +++++++++++++++++++++++++++
 shell/Makefile.am       |    4 +-
 shell/main.c            |    6 ++
 8 files changed, 258 insertions(+), 4 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 273e665..a69d7be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,10 @@ rhythmbox.pc
 #
 bindings/python/rb.c
 bindings/python/rhythmdb.c
+bindings/gi/MPID-0.13.gir
+bindings/gi/MPID-0.13.typelib
+bindings/gi/RB-0.13.gir
+bindings/gi/RB-0.13.typelib
 
 #
 org.gnome.Rhythmbox.service
diff --git a/Makefile.am b/Makefile.am
index bf7d364..fb6eeac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,9 @@ DISTCHECK_CONFIGURE_FLAGS = --disable-schemas-install --enable-gtk-doc --disable
 distuninstallcheck_listfiles = find . -type f -print | grep -v '^\./var/scrollkeeper'
 
 SUBDIRS = macros lib metadata rhythmdb widgets sources podcast \
-	backends bindings shell plugins remote data po help tests doc
+	backends shell bindings plugins remote data po help tests doc
+
+INCLUDES = rhythmbox.h
 
 EXTRA_DIST = 			\
 	autogen.sh		\
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
index 9b49f27..db1641d 100644
--- a/bindings/Makefile.am
+++ b/bindings/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS =
+SUBDIRS = gi
 
 if ENABLE_VALA
 SUBDIRS += vala
diff --git a/bindings/gi/Makefile.am b/bindings/gi/Makefile.am
new file mode 100644
index 0000000..e3b2d48
--- /dev/null
+++ b/bindings/gi/Makefile.am
@@ -0,0 +1,149 @@
+
+-include $(INTROSPECTION_MAKEFILE)
+INTROSPECTION_GIRS =
+INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_srcdir) --add-include-path=$(top_builddir)/bindings/gi --c-include=rhythmbox.h --warn-all
+INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)
+
+mpid_introspection_sources = \
+		lib/libmediaplayerid/mediaplayerid.h \
+		lib/libmediaplayerid/mpid-device.c
+
+rb_introspection_sources = \
+		backends/rb-encoder.h \
+		backends/rb-encoder.c \
+		backends/rb-player-gst-filter.h \
+		backends/rb-player-gst-filter.c \
+		backends/rb-player-gst-tee.h \
+		backends/rb-player-gst-tee.c \
+		backends/rb-player.h \
+		backends/rb-player.c \
+		lib/rb-builder-helpers.h \
+		lib/rb-builder-helpers.c \
+		lib/rb-debug.h \
+		lib/rb-debug.c \
+		lib/rb-file-helpers.h \
+		lib/rb-file-helpers.c \
+		lib/rb-preferences.h \
+		lib/rb-stock-icons.h \
+		lib/rb-stock-icons.c \
+		lib/rb-string-value-map.h \
+		lib/rb-string-value-map.c \
+		lib/rb-util.h \
+		lib/rb-util.c \
+		metadata/rb-metadata.h \
+		metadata/rb-metadata-dbus-client.c \
+		podcast/rb-podcast-manager.h \
+		podcast/rb-podcast-manager.c \
+		podcast/rb-podcast-parse.h \
+		podcast/rb-podcast-parse.c \
+		rhythmdb/rhythmdb.h \
+		rhythmdb/rhythmdb.c \
+		rhythmdb/rhythmdb-entry.h \
+		rhythmdb/rhythmdb-entry-type.h \
+		rhythmdb/rhythmdb-entry-type.c \
+		rhythmdb/rhythmdb-property-model.h \
+		rhythmdb/rhythmdb-property-model.c \
+		rhythmdb/rhythmdb-query.c \
+		rhythmdb/rhythmdb-query-model.h \
+		rhythmdb/rhythmdb-query-model.c \
+		rhythmdb/rhythmdb-query-results.h \
+		rhythmdb/rhythmdb-query-results.c \
+		rhythmdb/rhythmdb-import-job.h \
+		rhythmdb/rhythmdb-import-job.c \
+		rhythmdb/rhythmdb-song-entry-types.c \
+		rhythmdb/rb-refstring.h \
+		rhythmdb/rb-refstring.c \
+		shell/rb-shell.h \
+		shell/rb-shell.c \
+		shell/rb-shell-player.h \
+		shell/rb-shell-player.c \
+		shell/rb-shell-preferences.h \
+		shell/rb-shell-preferences.c \
+		shell/rb-playlist-manager.h \
+		shell/rb-playlist-manager.c \
+		shell/rb-removable-media-manager.h \
+		shell/rb-removable-media-manager.c \
+		shell/rb-history.h \
+		shell/rb-history.c \
+		shell/rb-play-order.h \
+		shell/rb-play-order.c \
+		shell/rb-plugin.h \
+		shell/rb-plugin.c \
+		shell/rb-track-transfer-batch.c \
+		shell/rb-track-transfer-batch.h \
+		shell/rb-track-transfer-queue.c \
+		shell/rb-track-transfer-queue.h \
+		sources/rb-display-page.h \
+		sources/rb-display-page.c \
+		sources/rb-display-page-group.h \
+		sources/rb-display-page-group.c \
+		sources/rb-display-page-model.h \
+		sources/rb-display-page-model.c \
+		sources/rb-display-page-tree.h \
+		sources/rb-display-page-tree.c \
+		sources/rb-source.h \
+		sources/rb-source.c \
+		sources/rb-streaming-source.h \
+		sources/rb-streaming-source.c \
+		sources/rb-source-search.h \
+		sources/rb-source-search.c \
+		sources/rb-browser-source.h \
+		sources/rb-browser-source.c \
+		sources/rb-removable-media-source.h \
+		sources/rb-removable-media-source.c \
+		sources/rb-media-player-source.h \
+		sources/rb-media-player-source.c \
+		sources/rb-playlist-source.h \
+		sources/rb-playlist-source.c \
+		sources/rb-playlist-xml.h \
+		sources/rb-auto-playlist-source.h \
+		sources/rb-auto-playlist-source.c \
+		sources/rb-static-playlist-source.h \
+		sources/rb-static-playlist-source.c \
+		sources/rb-source-search-basic.h \
+		sources/rb-source-search-basic.c \
+		widgets/rb-entry-view.h \
+		widgets/rb-entry-view.c \
+		widgets/rb-property-view.h \
+		widgets/rb-property-view.c \
+		widgets/rb-dialog.h \
+		widgets/rb-dialog.c \
+		widgets/rb-cell-renderer-pixbuf.h \
+		widgets/rb-cell-renderer-pixbuf.c \
+		widgets/rb-cell-renderer-rating.h \
+		widgets/rb-cell-renderer-rating.c \
+		widgets/rb-rating.h \
+		widgets/rb-rating.c \
+		widgets/rb-library-browser.h \
+		widgets/rb-library-browser.c \
+		widgets/rb-segmented-bar.h \
+		widgets/rb-segmented-bar.c \
+		widgets/rb-song-info.h \
+		widgets/rb-song-info.c \
+		widgets/rb-uri-dialog.h \
+		widgets/rb-uri-dialog.c
+
+MPID-0.13.gir: $(top_builddir)/shell/librhythmbox-core.la
+MPID_0_13_gir_INCLUDES = GObject-2.0
+MPID_0_13_gir_CFLAGS = $(RHYTHMBOX_CFLAGS_NOWARN) $(GUDEV_CFLAGS) -I../..
+MPID_0_13_gir_LIBS = $(top_builddir)/shell/librhythmbox-core.la
+MPID_0_13_gir_FILES = $(addprefix $(top_srcdir)/,$(mpid_introspection_sources))
+MPID_0_13_gir_PACKAGES = gobject-2.0
+MPID_0_13_gir_SCANNERFLAGS = --symbol-prefix mpid_
+
+RB-0.13.gir: $(top_builddir)/shell/librhythmbox-core.la MPID-0.13.gir
+RB_0_13_gir_INCLUDES = GObject-2.0 Gio-2.0 Gtk-3.0 Gst-0.10 libxml2-2.0
+RB_0_13_gir_CFLAGS = $(RHYTHMBOX_CFLAGS_NOWARN) $(TOTEM_PLPARSER_CFLAGS) $(DBUS_CFLAGS) $(GUDEV_CFLAGS) -I../..
+RB_0_13_gir_LIBS = $(top_builddir)/shell/librhythmbox-core.la
+RB_0_13_gir_FILES = $(addprefix $(top_srcdir)/,$(rb_introspection_sources))
+RB_0_13_gir_PACKAGES = gobject-2.0 gio-2.0 gtk+-3.0 gstreamer-0.10 libxml-2.0
+RB_0_13_gir_SCANNERFLAGS = --symbol-prefix rb_ --identifier-prefix RB --accept-unprefixed --include-uninstalled=$(builddir)/MPID-0.13.gir
+
+INTROSPECTION_GIRS += MPID-0.13.gir RB-0.13.gir
+
+girdir = $(datadir)/gir-1.0
+dist_gir_DATA = $(INTROSPECTION_GIRS)
+
+typelibdir = $(libdir)/girepository-1.0
+typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+CLEANFILES = $(dist_gir_DATA) $(typelib_DATA)
diff --git a/configure.ac b/configure.ac
index 7355385..f6d488b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,6 +30,9 @@ dnl XXXX hack to kill off all the libtool tags ...
 dnl it isn't like we are using C++ or Fortran.
 m4_define([_LT_AC_TAGCONFIG],[])
 
+GOBJECT_INTROSPECTION_REQS=0.10.0
+GOBJECT_INTROSPECTION_REQUIRE([$GOBJECT_INTROSPECTION_REQS])
+
 IT_PROG_INTLTOOL([0.35.0])
 
 AC_ISC_POSIX
@@ -92,6 +95,7 @@ PKG_CHECK_MODULES(RB_CLIENT, glib-2.0 >= $GLIB_REQS gio-2.0 >= $GLIB_REQS gio-un
 
 dnl  note: gio-unix-2.0 is here for libmediaplayerid
 PKG_CHECK_MODULES(RHYTHMBOX,				\
+		  gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_REQS \
 		  gtk+-3.0 >= $GTK_REQS			\
 		  gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQS	\
 		  glib-2.0 >= $GLIB_REQS		\
@@ -546,6 +550,8 @@ else
 	set_more_warnings=no
 fi
 ])
+RHYTHMBOX_CFLAGS_NOWARN=$RHYTHMBOX_CFLAGS
+AC_SUBST(RHYTHMBOX_CFLAGS_NOWARN)
 AC_MSG_CHECKING(for more warnings, including -Werror)
 if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
 	AC_MSG_RESULT(yes)
@@ -930,6 +936,7 @@ plugins/dbus-media-server/Makefile
 plugins/rbzeitgeist/Makefile
 bindings/Makefile
 bindings/vala/Makefile
+bindings/gi/Makefile
 help/Makefile
 po/Makefile.in
 tests/Makefile
diff --git a/rhythmbox.h b/rhythmbox.h
new file mode 100644
index 0000000..70226a8
--- /dev/null
+++ b/rhythmbox.h
@@ -0,0 +1,86 @@
+/*
+ *  Copyright (C) 2010 Jonathan Matthew  <jonathan d14n org>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Rhythmbox authors hereby grant permission for non-GPL compatible
+ *  GStreamer plugins to be used and distributed together with GStreamer
+ *  and Rhythmbox. This permission is above and beyond the permissions granted
+ *  by the GPL license by which Rhythmbox is covered. If you modify this code
+ *  you may extend this exception to your version of the code, but you are not
+ *  obligated to do so. If you do not wish to do so, delete this exception
+ *  statement from your version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
+ *
+ */
+
+#ifndef __RHYTHMBOX_H
+#define __RHYTHMBOX_H
+
+#include <backends/rb-encoder.h>
+#include <backends/rb-player-gst-filter.h>
+#include <backends/rb-player-gst-tee.h>
+#include <backends/rb-player.h>
+#include <lib/rb-builder-helpers.h>
+#include <lib/rb-debug.h>
+#include <lib/rb-file-helpers.h>
+#include <lib/rb-preferences.h>
+#include <lib/rb-stock-icons.h>
+#include <lib/rb-util.h>
+#include <lib/libmediaplayerid/mediaplayerid.h>
+#include <metadata/rb-metadata.h>
+#include <podcast/rb-podcast-manager.h>
+#include <podcast/rb-podcast-parse.h>
+#include <shell/rb-shell.h>
+#include <shell/rb-shell-player.h>
+#include <shell/rb-shell-preferences.h>
+#include <shell/rb-playlist-manager.h>
+#include <shell/rb-removable-media-manager.h>
+#include <shell/rb-history.h>
+#include <shell/rb-play-order.h>
+#include <shell/rb-plugin.h>
+#include <sources/rb-display-page.h>
+#include <sources/rb-display-page-group.h>
+#include <sources/rb-display-page-model.h>
+#include <sources/rb-display-page-tree.h>
+#include <sources/rb-source.h>
+#include <sources/rb-streaming-source.h>
+#include <sources/rb-source-search.h>
+#include <sources/rb-browser-source.h>
+#include <sources/rb-removable-media-source.h>
+#include <sources/rb-media-player-source.h>
+#include <sources/rb-playlist-source.h>
+#include <sources/rb-playlist-xml.h>
+#include <sources/rb-auto-playlist-source.h>
+#include <sources/rb-static-playlist-source.h>
+#include <sources/rb-source-search-basic.h>
+#include <widgets/rb-entry-view.h>
+#include <widgets/rb-property-view.h>
+#include <widgets/rb-dialog.h>
+#include <widgets/rb-cell-renderer-pixbuf.h>
+#include <widgets/rb-cell-renderer-rating.h>
+#include <widgets/rb-rating.h>
+#include <widgets/rb-library-browser.h>
+#include <widgets/rb-segmented-bar.h>
+#include <widgets/rb-song-info.h>
+#include <widgets/rb-uri-dialog.h>
+#include <lib/rb-string-value-map.h>
+#include <rhythmdb/rhythmdb.h>
+#include <rhythmdb/rhythmdb-property-model.h>
+#include <rhythmdb/rhythmdb-query-model.h>
+#include <rhythmdb/rhythmdb-query-results.h>
+#include <rhythmdb/rhythmdb-import-job.h>
+#include <rhythmdb/rb-refstring.h>
+
+#endif /* __RHYTHMBOX_H */
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 225b43c..1ef5beb 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -162,7 +162,8 @@ rhythmbox_LDADD = 					\
 	librhythmbox-core.la				\
 	$(TOTEM_PLPARSER_LIBS)				\
 	$(RHYTHMBOX_LIBS)				\
-	$(DBUS_LIBS)
+	$(DBUS_LIBS)					\
+	$(INTROSPECTION_LIBS)
 
 rhythmbox_LDFLAGS = -export-dynamic -no-undefined
 
@@ -170,7 +171,6 @@ if ENABLE_PYTHON
 rhythmbox_LDADD += $(PYTHON_LIBS)
 endif
 
-
 BUILT_SOURCES += $(tab_files)
 
 CLEANFILES += $(BUILT_SOURCES)
diff --git a/shell/main.c b/shell/main.c
index 7381ad3..1de1c5f 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -60,6 +60,8 @@
 #include <libgda/libgda.h>
 #endif
 
+#include <gobject-introspection-1.0/girepository.h>
+
 #include "rb-refstring.h"
 #include "rb-shell.h"
 #include "rb-shell-player.h"
@@ -179,6 +181,10 @@ main (int argc, char **argv)
 		rb_debug_init (debug);
 	rb_debug ("initializing Rhythmbox %s", VERSION);
 
+#if defined(USE_UNINSTALLED_DIRS)
+	g_irepository_prepend_search_path (SHARE_UNINSTALLED_BUILDDIR "/../bindings/gi");
+#endif
+
 	/* TODO: kill this function */
 	rb_threads_init ();
 	gdk_threads_enter ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]