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 its 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; }
static gboolean load_indicator (IndicatorObject *io, GtkWidget * menu) { g_return_val_if_fail(io != NULL, FALSE); /* Connect to its 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; }
static void pp_load_indicator_module(PPPanel *panel, const gchar *name) { fprintf(stderr, "loading %s\n", name); gchar *path = g_build_filename(PP_INDICATOR_DIR, name, NULL); IndicatorObject *obj = indicator_object_new_from_file(path); g_free(path); /* TODO: Removal handler */ g_signal_connect(G_OBJECT(obj), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(pp_on_entry_added), panel); GList *entries = indicator_object_get_entries(obj); GList *entry = entries; while (entry != NULL) { IndicatorObjectEntry *entry_data = (IndicatorObjectEntry *) entry->data; pp_on_entry_added(obj, entry_data, panel); entry = g_list_next(entry); } g_list_free(entries); }