示例#1
0
/* 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);
    }
}
示例#2
0
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);
  }
}
示例#3
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;
}