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