[anjuta] pm: Add a dialog to add module to targets
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] pm: Add a dialog to add module to targets
- Date: Sun, 28 Nov 2010 18:28:04 +0000 (UTC)
commit 9e89d4b5769ca7be742901eb40ea84807bab1ba4
Author: Sébastien Granjoux <seb sfo free fr>
Date: Sun Nov 28 18:55:16 2010 +0100
pm: Add a dialog to add module to targets
plugins/am-project/am-node.c | 1 +
plugins/am-project/am-properties.c | 6 +++-
plugins/project-manager/dialogs.c | 47 ++++++++++++++++++-------------
plugins/project-manager/plugin.c | 12 +++++---
plugins/project-manager/project-view.c | 4 +-
plugins/project-manager/project.c | 3 ++
6 files changed, 45 insertions(+), 28 deletions(-)
---
diff --git a/plugins/am-project/am-node.c b/plugins/am-project/am-node.c
index bd60e6b..11c67a8 100644
--- a/plugins/am-project/am-node.c
+++ b/plugins/am-project/am-node.c
@@ -813,6 +813,7 @@ anjuta_am_target_node_init (AnjutaAmTargetNode *node)
{
node->base.type = ANJUTA_PROJECT_TARGET;
node->base.state = ANJUTA_PROJECT_CAN_ADD_SOURCE |
+ ANJUTA_PROJECT_CAN_ADD_MODULE |
ANJUTA_PROJECT_CAN_REMOVE;
node->install = NULL;
node->flags = 0;
diff --git a/plugins/am-project/am-properties.c b/plugins/am-project/am-properties.c
index b1c9562..281d06e 100644
--- a/plugins/am-project/am-properties.c
+++ b/plugins/am-project/am-properties.c
@@ -402,7 +402,11 @@ amp_node_property_remove_flags (AnjutaProjectNode *node, AnjutaProjectProperty *
}
else if (*(found + len) == '\0')
{
- while ((found != prop->value) && isspace(*(found - 1))) found--;
+ while ((found != prop->value) && isspace(*(found - 1)))
+ {
+ found--;
+ len++;
+ }
}
else
{
diff --git a/plugins/project-manager/dialogs.c b/plugins/project-manager/dialogs.c
index 3563fa1..7bf13b0 100644
--- a/plugins/project-manager/dialogs.c
+++ b/plugins/project-manager/dialogs.c
@@ -160,7 +160,10 @@ parent_filter_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
need = ANJUTA_PROJECT_CAN_ADD_SOURCE;
break;
case ANJUTA_PROJECT_MODULE:
- need = ANJUTA_PROJECT_CAN_ADD_MODULE;
+ /* Add node containing target too because target can contains module
+ * It would be probably better to check recursively if any children
+ * can accept a module and keep all parents then. */
+ need = ANJUTA_PROJECT_CAN_ADD_MODULE | ANJUTA_PROJECT_CAN_ADD_TARGET;
break;
case ANJUTA_PROJECT_PACKAGE:
need = ANJUTA_PROJECT_CAN_ADD_PACKAGE;
@@ -172,7 +175,7 @@ parent_filter_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
gtk_tree_model_get (model, iter,
GBF_PROJECT_MODEL_COLUMN_DATA, &data, -1);
- node = gbf_tree_data_get_node (data);
+ node = data == NULL ? NULL : gbf_tree_data_get_node (data);
if (node != NULL)
{
if (anjuta_project_node_get_state (node) & need)
@@ -201,7 +204,7 @@ module_filter_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
gtk_tree_model_get (model, iter,
GBF_PROJECT_MODEL_COLUMN_DATA, &data, -1);
- node = gbf_tree_data_get_node (data);
+ node = data == NULL ? NULL : gbf_tree_data_get_node (data);
if (node != NULL)
{
AnjutaProjectNodeType type = anjuta_project_node_get_node_type (node);
@@ -232,7 +235,7 @@ setup_nodes_treeview (GbfProjectModel *model,
gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (filter));
g_object_unref (filter);
- /* select default group */
+ /* select default node */
if (selected && gtk_tree_model_filter_convert_child_iter_to_iter (
GTK_TREE_MODEL_FILTER (filter), &iter_filter, selected))
{
@@ -257,10 +260,13 @@ setup_nodes_treeview (GbfProjectModel *model,
}
}
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path, NULL, FALSE);
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (view), path, NULL,
+ if (path)
+ {
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path, NULL, FALSE);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (view), path, NULL,
TRUE, 0.5, 0.0);
- gtk_tree_path_free (path);
+ gtk_tree_path_free (path);
+ }
}
static void
@@ -1344,23 +1350,24 @@ anjuta_pm_project_new_module (AnjutaPmProject *project,
list = gbf_project_view_get_all_selected (GBF_PROJECT_VIEW (modules_view));
for (node = g_list_first (list); node != NULL; node = g_list_next (node))
{
- GError *err = NULL;
+ GError *error = NULL;
AnjutaProjectNode* new_module;
- gchar* uri = NULL;
-
- new_module = NULL;
- if (err) {
+ const gchar *name;
+
+ new_module = gbf_tree_data_get_node (node->data);
+ name = anjuta_project_node_get_name (new_module);
+
+ new_module = ianjuta_project_add_node_after (project->project, target, NULL, ANJUTA_PROJECT_MODULE, NULL, name, &error);
+ if (error) {
gchar *str = g_strdup_printf ("%s: %s\n",
- uri,
- err->message);
+ name,
+ error->message);
g_string_append (err_mesg, str);
- g_error_free (err);
+ g_error_free (error);
g_free (str);
}
else
new_modules = g_list_append (new_modules, new_module);
-
- g_free (uri);
}
g_list_free (list);
@@ -1575,10 +1582,10 @@ anjuta_pm_project_new_package (AnjutaPmProject *project,
AnjutaProjectNode *module = NULL;
GString *error_message = g_string_new (NULL);
- name = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (module_entry));
- name = g_strstrip (name);
+ name = g_strdup (gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (module_entry)))));
+ if (name != NULL) name = g_strstrip (name);
- if (*name == '\0')
+ if ((name == NULL) || (*name == '\0'))
{
/* Missing module name */
g_string_append (error_message, _("Missing module name"));
diff --git a/plugins/project-manager/plugin.c b/plugins/project-manager/plugin.c
index 62d8959..6cf8f70 100644
--- a/plugins/project-manager/plugin.c
+++ b/plugins/project-manager/plugin.c
@@ -436,13 +436,14 @@ on_add_package (GtkAction *action, ProjectManagerPlugin *plugin)
{
GtkTreeIter selected_module;
GList *new_module;
+ GbfTreeData *data;
update_operation_begin (plugin);
- gbf_project_view_get_first_selected (GBF_PROJECT_VIEW (plugin->view), &selected_module);
+ data = gbf_project_view_get_first_selected (GBF_PROJECT_VIEW (plugin->view), &selected_module);
new_module = anjuta_pm_project_new_package (plugin->project,
get_plugin_parent_window (plugin),
- &selected_module, NULL);
+ data == NULL ? NULL : &selected_module, NULL);
g_list_free (new_module);
update_operation_end (plugin, TRUE);
}
@@ -452,13 +453,14 @@ on_add_module (GtkAction *action, ProjectManagerPlugin *plugin)
{
GtkTreeIter selected_target;
GList *new_modules;
+ GbfTreeData *data;
update_operation_begin (plugin);
- gbf_project_view_get_first_selected (GBF_PROJECT_VIEW (plugin->view), &selected_target);
-
+ data = gbf_project_view_get_first_selected (GBF_PROJECT_VIEW (plugin->view), &selected_target);
+
new_modules = anjuta_pm_project_new_module (plugin->project,
get_plugin_parent_window (plugin),
- &selected_target, NULL);
+ data == NULL ? NULL : &selected_target, NULL);
g_list_free (new_modules);
update_operation_end (plugin, TRUE);
}
diff --git a/plugins/project-manager/project-view.c b/plugins/project-manager/project-view.c
index f07ca02..b731293 100644
--- a/plugins/project-manager/project-view.c
+++ b/plugins/project-manager/project-view.c
@@ -434,8 +434,8 @@ gbf_project_view_get_first_selected (GbfProjectView *view, GtkTreeIter* selected
GtkTreeModel *model;
GList *list;
- g_return_val_if_fail (view != NULL, FALSE);
- g_return_val_if_fail (GBF_IS_PROJECT_VIEW (view), FALSE);
+ g_return_val_if_fail (view != NULL, NULL);
+ g_return_val_if_fail (GBF_IS_PROJECT_VIEW (view), NULL);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
list = gtk_tree_selection_get_selected_rows(selection, &model);
diff --git a/plugins/project-manager/project.c b/plugins/project-manager/project.c
index fc2974f..ff6cdc9 100644
--- a/plugins/project-manager/project.c
+++ b/plugins/project-manager/project.c
@@ -279,6 +279,9 @@ anjuta_pm_project_get_capabilities (AnjutaPmProject *project)
case ANJUTA_PROJECT_SOURCE:
caps |= ANJUTA_PROJECT_CAN_ADD_SOURCE;
break;
+ case ANJUTA_PROJECT_MODULE:
+ caps |= ANJUTA_PROJECT_CAN_ADD_MODULE;
+ break;
case ANJUTA_PROJECT_PACKAGE:
caps |= ANJUTA_PROJECT_CAN_ADD_PACKAGE;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]