[anjuta] am-project: Display only available target type in new target dialog, fix reading and loading of data



commit 59b45881462659a0dc5eb29c247e55b92119be5a
Author: Sébastien Granjoux <seb sfo free fr>
Date:   Tue Feb 15 22:49:19 2011 +0100

    am-project: Display only available target type in new target dialog, fix reading and loading of data targets (_PYTHON, _MAN...)

 libanjuta/anjuta-project.h        |   29 +++++++++++++++--------------
 plugins/am-project/am-project.c   |   26 +++++++++-----------------
 plugins/project-manager/dialogs.c |    6 +++---
 3 files changed, 27 insertions(+), 34 deletions(-)
---
diff --git a/libanjuta/anjuta-project.h b/libanjuta/anjuta-project.h
index 687f0f3..e7aa3c3 100644
--- a/libanjuta/anjuta-project.h
+++ b/libanjuta/anjuta-project.h
@@ -93,20 +93,21 @@ typedef enum
 	ANJUTA_PROJECT_MKENUMS,
 	ANJUTA_PROJECT_GENMARSHAL,
 	ANJUTA_PROJECT_SCRIPT,
-	ANJUTA_PROJECT_PROXY = 1 << 12,
-	ANJUTA_PROJECT_PROJECT = 1 << 13,
-	ANJUTA_PROJECT_PRIMARY = 1 << 14,
-	ANJUTA_PROJECT_EXECUTABLE = 1 << 15,
-	ANJUTA_PROJECT_ID_MASK = 0xFFF,
-	ANJUTA_PROJECT_FLAG_MASK = 0x0F << 12,
-	ANJUTA_PROJECT_TYPE_MASK = 0xFFFF << 16,
-	ANJUTA_PROJECT_ROOT = 1 << 16,
-	ANJUTA_PROJECT_GROUP = 2 << 16,
-	ANJUTA_PROJECT_TARGET = 3 << 16,
-	ANJUTA_PROJECT_SOURCE = 4 << 16 ,
-	ANJUTA_PROJECT_MODULE = 5 << 16,
-	ANJUTA_PROJECT_PACKAGE = 6 << 16,
-	ANJUTA_PROJECT_VARIABLE = 7 << 16
+	ANJUTA_PROJECT_PROXY = 1 << 16,
+	ANJUTA_PROJECT_PROJECT = 1 << 17,
+	ANJUTA_PROJECT_PRIMARY = 1 << 18,
+	ANJUTA_PROJECT_EXECUTABLE = 1 << 19,
+	ANJUTA_PROJECT_READ_ONLY = 1 << 20,	 /* Node cannot be created by the backend */
+	ANJUTA_PROJECT_ID_MASK = 0xFFFF << 0,
+	ANJUTA_PROJECT_FLAG_MASK = 0xFF << 16,
+	ANJUTA_PROJECT_TYPE_MASK = 0xFF << 24,
+	ANJUTA_PROJECT_ROOT = 1 << 24,
+	ANJUTA_PROJECT_GROUP = 2 << 24,
+	ANJUTA_PROJECT_TARGET = 3 << 24,
+	ANJUTA_PROJECT_SOURCE = 4 << 24,
+	ANJUTA_PROJECT_MODULE = 5 << 24,
+	ANJUTA_PROJECT_PACKAGE = 6 << 24,
+	ANJUTA_PROJECT_VARIABLE = 7 << 24
 } AnjutaProjectNodeType;
 
 typedef enum
diff --git a/plugins/am-project/am-project.c b/plugins/am-project/am-project.c
index 2926a1e..edf0f5d 100644
--- a/plugins/am-project/am-project.c
+++ b/plugins/am-project/am-project.c
@@ -99,7 +99,7 @@ static AmpNodeInfo AmpNodeInformations[] = {
 	NULL,
 	NULL},
 
-	{{ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_UNKNOWN,
+	{{ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_UNKNOWN | ANJUTA_PROJECT_READ_ONLY,
 	/* Translator: Unknown here is a target type, if not unknown it can
 	 * be a program or a shared library by example */
 	N_("Unknown"),
@@ -134,14 +134,14 @@ static AmpNodeInfo AmpNodeInformations[] = {
 	"application/x-python"},
 	AM_TOKEN__PYTHON,
 	"_PYTHON",
-	NULL},
+	"python"},
 	
 	{{ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_JAVA,
 	N_("Java Module"),
 	"application/x-java"},
 	AM_TOKEN__JAVA,
 	"_JAVA",
-	NULL},
+	"java"},
 	
 	{{ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_LISP,
 	N_("Lisp Module"),
@@ -1030,7 +1030,7 @@ project_load_sources (AmpProject *project, AnjutaToken *name, AnjutaToken *list,
 }
 
 static AnjutaToken*
-project_load_data (AmpProject *project, AnjutaToken *name, AnjutaToken *list, AnjutaProjectNode *parent, GHashTable *orphan_properties)
+project_load_data (AmpProject *project, AnjutaToken *name, AnjutaTokenType token_type, AnjutaToken *list, AnjutaProjectNode *parent, GHashTable *orphan_properties)
 {
 	gchar *install = NULL;
 	AmpTargetNode *target;
@@ -1051,14 +1051,6 @@ project_load_data (AmpProject *project, AnjutaToken *name, AnjutaToken *list, An
 
 	target_id = anjuta_token_evaluate (name);
 	split_automake_variable (target_id, &flags, &install, NULL);
-	/*if (target_id)
-	{
-		gchar *end = strrchr (target_id, '_');
-		if (end)
-		{
-			*end = '\0';
-		}
-	}*/
 	
 	amp_group_node_add_token (AMP_GROUP_NODE (parent), name, AM_GROUP_TARGET);
 
@@ -1296,18 +1288,18 @@ amp_project_set_am_variable (AmpProject* project, AmpGroupNode* group, AnjutaTok
 		project_load_subdirs (project, list, ANJUTA_PROJECT_NODE (group), TRUE);
 		break;
 	case AM_TOKEN__DATA:
-		project_load_data (project, name, list, ANJUTA_PROJECT_NODE (group), orphan_properties);
-		break;
 	case AM_TOKEN__HEADERS:
-	case AM_TOKEN__LIBRARIES:
 	case AM_TOKEN__LISP:
-	case AM_TOKEN__LTLIBRARIES:
 	case AM_TOKEN__MANS:
-	case AM_TOKEN__PROGRAMS:
 	case AM_TOKEN__PYTHON:
 	case AM_TOKEN__JAVA:
 	case AM_TOKEN__SCRIPTS:
 	case AM_TOKEN__TEXINFOS:
+		project_load_data (project, name, variable, list, ANJUTA_PROJECT_NODE (group), orphan_properties);
+		break;
+	case AM_TOKEN__LIBRARIES:
+	case AM_TOKEN__LTLIBRARIES:
+	case AM_TOKEN__PROGRAMS:
 		project_load_target (project, name, variable, list, ANJUTA_PROJECT_NODE (group), orphan_properties);
 		break;
 	case AM_TOKEN__SOURCES:
diff --git a/plugins/project-manager/dialogs.c b/plugins/project-manager/dialogs.c
index 60aab9f..1f065cd 100644
--- a/plugins/project-manager/dialogs.c
+++ b/plugins/project-manager/dialogs.c
@@ -1194,7 +1194,7 @@ enum {
 
 /* create a tree model with the target types */
 static GtkListStore *
-build_types_store (AnjutaPmProject *project)
+build_types_store (AnjutaPmProject *project, AnjutaProjectNodeType store_type)
 {
     GtkListStore *store;
     GtkTreeIter iter;
@@ -1213,7 +1213,7 @@ build_types_store (AnjutaPmProject *project)
         AnjutaProjectNodeType type;
 
         type = anjuta_project_node_info_type ((AnjutaProjectNodeInfo *)node->data);
-        if (type & ANJUTA_PROJECT_TARGET)
+        if ((store_type == 0) || ((type & ANJUTA_PROJECT_TYPE_MASK) == store_type) && !(type & ANJUTA_PROJECT_READ_ONLY))
         {
             name = anjuta_project_node_info_name ((AnjutaProjectNodeInfo *)node->data);
             pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(),
@@ -1287,7 +1287,7 @@ anjuta_pm_project_new_target (ProjectManagerPlugin *plugin,
 	gtk_widget_show (groups_view);
 
 	/* setup target types combo box */
-	types_store = build_types_store (plugin->project);
+	types_store = build_types_store (plugin->project, ANJUTA_PROJECT_TARGET);
 	gtk_combo_box_set_model (GTK_COMBO_BOX (target_type_combo), 
 							GTK_TREE_MODEL (types_store));
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]