static void gb_project_tree_actions__trash_file_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeProject *project = (IdeProject *)object; g_autoptr(GbProjectTree) self = user_data; g_autoptr(GError) error = NULL; GbTreeNode *node; GObject *item = NULL; g_assert (IDE_IS_PROJECT (project)); g_assert (GB_IS_PROJECT_TREE (self)); if (!ide_project_trash_file_finish (project, result, &error)) { /* todo: warning dialog */ g_warning ("%s", error->message); return; } /* todo: this should be done with tree observer */ if ((node = gb_tree_get_selected (GB_TREE (self)))) { if ((node = gb_tree_node_get_parent (node))) item = gb_tree_node_get_item (node); } gb_tree_rebuild (GB_TREE (self)); if ((node = gb_tree_find_item (GB_TREE (self), item))) gb_tree_node_expand (node, TRUE); }
static void gb_project_tree_project_file_trashed (GbProjectTree *self, GFile *file, IdeProject *project) { IdeTreeNode *node; IDE_ENTRY; g_assert (GB_IS_PROJECT_TREE (self)); g_assert (G_IS_FILE (file)); g_assert (IDE_IS_PROJECT (project)); node = ide_tree_find_custom (IDE_TREE (self), compare_to_file, file); if (node != NULL) { IdeTreeNode *parent = ide_tree_node_get_parent (node); ide_tree_node_invalidate (parent); ide_tree_node_expand (parent, TRUE); ide_tree_node_select (parent); } IDE_EXIT; }
static void gb_project_tree_actions__project_rename_file_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeProject *project = (IdeProject *)object; g_autoptr(GbRenameFilePopover) popover = user_data; g_autoptr(GError) error = NULL; GbTreeNode *node; GFile *file; GbTree *tree; gboolean expanded = FALSE; g_assert (IDE_IS_PROJECT (project)); g_assert (GB_IS_RENAME_FILE_POPOVER (popover)); if (!ide_project_rename_file_finish (project, result, &error)) { /* todo: display error */ g_warning ("%s", error->message); return; } file = g_object_get_data (G_OBJECT (popover), "G_FILE"); tree = GB_TREE (gtk_popover_get_relative_to (GTK_POPOVER (popover))); g_assert (G_IS_FILE (file)); g_assert (GB_IS_TREE (tree)); if ((node = gb_tree_get_selected (tree))) expanded = gb_tree_node_get_expanded (node); gb_tree_rebuild (tree); node = gb_tree_find_custom (tree, (GEqualFunc)project_item_equal_func, file); if (node != NULL) { gb_tree_node_expand (node, TRUE); if (!expanded) gb_tree_node_collapse (node); gb_tree_node_select (node); gb_tree_scroll_to_node (tree, node); } gtk_widget_hide (GTK_WIDGET (popover)); gtk_widget_destroy (GTK_WIDGET (popover)); }
static void gb_project_tree_project_file_renamed (GbProjectTree *self, GFile *src_file, GFile *dst_file, IdeProject *project) { IDE_ENTRY; g_assert (GB_IS_PROJECT_TREE (self)); g_assert (G_IS_FILE (src_file)); g_assert (G_IS_FILE (dst_file)); g_assert (IDE_IS_PROJECT (project)); ide_tree_rebuild (IDE_TREE (self)); gb_project_tree_reveal (self, dst_file); IDE_EXIT; }