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); } }
static void gb_project_tree_init (GbProjectTree *self) { GbTreeBuilder *builder; gb_tree_set_root (GB_TREE (self), gb_tree_node_new ()); self->settings = g_settings_new ("org.gnome.builder.project-tree"); g_settings_bind (self->settings, "show-icons", self, "show-icons", G_SETTINGS_BIND_DEFAULT); builder = gb_project_tree_builder_new (); gb_tree_add_builder (GB_TREE (self), builder); g_signal_connect (self, "notify::selection", G_CALLBACK (gb_project_tree_notify_selection), NULL); gb_project_tree_actions_init (self); }