[anjuta] pm: Add a dialog to add module to targets



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]