[anjuta] am-project: Make read only properties more obvious



commit 2fe1d4e2b399c9222c33aec65d7c4ff9e18fe77d
Author: Sébastien Granjoux <seb sfo free fr>
Date:   Wed Feb 16 21:59:41 2011 +0100

    am-project: Make read only properties more obvious

 libanjuta/anjuta-project.c        |    2 +
 plugins/project-manager/dialogs.c |   48 ++++++++++++++++++++++++------------
 2 files changed, 34 insertions(+), 16 deletions(-)
---
diff --git a/libanjuta/anjuta-project.c b/libanjuta/anjuta-project.c
index 8f2a55e..38f64cc 100644
--- a/libanjuta/anjuta-project.c
+++ b/libanjuta/anjuta-project.c
@@ -81,6 +81,7 @@ anjuta_project_property_new (const gchar *name, AnjutaProjectValueType type,
 	prop->type = type;
 	prop->value = g_strdup (value);
 	prop->native = native;
+	prop->flags = native->flags;
 	prop->detail = native->detail;
 	
 	return prop;
@@ -705,6 +706,7 @@ anjuta_project_node_insert_property (AnjutaProjectNode *node, AnjutaProjectPrope
 	if (property->name == NULL) property->name = native->name;
 	property->type = native->type;
 	property->native = native;
+	property->flags = native->flags;
 	property->detail = native->detail;
 
 	/* Get properties list */
diff --git a/plugins/project-manager/dialogs.c b/plugins/project-manager/dialogs.c
index 1f065cd..df1ba02 100644
--- a/plugins/project-manager/dialogs.c
+++ b/plugins/project-manager/dialogs.c
@@ -352,6 +352,7 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
 	GtkTreeIter iter;
 	GList *item;
 	gchar *tooltip = NULL;
+	gboolean editable = TRUE;
 
 	if (prop->native != NULL)
 	{
@@ -362,9 +363,11 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
 		label = gtk_label_new (_(prop->name));
 	}
 
+	editable = prop->flags & ANJUTA_PROJECT_PROPERTY_READ_ONLY ? FALSE : TRUE;
+	
 	if (prop->detail != NULL)
 	{
-		if (prop->flags & ANJUTA_PROJECT_PROPERTY_READ_ONLY)
+		if (!editable)
 		{
 			tooltip = g_strconcat (_(prop->detail), _(" This property is not modifiable."), NULL);
 		}
@@ -387,12 +390,21 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
 	{
 	case ANJUTA_PROJECT_PROPERTY_STRING:
 	case ANJUTA_PROJECT_PROPERTY_LIST:
-		entry = gtk_entry_new ();
-		gtk_entry_set_text (GTK_ENTRY (entry), prop->value != NULL ? prop->value : "");
+		if (editable)
+		{
+			entry = gtk_entry_new ();
+			gtk_entry_set_text (GTK_ENTRY (entry), prop->value != NULL ? prop->value : "");
+		}
+		else
+		{
+			entry = gtk_label_new (prop->value != NULL ? prop->value : "");
+			gtk_misc_set_alignment (GTK_MISC (entry), 0, 0.5);
+		}
 		break;
 	case ANJUTA_PROJECT_PROPERTY_BOOLEAN:
 		entry = gtk_check_button_new ();
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (entry), (prop->value != NULL) && (*prop->value == '1'));
+		gtk_widget_set_sensitive (entry, editable);
 		break;
 	case ANJUTA_PROJECT_PROPERTY_MAP:
 			model = GTK_TREE_MODEL (gtk_list_store_newv (LIST_COLUMNS_NB, column_type));
@@ -438,6 +450,7 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
 			gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
 			gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
 
+			gtk_widget_set_sensitive (entry, editable);
 			gtk_container_add (GTK_CONTAINER (entry), view);
 			
 			break;
@@ -653,21 +666,24 @@ on_properties_dialog_response (GtkWidget *dialog,
 			{
 			case ANJUTA_PROJECT_PROPERTY_STRING:
 			case ANJUTA_PROJECT_PROPERTY_LIST:
-				text = gtk_entry_get_text (GTK_ENTRY (entry->entry));
-				if (*text == '\0')
+				if (GTK_IS_ENTRY (entry->entry))
 				{
-					if ((prop->value != NULL) && (*prop->value != '\0'))
+					text = gtk_entry_get_text (GTK_ENTRY (entry->entry));
+					if (*text == '\0')
 					{
-						/* Remove */
-						ianjuta_project_set_property (table->project->project, table->node, prop, NULL, NULL);
+						if ((prop->value != NULL) && (*prop->value != '\0'))
+						{
+							/* Remove */
+							ianjuta_project_set_property (table->project->project, table->node, prop, NULL, NULL);
+						}
 					}
-				}
-				else
-				{
-					if (g_strcmp0 (prop->value, text) != 0)
+					else
 					{
-						/* Modified */
-						ianjuta_project_set_property (table->project->project, table->node, prop, text, NULL);
+						if (g_strcmp0 (prop->value, text) != 0)
+						{
+							/* Modified */
+							ianjuta_project_set_property (table->project->project, table->node, prop, text, NULL);
+						}
 					}
 				}
 				break;
@@ -1212,8 +1228,8 @@ build_types_store (AnjutaPmProject *project, AnjutaProjectNodeType store_type)
         const gchar *name;
         AnjutaProjectNodeType type;
 
-        type = anjuta_project_node_info_type ((AnjutaProjectNodeInfo *)node->data);
-        if ((store_type == 0) || ((type & ANJUTA_PROJECT_TYPE_MASK) == store_type) && !(type & ANJUTA_PROJECT_READ_ONLY))
+		type = anjuta_project_node_info_type ((AnjutaProjectNodeInfo *)node->data);
+        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(),



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