[anjuta] libanjuta, project-manager, document-manager: ianjuta_project_manager_get_children find now all chil
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] libanjuta, project-manager, document-manager: ianjuta_project_manager_get_children find now all chil
- Date: Mon, 13 Feb 2012 21:50:28 +0000 (UTC)
commit 396ddf094ee84e25bf89fab8e12e699e5ac8acfc
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Mon Feb 13 22:06:08 2012 +0100
libanjuta, project-manager, document-manager: ianjuta_project_manager_get_children find now all children with the specified type
This is changing the behavior of the ianjuta_project_manager_get_children function.
Previously only the direct children of the parent nodes were returned and there is no argument to specify children type.
libanjuta/interfaces/libanjuta.idl | 15 ++-
plugins/document-manager/search-files.c | 186 ++++++++++++++-----------------
plugins/project-manager/plugin.c | 96 +++++++---------
3 files changed, 133 insertions(+), 164 deletions(-)
---
diff --git a/libanjuta/interfaces/libanjuta.idl b/libanjuta/interfaces/libanjuta.idl
index 2c8fd61..a26e947 100644
--- a/libanjuta/interfaces/libanjuta.idl
+++ b/libanjuta/interfaces/libanjuta.idl
@@ -3536,16 +3536,19 @@ interface IAnjutaProjectManager
/**
* ianjuta_project_manager_get_children:
* @obj: Self
- * @element: A #GFile corresponding to a parent.
+ * @parent: A #GFile corresponding to the parent.
+ * @children_type: Select one element type: source, group or target
* @err: Error propagation and reporting.
*
- * Gets the list of all children of the corresponding parent.
+ * Recursively gets the list of all children below the corresponding
+ * parent having the specify type.
*
- * Returns: (element-type GFile) (transfer full): The list of #GFile corresponding to
- * each child of the element or %NULL if the element has no child. Free the returned
- * list with g_list_free() and the files with g_object_unref().
+ * Returns: (element-type GFile) (transfer full): The list of #GFile
+ * corresponding to all children or %NULL if the element has no
+ * children with the corresponding type. Free the returned * list
+ * with g_list_free() and the files with g_object_unref().
*/
- List<GFile*> get_children (GFile *element);
+ List<GFile*> get_children (GFile *parent, gint children_type);
/**
* ianjuta_project_manager_get_selected:
diff --git a/plugins/document-manager/search-files.c b/plugins/document-manager/search-files.c
index 5ee28ff..a4a0cd9 100644
--- a/plugins/document-manager/search-files.c
+++ b/plugins/document-manager/search-files.c
@@ -2,17 +2,17 @@
/*
* anjuta
* Copyright (C) Johannes Schmid 2012 <jhs gnome org>
- *
+ *
* anjuta is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* anjuta is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@@ -34,13 +34,13 @@ struct _SearchFilesPrivate
GtkBuilder* builder;
GtkWidget* main_box;
-
+
GtkWidget* search_button;
GtkWidget* replace_button;
-
+
GtkWidget* search_entry;
GtkWidget* replace_entry;
-
+
GtkWidget* files_combo;
GtkWidget* project_combo;
GtkWidget* file_type_combo;
@@ -49,12 +49,12 @@ struct _SearchFilesPrivate
GtkWidget* regex_check;
GtkWidget* spinner_busy;
-
+
GtkWidget* files_tree;
GtkTreeModel* files_model;
GtkWidget* files_tree_check;
-
+
AnjutaDocman* docman;
SearchBox* search_box;
GtkWidget* dialog;
@@ -67,7 +67,7 @@ struct _SearchFilesPrivate
/* Project uri of last search */
GFile* project_file;
-
+
gboolean busy;
};
@@ -103,7 +103,7 @@ search_files_update_ui (SearchFiles* sf)
GtkTreeIter iter;
gboolean can_replace = FALSE;
gboolean can_search = FALSE;
-
+
if (!sf->priv->busy)
{
gtk_spinner_stop(GTK_SPINNER (sf->priv->spinner_busy));
@@ -156,10 +156,10 @@ search_files_check_column_toggled (GtkCellRendererToggle* renderer,
gtk_tree_model_get_iter (sf->priv->files_model, &iter, tree_path);
gtk_tree_path_free(tree_path);
-
+
gtk_tree_model_get (sf->priv->files_model, &iter,
COLUMN_SELECTED, &state, -1);
-
+
gtk_list_store_set (GTK_LIST_STORE (sf->priv->files_model), &iter,
COLUMN_SELECTED, !state,
-1);
@@ -177,15 +177,15 @@ static void
search_files_command_finished (SearchFileCommand* cmd,
guint return_code,
SearchFiles* sf)
-{
+{
GtkTreeIter iter;
GtkTreeRowReference* tree_ref;
GtkTreePath* path;
-
+
tree_ref = g_object_get_data (G_OBJECT (cmd),
"__tree_ref");
path = gtk_tree_row_reference_get_path(tree_ref);
-
+
gtk_tree_model_get_iter(sf->priv->files_model, &iter, path);
gtk_list_store_set (GTK_LIST_STORE (sf->priv->files_model),
&iter,
@@ -205,7 +205,7 @@ search_files_command_finished (SearchFileCommand* cmd,
anjuta_command_get_error_message(ANJUTA_COMMAND(cmd)),
-1);
}
-
+
g_object_unref (cmd);
}
@@ -213,11 +213,11 @@ static void
search_files_search (SearchFiles* sf)
{
GtkTreeIter iter;
-
+
if (gtk_tree_model_get_iter_first(sf->priv->files_model, &iter))
{
AnjutaCommandQueue* queue = anjuta_command_queue_new(ANJUTA_COMMAND_QUEUE_EXECUTE_MANUAL);
- const gchar* pattern =
+ const gchar* pattern =
gtk_entry_get_text (GTK_ENTRY (sf->priv->search_entry));
do
{
@@ -225,26 +225,26 @@ search_files_search (SearchFiles* sf)
gboolean selected;
/* Save the current values */
- sf->priv->regex =
+ sf->priv->regex =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sf->priv->regex_check));
sf->priv->case_sensitive =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sf->priv->case_check));
-
+
g_free (sf->priv->last_search_string);
sf->priv->last_search_string = g_strdup(pattern);
g_free (sf->priv->last_replace_string);
sf->priv->last_replace_string = NULL;
gtk_tree_model_get (sf->priv->files_model, &iter,
- COLUMN_FILE, &file,
+ COLUMN_FILE, &file,
COLUMN_SELECTED, &selected, -1);
if (selected)
{
GtkTreePath* path;
GtkTreeRowReference* ref;
-
+
path = gtk_tree_model_get_path(sf->priv->files_model, &iter);
- ref = gtk_tree_row_reference_new(sf->priv->files_model,
+ ref = gtk_tree_row_reference_new(sf->priv->files_model,
path);
gtk_tree_path_free(path);
@@ -257,7 +257,7 @@ search_files_search (SearchFiles* sf)
g_object_set_data (G_OBJECT (cmd), "__tree_ref",
ref);
- g_signal_connect (cmd, "command-finished",
+ g_signal_connect (cmd, "command-finished",
G_CALLBACK(search_files_command_finished), sf);
anjuta_command_queue_push(queue,
@@ -283,11 +283,11 @@ void
search_files_replace_clicked (SearchFiles* sf)
{
GtkTreeIter iter;
-
+
if (gtk_tree_model_get_iter_first(sf->priv->files_model, &iter))
{
AnjutaCommandQueue* queue = anjuta_command_queue_new(ANJUTA_COMMAND_QUEUE_EXECUTE_MANUAL);
- const gchar* pattern =
+ const gchar* pattern =
gtk_entry_get_text (GTK_ENTRY (sf->priv->search_entry));
const gchar* replace =
gtk_entry_get_text (GTK_ENTRY (sf->priv->replace_entry));
@@ -297,26 +297,26 @@ search_files_replace_clicked (SearchFiles* sf)
gboolean selected;
/* Save the current values */
- sf->priv->regex =
+ sf->priv->regex =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sf->priv->regex_check));
sf->priv->case_sensitive =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (sf->priv->case_check));
-
+
g_free (sf->priv->last_search_string);
sf->priv->last_search_string = g_strdup(pattern);
g_free (sf->priv->last_replace_string);
sf->priv->last_replace_string = g_strdup(replace);
gtk_tree_model_get (sf->priv->files_model, &iter,
- COLUMN_FILE, &file,
+ COLUMN_FILE, &file,
COLUMN_SELECTED, &selected, -1);
if (selected)
{
GtkTreePath* path;
GtkTreeRowReference* ref;
-
+
path = gtk_tree_model_get_path(sf->priv->files_model, &iter);
- ref = gtk_tree_row_reference_new(sf->priv->files_model,
+ ref = gtk_tree_row_reference_new(sf->priv->files_model,
path);
gtk_tree_path_free(path);
@@ -329,7 +329,7 @@ search_files_replace_clicked (SearchFiles* sf)
g_object_set_data (G_OBJECT (cmd), "__tree_ref",
ref);
- g_signal_connect (cmd, "command-finished",
+ g_signal_connect (cmd, "command-finished",
G_CALLBACK(search_files_command_finished), sf);
anjuta_command_queue_push(queue,
@@ -352,26 +352,6 @@ search_files_replace_clicked (SearchFiles* sf)
}
static void
-search_files_get_files (GFile* parent, GList** files, IAnjutaProjectManager* pm)
-{
- GList* node;
- GList* children = ianjuta_project_manager_get_children(pm, parent, NULL);
- for (node = children;node != NULL; node = g_list_next(node))
- {
- search_files_get_files(G_FILE(node->data), files, pm);
- if (ianjuta_project_manager_get_target_type (pm,
- G_FILE (node->data),
- NULL)
- == ANJUTA_PROJECT_SOURCE)
- {
- *files = g_list_append (*files, node->data);
- }
- }
- g_list_foreach (children, (GFunc)g_object_unref, NULL);
- g_list_free(children);
-}
-
-static void
search_files_filter_command_finished (SearchFilterFileCommand* cmd,
guint return_code,
SearchFiles* sf)
@@ -379,12 +359,12 @@ search_files_filter_command_finished (SearchFilterFileCommand* cmd,
GFile* file;
GtkTreeIter iter;
gchar* display_name = NULL;
-
+
if (return_code)
return;
g_object_get (cmd, "file", &file, NULL);
-
+
if (sf->priv->project_file)
{
display_name = g_file_get_relative_path (sf->priv->project_file,
@@ -429,15 +409,15 @@ search_files_search_clicked (SearchFiles* sf)
GtkTreeIter iter;
g_return_if_fail (sf != NULL && SEARCH_IS_FILES (sf));
-
+
/* Clear store */
gtk_list_store_clear(GTK_LIST_STORE (sf->priv->files_model));
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (sf->priv->files_model),
COLUMN_FILENAME,
- GTK_SORT_DESCENDING);
-
+ GTK_SORT_DESCENDING);
+
/* Get file and type selection */
- selected =
+ selected =
ianjuta_project_chooser_get_selected(IANJUTA_PROJECT_CHOOSER (sf->priv->project_combo),
NULL);
type_combo = GTK_COMBO_BOX (sf->priv->file_type_combo);
@@ -451,7 +431,7 @@ search_files_search_clicked (SearchFiles* sf)
pm = anjuta_shell_get_interface (sf->priv->docman->shell,
IAnjutaProjectManager,
NULL);
- search_files_get_files (selected, &files, pm);
+ files = ianjuta_project_manager_get_children(pm, selected, ANJUTA_PROJECT_SOURCE, NULL);
/* Query project root uri */
anjuta_shell_get (sf->priv->docman->shell,
@@ -460,7 +440,7 @@ search_files_search_clicked (SearchFiles* sf)
&project_uri, NULL);
if (sf->priv->project_file)
g_object_unref (sf->priv->project_file);
-
+
if (project_uri)
{
sf->priv->project_file = g_file_new_for_uri (project_uri);
@@ -470,11 +450,11 @@ search_files_search_clicked (SearchFiles* sf)
/* Queue file filtering */
queue = anjuta_command_queue_new(ANJUTA_COMMAND_QUEUE_EXECUTE_MANUAL);
- g_signal_connect (queue, "finished",
+ g_signal_connect (queue, "finished",
G_CALLBACK (search_files_filter_finished), sf);
for (file = files; file != NULL; file = g_list_next (file))
{
- SearchFilterFileCommand* cmd =
+ SearchFilterFileCommand* cmd =
search_filter_file_command_new(G_FILE (file->data),
mime_types);
g_signal_connect (cmd, "command-finished",
@@ -484,10 +464,10 @@ search_files_search_clicked (SearchFiles* sf)
sf->priv->busy = TRUE;
anjuta_command_queue_start (queue);
search_files_update_ui(sf);
-
+
g_list_foreach (files, (GFunc) g_object_unref, NULL);
g_list_free (files);
- g_free (mime_types);
+ g_free (mime_types);
}
static void
@@ -511,7 +491,7 @@ search_files_render_count (GtkTreeViewColumn *tree_column,
static void
search_files_editor_loaded (SearchFiles* sf, IAnjutaEditor* editor)
{
- search_box_set_search_string(sf->priv->search_box,
+ search_box_set_search_string(sf->priv->search_box,
sf->priv->last_search_string);
if (sf->priv->last_replace_string)
{
@@ -536,7 +516,7 @@ search_files_editor_loaded (SearchFiles* sf, IAnjutaEditor* editor)
gtk_widget_show (GTK_WIDGET(sf->priv->search_box));
}
-
+
static void
search_files_result_activated (GtkTreeView* files_tree,
@@ -551,20 +531,20 @@ search_files_result_activated (GtkTreeView* files_tree,
gtk_tree_model_get_iter (sf->priv->files_model, &iter, path);
gtk_tree_model_get (sf->priv->files_model, &iter,
COLUMN_FILE, &file, -1);
-
+
/* Check if document is open */
editor = anjuta_docman_get_document_for_file(sf->priv->docman, file);
-
+
if (editor && IANJUTA_IS_EDITOR(editor))
{
search_files_editor_loaded (sf, IANJUTA_EDITOR(editor));
}
else
{
- IAnjutaEditor* real_editor =
+ IAnjutaEditor* real_editor =
anjuta_docman_goto_file_line(sf->priv->docman, file, 0);
if (real_editor)
- g_signal_connect_swapped (real_editor, "opened",
+ g_signal_connect_swapped (real_editor, "opened",
G_CALLBACK (search_files_editor_loaded), sf);
}
@@ -582,7 +562,7 @@ search_files_init_tree (SearchFiles* sf)
GtkCellRenderer* filename_renderer;
GtkCellRenderer* count_renderer;
GtkCellRenderer* error_renderer;
-
+
column_select = gtk_tree_view_column_new();
sf->priv->files_tree_check = gtk_check_button_new();
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sf->priv->files_tree_check),
@@ -601,8 +581,8 @@ search_files_init_tree (SearchFiles* sf)
g_signal_connect (selection_renderer, "toggled",
G_CALLBACK(search_files_check_column_toggled), sf);
gtk_tree_view_column_set_sort_column_id(column_select,
- COLUMN_SELECTED);
-
+ COLUMN_SELECTED);
+
column_filename = gtk_tree_view_column_new();
gtk_tree_view_column_set_expand(column_filename,
TRUE);
@@ -630,7 +610,7 @@ search_files_init_tree (SearchFiles* sf)
error_renderer,
"visible",
COLUMN_ERROR_CODE);
-
+
column_count = gtk_tree_view_column_new();
gtk_tree_view_column_set_title (column_count, "#");
count_renderer = gtk_cell_renderer_text_new();
@@ -640,7 +620,7 @@ search_files_init_tree (SearchFiles* sf)
gtk_tree_view_column_add_attribute (column_count,
count_renderer,
"sensitive",
- COLUMN_COUNT);
+ COLUMN_COUNT);
gtk_tree_view_column_set_cell_data_func(column_count,
count_renderer,
search_files_render_count,
@@ -648,7 +628,7 @@ search_files_init_tree (SearchFiles* sf)
NULL);
gtk_tree_view_column_set_sort_column_id(column_count,
COLUMN_COUNT);
-
+
sf->priv->files_model = GTK_TREE_MODEL (gtk_list_store_new (N_COLUMNS,
G_TYPE_BOOLEAN,
G_TYPE_STRING,
@@ -660,8 +640,8 @@ search_files_init_tree (SearchFiles* sf)
G_TYPE_INT));
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (sf->priv->files_model),
COLUMN_FILENAME,
- GTK_SORT_DESCENDING);
-
+ GTK_SORT_DESCENDING);
+
g_signal_connect_swapped (sf->priv->files_model,
"row-inserted",
G_CALLBACK (search_files_update_ui),
@@ -673,7 +653,7 @@ search_files_init_tree (SearchFiles* sf)
g_signal_connect_swapped (sf->priv->files_model,
"row-changed",
G_CALLBACK (search_files_update_ui),
- sf);
+ sf);
gtk_tree_view_set_model (GTK_TREE_VIEW (sf->priv->files_tree), sf->priv->files_model);
gtk_tree_view_append_column(GTK_TREE_VIEW (sf->priv->files_tree),
@@ -692,15 +672,15 @@ static void
search_files_type_combo_init (SearchFiles* sf)
{
GtkCellRenderer* combo_renderer = gtk_cell_renderer_text_new();
-
+
GtkTreeIter iter;
GtkListStore* store;
-
+
IAnjutaLanguage* lang_manager =
anjuta_shell_get_interface (sf->priv->docman->shell,
IAnjutaLanguage,
NULL);
-
+
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (sf->priv->file_type_combo),
combo_renderer, TRUE);
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (sf->priv->file_type_combo),
@@ -712,18 +692,18 @@ search_files_type_combo_init (SearchFiles* sf)
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE (store),
COMBO_LANG_NAME,
GTK_SORT_DESCENDING);
-
+
gtk_combo_box_set_model(GTK_COMBO_BOX(sf->priv->file_type_combo),
GTK_TREE_MODEL (store));
-
+
gtk_list_store_append(store, &iter);
- gtk_list_store_set (store, &iter,
+ gtk_list_store_set (store, &iter,
COMBO_LANG_NAME, _("All text files"),
COMBO_LANG_TYPES, TEXT_MIME_TYPE,
-1);
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(sf->priv->file_type_combo),
&iter);
-
+
if (lang_manager)
{
GList* languages =
@@ -740,7 +720,7 @@ search_files_type_combo_init (SearchFiles* sf)
const gchar* name = ianjuta_language_get_name (lang_manager,
GPOINTER_TO_INT (lang->data),
NULL);
-
+
for (mime_type = mime_types; mime_type != NULL; mime_type = g_list_next (mime_type))
{
if (type_string->len)
@@ -756,7 +736,7 @@ search_files_type_combo_init (SearchFiles* sf)
-1);
g_string_free (type_string, TRUE);
- }
+ }
}
}
@@ -764,8 +744,8 @@ static void
search_files_init (SearchFiles* sf)
{
GError* error = NULL;
-
- sf->priv =
+
+ sf->priv =
G_TYPE_INSTANCE_GET_PRIVATE (sf, SEARCH_TYPE_FILES, SearchFilesPrivate);
sf->priv->builder = gtk_builder_new();
@@ -778,7 +758,7 @@ search_files_init (SearchFiles* sf)
g_error_free(error);
return;
}
-
+
sf->priv->main_box = GTK_WIDGET (gtk_builder_get_object(sf->priv->builder,
"main_box"));
sf->priv->search_button = GTK_WIDGET (gtk_builder_get_object(sf->priv->builder,
@@ -800,14 +780,14 @@ search_files_init (SearchFiles* sf)
"regex_check"));
sf->priv->spinner_busy = GTK_WIDGET (gtk_builder_get_object(sf->priv->builder,
"spinner_busy"));
-
+
sf->priv->files_tree = GTK_WIDGET (gtk_builder_get_object(sf->priv->builder,
- "files_tree"));
+ "files_tree"));
search_files_init_tree(sf);
-
+
gtk_builder_connect_signals(sf->priv->builder, sf);
-
+
g_object_ref (sf->priv->main_box);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (sf->priv->main_box)),
sf->priv->main_box);
@@ -824,7 +804,7 @@ search_files_finalize (GObject* object)
g_object_unref (sf->priv->project_file);
g_free (sf->priv->last_search_string);
g_free (sf->priv->last_replace_string);
-
+
G_OBJECT_CLASS (search_files_parent_class)->finalize (object);
}
@@ -850,7 +830,7 @@ search_files_project_loaded (SearchFiles* sf, IAnjutaProjectManager *pm, GError*
}
}
-SearchFiles*
+SearchFiles*
search_files_new (AnjutaDocman* docman, SearchBox* search_box)
{
AnjutaShell* shell = docman->shell;
@@ -871,25 +851,25 @@ search_files_new (AnjutaDocman* docman, SearchBox* search_box)
sf->priv->docman = docman;
sf->priv->search_box = search_box;
-
+
gtk_widget_show (sf->priv->main_box);
search_files_type_combo_init(sf);
search_files_update_ui(sf);
-
- return sf;
+
+ return sf;
}
void search_files_present (SearchFiles* sf)
{
g_return_if_fail (sf != NULL && SEARCH_IS_FILES(sf));
-
+
gtk_entry_set_text (GTK_ENTRY (sf->priv->search_entry),
search_box_get_search_string(sf->priv->search_box));
gtk_entry_set_text (GTK_ENTRY (sf->priv->replace_entry),
- search_box_get_replace_string(sf->priv->search_box));
+ search_box_get_replace_string(sf->priv->search_box));
anjuta_shell_present_widget(sf->priv->docman->shell,
sf->priv->main_box,
NULL);
-}
\ No newline at end of file
+}
diff --git a/plugins/project-manager/plugin.c b/plugins/project-manager/plugin.c
index 2557f16..4c83d43 100644
--- a/plugins/project-manager/plugin.c
+++ b/plugins/project-manager/plugin.c
@@ -1895,35 +1895,59 @@ get_element_type (ProjectManagerPlugin *plugin, GFile *element)
}
static GList*
-iproject_manager_get_elements (IAnjutaProjectManager *project_manager,
- AnjutaProjectNodeType element_type,
+iproject_manager_get_children (IAnjutaProjectManager *project_manager,
+ GFile *parent,
+ gint children_type,
GError **err)
{
- GList *nodes, *node;
ProjectManagerPlugin *plugin;
+ GList *children = NULL;
g_return_val_if_fail (ANJUTA_IS_PLUGIN (project_manager), NULL);
plugin = ANJUTA_PLUGIN_PROJECT_MANAGER (G_OBJECT (project_manager));
-
- /* Get all nodes */
- nodes = gbf_project_util_node_all (anjuta_pm_project_get_root (plugin->project), element_type);
-
- /* Replace all nodes by their corresponding URI */
- for (node = g_list_first (nodes); node != NULL; node = g_list_next (node))
+ if (plugin->project != NULL)
{
- if (anjuta_project_node_get_node_type (ANJUTA_PROJECT_NODE (node->data)) == ANJUTA_PROJECT_TARGET)
- {
- /* Take care of different build directory */
- node->data = get_element_file_from_node (plugin, ANJUTA_PROJECT_NODE (node->data), IANJUTA_BUILDER_ROOT_URI);
- }
- else
+ AnjutaProjectNode *root;
+
+ root = anjuta_pm_project_get_root (plugin->project);
+ if (root != NULL)
{
- node->data = g_object_ref (anjuta_project_node_get_file (ANJUTA_PROJECT_NODE (node->data)));
+ /* Get parent */
+ if (parent != NULL) root = get_node_from_file (root, parent);
+ if (root != NULL)
+ {
+ /* Get all nodes */
+ GList *node;
+
+ children = gbf_project_util_node_all (root, children_type);
+
+ /* Replace all nodes by their corresponding file */
+ for (node = g_list_first (children); node != NULL; node = g_list_next (node))
+ {
+ if (anjuta_project_node_get_node_type (ANJUTA_PROJECT_NODE (node->data)) == ANJUTA_PROJECT_TARGET)
+ {
+ /* Take care of different build directory */
+ node->data = get_element_file_from_node (plugin, ANJUTA_PROJECT_NODE (node->data), IANJUTA_BUILDER_ROOT_URI);
+ }
+ else
+ {
+ node->data = g_object_ref (anjuta_project_node_get_file (ANJUTA_PROJECT_NODE (node->data)));
+ }
+ }
+ }
}
}
- return nodes;
+ return children;
+}
+
+static GList*
+iproject_manager_get_elements (IAnjutaProjectManager *project_manager,
+ AnjutaProjectNodeType element_type,
+ GError **err)
+{
+ return ianjuta_project_manager_get_children (project_manager, NULL, element_type, err);
}
static AnjutaProjectNodeType
@@ -2008,44 +2032,6 @@ iproject_manager_get_parent (IAnjutaProjectManager *project_manager,
return file;
}
-static GList*
-iproject_manager_get_children (IAnjutaProjectManager *project_manager,
- GFile *element,
- GError **err)
-{
- ProjectManagerPlugin *plugin;
- GList *list = NULL;
-
- g_return_val_if_fail (ANJUTA_IS_PLUGIN (project_manager), NULL);
-
- plugin = ANJUTA_PLUGIN_PROJECT_MANAGER (G_OBJECT (project_manager));
- if (plugin->project != NULL)
- {
- AnjutaProjectNode *parent;
-
- parent = anjuta_pm_project_get_root (plugin->project);
- if (parent != NULL)
- {
- parent = get_node_from_file (parent, element);
- if (parent != NULL)
- {
- AnjutaProjectNode *child;
-
- for (child = anjuta_project_node_first_child (parent); child != NULL; child = anjuta_project_node_next_sibling (child))
- {
- GFile *file;
-
- file = anjuta_project_node_get_file (child);
- if (file != NULL) list = g_list_prepend (list, g_object_ref (file));
- }
- }
- }
- }
- list = g_list_reverse (list);
-
- return list;
-}
-
static GFile*
iproject_manager_get_selected (IAnjutaProjectManager *project_manager,
GError **err)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]