DBusNode::Ptr GetNodeWithId(int object_id) { QString query = QString("//*[id=%1]").arg(object_id); QList<DBusNode::Ptr> objects = GetNodesThatMatchQuery(query); if (objects.isEmpty()) { qWarning() << "No Object with with id" << object_id << "found in object tree."; return DBusNode::Ptr(); } return objects.at(0); }
GVariant* Introspect(std::string const& query_string) { //g_debug("introspecting our current GTK+ context"); GVariantBuilder* builder = g_variant_builder_new(G_VARIANT_TYPE("a(sv)")); std::list<GtkNode::Ptr> node_list = GetNodesThatMatchQuery(query_string); for (auto node: node_list) { std::string object_path = node->GetPath(); g_variant_builder_add(builder, "(sv)", object_path.c_str(), node->Introspect()); //g_debug("dumped object '%s'", object_path.c_str()); } GVariant* state = g_variant_new("a(sv)", builder); g_variant_builder_unref(builder); return state; }