/* We need the depth because some of our nodes are in fact "double" nodes, which contain more info */ void print_node(node_t* node) { if ( node->nodetype != NODE_TYPE || (node->type != TYPE_ID && node->type != TYPE_INTLIT && node->type != TYPE_BOOLLIT) ) { printf("%s", node_get_name(node)); } else { assert(node->id); printf("%s(%s)", node_get_name(node), node->id); } }
void entitylist_treeviewcolumn_celldatafunc(GtkTreeViewColumn* column, GtkCellRenderer* renderer, GtkTreeModel* model, GtkTreeIter* iter, gpointer data) { scene::Node* node; gtk_tree_model_get_pointer(model, iter, 0, &node); scene::Instance* instance; gtk_tree_model_get_pointer(model, iter, 1, &instance); if(node != 0) { gtk_cell_renderer_set_fixed_size(renderer, -1, -1); char* name = const_cast<char*>(node_get_name(*node)); g_object_set(G_OBJECT(renderer), "text", name, "visible", TRUE, 0); //globalOutputStream() << "rendering cell " << makeQuoted(name) << "\n"; GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(getEntityList().m_tree_view)); if(instance->childSelected()) { g_object_set(G_OBJECT(renderer), "cell-background-gdk", &style->base[GTK_STATE_ACTIVE], 0); } else { g_object_set(G_OBJECT(renderer), "cell-background-gdk", &style->base[GTK_STATE_NORMAL], 0); } } else { gtk_cell_renderer_set_fixed_size(renderer, -1, 0); g_object_set(G_OBJECT(renderer), "text", "", "visible", FALSE, 0); } }
gint graph_tree_model_compare_name(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) { scene::Node* first; gtk_tree_model_get(model, a, 0, (gpointer*)&first, -1); scene::Node* second; gtk_tree_model_get(model, b, 0, (gpointer*)&second, -1); int result = 0; if(first != 0 && second != 0) { result = string_compare(node_get_name(*first), node_get_name(*second)); } if(result == 0) { return (first < second) ? -1 : (second < first) ? 1 : 0; } return result; }