aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2009-11-24 10:04:28 -0600
committerTed Gould <ted@gould.cx>2009-11-24 10:04:28 -0600
commit93650be784700d574f25eb28114784d88d767ced (patch)
treeaa0597ba2e3835259ac8486d0de30eef1a194e20 /tools
parenta7b77875edb12a6ef46e58b6f26324d25c10b7cd (diff)
downloadlibayatana-indicator-93650be784700d574f25eb28114784d88d767ced.tar.gz
libayatana-indicator-93650be784700d574f25eb28114784d88d767ced.tar.bz2
libayatana-indicator-93650be784700d574f25eb28114784d88d767ced.zip
Adding a small little tool to load an indicator from the command line.
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.am22
-rw-r--r--tools/indicator-loader.c74
2 files changed, 95 insertions, 1 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 9de44fc..5e5ef8d 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -1 +1,21 @@
-#Something
+
+libexec_PROGRAMS = \
+ indicator-loader
+
+#############################
+# Indicator Loader
+#############################
+
+indicator_loader_SOURCES = \
+ indicator-loader.c
+
+indicator_loader_CFLAGS = \
+ -Wall -Werror \
+ $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) \
+ -DBUILD_DIR="\"$(builddir)\""
+
+indicator_loader_LDADD = \
+ $(LIBINDICATOR_LIBS) \
+ -L$(top_builddir)/libindicator/.libs \
+ -lindicator
+
diff --git a/tools/indicator-loader.c b/tools/indicator-loader.c
new file mode 100644
index 0000000..7963656
--- /dev/null
+++ b/tools/indicator-loader.c
@@ -0,0 +1,74 @@
+
+#include <gtk/gtk.h>
+#include <libindicator/indicator-object.h>
+
+static void
+entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data)
+{
+ g_debug("Signal: Entry Added");
+ return;
+}
+
+static void
+entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data)
+{
+ g_debug("Signal: Entry Removed");
+ return;
+}
+
+static gboolean
+load_module (const gchar * name, GtkWidget * menu)
+{
+ g_debug("Looking at Module: %s", name);
+ g_return_val_if_fail(name != NULL, FALSE);
+
+ if (!g_str_has_suffix(name, G_MODULE_SUFFIX)) {
+ return FALSE;
+ }
+
+ g_debug("Loading Module: %s", name);
+
+ /* Build the object for the module */
+ IndicatorObject * io = indicator_object_new_from_file(name);
+
+ /* Connect to it's signals */
+ g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(entry_added), menu);
+ g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, G_CALLBACK(entry_removed), menu);
+
+ /* Work on the entries */
+ GList * entries = indicator_object_get_entries(io);
+ GList * entry = NULL;
+
+ for (entry = entries; entry != NULL; entry = g_list_next(entry)) {
+ IndicatorObjectEntry * entrydata = (IndicatorObjectEntry *)entry->data;
+ entry_added(io, entrydata, menu);
+ }
+
+ g_list_free(entries);
+
+ return TRUE;
+}
+
+int
+main (int argc, char ** argv)
+{
+ gtk_init(&argc, &argv);
+
+ if (argc != 2) {
+ g_error("Need filename");
+ return 1;
+ }
+
+ GtkWidget * menubar = gtk_menu_bar_new();
+ if (!load_module(argv[1], menubar)) {
+ g_error("Unable to load module");
+ return 1;
+ }
+
+ GtkWidget * window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_container_add(GTK_CONTAINER(window), menubar);
+
+ gtk_main();
+
+ return 0;
+}