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; }
void RL::ListImpl::publish () const { for (std::list<boost::shared_ptr<List> >::const_iterator iter = lists.begin (); iter != lists.end (); ++iter) (*iter)->publish (); for (std::list<std::pair<boost::shared_ptr<Entry>, std::list<boost::signals::connection> > >::const_iterator iter = entries.begin (); iter != entries.end (); ++iter) { entry_added (iter->first); } }
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; }
void RL::ListImpl::parse () { int list_pos = 1; int entry_pos = 1; for (xmlNodePtr child = node->children; child != NULL; child = child->next) { if (child->type == XML_ELEMENT_NODE && child->name != NULL && xmlStrEqual (BAD_CAST "display-name", child->name)) { xmlChar* str = xmlNodeGetContent (child); name_node = child; if (str != NULL) { if ( !group.empty ()) display_name = group + " / " + (const char*) str; else display_name = (const char*) str; xmlFree (str); } break; } } for (xmlNodePtr child = node->children; child != NULL; child = child->next) { if (child->type == XML_ELEMENT_NODE && child->name != NULL && xmlStrEqual (BAD_CAST "list", child->name)) { boost::shared_ptr<List> list = boost::shared_ptr<List> (new List (core, path, list_pos, display_name, child)); list->entry_added.connect (entry_added); list->entry_updated.connect (entry_updated); list->entry_removed.connect (entry_removed); lists.push_back (list); ordering.push_back (LIST); list_pos++; list->publish (); continue; } if (child->type == XML_ELEMENT_NODE && child->name != NULL && xmlStrEqual (BAD_CAST "entry", child->name)) { boost::shared_ptr<Entry> entry = boost::shared_ptr<Entry> (new Entry (core, path, entry_pos, display_name, doc, child)); std::list<boost::signals::connection> conns; conns.push_back (entry->updated.connect (boost::bind (boost::ref (entry_updated), entry))); conns.push_back (entry->removed.connect (boost::bind (boost::ref (entry_removed), entry))); entries.push_back (std::pair<boost::shared_ptr<Entry>, std::list<boost::signals::connection> > (entry, conns)); ordering.push_back (ENTRY); entry_pos++; entry_added (entry); continue; } } }