[PATCH 4/7] grl-inspect: Show information about a set of plugins
- From: "Juan A. Suarez Romero" <jasuarez igalia com>
- To: grilo-list gnome org
- Subject: [PATCH 4/7] grl-inspect: Show information about a set of plugins
- Date: Wed, 14 Jul 2010 10:41:09 +0200
Shows information from the plugins specified at command line.
---
tools/grilo-inspect/grl-inspect.c | 80 ++++++++++++++++++++++++++++++++-----
1 files changed, 70 insertions(+), 10 deletions(-)
diff --git a/tools/grilo-inspect/grl-inspect.c b/tools/grilo-inspect/grl-inspect.c
index 58a051b..77a8758 100644
--- a/tools/grilo-inspect/grl-inspect.c
+++ b/tools/grilo-inspect/grl-inspect.c
@@ -23,30 +23,91 @@
#include <grilo.h>
#include <glib.h>
-gint delay = 0;
-GMainLoop *mainloop = NULL;
+static gint delay = 0;
+static GMainLoop *mainloop = NULL;
+static gchar **introspect_plugins = NULL;
+static GrlPluginRegistry *registry = NULL;
static GOptionEntry entries[] = {
{ "delay", 'd', 0,
G_OPTION_ARG_INT, &delay,
"Wait some seconds before showing results",
NULL },
+ { G_OPTION_REMAINING, '\0', 0,
+ G_OPTION_ARG_STRING_ARRAY, &introspect_plugins,
+ "Plugins to introspect",
+ NULL },
{ NULL }
};
-static gboolean
-list_all_sources (gpointer data)
+static void
+list_all_sources ()
{
GrlMediaPlugin **plugin;
GrlMediaPlugin **plugins;
- GrlPluginRegistry *registry;
-
- registry = grl_plugin_registry_get_instance ();
plugins = grl_plugin_registry_get_sources (registry, FALSE);
for (plugin = plugins; *plugin; plugin++) {
g_print ("%s\n", grl_media_plugin_get_id (*plugin));
}
+}
+
+static void
+introspect_plugin (const gchar *plugin_id)
+{
+ GrlMediaPlugin *plugin;
+ const gchar *value;
+
+ plugin = grl_plugin_registry_lookup_source (registry, plugin_id);
+
+ if (plugin) {
+ g_print ("Plugin Details:\n");
+ g_print (" Identifier:\t\t%s\n", grl_media_plugin_get_id (plugin));
+ g_print (" Filename:\t\t%s\n", grl_media_plugin_get_filename (plugin));
+ g_print (" Rank:\t\t\t%d\n", grl_media_plugin_get_rank (plugin));
+
+ value = grl_media_plugin_get_name (plugin);
+ if (value) {
+ g_print (" Name:\t\t\t%s\n", value);
+ }
+ value = grl_media_plugin_get_description (plugin);
+ if (value) {
+ g_print (" Description:\t\t%s\n", value);
+ }
+ value = grl_media_plugin_get_version (plugin);
+ if (value) {
+ g_print (" Version:\t\t%s\n", value);
+ }
+ value = grl_media_plugin_get_license (plugin);
+ if (value) {
+ g_print (" License:\t\t%s\n", value);
+ }
+ value = grl_media_plugin_get_author (plugin);
+ if (value) {
+ g_print (" Author:\t\t%s\n", value);
+ }
+ value = grl_media_plugin_get_site (plugin);
+ if (value) {
+ g_print (" Site:\t\t\t%s\n", value);
+ }
+ g_print ("\n");
+ } else {
+ g_printerr ("Plugin Not Found: %s\n\n", plugin_id);
+ }
+}
+
+static gboolean
+run (gpointer data)
+{
+ gchar **p;
+
+ if (introspect_plugins) {
+ for (p = introspect_plugins; *p; p++) {
+ introspect_plugin (*p);
+ }
+ } else {
+ list_all_sources ();
+ }
g_main_loop_quit (mainloop);
@@ -58,7 +119,6 @@ main (int argc, char *argv[])
{
GError *error = NULL;
GOptionContext *context;
- GrlPluginRegistry *registry;
context = g_option_context_new ("- introspect Grilo plugins");
g_option_context_add_main_entries (context, entries, NULL);
@@ -81,9 +141,9 @@ main (int argc, char *argv[])
grl_plugin_registry_load_all (registry);
if (delay > 0) {
- g_timeout_add_seconds ((guint) delay, list_all_sources, NULL);
+ g_timeout_add_seconds ((guint) delay, run, NULL);
} else {
- g_idle_add (list_all_sources, NULL);
+ g_idle_add (run, NULL);
}
g_main_loop_run (mainloop);
--
1.7.0.4
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]