static IdeVcs * get_vcs (IdeTreeNode *node) { IdeTree *tree; IdeTreeNode *root; IdeContext *context; g_assert (IDE_IS_TREE_NODE (node)); tree = ide_tree_node_get_tree (node); root = ide_tree_get_root (tree); context = IDE_CONTEXT (ide_tree_node_get_item (root)); return ide_context_get_vcs (context); }
IdeContext * gb_project_tree_get_context (GbProjectTree *self) { IdeTreeNode *root; GObject *item; g_return_val_if_fail (GB_IS_PROJECT_TREE (self), NULL); if ((root = ide_tree_get_root (IDE_TREE (self))) && (item = ide_tree_node_get_item (root)) && IDE_IS_CONTEXT (item)) return IDE_CONTEXT (item); return NULL; }
static void build_context (GbProjectTreeBuilder *self, IdeTreeNode *node) { g_autoptr(GbProjectFile) item = NULL; g_autoptr(GFileInfo) file_info = NULL; g_autofree gchar *name = NULL; IdeTreeNode *child; IdeContext *context; IdeProject *project; IdeVcs *vcs; GFile *workdir; g_return_if_fail (GB_IS_PROJECT_TREE_BUILDER (self)); g_return_if_fail (IDE_IS_TREE_NODE (node)); context = IDE_CONTEXT (ide_tree_node_get_item (node)); vcs = ide_context_get_vcs (context); workdir = ide_vcs_get_working_directory (vcs); project = ide_context_get_project (context); file_info = g_file_info_new (); g_file_info_set_file_type (file_info, G_FILE_TYPE_DIRECTORY); name = g_file_get_basename (workdir); g_file_info_set_name (file_info, name); g_file_info_set_display_name (file_info, name); item = g_object_new (GB_TYPE_PROJECT_FILE, "file", workdir, "file-info", file_info, NULL); child = g_object_new (IDE_TYPE_TREE_NODE, "item", item, "icon-name", "folder-symbolic", NULL); g_object_bind_property (project, "name", child, "text", G_BINDING_SYNC_CREATE); ide_tree_node_append (node, child); }