Пример #1
0
void
gb_project_tree_set_context (GbProjectTree *self,
                             IdeContext    *context)
{
  GtkTreeModel *model;
  GtkTreeIter iter;
  GbTreeNode *root;

  g_return_if_fail (GB_IS_PROJECT_TREE (self));
  g_return_if_fail (!context || IDE_IS_CONTEXT (context));

  model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));

  root = gb_tree_node_new ();
  gb_tree_node_set_item (root, G_OBJECT (context));
  gb_tree_set_root (GB_TREE (self), root);

  /*
   * If we only have one toplevel item (underneath root), expand it.
   */
  if ((gtk_tree_model_iter_n_children (model, NULL) == 1) &&
      gtk_tree_model_get_iter_first (model, &iter))
    {
      g_autoptr(GbTreeNode) node = NULL;

      gtk_tree_model_get (model, &iter, 0, &node, -1);
      if (node != NULL)
        gb_tree_node_expand (node, FALSE);
    }
}
Пример #2
0
void
gb_project_tree_set_context (GbProjectTree *self,
                             IdeContext    *context)
{
  GbTreeNode *root;
  IdeProject *project = NULL;
  GtkTreeModel *model;

  g_return_if_fail (GB_IS_PROJECT_TREE (self));
  g_return_if_fail (!context || IDE_IS_CONTEXT (context));

  if (context != NULL)
    project = ide_context_get_project (context);

  root = gb_tree_get_root (GB_TREE (self));
  gb_tree_node_set_item (root, G_OBJECT (project));

  gb_tree_rebuild (GB_TREE (self));

  /*
   * If we only have one item at the root of the tree, expand it.
   */
  if ((model = gtk_tree_view_get_model (GTK_TREE_VIEW (self))))
    {
      GtkTreeIter iter;

      if ((gtk_tree_model_iter_n_children (model, NULL) == 1) &&
          gtk_tree_model_get_iter_first (model, &iter))
        {
          g_autoptr(GbTreeNode) node = NULL;

          gtk_tree_model_get (model, &iter, 0, &node, -1);
          if (node != NULL)
            gb_tree_node_expand (node, FALSE);
        }
    }
}