[anjuta] libanjuta, am-project, dir-project, mk-project, project-manager: Change AnjutaProjectProperty
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] libanjuta, am-project, dir-project, mk-project, project-manager: Change AnjutaProjectProperty
- Date: Sat, 17 Dec 2011 13:18:25 +0000 (UTC)
commit 3226c3e2b04d115f91e97e57377744562d44e84f
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Sat Dec 17 14:10:04 2011 +0100
libanjuta, am-project, dir-project, mk-project, project-manager: Change AnjutaProjectProperty
Split project properties and project properties informations
libanjuta/anjuta-project.c | 417 ++++++++++++++---------
libanjuta/anjuta-project.h | 57 ++--
libanjuta/interfaces/libanjuta.idl | 10 +-
plugins/am-project/ac-writer.c | 18 +-
plugins/am-project/am-project-private.h | 9 +-
plugins/am-project/am-project.c | 50 ++--
plugins/am-project/am-project.h | 1 +
plugins/am-project/am-properties.c | 564 +++++++++++++++++--------------
plugins/am-project/am-properties.h | 13 +-
plugins/am-project/am-writer.c | 313 +++++++++---------
plugins/am-project/amp-group.c | 4 +-
plugins/am-project/amp-module.c | 70 ++--
plugins/am-project/amp-object.c | 2 +-
plugins/am-project/amp-package.c | 20 +-
plugins/am-project/amp-root.c | 2 +-
plugins/am-project/amp-source.c | 4 +-
plugins/am-project/amp-target.c | 12 +-
plugins/am-project/projectparser.c | 64 ++--
plugins/am-project/tests/anjuta.lst | 2 +-
plugins/am-project/tests/nemiver.lst | 1 +
plugins/dir-project/dir-node.c | 22 +-
plugins/dir-project/dir-project.c | 96 +++---
plugins/mk-project/mk-project.c | 16 +-
plugins/mk-project/mk-rule.c | 42 ++--
plugins/project-manager/dialogs.c | 58 ++--
25 files changed, 1017 insertions(+), 850 deletions(-)
---
diff --git a/libanjuta/anjuta-project.c b/libanjuta/anjuta-project.c
index 0b092a1..1a660c2 100644
--- a/libanjuta/anjuta-project.c
+++ b/libanjuta/anjuta-project.c
@@ -2,24 +2,24 @@
/*
* anjuta-project.c
* Copyright (C) SÃbastien Granjoux 2009 <seb sfo free fr>
- *
+ *
* This program 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.
- *
+ *
* This program 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/>.
*/
#include "anjuta-project.h"
-#include "anjuta-debug.h"
+#include "anjuta-debug.h"
#include "anjuta-marshal.h"
#include "anjuta-enum-types.h"
@@ -29,21 +29,21 @@
* SECTION:anjuta-project
* @title: Anjuta project
* @short_description: Anjuta project
- * @see_also:
+ * @see_also:
* @stability: Unstable
* @include: libanjuta/anjuta-project.h
- *
+ *
* A project in Anjuta is represented by a tree. There are six kinds of node.
*
* The root node is the parent of all other nodes, it can implement
* IAnjutaProject interface and represent the project itself but it is not
* mandatory.
- *
+ *
* A module node represents a module in autotools project, it is a group of
* packages.
- *
+ *
* A package node represents a package in autotools project, it is library.
- *
+ *
* A group node is used to group several target or source, it can represent
* a directory by example.
*
@@ -56,7 +56,7 @@
*
* All these nodes are base objects. They have derived in each project backend
* to provide more specific information.
- */
+ */
/* Node properties
*---------------------------------------------------------------------------*/
@@ -66,44 +66,38 @@
/**
* anjuta_project_property_new:
- * @id: (transfer none):
- * @name: (transfer none):
- * @value: (transfer none):
- * @native: (allow-none) (transfer none):
+ * @value: (transfer none): Value
+ * @name: (allow-none) (transfer none): Optional name used by map properties
+ * @user_data: (allow-none) (transfer full): Optional user data
*
* Returns: (transfer full):
*/
AnjutaProjectProperty *
-anjuta_project_property_new (const gchar* id, const gchar *name, AnjutaProjectValueType type,
- const gchar *value, AnjutaProjectProperty *native)
+anjuta_project_property_new (const gchar *value,
+ const gchar *name,
+ gpointer user_data)
{
AnjutaProjectProperty *prop = g_slice_new0(AnjutaProjectProperty);
- prop->id = g_strdup (id);
- prop->name = g_strdup (name);
- prop->type = type;
+
prop->value = g_strdup (value);
+ prop->name = name != NULL ? g_strdup (name) : NULL;
+ prop->user_data = user_data;
+ prop->info = NULL;
- if (native != NULL) {
- prop->native = native;
- prop->flags = native->flags;
- prop->detail = native->detail;
- }
-
return prop;
}
AnjutaProjectProperty *
anjuta_project_property_copy (AnjutaProjectProperty *prop)
{
- return anjuta_project_property_new (prop->id, prop->name, prop->type,
- prop->value, prop->native);
+ return anjuta_project_property_new (prop->value, prop->name, prop->user_data);
}
void
anjuta_project_property_free (AnjutaProjectProperty *prop)
{
- g_free (prop->name);
g_free (prop->value);
+ g_free (prop->name);
g_slice_free (AnjutaProjectProperty, prop);
}
@@ -120,7 +114,76 @@ anjuta_project_property_get_type (void)
return type_id;
}
+/* Node properties information
+ *---------------------------------------------------------------------------*/
+/* Implement Boxed type
+ *---------------------------------------------------------------------------*/
+
+/**
+ * anjuta_project_property_info_new:
+ * @id: (transfer none): Property identifier
+ * @name: (transfer none): Translatable property name
+ * @type: Property value type
+ * @flags: Property flags
+ * @description: (transfer none): Property description
+ * @property: (transfer full): Default property value
+ * @user_data: (allow-none) (transfer full): Optional user data
+ *
+ * Returns: (transfer full):
+ */
+AnjutaProjectPropertyInfo *
+anjuta_project_property_info_new (const gchar *id,
+ const gchar *name,
+ AnjutaProjectValueType type,
+ AnjutaProjectPropertyFlags flags,
+ const gchar *description,
+ AnjutaProjectProperty *property,
+ gpointer user_data)
+{
+ AnjutaProjectPropertyInfo *info = g_slice_new0(AnjutaProjectPropertyInfo);
+
+ info->id = g_strdup (id);
+ info->name = g_strdup (name);
+ info->type = type;
+ info->flags = flags;
+ info->description = g_strdup (description);
+ info->property = property;
+ info->user_data = user_data;
+
+ return info;
+}
+
+AnjutaProjectPropertyInfo *
+anjuta_project_property_info_copy (AnjutaProjectPropertyInfo *info)
+{
+ return anjuta_project_property_info_new (info->id, info->name, info->type,
+ info->flags, info->description,
+ info->property, info->user_data);
+}
+
+void
+anjuta_project_property_info_free (AnjutaProjectPropertyInfo *info)
+{
+ g_free (info->id);
+ g_free (info->name);
+ g_free (info->description);
+ anjuta_project_property_free (info->property);
+ g_slice_free (AnjutaProjectPropertyInfo, info);
+}
+
+GType
+anjuta_project_property_info_get_type (void)
+{
+ static GType type_id = 0;
+
+ if (!type_id)
+ type_id = g_boxed_type_register_static ("AnjutaProjectPropertyInfo",
+ (GBoxedCopyFunc) anjuta_project_property_info_copy,
+ (GBoxedFreeFunc) anjuta_project_property_info_free);
+
+ return type_id;
+}
/* Node
*---------------------------------------------------------------------------*/
@@ -138,7 +201,7 @@ AnjutaProjectNode *
anjuta_project_node_parent(AnjutaProjectNode *node)
{
g_return_val_if_fail (node != NULL, NULL);
-
+
return node->parent;
}
@@ -170,7 +233,7 @@ AnjutaProjectNode *
anjuta_project_node_first_child(AnjutaProjectNode *node)
{
g_return_val_if_fail (node != NULL, NULL);
-
+
return node->children;
}
@@ -202,7 +265,7 @@ AnjutaProjectNode *
anjuta_project_node_next_sibling (AnjutaProjectNode *node)
{
g_return_val_if_fail (node != NULL, NULL);
-
+
return node->next;
}
@@ -215,7 +278,7 @@ AnjutaProjectNode *
anjuta_project_node_prev_sibling (AnjutaProjectNode *node)
{
g_return_val_if_fail (node != NULL, NULL);
-
+
return node->prev;
}
@@ -240,7 +303,7 @@ static AnjutaProjectNode *
anjuta_project_node_post_order_traverse (AnjutaProjectNode *node, AnjutaProjectNodeTraverseFunc func, gpointer data)
{
AnjutaProjectNode *child;
-
+
child = node->children;
while (child != NULL)
{
@@ -254,7 +317,7 @@ anjuta_project_node_post_order_traverse (AnjutaProjectNode *node, AnjutaProjectN
return current;
}
}
-
+
return func (node, data) ? node : NULL;
}
@@ -267,7 +330,7 @@ anjuta_project_node_pre_order_traverse (AnjutaProjectNode *node, AnjutaProjectNo
{
return node;
}
-
+
child = node->children;
while (child != NULL)
{
@@ -320,7 +383,7 @@ AnjutaProjectNode *
anjuta_project_node_children_traverse (AnjutaProjectNode *node, AnjutaProjectNodeTraverseFunc func, gpointer data)
{
AnjutaProjectNode *child;
-
+
g_return_val_if_fail (node != NULL, NULL);
child = node->children;
@@ -343,7 +406,7 @@ static void
anjuta_project_node_post_order_foreach (AnjutaProjectNode *node, AnjutaProjectNodeForeachFunc func, gpointer data)
{
AnjutaProjectNode *child;
-
+
child = node->children;
while (child != NULL)
{
@@ -353,7 +416,7 @@ anjuta_project_node_post_order_foreach (AnjutaProjectNode *node, AnjutaProjectNo
child = current->next;
anjuta_project_node_post_order_foreach (current, func, data);
}
-
+
func (node, data);
}
@@ -363,7 +426,7 @@ anjuta_project_node_pre_order_foreach (AnjutaProjectNode *node, AnjutaProjectNod
AnjutaProjectNode *child;
func (node, data);
-
+
child = node->children;
while (child != NULL)
{
@@ -407,7 +470,7 @@ void
anjuta_project_node_children_foreach (AnjutaProjectNode *node, AnjutaProjectNodeForeachFunc func, gpointer data)
{
AnjutaProjectNode *child;
-
+
g_return_if_fail (node != NULL);
child = node->children;
@@ -472,7 +535,7 @@ void
anjuta_project_node_check (AnjutaProjectNode *parent)
{
AnjutaProjectNode *node;
-
+
g_message ("Check node %p", parent);
node = anjuta_project_node_traverse (parent, G_POST_ORDER, check_node, parent);
if (node == NULL) g_message (" Node %p is valid", parent);
@@ -489,10 +552,10 @@ static void
anjuta_project_node_dump_child (AnjutaProjectNode *parent, gint indent)
{
AnjutaProjectNode *child;
-
+
anjuta_project_node_show (parent, indent);
indent += 4;
-
+
for (child = anjuta_project_node_first_child (parent); child != NULL; child = anjuta_project_node_next_sibling (child))
{
anjuta_project_node_dump_child (child, indent);
@@ -530,7 +593,7 @@ anjuta_project_node_insert_before (AnjutaProjectNode *parent, AnjutaProjectNode
g_return_val_if_fail (sibling->parent == parent, node);*/
g_object_ref_sink (node);
-
+
node->parent = parent;
if (sibling)
{
@@ -564,7 +627,7 @@ anjuta_project_node_insert_before (AnjutaProjectNode *parent, AnjutaProjectNode
}
}
- return node;
+ return node;
}
/**
@@ -587,7 +650,7 @@ anjuta_project_node_insert_after (AnjutaProjectNode *parent, AnjutaProjectNode *
g_return_val_if_fail (sibling->parent == parent, node);*/
g_object_ref_sink (node);
-
+
node->parent = parent;
if (sibling)
{
@@ -609,7 +672,7 @@ anjuta_project_node_insert_after (AnjutaProjectNode *parent, AnjutaProjectNode *
parent->children = node;
}
- return node;
+ return node;
}
/**
@@ -622,7 +685,7 @@ AnjutaProjectNode *
anjuta_project_node_remove (AnjutaProjectNode *node)
{
g_return_val_if_fail (node != NULL, NULL);
-
+
if (node->prev)
node->prev->next = node->next;
else if (node->parent)
@@ -634,7 +697,7 @@ anjuta_project_node_remove (AnjutaProjectNode *node)
node->next = NULL;
}
node->prev = NULL;
-
+
return node;
}
@@ -646,7 +709,7 @@ anjuta_project_node_remove (AnjutaProjectNode *node)
AnjutaProjectNode *
anjuta_project_node_prepend (AnjutaProjectNode *parent, AnjutaProjectNode *node)
{
- return anjuta_project_node_insert_before (parent, parent->children, node);
+ return anjuta_project_node_insert_before (parent, parent->children, node);
}
/**
@@ -656,7 +719,7 @@ anjuta_project_node_prepend (AnjutaProjectNode *parent, AnjutaProjectNode *node)
*/
AnjutaProjectNode *
anjuta_project_node_append (AnjutaProjectNode *parent, AnjutaProjectNode *node)
-{
+{
return anjuta_project_node_insert_before (parent, NULL, node);
}
@@ -703,7 +766,7 @@ anjuta_project_node_get_file (const AnjutaProjectNode *node)
{
switch (node->type & ANJUTA_PROJECT_TYPE_MASK)
{
- case ANJUTA_PROJECT_OBJECT:
+ case ANJUTA_PROJECT_OBJECT:
case ANJUTA_PROJECT_TARGET:
if ((node->name) && (node->parent != NULL) && (node->parent->file != NULL))
{
@@ -725,99 +788,136 @@ anjuta_project_node_get_file (const AnjutaProjectNode *node)
default:
break;
}
-
- return node->file;
+
+ return node->file;
}
/**
- * anjuta_project_node_get_custom_properties:
+ * anjuta_project_node_get_properties_info:
*
* Returns: (transfer none) (element-type Anjuta.ProjectProperty):
*/
GList *
-anjuta_project_node_get_custom_properties (AnjutaProjectNode *node)
+anjuta_project_node_get_properties_info (AnjutaProjectNode *node)
{
- return node->custom_properties;
+ return node->properties_info;
}
/**
- * anjuta_project_node_get_native_properties:
+ * anjuta_project_node_get_properties:
*
- * Returns: (transfer none) (element-type Anjuta.ProjectProperty):
+ * Returns: (transfer none) (element-type Anjuta.ProjectPropertyInfo):
*/
GList *
-anjuta_project_node_get_native_properties (AnjutaProjectNode *node)
+anjuta_project_node_get_properties (AnjutaProjectNode *node)
{
- return node->native_properties;
+ return node->properties;
}
static gint
-find_property (gconstpointer item, gconstpointer data)
+find_property_info (gconstpointer item, gconstpointer data)
+{
+ AnjutaProjectPropertyInfo *info = (AnjutaProjectPropertyInfo *)item;
+ const gchar *id = (const gchar *)data;
+
+ return strcmp (info->id, id);
+}
+
+/**
+ * anjuta_project_node_get_property_info:
+ * @node: (transfer none):
+ * @id: (transfer none): Property identifier
+ *
+ * Returns: (transfer none):
+ */
+AnjutaProjectPropertyInfo *
+anjuta_project_node_get_property_info (AnjutaProjectNode *node,
+ const gchar *id)
{
- AnjutaProjectProperty *prop_a = (AnjutaProjectProperty *)item;
- AnjutaProjectProperty *prop_b = (AnjutaProjectProperty *)data;
+ GList *found;
+
+ /* Find property info */
+ found = g_list_find_custom (node->properties_info, id, find_property_info);
+
+ return found != NULL ? (AnjutaProjectPropertyInfo *)found->data : NULL;
+}
- if (prop_a->native != NULL) prop_a = prop_a->native;
- if (prop_b->native != NULL) prop_b = prop_b->native;
+static gint
+find_property (gconstpointer item, gconstpointer data)
+{
+ AnjutaProjectProperty *prop = (AnjutaProjectProperty *)item;
+ AnjutaProjectPropertyInfo *info = (AnjutaProjectPropertyInfo *)data;
- return prop_a != prop_b;
+ return prop->info != info;
}
/**
* anjuta_project_node_get_property:
+ * @node: (transfer none):
+ * @id: (transfer none): Property identifier
*
* Returns: (transfer none):
*/
AnjutaProjectProperty *
-anjuta_project_node_get_property (AnjutaProjectNode *node, AnjutaProjectProperty *property)
+anjuta_project_node_get_property (AnjutaProjectNode *node, const gchar *id)
{
- GList *found;
+ AnjutaProjectPropertyInfo *info;
+ AnjutaProjectProperty *prop = NULL;
- /* Search in custom properties */
- found = g_list_find_custom (node->custom_properties, property, find_property);
-
- if (found == NULL)
+ /* Find property info */
+ info = anjuta_project_node_get_property_info (node, id);
+ if (info != NULL)
{
- /* Search in native properties */
- found = g_list_find_custom (node->native_properties, property, find_property);
+ GList *found;
+
+ /* Get default property */
+ prop = info->property;
+
+ /* Find custom property */
+ found = g_list_find_custom (node->properties, info, find_property);
+ if (found != NULL)
+ {
+ prop = (AnjutaProjectProperty *)found->data;
+ }
}
- return found != NULL ? (AnjutaProjectProperty *)found->data : NULL;
+ return prop;
}
/* If name is specified, look for a property with the same name, useful for
* map properties */
AnjutaProjectProperty *
-anjuta_project_node_get_map_property (AnjutaProjectNode *node, AnjutaProjectProperty *property, const gchar *name)
+anjuta_project_node_get_map_property (AnjutaProjectNode *node, const gchar *id, const gchar *name)
{
- GList *found = NULL;
+ AnjutaProjectPropertyInfo *info;
+ AnjutaProjectProperty *prop = NULL;
- /* Check if the property is already the right one */
- if (property->native != NULL)
+ /* Find property info */
+ info = anjuta_project_node_get_property_info (node, id);
+ if (info != NULL)
{
- found = g_list_find (node->custom_properties, property);
- }
-
- /* Search in custom properties */
- if (found == NULL)
- {
- found = g_list_find_custom (node->custom_properties, property, find_property);
- if (name != NULL)
+ GList *found;
+
+ /* Get default property */
+ prop = info->property;
+
+ /* Find property */
+ found = node->properties;
+ do
{
- while ((found != NULL) && (strcmp (name, ((AnjutaProjectProperty *)found->data)->name) != 0))
+ found = g_list_find_custom (found, info, find_property);
+ if (found != NULL)
{
- found = g_list_find_custom (g_list_next (found), property, find_property);
+ prop = (AnjutaProjectProperty *)found->data;
+ if ((info->type != ANJUTA_PROJECT_PROPERTY_MAP) || (g_strcmp0 (prop->name, name) == 0)) break;
+ prop = NULL;
+ found = g_list_next (found);
}
}
+ while (found != NULL);
}
- if (found == NULL)
- {
- /* Search in native properties */
- found = g_list_find_custom (node->native_properties, property, find_property);
- }
-
- return found != NULL ? (AnjutaProjectProperty *)found->data : NULL;
+ return prop;
}
/* Set functions
@@ -839,60 +939,47 @@ anjuta_project_node_clear_state (AnjutaProjectNode *node, AnjutaProjectNodeState
return TRUE;
}
+AnjutaProjectPropertyInfo *
+anjuta_project_node_insert_property_info (AnjutaProjectNode *node,
+ AnjutaProjectPropertyInfo *info)
+{
+ node->properties_info = g_list_append (node->properties_info, info);
+
+ return info;
+}
+
/**
* anjuta_project_node_insert_property:
+ * @node: (transfer none):
+ * @info: (transfer none):
* @property: (transfer full):
*
* Returns: (transfer none):
*/
AnjutaProjectProperty *
-anjuta_project_node_insert_property (AnjutaProjectNode *node, AnjutaProjectProperty *native, AnjutaProjectProperty *property)
+anjuta_project_node_insert_property (AnjutaProjectNode *node, AnjutaProjectPropertyInfo *info, AnjutaProjectProperty *property)
{
/* Make sure the property is native */
- if (native->native != NULL) native = native->native;
-
- /* Fill missing information */
- 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 */
- node->custom_properties = g_list_append (node->custom_properties, property);
-
+ property->info = info;
+
+ /* Add in properties list */
+ node->properties = g_list_append (node->properties, property);
+
return property;
}
AnjutaProjectProperty *
anjuta_project_node_remove_property (AnjutaProjectNode *node, AnjutaProjectProperty *prop)
{
- GList *found;
- AnjutaProjectProperty *removed = NULL;
-
/* Search the exact property, useful for list property */
- found = g_list_find (node->custom_properties, prop);
- if (found == NULL)
- {
- found = g_list_find_custom (node->custom_properties, prop, find_property);
- }
-
- if (found != NULL)
+ if (prop != prop->info->property)
{
- removed = (AnjutaProjectProperty *)found->data;
- node->custom_properties = g_list_delete_link (node->custom_properties, found);
- /* If name is not owned by the property, remove it as the
- * property can be associated with another one, having a
- * different name */
- if ((removed->native != NULL) && (removed->name == removed->native->name))
- {
- removed->name = NULL;
- }
+ node->properties = g_list_remove (node->properties, prop);
+ prop->info = NULL;
}
-
- return removed;
+ return prop;
}
@@ -1004,8 +1091,8 @@ enum {
PROP_FILE,
PROP_STATE,
PROP_TYPE,
- PROP_NATIVE_PROPERTIES,
- PROP_CUSTOM_PROPERTIES
+ PROP_PROPERTIES,
+ PROP_PROPERTIES_INFO
};
@@ -1020,11 +1107,11 @@ anjuta_project_node_init (AnjutaProjectNode *node)
node->prev = NULL;
node->parent = NULL;
node->children = NULL;
-
+
node->type = 0;
node->state = 0;
- node->native_properties = NULL;
- node->custom_properties = NULL;
+ node->properties = NULL;
+ node->properties_info = NULL;
node->file = NULL;
node->name = NULL;
}
@@ -1035,18 +1122,18 @@ anjuta_project_node_dispose (GObject *object)
AnjutaProjectNode *node = ANJUTA_PROJECT_NODE(object);
anjuta_project_node_remove (node);
-
+
if (node->file != NULL) g_object_unref (node->file);
node->file = NULL;
while (node->children != NULL)
{
AnjutaProjectNode *child;
-
+
child = anjuta_project_node_remove (node->children);
g_object_unref (child);
}
-
+
G_OBJECT_CLASS (anjuta_project_node_parent_class)->dispose (object);
}
@@ -1056,11 +1143,11 @@ anjuta_project_node_finalize (GObject *object)
AnjutaProjectNode *node = ANJUTA_PROJECT_NODE(object);
if (node->name != NULL) g_free (node->name);
-
+
G_OBJECT_CLASS (anjuta_project_node_parent_class)->finalize (object);
}
-static void
+static void
anjuta_project_node_get_gobject_property (GObject *object,
guint prop_id,
GValue *value,
@@ -1080,18 +1167,18 @@ anjuta_project_node_get_gobject_property (GObject *object,
case PROP_TYPE:
g_value_set_flags (value, anjuta_project_node_get_node_type (node));
break;
- case PROP_NATIVE_PROPERTIES:
- g_value_set_pointer (value, node->native_properties);
+ case PROP_PROPERTIES:
+ g_value_set_pointer (value, node->properties);
break;
- case PROP_CUSTOM_PROPERTIES:
- g_value_set_pointer (value, node->custom_properties);
+ case PROP_PROPERTIES_INFO:
+ g_value_set_pointer (value, node->properties_info);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
-static void
+static void
anjuta_project_node_set_gobject_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -1115,12 +1202,12 @@ anjuta_project_node_set_gobject_property (GObject *object,
case PROP_TYPE:
node->type = g_value_get_flags (value);
break;
- case PROP_NATIVE_PROPERTIES:
- node->native_properties = g_value_get_pointer (value);
+ case PROP_PROPERTIES:
+ node->properties = g_value_get_pointer (value);
break;
/* XXX: We may need to copy this instead */
- case PROP_CUSTOM_PROPERTIES:
- node->custom_properties = g_value_get_pointer (value);
+ case PROP_PROPERTIES_INFO:
+ node->properties_info = g_value_get_pointer (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1132,7 +1219,7 @@ anjuta_project_node_class_init (AnjutaProjectNodeClass *klass)
{
GObjectClass* object_class = G_OBJECT_CLASS (klass);
GParamSpec* pspec;
-
+
object_class->finalize = anjuta_project_node_finalize;
object_class->dispose = anjuta_project_node_dispose;
object_class->get_property = anjuta_project_node_get_gobject_property;
@@ -1150,7 +1237,7 @@ anjuta_project_node_class_init (AnjutaProjectNodeClass *klass)
The plugin should probably get the GFile from the
AnjutaProjectNode object and then use a function
in project-view.c to create the corresponding shortcut*/
-
+
anjuta_project_node_signals[UPDATED] = g_signal_new ("updated",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -1161,7 +1248,7 @@ anjuta_project_node_class_init (AnjutaProjectNodeClass *klass)
2,
G_TYPE_POINTER,
G_TYPE_ERROR);
-
+
anjuta_project_node_signals[LOADED] = g_signal_new ("loaded",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -1208,28 +1295,28 @@ anjuta_project_node_class_init (AnjutaProjectNodeClass *klass)
pspec);
/**
- * AnjutaProjectNode:native-properties:
+ * AnjutaProjectNode:properties:
*
* type: GLib.List<Anjuta.ProjectProperty>
* Transfer: none
*/
- pspec = g_param_spec_pointer ("native-properties",
- "Native properties",
- "The list of all possible properties",
+ pspec = g_param_spec_pointer ("properties",
+ "Properties",
+ "The list of properties",
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_NATIVE_PROPERTIES,
+ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PROPERTIES,
pspec);
/**
- * AnjutaProjectNode:custom-properties:
+ * AnjutaProjectNode:properties-info:
*
- * Type: GLib.List<Anjuta.ProjectProperty>
+ * Type: GLib.List<Anjuta.ProjectPropertyInfo>
* Transfer: none
*/
- pspec = g_param_spec_pointer ("custom-properties",
- "Custom properties",
- "The list of overriden properties",
+ pspec = g_param_spec_pointer ("properties-info",
+ "Properties info",
+ "The list of all possible properties informations",
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CUSTOM_PROPERTIES,
+ g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PROPERTIES_INFO,
pspec);
}
@@ -1248,7 +1335,7 @@ anjuta_project_node_info_name (const AnjutaProjectNodeInfo *info)
return info->name;
}
-const gchar *
+const gchar *
anjuta_project_node_info_mime (const AnjutaProjectNodeInfo *info)
{
return info->mime_type;
diff --git a/libanjuta/anjuta-project.h b/libanjuta/anjuta-project.h
index 70cb597..c7a08d2 100644
--- a/libanjuta/anjuta-project.h
+++ b/libanjuta/anjuta-project.h
@@ -2,17 +2,17 @@
/*
* anjuta-project.h
* Copyright (C) SÃbastien Granjoux 2009 <seb sfo free fr>
- *
+ *
* This program 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.
- *
+ *
* This program 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/>.
*/
@@ -29,6 +29,7 @@ G_BEGIN_DECLS
#define ANJUTA_IS_PROJECT_PROPERTY
typedef struct _AnjutaProjectProperty AnjutaProjectProperty;
+typedef struct _AnjutaProjectPropertyInfo AnjutaProjectPropertyInfo;
typedef enum
{
@@ -43,26 +44,39 @@ typedef enum
ANJUTA_PROJECT_PROPERTY_READ_ONLY = 1 << 0,
ANJUTA_PROJECT_PROPERTY_READ_WRITE = 1 << 1,
ANJUTA_PROJECT_PROPERTY_HIDDEN = 1 << 2,
+ ANJUTA_PROJECT_PROPERTY_STATIC = 1 << 3,
} AnjutaProjectPropertyFlags;
struct _AnjutaProjectProperty
{
- gchar *id;
gchar *name;
- AnjutaProjectValueType type;
- AnjutaProjectPropertyFlags flags;
- const gchar *detail;
gchar *value;
- AnjutaProjectProperty *native;
+ AnjutaProjectPropertyInfo *info;
+ gpointer user_data;
};
GType anjuta_project_property_get_type (void);
-
-AnjutaProjectProperty *anjuta_project_property_new (const gchar *id, const gchar *name, AnjutaProjectValueType type, const gchar *value, AnjutaProjectProperty *native);
+AnjutaProjectProperty *anjuta_project_property_new (const gchar *value, const gchar *name, gpointer user_data);
AnjutaProjectProperty * anjuta_project_property_copy (AnjutaProjectProperty *prop);
void anjuta_project_property_free (AnjutaProjectProperty *prop);
+struct _AnjutaProjectPropertyInfo
+{
+ gchar *id;
+ gchar *name;
+ AnjutaProjectValueType type;
+ AnjutaProjectPropertyFlags flags;
+ gchar *description;
+ AnjutaProjectProperty *property;
+ gpointer user_data;
+};
+
+GType anjuta_project_property_info_get_type (void);
+AnjutaProjectPropertyInfo *anjuta_project_property_info_new (const gchar *id, const gchar *name, AnjutaProjectValueType type, AnjutaProjectPropertyFlags flags, const gchar *description, AnjutaProjectProperty *property, gpointer user_data);
+AnjutaProjectPropertyInfo * anjuta_project_property_info_copy (AnjutaProjectPropertyInfo *info);
+void anjuta_project_property_info_free (AnjutaProjectPropertyInfo *info);
+
#define ANJUTA_TYPE_PROJECT_NODE (anjuta_project_node_get_type ())
#define ANJUTA_PROJECT_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANJUTA_TYPE_PROJECT_NODE, AnjutaProjectNode))
@@ -145,12 +159,12 @@ struct _AnjutaProjectNode
AnjutaProjectNode *prev;
AnjutaProjectNode *parent;
AnjutaProjectNode *children;
-
+
AnjutaProjectNodeType type;
AnjutaProjectNodeState state;
- GList *native_properties;
- GList *custom_properties;
+ GList *properties_info;
+ GList *properties;
GFile *file;
gchar *name;
};
@@ -204,17 +218,20 @@ AnjutaProjectNodeState anjuta_project_node_get_state (const AnjutaProjectNode *n
const gchar *anjuta_project_node_get_name (const AnjutaProjectNode *node);
GFile *anjuta_project_node_get_file (const AnjutaProjectNode *node);
-GList *anjuta_project_node_get_native_properties (AnjutaProjectNode *node);
-GList *anjuta_project_node_get_custom_properties (AnjutaProjectNode *node);
-AnjutaProjectProperty *anjuta_project_node_get_property (AnjutaProjectNode *node, AnjutaProjectProperty *property);
-AnjutaProjectProperty *anjuta_project_node_get_map_property (AnjutaProjectNode *node, AnjutaProjectProperty *property, const gchar *name);
+GList *anjuta_project_node_get_properties_info (AnjutaProjectNode *node);
+GList *anjuta_project_node_get_properties (AnjutaProjectNode *node);
+AnjutaProjectPropertyInfo *anjuta_project_node_get_property_info (AnjutaProjectNode *node, const gchar *id);
+AnjutaProjectProperty *anjuta_project_node_get_property (AnjutaProjectNode *node, const gchar *id);
+AnjutaProjectProperty *anjuta_project_node_get_map_property (AnjutaProjectNode *node, const gchar *id, const gchar *name);
-gboolean anjuta_project_node_set_state (AnjutaProjectNode *node, AnjutaProjectNodeState state);
-gboolean anjuta_project_node_clear_state (AnjutaProjectNode *node, AnjutaProjectNodeState state);
-AnjutaProjectProperty *anjuta_project_node_insert_property (AnjutaProjectNode *node, AnjutaProjectProperty *native, AnjutaProjectProperty *property);
+AnjutaProjectPropertyInfo *anjuta_project_node_insert_property_info (AnjutaProjectNode *node, AnjutaProjectPropertyInfo *info);
+AnjutaProjectProperty *anjuta_project_node_insert_property (AnjutaProjectNode *node, AnjutaProjectPropertyInfo *info, AnjutaProjectProperty *property);
AnjutaProjectProperty *anjuta_project_node_remove_property (AnjutaProjectNode *node, AnjutaProjectProperty *property);
+gboolean anjuta_project_node_set_state (AnjutaProjectNode *node, AnjutaProjectNodeState state);
+gboolean anjuta_project_node_clear_state (AnjutaProjectNode *node, AnjutaProjectNodeState state);
+
AnjutaProjectNode *anjuta_project_node_get_group_from_file (const AnjutaProjectNode *root, GFile *directory);
AnjutaProjectNode *anjuta_project_target_get_node_from_name (const AnjutaProjectNode *parent, const gchar *name);
AnjutaProjectNode *anjuta_project_node_get_source_from_file (const AnjutaProjectNode *parent, GFile *file);
diff --git a/libanjuta/interfaces/libanjuta.idl b/libanjuta/interfaces/libanjuta.idl
index e28b991..4a49c7b 100644
--- a/libanjuta/interfaces/libanjuta.idl
+++ b/libanjuta/interfaces/libanjuta.idl
@@ -3272,7 +3272,8 @@ interface IAnjutaProject
* ianjuta_project_set_property:
* @obj: Self
* @node: (transfer none): Node
- * @property: (transfer none): Property
+ * @id: (transfer none): Property
+ * @name: (allow-none) (transfer none): Name for map property
* @value: (transfer none): Value
* @err: Error propagation and reporting
*
@@ -3280,20 +3281,21 @@ interface IAnjutaProject
*
* Return value: (allow-none) (transfer none): The new property of NULL if the property cannot be set
*/
- AnjutaProjectProperty *set_property (AnjutaProjectNode *parent, AnjutaProjectProperty* property, const gchar *value);
+ AnjutaProjectProperty *set_property (AnjutaProjectNode *parent, const gchar *id, const gchar *name, const gchar *value);
/**
* ianjuta_project_remove_property:
* @obj: Self
* @node: (transfer none): Node
- * @property: (transfer none): Property
+ * @id: (transfer none): Property
+ * @name: (allow-none) (transfer none): Name for map property
* @err: Error propagation and reporting
*
* Remove a property of the node
*
* Return value: TRUE if the node is removed
*/
- gboolean remove_property (AnjutaProjectNode *node, AnjutaProjectProperty* property);
+ gboolean remove_property (AnjutaProjectNode *node, const gchar *id, const gchar *name);
/**
* ianjuta_project_get_root:
diff --git a/plugins/am-project/ac-writer.c b/plugins/am-project/ac-writer.c
index 1da7333..751ce0d 100644
--- a/plugins/am-project/ac-writer.c
+++ b/plugins/am-project/ac-writer.c
@@ -187,11 +187,11 @@ find_similar_property (AnjutaProjectNode *node, AmpProperty *property)
{
GList *item;
- for (item = anjuta_project_node_get_custom_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (node); item != NULL; item = g_list_next (item))
{
AmpProperty *prop = (AmpProperty *)item->data;
- if ((prop->token_type == property->token_type) && (prop->token != NULL))
+ if ((((AmpPropertyInfo *)prop->base.info)->token_type == ((AmpPropertyInfo *)property->base.info)->token_type) && (prop->token != NULL))
{
return prop;
}
@@ -210,14 +210,15 @@ amp_project_update_ac_property (AmpProject *project, AnjutaProjectProperty *prop
AnjutaToken *arg;
AnjutaToken *args;
AmpProperty *prop;
+ AmpPropertyInfo *info;
- if (((property->native->value == NULL) && (property->value == NULL)) ||
- (g_strcmp0 (property->native->value, property->value) == 0))
+ if (g_strcmp0 (((AmpPropertyInfo *)property->info)->value, property->value) == 0)
{
/* Remove property */
+ info = (AmpPropertyInfo *)property->info;
prop = (AmpProperty *)property;
- if (prop->position == -1)
+ if (info->position == -1)
{
token = prop->token;
@@ -228,6 +229,7 @@ amp_project_update_ac_property (AmpProject *project, AnjutaProjectProperty *prop
}
else
{
+ info = (AmpPropertyInfo *)property->info;
prop = find_similar_property (ANJUTA_PROJECT_NODE (project), (AmpProperty *)property);
args = prop != NULL ? prop->token : NULL;
@@ -240,7 +242,7 @@ amp_project_update_ac_property (AmpProject *project, AnjutaProjectProperty *prop
const char *suffix;
configure = amp_project_get_configure_token (project);
- token = anjuta_token_find_position (configure, TRUE, prop->token_type, NULL);
+ token = anjuta_token_find_position (configure, TRUE, info->token_type, NULL);
if (token == NULL)
{
token = skip_comment (configure);
@@ -253,7 +255,7 @@ amp_project_update_ac_property (AmpProject *project, AnjutaProjectProperty *prop
}
}
- suffix = ((AmpProperty *)prop->base.native)->suffix;
+ suffix = info->suffix;
token = anjuta_token_insert_after (token, anjuta_token_new_string (AC_TOKEN_AC_INIT | ANJUTA_TOKEN_ADDED, suffix));
if (suffix[strlen(suffix) - 1] == '(')
{
@@ -272,7 +274,7 @@ amp_project_update_ac_property (AmpProject *project, AnjutaProjectProperty *prop
arg = anjuta_token_insert_before (token, anjuta_token_new_static (ANJUTA_TOKEN_ITEM | ANJUTA_TOKEN_ADDED, NULL));
anjuta_token_merge (arg, token);
- pos = prop->position;
+ pos = info->position;
if (pos == -1) pos = 0;
anjuta_token_replace_nth_word (args, pos, arg);
anjuta_token_style_format (project->arg_list, args);
diff --git a/plugins/am-project/am-project-private.h b/plugins/am-project/am-project-private.h
index 1408d6d..d61019a 100644
--- a/plugins/am-project/am-project-private.h
+++ b/plugins/am-project/am-project-private.h
@@ -39,12 +39,17 @@ typedef enum {
struct _AmpProperty {
AnjutaProjectProperty base;
+ AnjutaToken *token;
+};
+
+struct _AmpPropertyInfo {
+ AnjutaProjectPropertyInfo base;
gint token_type;
gint position;
const gchar *suffix;
AmpPropertyFlag flags;
- AnjutaToken *token;
- AmpProperty *link; /* Link to a boolean property disabling this one */
+ const gchar *value;
+ AnjutaProjectPropertyInfo *link; /* Link to a boolean property disabling this one */
};
struct _AmpProject {
diff --git a/plugins/am-project/am-project.c b/plugins/am-project/am-project.c
index 4c822cc..99eafe0 100644
--- a/plugins/am-project/am-project.c
+++ b/plugins/am-project/am-project.c
@@ -674,31 +674,28 @@ amp_project_load_properties (AmpProject *project, AnjutaToken *macro, AnjutaToke
GList *item;
gint type = anjuta_token_get_type (macro);
- for (item = anjuta_project_node_get_native_properties (ANJUTA_PROJECT_NODE (project)); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (ANJUTA_PROJECT_NODE (project)); item != NULL; item = g_list_next (item))
{
- AmpProperty *prop = (AmpProperty *)item->data;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
- if ((prop->token_type == type) && (prop->flags & AM_PROPERTY_IN_CONFIGURE))
+ if ((info->token_type == type) && (info->flags & AM_PROPERTY_IN_CONFIGURE))
{
AnjutaProjectProperty *new_prop;
- new_prop = anjuta_project_node_remove_property (ANJUTA_PROJECT_NODE (project), (AnjutaProjectProperty *)prop);
+ new_prop = anjuta_project_node_get_property (ANJUTA_PROJECT_NODE (project), info->base.id);
if (new_prop != NULL)
{
amp_property_free (new_prop);
}
- new_prop = amp_property_new (NULL, prop->token_type, prop->position, NULL, args);
+ new_prop = amp_property_new (NULL, info->token_type, info->position, NULL, args);
- if (prop->position >= 0)
+ if (info->position >= 0)
{
/* Each parameter correspond to a different property */
AnjutaToken *arg;
- arg = anjuta_token_nth_word (args, prop->position);
- if ((new_prop->value != NULL) && (new_prop->value != prop->base.value))
- {
- g_free (new_prop->value);
- }
+ arg = anjuta_token_nth_word (args, info->position);
+ g_free (new_prop->value);
new_prop->value = anjuta_token_evaluate (arg);
}
else
@@ -717,7 +714,7 @@ amp_project_load_properties (AmpProject *project, AnjutaToken *macro, AnjutaToke
if (new_prop->value == NULL) new_prop->value = g_strdup(" ");
}
}
- anjuta_project_node_insert_property (ANJUTA_PROJECT_NODE (project), (AnjutaProjectProperty *)prop, new_prop);
+ amp_node_property_add (ANJUTA_PROJECT_NODE (project), new_prop);
}
}
}
@@ -914,13 +911,12 @@ project_load_target (AmpProject *project, AnjutaProjectNode *parent, AnjutaToken
}
/* Copy all properties */
- while ((properties = anjuta_project_node_get_custom_properties (ANJUTA_PROJECT_NODE (orphan))) != NULL)
+ while ((properties = anjuta_project_node_get_properties (ANJUTA_PROJECT_NODE (orphan))) != NULL)
{
AnjutaProjectProperty *prop;
prop = (AnjutaProjectProperty *)anjuta_project_node_remove_property (ANJUTA_PROJECT_NODE (orphan), (AnjutaProjectProperty *)properties->data);
-
- amp_node_property_add (ANJUTA_PROJECT_NODE (target), prop);
+ amp_node_property_add ((AnjutaProjectNode *)target, prop);
}
/* Copy all sources */
@@ -1283,6 +1279,7 @@ project_load_group_properties (AmpProject *project, AnjutaProjectNode *parent, A
prop = amp_property_new (name, anjuta_token_get_type (variable), 0, value, list);
amp_node_property_add (parent, prop);
+
g_free (value);
g_free (name);
@@ -1529,9 +1526,9 @@ amp_project_update_node (AnjutaProjectNode *key, AnjutaProjectNode *value, GHash
amp_node_update (AMP_NODE (node), AMP_NODE (new_node));
/* Swap custom properties */
- properties = node->custom_properties;
- node->custom_properties = new_node->custom_properties;
- new_node->custom_properties = properties;
+ properties = node->properties;
+ node->properties = new_node->properties;
+ new_node->properties = properties;
if (new_node->parent == NULL)
{
@@ -2239,7 +2236,7 @@ amp_set_property_work (PmJob *job)
{
gint flags;
- flags = ((AmpProperty *)job->property->native)->flags;
+ flags = ((AmpPropertyInfo *)job->property->info)->flags;
if (flags & AM_PROPERTY_IN_CONFIGURE)
{
@@ -2247,7 +2244,7 @@ amp_set_property_work (PmJob *job)
}
else if (flags & AM_PROPERTY_IN_MAKEFILE)
{
- if (((AnjutaProjectProperty *)job->property->native)->flags & ANJUTA_PROJECT_PROPERTY_READ_WRITE)
+ if (((AnjutaProjectPropertyInfo *)job->property->info)->flags & ANJUTA_PROJECT_PROPERTY_READ_WRITE)
{
amp_project_update_am_property (AMP_PROJECT (job->user_data), job->node, job->property);
}
@@ -2277,7 +2274,7 @@ amp_remove_property_work (PmJob *job)
{
gint flags;
- flags = ((AmpProperty *)job->property->native)->flags;
+ flags = ((AmpPropertyInfo *)job->property->info)->flags;
if (flags & AM_PROPERTY_IN_CONFIGURE)
{
@@ -2285,7 +2282,7 @@ amp_remove_property_work (PmJob *job)
}
else if (flags & AM_PROPERTY_IN_MAKEFILE)
{
- if (((AnjutaProjectProperty *)job->property->native)->flags & ANJUTA_PROJECT_PROPERTY_READ_WRITE)
+ if (((AnjutaProjectPropertyInfo *)job->property->info)->flags & ANJUTA_PROJECT_PROPERTY_READ_WRITE)
{
amp_project_update_am_property (AMP_PROJECT (job->user_data), job->node, job->property);
}
@@ -2387,14 +2384,14 @@ iproject_remove_node (IAnjutaProject *obj, AnjutaProjectNode *node, GError **err
}
static AnjutaProjectProperty *
-iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, const gchar *value, GError **error)
+iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, const gchar *value, GError **error)
{
AnjutaProjectProperty *new_prop;
PmJob *set_property_job;
if (AMP_PROJECT (obj)->queue == NULL) AMP_PROJECT (obj)->queue = pm_command_queue_new ();
- new_prop = amp_node_property_set (node, property, value);
+ new_prop = name == NULL ? amp_node_property_set (node, id, value) : amp_node_map_property_set (node, id, name, value);
set_property_job = pm_job_new (&_set_property_job, node, NULL, NULL, ANJUTA_PROJECT_UNKNOWN, NULL, NULL, obj);
set_property_job->property = new_prop;
pm_command_queue_push (AMP_PROJECT (obj)->queue, set_property_job);
@@ -2403,7 +2400,7 @@ iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProje
}
static gboolean
-iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, GError **error)
+iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, GError **error)
{
AnjutaProjectProperty *new_prop;
PmJob *remove_property_job;
@@ -2411,8 +2408,7 @@ iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaPr
if (AMP_PROJECT (obj)->queue == NULL) AMP_PROJECT (obj)->queue = pm_command_queue_new ();
- new_prop = amp_node_property_set (node, property, NULL);
- new_prop->value = new_prop->native->value;
+ new_prop = amp_node_map_property_set (node, id, name, NULL);
remove_property_job = pm_job_new (&_set_property_job, node, NULL, NULL, ANJUTA_PROJECT_UNKNOWN, NULL, NULL, obj);
remove_property_job->property = new_prop;
pm_command_queue_push (AMP_PROJECT (obj)->queue, remove_property_job);
diff --git a/plugins/am-project/am-project.h b/plugins/am-project/am-project.h
index 3eb3298..1c995c5 100644
--- a/plugins/am-project/am-project.h
+++ b/plugins/am-project/am-project.h
@@ -54,6 +54,7 @@ struct _AmpProjectClass {
};
typedef struct _AmpProperty AmpProperty;
+typedef struct _AmpPropertyInfo AmpPropertyInfo;
GType amp_project_get_type (void);
AmpProject *amp_project_new (GFile *file, IAnjutaLanguage *language, GError **error);
diff --git a/plugins/am-project/am-properties.c b/plugins/am-project/am-properties.c
index 2327b3f..68fb679 100644
--- a/plugins/am-project/am-properties.c
+++ b/plugins/am-project/am-properties.c
@@ -42,13 +42,13 @@
/* Constants
*---------------------------------------------------------------------------*/
-static AmpProperty AmpProjectProperties[] =
+static AmpPropertyInfo AmpProjectProperties[] =
{
{
{"NAME",
N_("Name:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Project name, it can contain spaces by example 'GNU Autoconf'")},
AC_TOKEN_AC_INIT, 0, "AC_INIT(",
AM_PROPERTY_IN_CONFIGURE
@@ -57,7 +57,7 @@ static AmpProperty AmpProjectProperties[] =
{"VERSION",
N_("Version:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Project version, typically a few numbers separated by dot by example '1.0.0'")},
AC_TOKEN_AC_INIT, 1, "AC_INIT(",
AM_PROPERTY_IN_CONFIGURE
@@ -66,7 +66,7 @@ static AmpProperty AmpProjectProperties[] =
{"BUGREPORT",
N_("Bug report URL:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("An email address or a link to a web page where the user can report bug. It is optional.")},
AC_TOKEN_AC_INIT, 2, "AC_INIT(",
AM_PROPERTY_IN_CONFIGURE
@@ -75,7 +75,7 @@ static AmpProperty AmpProjectProperties[] =
{"PACKAGE",
N_("Package name:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Package name, it can contains only alphanumerics and underscore characters."
"It is generated from the project name if not provided.")},
AC_TOKEN_AC_INIT, 3, "AC_INIT(",
@@ -85,7 +85,7 @@ static AmpProperty AmpProjectProperties[] =
{"URL",
N_("URL:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("An link to the project web page if provided.")},
AC_TOKEN_AC_INIT, 4, "AC_INIT(",
AM_PROPERTY_IN_CONFIGURE
@@ -103,7 +103,7 @@ static AmpProperty AmpProjectProperties[] =
{"LDFLAGS",
N_("Linker flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional linker flags for all targets in this group.")},
AM_TOKEN__LDFLAGS, 0, "AM_LDFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -112,7 +112,7 @@ static AmpProperty AmpProjectProperties[] =
{"CPPFLAGS",
N_("C preprocessor flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C preprocessor flags for all targets in this group.")},
AM_TOKEN__CPPFLAGS, 0, "AM_CPPFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -121,7 +121,7 @@ static AmpProperty AmpProjectProperties[] =
{"CFLAGS",
N_("C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C compiler flags for all targets in this group.")},
AM_TOKEN__CFLAGS, 0, "AM_CFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -130,7 +130,7 @@ static AmpProperty AmpProjectProperties[] =
{"CXXFLAGS",
N_("C++ compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C++ compiler flags for all targets in this group.")},
AM_TOKEN__CXXFLAGS, 0, "AM_CXXFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -139,7 +139,7 @@ static AmpProperty AmpProjectProperties[] =
{"JAVAFLAGS",
N_("Java compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Java compiler flags for all targets in this group.")},
AM_TOKEN__JAVACFLAGS, 0, "AM_JAVAFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -148,7 +148,7 @@ static AmpProperty AmpProjectProperties[] =
{"VALAFLAGS",
N_("Vala compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Vala compiler flags for all targets in this group.")},
AM_TOKEN__VALAFLAGS, 0, "AM_VALAFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -157,7 +157,7 @@ static AmpProperty AmpProjectProperties[] =
{"FCFLAGS",
N_("Fortran compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Fortran compiler flags for all targets in this group.")},
AM_TOKEN__FCFLAGS, 0, "AM_FCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -166,7 +166,7 @@ static AmpProperty AmpProjectProperties[] =
{"OBJCFLAGS",
N_("Objective C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Objective C compiler flags for all targets in this group.")},
AM_TOKEN__OBJCFLAGS, 0, "AM_OBJCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -175,7 +175,7 @@ static AmpProperty AmpProjectProperties[] =
{"LFLAGS",
N_("Lex/Flex flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Lex or Flex lexical analyser generator flags for all targets in this group.")},
AM_TOKEN__LFLAGS, 0, "AM_LFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -184,7 +184,7 @@ static AmpProperty AmpProjectProperties[] =
{"YFLAGS",
N_("Yacc/Bison flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Yacc or Bison parser generator flags for all targets in this group.")},
AM_TOKEN__YFLAGS, 0, "AM_YFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -193,7 +193,7 @@ static AmpProperty AmpProjectProperties[] =
{"INSTALLDIRS",
N_("Installation directories:"),
ANJUTA_PROJECT_PROPERTY_MAP,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("List of custom installation directories used by targets in this group.")},
AM_TOKEN_DIR, 0, NULL,
AM_PROPERTY_IN_MAKEFILE
@@ -204,13 +204,13 @@ static AmpProperty AmpProjectProperties[] =
static GList* AmpProjectPropertyList = NULL;
-static AmpProperty AmpGroupNodeProperties[] =
+static AmpPropertyInfo AmpGroupNodeProperties[] =
{
{
{"LDFLAGS",
N_("Linker flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional linker flags for all targets in this group.")},
AM_TOKEN__LDFLAGS, 0, "AM_LDFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -219,7 +219,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"CPPFLAGS",
N_("C preprocessor flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C preprocessor flags for all targets in this group.")},
AM_TOKEN__CPPFLAGS, 0, "AM_CPPFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -228,7 +228,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"CFLAGS",
N_("C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C compiler flags for all targets in this group.")},
AM_TOKEN__CFLAGS, 0, "AM_CFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -237,7 +237,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"CXXFLAGS",
N_("C++ compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional C++ compiler flags for all targets in this group.")},
AM_TOKEN__CXXFLAGS, 0, "AM_CXXFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -246,7 +246,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"JAVAFLAGS",
N_("Java compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Java compiler flags for all targets in this group.")},
AM_TOKEN__JAVACFLAGS, 0, "AM_JAVAFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -255,7 +255,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"VALAFLAGS",
N_("Vala compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Vala compiler flags for all targets in this group.")},
AM_TOKEN__VALAFLAGS, 0, "AM_VALAFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -264,7 +264,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"FCFLAGS",
N_("Fortran compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Fortran compiler flags for all targets in this group.")},
AM_TOKEN__FCFLAGS, 0, "AM_FCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -273,7 +273,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"OBJCFLAGS",
N_("Objective C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Objective C compiler flags for all targets in this group.")},
AM_TOKEN__OBJCFLAGS, 0, "AM_OBJCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -282,7 +282,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"LFLAGS",
N_("Lex/Flex flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Lex or Flex lexical analyser generator flags for all targets in this group.")},
AM_TOKEN__LFLAGS, 0, "AM_LFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -291,7 +291,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"YFLAGS",
N_("Yacc/Bison flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Common additional Yacc or Bison parser generator flags for all targets in this group.")},
AM_TOKEN__YFLAGS, 0, "AM_YFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -300,7 +300,7 @@ static AmpProperty AmpGroupNodeProperties[] =
{"INSTALLDIRS",
N_("Installation directories:"),
ANJUTA_PROJECT_PROPERTY_MAP,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("List of custom installation directories used by targets in this group.")},
AM_TOKEN_DIR, 0, NULL,
AM_PROPERTY_IN_MAKEFILE
@@ -311,22 +311,22 @@ static AmpProperty AmpGroupNodeProperties[] =
static GList* AmpGroupNodePropertyList = NULL;
-static AmpProperty AmpTargetNodeProperties[] = {
+static AmpPropertyInfo AmpTargetNodeProperties[] = {
{
{"NOINST",
N_("Do not install:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
- N_("Build but do not install the target."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build but do not install the target.")},
AM_TOKEN__PROGRAMS, 3, NULL,
- AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING
+ AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING,
+ "0"
},
{
{"INSTALLDIR",
N_("Installation directory:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("It has to be a standard directory or a custom one defined in group properties.")},
AM_TOKEN__PROGRAMS, 6, "bin",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DIRECTORY
@@ -335,7 +335,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"LDFLAGS",
N_("Linker flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional linker flags for this target.")},
AM_TOKEN_TARGET_LDFLAGS, 0, "_LDFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -344,7 +344,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"LIBADD",
N_("Additional libraries:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional libraries for this target.")},
AM_TOKEN_TARGET_LIBADD, 0, "_LIBADD",
AM_PROPERTY_IN_MAKEFILE
@@ -353,7 +353,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"LDADD",
N_("Additional objects:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional object files for this target.")},
AM_TOKEN_TARGET_LDADD, 0, "_LDADD",
AM_PROPERTY_IN_MAKEFILE
@@ -362,7 +362,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"CPPFLAGS",
N_("C preprocessor flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C preprocessor flags for this target.")},
AM_TOKEN_TARGET_CPPFLAGS, 0, "_CPPFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -371,7 +371,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"CFLAGS",
N_("C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C compiler flags for this target.")},
AM_TOKEN_TARGET_CFLAGS, 0, "_CFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -380,7 +380,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"CXXFLAGS",
N_("C++ compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C++ compiler flags for this target.")},
AM_TOKEN_TARGET_CXXFLAGS, 0, "_CXXFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -389,7 +389,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"JAVAFLAGS",
N_("Java compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Java compiler flags for this target.")},
AM_TOKEN_TARGET_JAVACFLAGS, 0, "_JAVACFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -398,7 +398,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"VALAFLAGS",
N_("Vala compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Vala compiler flags for this target.")},
AM_TOKEN_TARGET_VALAFLAGS,0, "_VALAFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -407,7 +407,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"FCFLAGS",
N_("Fortran compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Fortran compiler flags for this target.")},
AM_TOKEN_TARGET_FCFLAGS, 0, "_FCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -416,7 +416,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"OBJCFLAGS",
N_("Objective C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Objective C compiler flags for this target.")},
AM_TOKEN_TARGET_OBJCFLAGS, 0, "_OBJCFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -425,7 +425,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"LFLAGS",
N_("Lex/Flex flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
AM_TOKEN_TARGET_LFLAGS, 0, "_LFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -434,7 +434,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"YFLAGS",
N_("Yacc/Bison flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Yacc or Bison parser generator flags for this target.")},
AM_TOKEN_TARGET_YFLAGS, 0, "_YFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -443,7 +443,7 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
AM_TOKEN_TARGET_DEPENDENCIES, 0, "EXTRA_DIST",
AM_PROPERTY_IN_MAKEFILE
@@ -452,42 +452,42 @@ static AmpProperty AmpTargetNodeProperties[] = {
{"DIST",
N_("Include in distribution:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
- N_("Include this target in the distributed package."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Include this target in the distributed package.")},
AM_TOKEN__PROGRAMS, 2, NULL,
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"CHECKONLY",
N_("Build for check only:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
- N_("Build this target only when running automatic tests."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build this target only when running automatic tests.")},
AM_TOKEN__PROGRAMS, 4, NULL,
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
- N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, NULL,
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOBASE",
N_("Keep target path:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Keep relative target path for installing it. "
- "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
- "0"},
+ "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
AM_TOKEN__PROGRAMS, 0, NULL,
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{}
};
@@ -495,22 +495,22 @@ static AmpProperty AmpTargetNodeProperties[] = {
static GList* AmpTargetNodePropertyList = NULL;
-static AmpProperty AmpProgramTargetProperties[] = {
+static AmpPropertyInfo AmpProgramTargetProperties[] = {
{
{"NOINST",
N_("Do not install:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build but do not install the target."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build but do not install the target.")},
AM_TOKEN__PROGRAMS, 3, "noinst_",
- AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING
+ AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING,
+ "0"
},
{
{"INSTALLDIR",
N_("Installation directory:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("It has to be a standard directory or a custom one defined in group properties.")},
AM_TOKEN__PROGRAMS, 6, "bin",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DIRECTORY
@@ -519,7 +519,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"LDFLAGS",
N_("Linker flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional linker flags for this target.")},
AM_TOKEN_TARGET_LDFLAGS, 0, "_LDFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -528,7 +528,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"LDADD",
N_("Libraries:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional libraries for this target.")},
AM_TOKEN_TARGET_LDADD, 0, "_LDADD",
AM_PROPERTY_IN_MAKEFILE
@@ -537,7 +537,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"CPPFLAGS",
N_("C preprocessor flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C preprocessor flags for this target.")},
AM_TOKEN_TARGET_CPPFLAGS, 0, "_CPPFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -546,7 +546,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"CFLAGS",
N_("C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C compiler flags for this target.")},
AM_TOKEN_TARGET_CFLAGS, 0, "_CFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -555,7 +555,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"CXXFLAGS",
N_("C++ compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C++ compiler flags for this target.")},
AM_TOKEN_TARGET_CXXFLAGS, 0, "_CXXFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -564,7 +564,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"JAVAFLAGS",
N_("Java compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Java compiler flags for this target.")},
AM_TOKEN_TARGET_JAVACFLAGS, 0, "_JAVACFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -573,7 +573,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"VALAFLAGS",
N_("Vala compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Vala compiler flags for this target.")},
AM_TOKEN_TARGET_VALAFLAGS,0, "_VALAFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -582,7 +582,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"FCFLAGS",
N_("Fortran compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Fortran compiler flags for this target.")},
AM_TOKEN_TARGET_FCFLAGS, 0, "_FCFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -591,7 +591,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"OBJCFLAGS",
N_("Objective C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Objective C compiler flags for this target.")},
AM_TOKEN_TARGET_OBJCFLAGS, 0, "_OBJCFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -600,7 +600,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"LFLAGS",
N_("Lex/Flex flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
AM_TOKEN_TARGET_LFLAGS, 0, "_LFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -609,7 +609,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"YFLAGS",
N_("Yacc/Bison flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Yacc or Bison parser generator flags for this target.")},
AM_TOKEN_TARGET_YFLAGS, 0, "_YFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -618,7 +618,7 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
AM_TOKEN_TARGET_DEPENDENCIES, 0, "EXTRA_DIST",
AM_PROPERTY_IN_MAKEFILE
@@ -627,42 +627,42 @@ static AmpProperty AmpProgramTargetProperties[] = {
{"DIST",
N_("Include in distribution:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Include this target in the distributed package."),
- "1"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Include this target in the distributed package.")},
AM_TOKEN__PROGRAMS, 2, "nodist_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "1"
},
{
{"CHECK",
N_("Build for check only:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build this target only when running automatic tests."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build this target only when running automatic tests.")},
AM_TOKEN__PROGRAMS, 4, "check_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, "notrans_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOBASE",
N_("Keep target path:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Keep relative target path for installing it. "
- "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
- "0"},
+ "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
AM_TOKEN__PROGRAMS, 0, "nobase_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{}
};
@@ -670,22 +670,22 @@ static AmpProperty AmpProgramTargetProperties[] = {
static GList* AmpProgramTargetPropertyList = NULL;
-static AmpProperty AmpLibraryTargetProperties[] = {
+static AmpPropertyInfo AmpLibraryTargetProperties[] = {
{
{"NOINST",
N_("Do not install:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build but do not install the target."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build but do not install the target.")},
AM_TOKEN__PROGRAMS, 3, "noinst_",
- AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING
+ AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING,
+ "0"
},
{
{"INSTALLDIR",
N_("Installation directory:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("It has to be a standard directory or a custom one defined in group properties.")},
AM_TOKEN__PROGRAMS, 6, "lib",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DIRECTORY
@@ -694,7 +694,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"LDFLAGS",
N_("Linker flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional linker flags for this target.")},
AM_TOKEN_TARGET_LDFLAGS, 0, "_LDFLAGS",
AM_PROPERTY_IN_MAKEFILE
@@ -703,7 +703,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"LIBADD",
N_("Libraries:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional libraries for this target.")},
AM_TOKEN_TARGET_LIBADD, 0, "_LIBADD",
AM_PROPERTY_IN_MAKEFILE
@@ -712,7 +712,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"CPPFLAGS",
N_("C preprocessor flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C preprocessor flags for this target.")},
AM_TOKEN_TARGET_CPPFLAGS, 0, "_CPPFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -721,7 +721,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"CFLAGS",
N_("C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C compiler flags for this target.")},
AM_TOKEN_TARGET_CFLAGS, 0, "_CFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -730,7 +730,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"CXXFLAGS",
N_("C++ compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional C++ compiler flags for this target.")},
AM_TOKEN_TARGET_CXXFLAGS, 0, "_CXXFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -739,7 +739,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"JAVAFLAGS",
N_("Java compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Java compiler flags for this target.")},
AM_TOKEN_TARGET_JAVACFLAGS, 0, "_JAVACFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -748,7 +748,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"VALAFLAGS",
N_("Vala compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Vala compiler flags for this target.")},
AM_TOKEN_TARGET_VALAFLAGS,0, "_VALAFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -757,7 +757,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"FCFLAGS",
N_("Fortran compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Fortran compiler flags for this target.")},
AM_TOKEN_TARGET_FCFLAGS, 0, "_FCFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -766,7 +766,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"OBJCFLAGS",
N_("Objective C compiler flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Objective C compiler flags for this target.")},
AM_TOKEN_TARGET_OBJCFLAGS, 0, "_OBJCFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -775,7 +775,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"LFLAGS",
N_("Lex/Flex flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
AM_TOKEN_TARGET_LFLAGS, 0, "_LFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -784,7 +784,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"YFLAGS",
N_("Yacc/Bison flags:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional Yacc or Bison parser generator flags for this target.")},
AM_TOKEN_TARGET_YFLAGS, 0, "_YFLAGS",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_COMPILATION_FLAG
@@ -793,7 +793,7 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
AM_TOKEN_TARGET_DEPENDENCIES, 0, "EXTRA_DIST",
AM_PROPERTY_IN_MAKEFILE
@@ -802,42 +802,42 @@ static AmpProperty AmpLibraryTargetProperties[] = {
{"DIST",
N_("Include in distribution:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Include this target in the distributed package."),
- "1"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Include this target in the distributed package.")},
AM_TOKEN__PROGRAMS, 2, "nodist_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "1"
},
{
{"CHECK",
N_("Build for check only:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build this target only when running automatic tests."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build this target only when running automatic tests.")},
AM_TOKEN__PROGRAMS, 4, "check_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, "notrans_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOBASE",
N_("Keep target path:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Keep relative target path for installing it. "
- "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
- "0"},
+ "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
AM_TOKEN__PROGRAMS, 0, "nobase_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{}
};
@@ -845,12 +845,12 @@ static AmpProperty AmpLibraryTargetProperties[] = {
static GList* AmpLibraryTargetPropertyList = NULL;
-static AmpProperty AmpManTargetProperties[] = {
+static AmpPropertyInfo AmpManTargetProperties[] = {
{
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
0, 0, NULL,
AM_PROPERTY_IN_MAKEFILE
@@ -859,17 +859,17 @@ static AmpProperty AmpManTargetProperties[] = {
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, "notrans_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"MAN",
N_("Manual section:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Section where are installed the man pages. Valid section names are the digits â0â through â9â, and the letters âlâ and ânâ. ")},
AM_TOKEN__PROGRAMS, 5, "man_",
AM_PROPERTY_IN_MAKEFILE
@@ -880,22 +880,22 @@ static AmpProperty AmpManTargetProperties[] = {
static GList* AmpManTargetPropertyList = NULL;
-static AmpProperty AmpDataTargetProperties[] = {
+static AmpPropertyInfo AmpDataTargetProperties[] = {
{
{"NOINST",
N_("Do not install:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build but do not install the target."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build but do not install the target.")},
AM_TOKEN__PROGRAMS, 3, "noinst_",
- AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING
+ AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING,
+ "0"
},
{
{"INSTALLDIR",
N_("Installation directory:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("It has to be a standard directory or a custom one defined in group properties.")},
AM_TOKEN__PROGRAMS, 6, "data",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DIRECTORY
@@ -904,7 +904,7 @@ static AmpProperty AmpDataTargetProperties[] = {
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
AM_TOKEN_TARGET_DEPENDENCIES, 0, "EXTRA_DIST",
AM_PROPERTY_IN_MAKEFILE
@@ -913,42 +913,42 @@ static AmpProperty AmpDataTargetProperties[] = {
{"DIST",
N_("Include in distribution:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Include this target in the distributed package."),
- "1"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Include this target in the distributed package.")},
AM_TOKEN__PROGRAMS, 2, "nodist_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "1"
},
{
{"CHECK",
N_("Build for check only:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Build this target only when running automatic tests."),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Build this target only when running automatic tests.")},
AM_TOKEN__PROGRAMS, 4, "check_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
- N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
- "0"},
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
+ N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, "notrans_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{
{"NOBASE",
N_("Keep target path:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Keep relative target path for installing it. "
- "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
- "0"},
+ "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
AM_TOKEN__PROGRAMS, 0, "nobase_",
- AM_PROPERTY_IN_MAKEFILE
+ AM_PROPERTY_IN_MAKEFILE,
+ "0"
},
{}
};
@@ -956,12 +956,12 @@ static AmpProperty AmpDataTargetProperties[] = {
static GList* AmpDataTargetPropertyList = NULL;
-static AmpProperty AmpScriptTargetProperties[] = {
+static AmpPropertyInfo AmpScriptTargetProperties[] = {
{
{"NOINST",
N_("Do not install:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_ONLY,
+ ANJUTA_PROJECT_PROPERTY_READ_ONLY | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Build but do not install the target.")},
AM_TOKEN__PROGRAMS, 3, "noinst_",
AM_PROPERTY_IN_MAKEFILE | AM_PROPERTY_DISABLE_FOLLOWING
@@ -970,7 +970,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"INSTALLDIR",
N_("Installation directory:"),
ANJUTA_PROJECT_PROPERTY_STRING,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("It has to be a standard directory or a custom one defined in group properties.")},
AM_TOKEN__PROGRAMS, 6, "bin",
AM_PROPERTY_IN_MAKEFILE
@@ -979,7 +979,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"EXTRA_DIST",
N_("Additional dependencies:"),
ANJUTA_PROJECT_PROPERTY_LIST,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Additional dependencies for this target.")},
AM_TOKEN_TARGET_DEPENDENCIES, 0, "EXTRA_DIST",
AM_PROPERTY_IN_MAKEFILE
@@ -988,7 +988,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"DIST",
N_("Include in distribution:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Include this target in the distributed package.")},
AM_TOKEN__PROGRAMS, 2, "nodist_",
AM_PROPERTY_IN_MAKEFILE
@@ -997,7 +997,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"CHECK",
N_("Build for check only:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Build this target only when running automatic tests.")},
AM_TOKEN__PROGRAMS, 4, "check_",
AM_PROPERTY_IN_MAKEFILE
@@ -1006,7 +1006,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"NOTRANS",
N_("Do not use prefix:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
AM_TOKEN__PROGRAMS, 1, "notrans_",
AM_PROPERTY_IN_MAKEFILE
@@ -1015,7 +1015,7 @@ static AmpProperty AmpScriptTargetProperties[] = {
{"NOBASE",
N_("Keep target path:"),
ANJUTA_PROJECT_PROPERTY_BOOLEAN,
- ANJUTA_PROJECT_PROPERTY_READ_WRITE,
+ ANJUTA_PROJECT_PROPERTY_READ_WRITE | ANJUTA_PROJECT_PROPERTY_STATIC,
N_("Keep relative target path for installing it. "
"By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
AM_TOKEN__PROGRAMS, 0, "nobase_",
@@ -1034,18 +1034,20 @@ static GList* AmpScriptTargetPropertyList = NULL;
*---------------------------------------------------------------------------*/
static GList *
-amp_create_property_list (GList **list, AmpProperty *properties)
+amp_create_property_list (GList **list, AmpPropertyInfo *properties)
{
if (*list == NULL)
{
- AmpProperty *prop;
- AmpProperty *link = NULL;
+ AmpPropertyInfo *info;
+ AnjutaProjectPropertyInfo *link = NULL;
- for (prop = properties; prop->base.name != NULL; prop++)
+ for (info = properties; info->base.name != NULL; info++)
{
- prop->link = link;
- *list = g_list_prepend (*list, prop);
- link = prop->flags & AM_PROPERTY_DISABLE_FOLLOWING ? prop : NULL;
+ info->link = link;
+ *list = g_list_prepend (*list, info);
+ link = info->flags & AM_PROPERTY_DISABLE_FOLLOWING ? (AnjutaProjectPropertyInfo *)info : NULL;
+ info->base.property = amp_property_new (NULL, 0, 0, info->value, NULL);
+ info->base.property->info = (AnjutaProjectPropertyInfo *)info;
}
*list = g_list_reverse (*list);
}
@@ -1056,6 +1058,30 @@ amp_create_property_list (GList **list, AmpProperty *properties)
/* Public functions
*---------------------------------------------------------------------------*/
+/* Properties info objects
+ *---------------------------------------------------------------------------*/
+
+AnjutaProjectPropertyInfo *
+amp_property_info_new (AnjutaTokenType type, gint position)
+{
+ AmpPropertyInfo* info;
+
+ info = g_slice_new0(AmpPropertyInfo);
+ info->token_type = type;
+ info->position = position;
+
+ return (AnjutaProjectPropertyInfo *)info;
+}
+
+void
+amp_property_info_free (AnjutaProjectPropertyInfo *info)
+{
+ if (!(info->flags & ANJUTA_PROJECT_PROPERTY_STATIC))
+ {
+ g_slice_free (AmpPropertyInfo, (AmpPropertyInfo *)info);
+ }
+}
+
/* Properties objects
*---------------------------------------------------------------------------*/
@@ -1069,8 +1095,11 @@ amp_property_new (const gchar *name, AnjutaTokenType type, gint position, const
prop->base.name = g_strdup (name);
prop->base.value = g_strdup (value);
prop->token = token;
- prop->token_type = type;
- prop->position = position;
+ if ((type != 0) || (position != 0))
+ {
+ /* Add a dummy properties info to keep track of type and position */
+ prop->base.info = amp_property_info_new (type, position);
+ }
return (AnjutaProjectProperty *)prop;
}
@@ -1078,16 +1107,8 @@ amp_property_new (const gchar *name, AnjutaTokenType type, gint position, const
void
amp_property_free (AnjutaProjectProperty *prop)
{
- if (prop->native == NULL) return;
-
- if ((prop->name != NULL) && (prop->name != prop->native->name))
- {
- g_free (prop->name);
- }
- if ((prop->value != NULL) && (prop->value != prop->native->value))
- {
- g_free (prop->value);
- }
+ g_free (prop->name);
+ g_free (prop->value);
g_slice_free (AmpProperty, (AmpProperty *)prop);
}
@@ -1100,21 +1121,21 @@ amp_node_property_load (AnjutaProjectNode *node, gint token_type, gint position,
GList *item;
gboolean set = FALSE;
- for (item = anjuta_project_node_get_native_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (node); item != NULL; item = g_list_next (item))
{
- AmpProperty *prop = (AmpProperty *)item->data;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
- if ((prop->token_type == token_type) && (prop->position == position))
+ if ((info->token_type == token_type) && (info->position == position))
{
AnjutaProjectProperty *new_prop;
- new_prop = anjuta_project_node_get_property (node, (AnjutaProjectProperty *)prop);
- if (new_prop->native == NULL)
+ new_prop = anjuta_project_node_get_property (node, info->base.id);
+ if ((new_prop == NULL) || (new_prop == new_prop->info->property))
{
- new_prop = anjuta_project_node_insert_property (node, new_prop, amp_property_new (NULL, token_type, position, NULL, token));
+ new_prop = anjuta_project_node_insert_property (node, (AnjutaProjectPropertyInfo *)info, amp_property_new (NULL, 0, 0, NULL, token));
}
- if ((new_prop->value != NULL) && (new_prop->value != prop->base.value)) g_free (new_prop->value);
+ g_free (new_prop->value);
new_prop->value = g_strdup (value);
set = TRUE;
}
@@ -1129,28 +1150,27 @@ amp_node_property_add (AnjutaProjectNode *node, AnjutaProjectProperty *new_prop)
GList *item;
gboolean set = FALSE;
- for (item = anjuta_project_node_get_native_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (node); item != NULL; item = g_list_next (item))
{
- AmpProperty *prop = (AmpProperty *)item->data;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
AnjutaToken *arg;
GString *list;
- if ((prop->token_type == ((AmpProperty *)new_prop)->token_type) && (prop->position == ((AmpProperty *)new_prop)->position))
+ if ((info->token_type == ((AmpPropertyInfo *)new_prop->info)->token_type) && (info->position == ((AmpPropertyInfo *)new_prop->info)->position))
{
- if (prop->base.type != ANJUTA_PROJECT_PROPERTY_MAP)
+ if (info->base.type != ANJUTA_PROJECT_PROPERTY_MAP)
{
/* Replace property */
AnjutaProjectProperty *old_prop;
- old_prop = anjuta_project_node_remove_property (node, (AnjutaProjectProperty *)prop);
- if (old_prop != NULL)
+ old_prop = anjuta_project_node_get_map_property (node, info->base.id, new_prop->name);
+ if ((old_prop != NULL) && (old_prop->info->property != old_prop))
{
+ anjuta_project_node_remove_property (node, old_prop);
amp_property_free (old_prop);
}
}
- anjuta_project_node_insert_property (node, (AnjutaProjectProperty *)prop, new_prop);
-
- switch (prop->base.type)
+ switch (info->base.type)
{
case ANJUTA_PROJECT_PROPERTY_LIST:
/* Re-evaluate token to remove useless space between item */
@@ -1167,22 +1187,23 @@ amp_node_property_add (AnjutaProjectNode *node, AnjutaProjectProperty *new_prop)
g_string_append (list, value);
}
}
- if (new_prop->value != prop->base.value) g_free (new_prop->value);
+ g_free (new_prop->value);
new_prop->value = g_string_free (list, FALSE);
break;
case ANJUTA_PROJECT_PROPERTY_MAP:
case ANJUTA_PROJECT_PROPERTY_STRING:
/* Strip leading and trailing space */
- if (new_prop->value != prop->base.value)
- {
- new_prop->value = g_strstrip (new_prop->value);
- }
+ if (new_prop->value != NULL) new_prop->value = g_strstrip (new_prop->value);
break;
default:
break;
}
- set = TRUE;
+ if (g_strcmp0 (new_prop->value, info->base.property->value) != 0)
+ {
+ anjuta_project_node_insert_property (node, (AnjutaProjectPropertyInfo *)info, new_prop);
+ set = TRUE;
+ }
break;
}
}
@@ -1193,13 +1214,14 @@ amp_node_property_add (AnjutaProjectNode *node, AnjutaProjectProperty *new_prop)
}
AnjutaProjectProperty *
-amp_node_property_set (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar* value)
+amp_node_property_set (AnjutaProjectNode *node, const gchar *id, const gchar* value)
{
- AnjutaProjectProperty *new_prop;
+ AnjutaProjectPropertyInfo *info;
gchar *name;
+ AnjutaProjectProperty *prop;
-
- if ((value != NULL) && (prop->type == ANJUTA_PROJECT_PROPERTY_MAP))
+ info = anjuta_project_node_get_property_info (node, id);
+ if ((value != NULL) && (info->type == ANJUTA_PROJECT_PROPERTY_MAP))
{
name = strchr (value, '=');
if (name != NULL)
@@ -1215,25 +1237,54 @@ amp_node_property_set (AnjutaProjectNode *node, AnjutaProjectProperty *prop, con
name = NULL;
}
- new_prop = anjuta_project_node_get_map_property (node, prop, name);
- if (new_prop != NULL)
+ prop = amp_node_map_property_set (node, id, name, value);
+ g_free (name);
+
+ return prop;
+}
+
+AnjutaProjectProperty *
+amp_node_map_property_set (AnjutaProjectNode *node, const gchar *id, const gchar *name, const gchar* value)
+{
+ AnjutaProjectProperty *new_prop;
+
+ new_prop = anjuta_project_node_get_map_property (node, id, name);
+ if ((new_prop != NULL) && (new_prop->info->property != new_prop))
{
- if (new_prop->native != NULL)
- {
- /* Custom property already exist, replace value */
- if ((new_prop->value != NULL) && (new_prop->value != new_prop->native->value)) g_free (new_prop->value);
- new_prop->value = g_strdup (value);
- }
- else
+ /* Property already exist, replace value */
+ g_free (new_prop->value);
+ new_prop->value = g_strdup (value);
+ }
+ else
+ {
+ /* Add new property */
+ AnjutaProjectPropertyInfo *info;
+
+ info = anjuta_project_node_get_property_info (node, id);
+ new_prop = amp_property_new (name, 0, 0, value, NULL);
+ anjuta_project_node_insert_property (node, info, new_prop);
+ }
+
+ return new_prop;
+}
+
+
+AnjutaProjectPropertyInfo *
+amp_node_get_property_info_from_token (AnjutaProjectNode *node, gint token, gint pos)
+{
+ GList *item;
+
+ for (item = anjuta_project_node_get_properties_info (node); item != NULL; item = g_list_next (item))
+ {
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
+
+ if ((info->token_type == token) && (info->position == pos))
{
- /* Add new custom property */
- new_prop = amp_property_new (name, ((AmpProperty *)new_prop)->token_type, ((AmpProperty *)prop)->position, value, NULL);
- anjuta_project_node_insert_property (node, prop, new_prop);
+ return (AnjutaProjectPropertyInfo *)info;
}
}
- g_free (name);
- return new_prop;
+ return NULL;
}
AnjutaProjectProperty *
@@ -1241,13 +1292,13 @@ amp_node_get_property_from_token (AnjutaProjectNode *node, gint token, gint pos)
{
GList *item;
- for (item = anjuta_project_node_get_native_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (node); item != NULL; item = g_list_next (item))
{
- AmpProperty *prop = (AmpProperty *)item->data;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
- if ((prop->token_type == token) && (prop->position == pos))
+ if ((info->token_type == token) && (info->position == pos))
{
- return anjuta_project_node_get_property (node, (AnjutaProjectProperty *)prop);
+ return anjuta_project_node_get_property (node, info->base.id);
}
}
@@ -1285,19 +1336,33 @@ am_node_property_find_flags (AnjutaProjectProperty *prop, const gchar *value, gs
}
gboolean
-amp_node_property_has_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value)
+amp_node_property_has_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value)
{
- return am_node_property_find_flags (prop, value, strlen (value)) != NULL ? TRUE : FALSE;
+ AnjutaProjectProperty *prop;
+
+ prop = anjuta_project_node_get_property (node, id);
+ if (prop != NULL)
+ {
+ return am_node_property_find_flags (prop, value, strlen (value)) != NULL ? TRUE : FALSE;
+ }
+ else
+ {
+ return FALSE;
+ }
}
AnjutaProjectProperty *
-amp_node_property_remove_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value)
+amp_node_property_remove_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value)
{
- AnjutaProjectProperty *new_prop = NULL;
- const gchar *found;
+ AnjutaProjectProperty *prop;
+ const gchar *found = NULL;
gsize len = strlen (value);
- found = am_node_property_find_flags (prop, value, len);
+ prop = anjuta_project_node_get_property (node, id);
+ if (prop != NULL)
+ {
+ found = am_node_property_find_flags (prop, value, len);
+ }
if (found != NULL)
{
@@ -1324,7 +1389,7 @@ amp_node_property_remove_flags (AnjutaProjectNode *node, AnjutaProjectProperty *
if (new_len == 0)
{
- new_prop = amp_node_property_set (node, prop, NULL);
+ prop = amp_node_property_set (node, id, NULL);
}
else
{
@@ -1334,33 +1399,34 @@ amp_node_property_remove_flags (AnjutaProjectNode *node, AnjutaProjectProperty *
if (found != prop->value) memcpy (new_value, prop->value, found - prop->value);
memcpy (new_value + (found - prop->value), found + len, new_len + 1 - (found - prop->value));
- new_prop = amp_node_property_set (node, prop, new_value);
+ prop = amp_node_property_set (node, id, new_value);
g_free (new_value);
}
}
- return new_prop;
+ return prop;
}
AnjutaProjectProperty *
-amp_node_property_add_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value)
+amp_node_property_add_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value)
{
- AnjutaProjectProperty *new_prop;
+ AnjutaProjectProperty *prop;
- if (prop->value == NULL)
+ prop = anjuta_project_node_get_property (node, id);
+ if (prop == NULL)
{
- new_prop = amp_node_property_set (node, prop, value);
+ prop = amp_node_property_set (node, id, value);
}
else
{
gchar *new_value;
- new_value = g_strconcat (prop->value, " ", value, NULL);
- new_prop = amp_node_property_set (node, prop, new_value);
+ new_value = prop->value == NULL ? g_strdup (value) : g_strconcat (prop->value, " ", value, NULL);
+ prop = amp_node_property_set (node, id, new_value);
g_free (new_value);
}
- return new_prop;
+ return prop;
}
diff --git a/plugins/am-project/am-properties.h b/plugins/am-project/am-properties.h
index 7836c0a..34c7369 100644
--- a/plugins/am-project/am-properties.h
+++ b/plugins/am-project/am-properties.h
@@ -28,17 +28,22 @@
G_BEGIN_DECLS
+AnjutaProjectPropertyInfo *amp_property_info_new (AnjutaTokenType type, gint position);
+void amp_property_info_free (AnjutaProjectPropertyInfo *prop);
+
AnjutaProjectProperty *amp_property_new (const gchar *name, AnjutaTokenType type, gint position, const gchar *value, AnjutaToken *token);
void amp_property_free (AnjutaProjectProperty *prop);
gboolean amp_node_property_load (AnjutaProjectNode *target, gint token_type, gint position, const gchar *value, AnjutaToken *token);
gboolean amp_node_property_add (AnjutaProjectNode *node, AnjutaProjectProperty *prop);
-AnjutaProjectProperty *amp_node_property_set (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar* value);
+AnjutaProjectPropertyInfo *amp_node_get_property_info_from_token (AnjutaProjectNode *node, gint token, gint pos);
AnjutaProjectProperty *amp_node_get_property_from_token (AnjutaProjectNode *node, gint token, gint pos);
+AnjutaProjectProperty *amp_node_property_set (AnjutaProjectNode *node, const gchar *id, const gchar* value);
+AnjutaProjectProperty *amp_node_map_property_set (AnjutaProjectNode *node, const gchar *id, const gchar *name, const gchar* value);
-gboolean amp_node_property_has_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value);
-AnjutaProjectProperty *amp_node_property_remove_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value);
-AnjutaProjectProperty *amp_node_property_add_flags (AnjutaProjectNode *node, AnjutaProjectProperty *prop, const gchar *value);
+gboolean amp_node_property_has_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value);
+AnjutaProjectProperty *amp_node_property_remove_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value);
+AnjutaProjectProperty *amp_node_property_add_flags (AnjutaProjectNode *node, const gchar *id, const gchar *value);
GList* amp_get_project_property_list (void);
GList* amp_get_group_property_list (void);
diff --git a/plugins/am-project/am-writer.c b/plugins/am-project/am-writer.c
index 1311055..aada56e 100644
--- a/plugins/am-project/am-writer.c
+++ b/plugins/am-project/am-writer.c
@@ -45,7 +45,7 @@
/* Types & Constants
*---------------------------------------------------------------------------*/
-const static gchar* AmpStandardDirectory[] = {"bindir", "sbindir", "libdir", "pkglibdir", "libexecdir", "pkglibexecdir", "datadir", "pkgdatadir", "mandir", "infodir", "docdir", NULL};
+const static gchar* AmpStandardDirectory[] = {"bindir", "sbindir", "libdir", "pkglibdir", "libexecdir", "pkglibexecdir", "datadir", "pkgdatadir", "mandir", "infodir", "docdir", NULL};
/* Helper functions
*---------------------------------------------------------------------------*/
@@ -62,9 +62,9 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
GList *list;
AmpGroupNode *group;
AnjutaToken *makefile;
-
+
group = AMP_GROUP_NODE (anjuta_project_node_parent_type (ANJUTA_PROJECT_NODE (target), ANJUTA_PROJECT_GROUP));
-
+
/* Try to find a better position */
/* 1. With the other properties of the target */
@@ -108,9 +108,9 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
}
}
g_list_free (list);
- }
+ }
+
-
/* 2. With properties of sibling targets */
if (pos == NULL)
{
@@ -126,7 +126,7 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
{
target_list = anjuta_token_list ((AnjutaToken *)link->data);
}
-
+
makefile = amp_group_node_get_make_token_file (group);
if (makefile != NULL)
@@ -180,11 +180,11 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
}
}
}
-
+
if (list != NULL)
{
gsize best = 0;
-
+
for (link = list; link != NULL; link = g_list_next (link))
{
AnjutaToken *token = (AnjutaToken *)link->data;
@@ -195,7 +195,7 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
token = anjuta_token_list (token);
if (token != NULL) existing = anjuta_token_get_type (token);
}
-
+
if ((existing >= AM_TOKEN_FIRST_ORDERED_TARGET_MACRO) && (existing <= AM_TOKEN_LAST_ORDERED_TARGET_MACRO))
{
gsize tpos;
@@ -246,9 +246,9 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
if (pos == NULL)
{
makefile = amp_group_node_get_makefile_token (group);
-
+
for (pos = anjuta_token_first_item (makefile); (pos != NULL) && (anjuta_token_next_item (pos) != NULL); pos = anjuta_token_next_item (pos));
-
+
after = TRUE;
}
@@ -260,8 +260,8 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
anjuta_token_append_child (makefile, pos);
amp_group_node_update_makefile (group, pos);
}
-
-
+
+
/* Find end of line */
if (after)
{
@@ -273,7 +273,7 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
pos = anjuta_token_insert_token_list (after, pos,
ANJUTA_TOKEN_EOL, "\n",
NULL);
-
+
break;
}
pos = anjuta_token_next (pos);
@@ -288,7 +288,7 @@ anjuta_token_find_target_property_position (AmpTargetNode *target,
NULL);
amp_group_node_update_makefile (group, pos);
-
+
return pos;
}
@@ -301,7 +301,7 @@ anjuta_token_find_group_property_position (AmpGroupNode *group,
GList *list;
AnjutaToken *makefile;
-
+
/* Try to find a better position */
/* 1. With the other properties of the group */
@@ -345,15 +345,15 @@ anjuta_token_find_group_property_position (AmpGroupNode *group,
}
}
g_list_free (list);
- }
+ }
/* 2. At the end of the file */
if (pos == NULL)
{
makefile = amp_group_node_get_makefile_token (group);
-
+
for (pos = anjuta_token_first_item (makefile); (pos != NULL) && (anjuta_token_next_item (pos) != NULL); pos = anjuta_token_next_item (pos));
-
+
after = TRUE;
}
@@ -377,7 +377,7 @@ anjuta_token_find_group_property_position (AmpGroupNode *group,
pos = anjuta_token_insert_token_list (after, pos,
ANJUTA_TOKEN_EOL, "\n",
NULL);
-
+
break;
}
pos = anjuta_token_next (pos);
@@ -392,7 +392,7 @@ anjuta_token_find_group_property_position (AmpGroupNode *group,
NULL);
amp_group_node_update_makefile (group, pos);
-
+
return pos;
}
@@ -408,18 +408,18 @@ amp_project_write_config_list (AmpProject *project)
static gint output_type[] = {AC_TOKEN_AC_OUTPUT, 0};
static gint eol_type[] = {ANJUTA_TOKEN_EOL, ANJUTA_TOKEN_SPACE, ANJUTA_TOKEN_COMMENT, 0};
AnjutaToken *configure;
-
+
configure = amp_project_get_configure_token (project);
pos = anjuta_token_find_type (configure, 0, output_type);
if (pos == NULL)
{
gint other_type[] = {AC_TOKEN_AC_INIT,
AC_TOKEN_PKG_CHECK_MODULES,
- AC_TOKEN_AC_CONFIG_FILES,
+ AC_TOKEN_AC_CONFIG_FILES,
AC_TOKEN_OBSOLETE_AC_OUTPUT,
AC_TOKEN_AC_PREREQ,
0};
-
+
pos = anjuta_token_find_type (configure, ANJUTA_TOKEN_SEARCH_LAST, other_type);
if (pos == NULL)
{
@@ -431,7 +431,7 @@ amp_project_write_config_list (AmpProject *project)
next = anjuta_token_find_type (pos, ANJUTA_TOKEN_SEARCH_NOT, eol_type);
}
-
+
}
token = anjuta_token_insert_token_list (FALSE, pos,
@@ -440,7 +440,7 @@ amp_project_write_config_list (AmpProject *project)
ANJUTA_TOKEN_LAST, NULL,
RIGHT_PAREN, ")",
NULL);
-
+
return token;
}
@@ -462,14 +462,14 @@ amp_project_write_config_file (AmpProject *project, AnjutaToken *list, gboolean
}
//fprintf (stdout, "Dump config list after insertion:\n");
//anjuta_token_dump (list);
-
+
anjuta_token_style_format (project->ac_space_list, list);
-
+
//fprintf (stdout, "Dump config list after format:\n");
//anjuta_token_dump (list);
amp_project_update_configure (project, list);
-
+
return token;
}
@@ -477,7 +477,7 @@ amp_project_write_config_file (AmpProject *project, AnjutaToken *list, gboolean
/* Target objects
*---------------------------------------------------------------------------*/
-gboolean
+gboolean
amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError **error)
{
GFile *directory;
@@ -489,7 +489,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
AmpGroupNode *parent;
gboolean after;
const gchar *name;
-
+
/* Get parent target */
parent = AMP_GROUP_NODE (anjuta_project_node_parent_type(ANJUTA_PROJECT_NODE (group), ANJUTA_PROJECT_GROUP));
name = anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (group));
@@ -510,7 +510,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
}
}
if (sibling == NULL) after = TRUE;
-
+
/* Create directory */
g_file_make_directory (directory, NULL, NULL);
@@ -527,7 +527,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
}
g_file_replace_contents (makefile, "", 0, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, NULL);
-
+
/* Add in configure */
list = NULL;
if (sibling) list = amp_group_node_get_first_token (AMP_GROUP_NODE (sibling), AM_GROUP_TOKEN_CONFIGURE);
@@ -583,7 +583,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
else
{
AnjutaToken *prev;
-
+
prev = amp_group_node_get_first_token (AMP_GROUP_NODE (sibling), AM_GROUP_TOKEN_SUBDIRS);
list = anjuta_token_list (prev);
}
@@ -601,7 +601,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
{
prev = amp_group_node_get_first_token (AMP_GROUP_NODE (sibling), AM_GROUP_TOKEN_SUBDIRS);
}
-
+
token = anjuta_token_new_string (ANJUTA_TOKEN_NAME | ANJUTA_TOKEN_ADDED, name);
if (after)
{
@@ -615,7 +615,7 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
/* Try to use the same style than the current group list */
anjuta_token_style_format (style, list);
anjuta_token_style_free (style);
-
+
amp_group_node_update_makefile (parent, token);
amp_group_node_add_token (group, token, AM_GROUP_TOKEN_SUBDIRS);
@@ -623,11 +623,11 @@ amp_group_node_create_token (AmpProject *project, AmpGroupNode *group, GError *
tfile = amp_group_node_set_makefile (group, makefile, project);
amp_project_add_file (project, makefile, tfile);
-
+
return TRUE;
}
-gboolean
+gboolean
amp_group_node_delete_token (AmpProject *project, AmpGroupNode *group, GError **error)
{
GList *item;
@@ -648,7 +648,7 @@ amp_group_node_delete_token (AmpProject *project, AmpGroupNode *group, GError *
/* Try to use the same style than the current target list */
style = anjuta_token_style_new_from_base (project->am_space_list);
anjuta_token_style_update (style, list);
-
+
anjuta_token_remove_word (token);
anjuta_token_style_format (style, list);
anjuta_token_style_free (style);
@@ -658,7 +658,7 @@ amp_group_node_delete_token (AmpProject *project, AmpGroupNode *group, GError *
{
anjuta_token_remove_list (anjuta_token_list (list));
}
-
+
amp_group_node_update_makefile (AMP_GROUP_NODE (parent), list);
}
@@ -674,15 +674,15 @@ amp_group_node_delete_token (AmpProject *project, AmpGroupNode *group, GError *
/* Try to use the same style than the current group list */
style = anjuta_token_style_new_from_base (project->ac_space_list);
anjuta_token_style_update (style, args);
-
+
anjuta_token_remove_word (token);
-
+
anjuta_token_style_format (style, args);
anjuta_token_style_free (style);
amp_project_update_configure (project, args);
- }
-
+ }
+
return TRUE;
}
@@ -747,15 +747,15 @@ amp_target_add_in_list (AmpProject *project, AnjutaToken *list, AnjutaProjectNod
AnjutaTokenStyle *style;
AnjutaToken *token;
AmpGroupNode *parent;
-
+
g_return_val_if_fail (list != NULL, NULL);
-
+
/* Get parent target */
parent = AMP_GROUP_NODE (anjuta_project_node_parent_type (target, ANJUTA_PROJECT_GROUP));
-
+
style = anjuta_token_style_new_from_base (project->am_space_list);
anjuta_token_style_update (style, list);
-
+
token = anjuta_token_new_string (ANJUTA_TOKEN_ARGUMENT | ANJUTA_TOKEN_ADDED, anjuta_project_node_get_name (target));
if (after)
{
@@ -769,16 +769,16 @@ amp_target_add_in_list (AmpProject *project, AnjutaToken *list, AnjutaProjectNod
/* Try to use the same style than the current target list */
anjuta_token_style_format (style, list);
anjuta_token_style_free (style);
-
+
amp_group_node_update_makefile (parent, token);
amp_target_node_add_token (AMP_TARGET_NODE (target), ANJUTA_TOKEN_ARGUMENT, token);
-
+
return token;
}
-gboolean
+gboolean
amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GError **error)
{
AnjutaToken *args;
@@ -794,7 +794,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
/* Get parent target */
parent = AMP_GROUP_NODE (anjuta_project_node_parent_type (ANJUTA_PROJECT_NODE (target), ANJUTA_PROJECT_GROUP));
-
+
info = (AmpNodeInfo *)amp_project_get_type_info (project, anjuta_project_node_get_full_type (ANJUTA_PROJECT_NODE (target)));
name = anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (target));
@@ -813,7 +813,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
}
}
if (sibling == NULL) after = TRUE;
-
+
/* Add in Makefile.am */
targetname = g_strconcat (info->install, "_", info->prefix, NULL);
@@ -825,7 +825,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
{
last = amp_target_node_get_token (AMP_TARGET_NODE (sibling), ANJUTA_TOKEN_ARGUMENT);
- if (last != NULL)
+ if (last != NULL)
{
AnjutaToken *token = (AnjutaToken *)last->data;
@@ -841,7 +841,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
if (token != NULL)
{
gchar *value;
-
+
value = anjuta_token_evaluate (token);
if ((value != NULL) && (strcmp (targetname, value) == 0))
@@ -874,7 +874,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
}
}
-
+
if (args == NULL)
{
args = amp_project_write_target (parent, info->token, targetname, FALSE, NULL);
@@ -899,7 +899,7 @@ amp_target_node_create_token (AmpProject *project, AmpTargetNode *target, GErro
return TRUE;
}
-gboolean
+gboolean
amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList *list, GError **error)
{
GList *item;
@@ -925,7 +925,7 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
/* Try to use the same style than the current target list */
style = anjuta_token_style_new_from_base (project->am_space_list);
anjuta_token_style_update (style, list);
-
+
anjuta_token_remove_word (token);
anjuta_token_style_format (style, list);
anjuta_token_style_free (style);
@@ -951,7 +951,7 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
}
amp_group_node_update_makefile (parent, list);
-
+
break;
case AM_TOKEN__SOURCES:
case AM_TOKEN__DATA:
@@ -977,7 +977,7 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
case AM_TOKEN_TARGET_LDADD:
anjuta_token_remove_list (token);
amp_group_node_update_makefile (parent, token);
- break;
+ break;
};
amp_target_node_remove_token (target, token);
}
@@ -996,39 +996,39 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
gint flags;
gchar *install = NULL;
gboolean same;
-
+
value = anjuta_token_evaluate (anjuta_token_first_word (target_list));
/* value can be NULL if we have a list can has just been removed */
if (value != NULL) split_automake_variable (value, &flags, &install, NULL);
-
+
same = g_strcmp0 (install, dir) == 0;
g_free (value);
if (same)
{
/* directory use elsewhere */
-
+
g_free (dir);
dir = NULL;
break;
}
}
-
+
if (dir != NULL)
{
/* Directory is not used anymore, remove variable */
gchar* install = g_strconcat (dir, "dir", NULL);
- for (list = anjuta_project_node_get_custom_properties (ANJUTA_PROJECT_NODE(parent)); list != NULL; list = g_list_next (list))
+ for (list = anjuta_project_node_get_properties (ANJUTA_PROJECT_NODE(parent)); list != NULL; list = g_list_next (list))
{
AmpProperty *prop = (AmpProperty *)list->data;
- if ((prop->token_type == AM_TOKEN_DIR) &&
+ if ((((AmpPropertyInfo *)prop->base.info)->token_type == AM_TOKEN_DIR) &&
(g_strcmp0(prop->base.name, install) == 0))
{
AnjutaProjectProperty *new_prop;
- new_prop = amp_node_property_set (ANJUTA_PROJECT_NODE (parent), (AnjutaProjectProperty *)prop, NULL);
+ new_prop = amp_node_map_property_set (ANJUTA_PROJECT_NODE (parent), prop->base.info->id, prop->base.name, NULL);
amp_project_update_am_property (project, ANJUTA_PROJECT_NODE (parent), new_prop);
}
}
@@ -1037,8 +1037,8 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
}
}
g_list_free (removed_dir);
-
-
+
+
return TRUE;
}
@@ -1051,7 +1051,7 @@ amp_target_node_delete_token (AmpProject *project, AmpTargetNode *target, GList
/* Source objects
*---------------------------------------------------------------------------*/
-gboolean
+gboolean
amp_source_node_create_token (AmpProject *project, AmpSourceNode *source, GError **error)
{
AmpGroupNode *group;
@@ -1066,10 +1066,10 @@ amp_source_node_create_token (AmpProject *project, AmpSourceNode *source, GErro
/* Get parent target */
target = AMP_TARGET_NODE (anjuta_project_node_parent_type (ANJUTA_PROJECT_NODE (source), ANJUTA_PROJECT_TARGET));
if (target == NULL) return FALSE;
-
+
group = AMP_GROUP_NODE (anjuta_project_node_parent_type (ANJUTA_PROJECT_NODE (target), ANJUTA_PROJECT_GROUP));
relative_name = get_relative_path (anjuta_project_node_get_file (ANJUTA_PROJECT_NODE (group)), anjuta_project_node_get_file (ANJUTA_PROJECT_NODE (source)));
-
+
/* Add in Makefile.am */
/* Find a sibling if possible */
after = TRUE;
@@ -1130,15 +1130,15 @@ amp_source_node_create_token (AmpProject *project, AmpSourceNode *source, GErro
break;
}
}
-
+
}
-
+
if (args == NULL)
{
gchar *target_var;
gchar *canon_name;
AnjutaToken *var;
-
+
canon_name = canonicalize_automake_variable (anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (target)));
target_var = g_strconcat (canon_name, "_SOURCES", NULL);
@@ -1158,7 +1158,7 @@ amp_source_node_create_token (AmpProject *project, AmpSourceNode *source, GErro
args = anjuta_token_last_item (args);
g_free (target_var);
}
-
+
if (args != NULL)
{
AnjutaTokenStyle *style;
@@ -1181,14 +1181,14 @@ amp_source_node_create_token (AmpProject *project, AmpSourceNode *source, GErro
anjuta_token_style_free (style);
amp_group_node_update_makefile (group, token);
-
+
amp_source_node_add_token (source, token);
}
return TRUE;
}
-gboolean
+gboolean
amp_source_node_delete_token (AmpProject *project, AmpSourceNode *source, GError **error)
{
AnjutaProjectNode *group;
@@ -1219,7 +1219,7 @@ amp_source_node_delete_token (AmpProject *project, AmpSourceNode *source, GErro
{
anjuta_token_remove_list (anjuta_token_list (list));
}
-
+
amp_group_node_update_makefile (AMP_GROUP_NODE (group), list);
}
@@ -1238,7 +1238,7 @@ amp_property_delete_token (AmpProject *project, AnjutaToken *token)
if (token != NULL)
{
anjuta_token_remove_list (anjuta_token_list (token));
-
+
updated = TRUE;
}
@@ -1246,32 +1246,32 @@ amp_property_delete_token (AmpProject *project, AnjutaToken *token)
}
static AnjutaToken *
-amp_project_write_property_list (AmpGroupNode *group, AnjutaProjectNode *node, AmpProperty *property)
+amp_project_write_property_list (AmpGroupNode *group, AnjutaProjectNode *node, AmpPropertyInfo *info)
{
AnjutaToken *pos;
gchar *name;
-
+
if (anjuta_project_node_get_node_type (node) == ANJUTA_PROJECT_GROUP)
{
/* Group property */
- name = g_strdup (property->suffix);
+ name = g_strdup (info->suffix);
- pos = anjuta_token_find_group_property_position (AMP_GROUP_NODE (node), property->token_type);
+ pos = anjuta_token_find_group_property_position (AMP_GROUP_NODE (node), info->token_type);
}
else
{
/* Target property */
gchar *canon_name;
-
+
canon_name = canonicalize_automake_variable (anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)));
- name = g_strconcat (canon_name, property->suffix, NULL);
+ name = g_strconcat (canon_name, info->suffix, NULL);
g_free (canon_name);
-
- pos = anjuta_token_find_target_property_position (AMP_TARGET_NODE (node), property->token_type);
+
+ pos = anjuta_token_find_target_property_position (AMP_TARGET_NODE (node), info->token_type);
}
-
+
pos = anjuta_token_insert_token_list (FALSE, pos,
- property->token_type, NULL,
+ info->token_type, NULL,
ANJUTA_TOKEN_NAME, name,
ANJUTA_TOKEN_SPACE, " ",
ANJUTA_TOKEN_OPERATOR, "=",
@@ -1279,7 +1279,7 @@ amp_project_write_property_list (AmpGroupNode *group, AnjutaProjectNode *node, A
ANJUTA_TOKEN_LIST, NULL,
ANJUTA_TOKEN_SPACE, " ",
NULL);
-
+
g_free (name);
return anjuta_token_last_item (pos);
@@ -1288,14 +1288,14 @@ amp_project_write_property_list (AmpGroupNode *group, AnjutaProjectNode *node, A
static gint
compare_property_position (gconstpointer a, gconstpointer b)
{
- return ((const AmpProperty *)a)->position - ((const AmpProperty *)b)->position;
+ return ((const AmpPropertyInfo *)a)->position - ((const AmpPropertyInfo *)b)->position;
}
static AnjutaToken *
amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
{
AnjutaProjectNode *group;
- GList *props;
+ GList *infos;
GList *item;
GString *new_name;
AmpNodeInfo *info;
@@ -1310,66 +1310,66 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
group = anjuta_project_node_parent_type (node, ANJUTA_PROJECT_GROUP);
/* Find all program properties */
- props = NULL;
- for (item = anjuta_project_node_get_native_properties (node); item != NULL; item = g_list_next (item))
+ infos = NULL;
+ for (item = anjuta_project_node_get_properties_info (node); item != NULL; item = g_list_next (item))
{
- AmpProperty *prop = (AmpProperty *)item->data;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
- if (prop->token_type == AM_TOKEN__PROGRAMS)
+ if (info->token_type == AM_TOKEN__PROGRAMS)
{
- props = g_list_insert_sorted (props, prop, compare_property_position);
+ infos = g_list_insert_sorted (infos, info, compare_property_position);
}
}
/* Create new name */
new_name = g_string_new (NULL);
- for (item = props; item != NULL; item = g_list_next (item))
+ for (item = infos; item != NULL; item = g_list_next (item))
{
- AmpProperty *nat_prop = (AmpProperty *)item->data;
- AmpProperty *cust_prop;
+ AmpPropertyInfo *info = (AmpPropertyInfo *)item->data;
+ AmpProperty *prop;
/* Check if property is enabled by another property */
- if (nat_prop->link != NULL)
+ if (info->link != NULL)
{
AnjutaProjectProperty *en_prop;
- en_prop = anjuta_project_node_get_property (node, (AnjutaProjectProperty *)nat_prop->link);
+ en_prop = anjuta_project_node_get_property (node, info->link->id);
if ((en_prop->value != NULL) && (*en_prop->value == '1')) continue;
}
-
- cust_prop = (AmpProperty *)anjuta_project_node_get_property (node, (AnjutaProjectProperty *)nat_prop);
- if ((cust_prop == nat_prop) || (g_strcmp0 (cust_prop->base.value, nat_prop->base.value) == 0))
+
+ prop = (AmpProperty *)anjuta_project_node_get_property (node, info->base.id);
+ if ((prop == (AmpProperty *)info->base.property) || (g_strcmp0 (prop->base.value, info->base.property->value) == 0))
{
/* Default value, add only string properties */
- if (nat_prop->base.type == ANJUTA_PROJECT_PROPERTY_STRING)
+ if (info->base.type == ANJUTA_PROJECT_PROPERTY_STRING)
{
- g_string_append (new_name, nat_prop->suffix);
+ g_string_append (new_name, info->suffix);
g_string_append_c (new_name, '_');
}
}
else
{
- switch (nat_prop->base.type)
+ switch (info->base.type)
{
case ANJUTA_PROJECT_PROPERTY_STRING:
- if ((nat_prop->flags & AM_PROPERTY_DIRECTORY) &&
- (strlen (cust_prop->base.value) > 4) &&
- (strcmp (cust_prop->base.value + strlen (cust_prop->base.value) - 3, "dir") == 0))
+ if ((info->flags & AM_PROPERTY_DIRECTORY) &&
+ (strlen (prop->base.value) > 4) &&
+ (strcmp (prop->base.value + strlen (prop->base.value) - 3, "dir") == 0))
{
/* Remove "dir" suffix */
- g_string_append_len (new_name, cust_prop->base.value, strlen (cust_prop->base.value) - 3);
+ g_string_append_len (new_name, prop->base.value, strlen (prop->base.value) - 3);
}
else
{
- g_string_append (new_name, cust_prop->base.value);
+ g_string_append (new_name, prop->base.value);
}
g_string_append_c (new_name, '_');
break;
case ANJUTA_PROJECT_PROPERTY_BOOLEAN:
- if ((cust_prop->base.value != NULL) && (g_strcmp0 (cust_prop->base.value, nat_prop->base.value) != 0))
+ if ((prop->base.value != NULL) && (g_strcmp0 (prop->base.value, info->base.property->value) != 0))
{
- g_string_append (new_name, nat_prop->suffix);
+ g_string_append (new_name, info->suffix);
}
break;
default:
@@ -1383,7 +1383,7 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
// Check if the target already exist.
- after = TRUE;
+ after = TRUE;
for (item = amp_group_node_get_token (AMP_GROUP_NODE (group), AM_GROUP_TARGET); item != NULL; item = g_list_next (item))
{
existing_target_list = (AnjutaToken *)item->data;
@@ -1397,7 +1397,7 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
{
GList *list;
GList *item;
-
+
list = amp_target_node_get_token (AMP_TARGET_NODE (node), ANJUTA_TOKEN_ARGUMENT);
for (item = g_list_first (list); item != NULL; item = g_list_next (item))
{
@@ -1416,7 +1416,7 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
}
}
}
-
+
if (same)
{
existing_target_list = anjuta_token_last_item (existing_target_list);
@@ -1434,7 +1434,7 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
/* Add target in already existing list */
amp_target_add_in_list (project, existing_target_list, node, after, NULL);
-
+
/* Remove old token */
amp_target_node_delete_token (project, AMP_TARGET_NODE (node), token_list, NULL);
g_list_free (token_list);
@@ -1480,7 +1480,7 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
AnjutaToken *sibling = NULL;
AnjutaTokenStyle *style;
AnjutaToken *token;
-
+
old_target = anjuta_token_evaluate (arg);
/* Find sibling target */
@@ -1497,11 +1497,11 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
}
after = TRUE;
}
-
+
/* More than one target, remove target in list */
arg = anjuta_token_remove_word (arg);
if (arg != NULL) amp_group_node_update_makefile (AMP_GROUP_NODE (group), arg);
-
+
/* Add target in new list */
style = anjuta_token_style_new_from_base (project->am_space_list);
@@ -1516,10 +1516,10 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
/* Try to use the same style than the current target list */
anjuta_token_style_format (style, target_list);
anjuta_token_style_free (style);
-
+
amp_group_node_update_makefile (AMP_GROUP_NODE (group), token);
amp_target_node_add_token (AMP_TARGET_NODE (node), ANJUTA_TOKEN_ARGUMENT, token);
-
+
g_free (old_target);
update = anjuta_token_list (target_list);
@@ -1530,21 +1530,18 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
/* Add directory variable if needed */
target_dir = NULL;
- for (item = anjuta_project_node_get_custom_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (node); item != NULL; item = g_list_next (item))
{
AmpProperty *prop = (AmpProperty *)item->data;
- if ((prop->token_type == AM_TOKEN__PROGRAMS) && (((AmpProperty *)prop->base.native)->flags & AM_PROPERTY_DIRECTORY))
+ if ((((AmpPropertyInfo *)prop->base.info)->token_type == AM_TOKEN__PROGRAMS) && (((AmpPropertyInfo *)prop->base.info)->flags & AM_PROPERTY_DIRECTORY))
{
target_dir = prop->base.value;
if ((strlen (target_dir) <= 3) || (strcmp (target_dir + strlen(target_dir) - 3, "dir") != 0))
{
target_dir = g_strconcat (target_dir, "dir", NULL);
- if ((prop->base.native != NULL) && (prop->base.value != prop->base.native->value))
- {
- g_free (prop->base.value);
- prop->base.value = target_dir;
- }
+ g_free (prop->base.value);
+ prop->base.value = target_dir;
}
break;
}
@@ -1564,14 +1561,14 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
}
}
}
-
+
if (target_dir != NULL)
{
- for (item = anjuta_project_node_get_custom_properties (group); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (group); item != NULL; item = g_list_next (item))
{
AmpProperty *prop = (AmpProperty *)item->data;
- if ((prop->token_type == AM_TOKEN_DIR) && (g_strcmp0 (prop->base.name, target_dir) == 0))
+ if ((((AmpPropertyInfo *)prop->base.info)->token_type == AM_TOKEN_DIR) && (g_strcmp0 (prop->base.name, target_dir) == 0))
{
/* Find already existing directory variable */
target_dir = NULL;
@@ -1590,13 +1587,13 @@ amp_property_rename_target (AmpProject *project, AnjutaProjectNode *node)
ANJUTA_TOKEN_SPACE, " ",
ANJUTA_TOKEN_LIST, NULL,
ANJUTA_TOKEN_SPACE, " ",
- ANJUTA_TOKEN_EOL, "\n",
+ ANJUTA_TOKEN_EOL, "\n",
NULL);
}
-
+
g_string_free (new_name, TRUE);
-
+
return update;
}
@@ -1605,8 +1602,6 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
AnjutaProjectNode *group;
AnjutaToken *args;
- g_return_val_if_fail (property->native != NULL, FALSE);
-
/* Find group of the property */
if (anjuta_project_node_get_node_type (node) == ANJUTA_PROJECT_GROUP)
{
@@ -1617,11 +1612,11 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
group = anjuta_project_node_parent_type (node, ANJUTA_PROJECT_GROUP);
}
- if (((property->native->value == NULL) && ((property->value == NULL) || (*property->value == '\0'))) ||
- (g_strcmp0 (property->native->value, property->value) == 0))
+ if ((property->value == NULL) ||
+ (g_strcmp0 (property->info->property->value, property->value) == 0))
{
/* Remove property */
- if (((AmpProperty *)property)->token_type == AM_TOKEN__PROGRAMS)
+ if (((AmpPropertyInfo *)property->info)->token_type == AM_TOKEN__PROGRAMS)
{
/* Properties added in the target name */
args = amp_property_rename_target (project, node);
@@ -1631,12 +1626,12 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
/* Other properties having their own variable */
args = amp_property_delete_token (project, ((AmpProperty *)property)->token);
}
-
+
anjuta_project_node_remove_property (node, property);
}
else
{
- if (((AmpProperty *)property)->token_type == AM_TOKEN__PROGRAMS)
+ if (((AmpPropertyInfo *)property->info)->token_type == AM_TOKEN__PROGRAMS)
{
/* Properties added in the target name */
args = amp_property_rename_target (project, node);
@@ -1651,18 +1646,18 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
AnjutaTokenStyle *style;
args = ((AmpProperty *)property)->token;
-
+
/* Try to use the same style than the current target list */
style = anjuta_token_style_new_from_base (project->am_space_list);
anjuta_token_style_update (style, args);
if (args == NULL)
{
- args = amp_project_write_property_list (AMP_GROUP_NODE (group), node, (AmpProperty *)property->native);
+ args = amp_project_write_property_list (AMP_GROUP_NODE (group), node, (AmpPropertyInfo *)property->info);
((AmpProperty *)property)->token = args;
}
- switch (property->native->type)
+ switch (property->info->type)
{
case ANJUTA_PROJECT_PROPERTY_LIST:
new_value = g_string_new (property->value);
@@ -1678,7 +1673,7 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
if (*value == '\0')
{
AnjutaToken *next;
-
+
next = anjuta_token_next_word (arg);
anjuta_token_remove_word (arg);
arg = next;
@@ -1687,7 +1682,7 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
{
const gchar *end;
gchar *name;
-
+
for (end = value; !isspace (*end) && (*end != '\0'); end++);
name = g_strndup (value, end - value);
@@ -1695,7 +1690,7 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
{
/* New argument in property list */
AnjutaToken *token;
-
+
token = anjuta_token_new_string (ANJUTA_TOKEN_NAME | ANJUTA_TOKEN_ADDED, name);
anjuta_token_insert_word_before (args, arg, token);
}
@@ -1704,7 +1699,7 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
arg = anjuta_token_next_word (arg);
}
value = end;
-
+
if (arg_value != NULL)
{
if (new_value->len != 0) g_string_append_c (new_value, ' ');
@@ -1719,7 +1714,7 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
AnjutaToken *token;
const gchar *end;
gchar *name;
-
+
while (isspace (*value)) value++;
if (*value == '\0') break;
@@ -1729,18 +1724,18 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
token = anjuta_token_new_string (ANJUTA_TOKEN_NAME | ANJUTA_TOKEN_ADDED, name);
anjuta_token_insert_word_before (args, NULL, token);
-
+
if (new_value->len != 0) g_string_append_c (new_value, ' ');
g_string_append (new_value, name);
-
+
g_free (name);
value = end;
}
-
+
anjuta_token_style_format (style, args);
anjuta_token_style_free (style);
- if (property->value != property->native->value) g_free (property->value);
+ g_free (property->value);
property->value = g_string_free (new_value, FALSE);
break;
@@ -1754,13 +1749,13 @@ gboolean amp_project_update_am_property (AmpProject *project, AnjutaProjectNode
anjuta_token_remove_word (token);
}
break;
- default:
+ default:
break;
}
}
}
if (args != NULL) amp_group_node_update_makefile (AMP_GROUP_NODE (group), args);
-
+
return args != NULL ? TRUE : FALSE;
}
diff --git a/plugins/am-project/amp-group.c b/plugins/am-project/amp-group.c
index 1e077b7..55aeef5 100644
--- a/plugins/am-project/amp-group.c
+++ b/plugins/am-project/amp-group.c
@@ -641,7 +641,7 @@ static void
amp_group_node_init (AmpGroupNode *node)
{
node->base.type = ANJUTA_PROJECT_GROUP;
- node->base.native_properties = amp_get_group_property_list();
+ node->base.properties_info = amp_get_group_property_list();
node->base.state = ANJUTA_PROJECT_CAN_ADD_GROUP |
ANJUTA_PROJECT_CAN_ADD_TARGET |
ANJUTA_PROJECT_CAN_REMOVE |
@@ -671,7 +671,7 @@ amp_group_node_finalize (GObject *object)
AmpGroupNode *node = AMP_GROUP_NODE (object);
gint i;
- g_list_foreach (node->base.custom_properties, (GFunc)amp_property_free, NULL);
+ g_list_foreach (node->base.properties, (GFunc)amp_property_free, NULL);
if (node->tfile) anjuta_token_file_free (node->tfile);
if (node->makefile) g_object_unref (node->makefile);
diff --git a/plugins/am-project/amp-module.c b/plugins/am-project/amp-module.c
index 877e197..e248d54 100644
--- a/plugins/am-project/amp-module.c
+++ b/plugins/am-project/amp-module.c
@@ -59,7 +59,7 @@ void
amp_module_node_add_token (AmpModuleNode *module, AnjutaToken *token)
{
gchar *name;
-
+
module->module = token;
name = anjuta_token_evaluate (anjuta_token_first_item (token));
if (name != NULL)
@@ -125,45 +125,45 @@ amp_module_node_write (AmpNode *node, AmpNode *amp_parent, AmpProject *project,
if ((parent != NULL) && (anjuta_project_node_get_node_type (parent) == ANJUTA_PROJECT_TARGET))
{
AnjutaProjectNode *group = anjuta_project_node_parent (parent);
- AnjutaProjectProperty *group_cpp;
- AnjutaProjectProperty *target_cpp;
- AnjutaProjectProperty *target_lib;
+ AnjutaProjectPropertyInfo *group_cpp;
+ AnjutaProjectPropertyInfo *target_cpp;
+ AnjutaProjectPropertyInfo *target_lib;
gchar *lib_flags;
gchar *cpp_flags;
gint type;
-
- group_cpp = amp_node_get_property_from_token (group, AM_TOKEN__CPPFLAGS, 0);
-
+
+ group_cpp = amp_node_get_property_info_from_token (group, AM_TOKEN__CPPFLAGS, 0);
+
type = anjuta_project_node_get_full_type (parent) & (ANJUTA_PROJECT_ID_MASK | ANJUTA_PROJECT_TYPE_MASK);
switch (type)
{
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_PROGRAM:
- target_lib = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_LDADD, 0);
+ target_lib = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_LDADD, 0);
break;
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_STATICLIB:
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_SHAREDLIB:
- target_lib = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_LIBADD, 0);
+ target_lib = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_LIBADD, 0);
break;
default:
break;
}
- target_cpp = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_CPPFLAGS, 0);
+ target_cpp = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_CPPFLAGS, 0);
lib_flags = g_strconcat ("$(", anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)), "_LIBS)", NULL);
cpp_flags = g_strconcat ("$(", anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)), "_CFLAGS)", NULL);
- if (!amp_node_property_has_flags (group, group_cpp, cpp_flags) && !amp_node_property_has_flags (ANJUTA_PROJECT_NODE (parent), target_cpp, cpp_flags))
+ if (!amp_node_property_has_flags (group, group_cpp->id, cpp_flags) && !amp_node_property_has_flags (ANJUTA_PROJECT_NODE (parent), target_cpp->id, cpp_flags))
{
AnjutaProjectProperty *prop;
- prop = amp_node_property_add_flags (group, group_cpp, cpp_flags);
- amp_project_update_am_property (project, group, prop);
+ prop = amp_node_property_add_flags (group, group_cpp->id, cpp_flags);
+ amp_project_update_am_property (project, group, prop);
}
-
- if (!amp_node_property_has_flags (parent, target_lib, lib_flags))
+
+ if (!amp_node_property_has_flags (parent, target_lib->id, lib_flags))
{
AnjutaProjectProperty *prop;
- prop = amp_node_property_add_flags (parent, target_lib, lib_flags);
- amp_project_update_am_property (project, parent, prop);
+ prop = amp_node_property_add_flags (parent, target_lib->id, lib_flags);
+ amp_project_update_am_property (project, parent, prop);
}
g_free (lib_flags);
@@ -186,23 +186,23 @@ amp_module_node_erase (AmpNode *node, AmpNode *amp_parent, AmpProject *project,
{
AnjutaProjectNode *group = anjuta_project_node_parent (parent);
AnjutaProjectProperty *prop;
- AnjutaProjectProperty *group_cpp;
- AnjutaProjectProperty *target_cpp;
- AnjutaProjectProperty *target_lib;
+ AnjutaProjectPropertyInfo *group_cpp;
+ AnjutaProjectPropertyInfo *target_cpp;
+ AnjutaProjectPropertyInfo *target_lib;
gchar *lib_flags;
gchar *cpp_flags;
gint type;
lib_flags = g_strconcat ("$(", anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)), "_LIBS)", NULL);
cpp_flags = g_strconcat ("$(", anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)), "_CFLAGS)", NULL);
-
- group_cpp = amp_node_get_property_from_token (group, AM_TOKEN__CPPFLAGS, 0);
- if (amp_node_property_has_flags (group, group_cpp, cpp_flags))
+
+ group_cpp = amp_node_get_property_info_from_token (group, AM_TOKEN__CPPFLAGS, 0);
+ if (amp_node_property_has_flags (group, group_cpp->id, cpp_flags))
{
/* Remove flags in group variable if not more target has this module */
gboolean used = FALSE;
AnjutaProjectNode *target;
-
+
for (target = anjuta_project_node_first_child (ANJUTA_PROJECT_NODE (group)); target != NULL; target = anjuta_project_node_next_sibling (target))
{
if (anjuta_project_node_get_node_type (target) == ANJUTA_PROJECT_TARGET)
@@ -227,30 +227,30 @@ amp_module_node_erase (AmpNode *node, AmpNode *amp_parent, AmpProject *project,
{
AnjutaProjectProperty *prop;
- prop = amp_node_property_remove_flags (group, group_cpp, cpp_flags);
+ prop = amp_node_property_remove_flags (group, group_cpp->id, cpp_flags);
if (prop != NULL) amp_project_update_am_property (project, group, prop);
}
}
-
+
type = anjuta_project_node_get_full_type (ANJUTA_PROJECT_NODE (parent)) & (ANJUTA_PROJECT_ID_MASK | ANJUTA_PROJECT_TYPE_MASK);
switch (type)
{
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_PROGRAM:
- target_lib = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_LDADD, 0);
+ target_lib = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_LDADD, 0);
break;
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_STATICLIB:
case ANJUTA_PROJECT_TARGET | ANJUTA_PROJECT_SHAREDLIB:
- target_lib = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_LIBADD, 0);
+ target_lib = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_LIBADD, 0);
break;
default:
target_lib = NULL;
break;
}
- target_cpp = amp_node_get_property_from_token (parent, AM_TOKEN_TARGET_CPPFLAGS, 0);
+ target_cpp = amp_node_get_property_info_from_token (parent, AM_TOKEN_TARGET_CPPFLAGS, 0);
- prop = amp_node_property_remove_flags (parent, target_cpp, cpp_flags);
+ prop = amp_node_property_remove_flags (parent, target_cpp->id, cpp_flags);
if (prop != NULL) amp_project_update_am_property (project, parent, prop);
- prop = amp_node_property_remove_flags (parent, target_lib, lib_flags);
+ prop = amp_node_property_remove_flags (parent, target_lib->id, lib_flags);
if (prop != NULL) amp_project_update_am_property (project, parent, prop);
g_free (lib_flags);
@@ -281,7 +281,7 @@ static void
amp_module_node_init (AmpModuleNode *node)
{
node->base.type = ANJUTA_PROJECT_MODULE;
- node->base.native_properties = amp_get_module_property_list();
+ node->base.properties_info = amp_get_module_property_list();
node->base.state = ANJUTA_PROJECT_CAN_ADD_PACKAGE |
ANJUTA_PROJECT_CAN_REMOVE;
node->module = NULL;
@@ -292,8 +292,8 @@ amp_module_node_finalize (GObject *object)
{
AmpModuleNode *module = AMP_MODULE_NODE (object);
- g_list_foreach (module->base.custom_properties, (GFunc)amp_property_free, NULL);
-
+ g_list_foreach (module->base.properties, (GFunc)amp_property_free, NULL);
+
G_OBJECT_CLASS (amp_module_node_parent_class)->finalize (object);
}
@@ -302,7 +302,7 @@ amp_module_node_class_init (AmpModuleNodeClass *klass)
{
GObjectClass* object_class = G_OBJECT_CLASS (klass);
AmpNodeClass* node_class;
-
+
object_class->finalize = amp_module_node_finalize;
node_class = AMP_NODE_CLASS (klass);
diff --git a/plugins/am-project/amp-object.c b/plugins/am-project/amp-object.c
index 0476ce7..9eeb6dc 100644
--- a/plugins/am-project/amp-object.c
+++ b/plugins/am-project/amp-object.c
@@ -119,7 +119,7 @@ static void
amp_object_node_init (AmpObjectNode *node)
{
node->base.type = ANJUTA_PROJECT_OBJECT;
- node->base.native_properties = NULL;
+ node->base.properties_info = NULL;
node->base.state = 0;
}
diff --git a/plugins/am-project/amp-package.c b/plugins/am-project/amp-package.c
index 059f550..c7873f1 100644
--- a/plugins/am-project/amp-package.c
+++ b/plugins/am-project/amp-package.c
@@ -105,7 +105,7 @@ amp_package_node_add_token (AmpPackageNode *node, AnjutaToken *token)
void
amp_package_node_update_node (AmpPackageNode *node, AmpPackageNode *new_node)
{
- g_return_if_fail (new_node != NULL);
+ g_return_if_fail (new_node != NULL);
node->token = new_node->token;
g_free (node->version);
@@ -122,7 +122,7 @@ amp_package_node_load (AmpNode *node, AmpNode *parent, AmpProject *project, GErr
GList* deps;
GList* dep;
GList* include_dirs = NULL;
-
+
deps = anjuta_pkg_config_list_dependencies (anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)),
error);
for (dep = deps; dep != NULL; dep = g_list_next (dep))
@@ -141,12 +141,12 @@ amp_package_node_load (AmpNode *node, AmpNode *parent, AmpProject *project, GErr
g_error_free (*error);
*error = NULL;
}
-
+
if ((include_dirs = anjuta_pkg_config_get_directories (anjuta_project_node_get_name (ANJUTA_PROJECT_NODE (node)),
TRUE, error)))
{
GList* include_dir;
-
+
for (include_dir = include_dirs; include_dir != NULL; include_dir = g_list_next (include_dir))
{
GList* children = NULL;
@@ -168,7 +168,7 @@ amp_package_node_load (AmpNode *node, AmpNode *parent, AmpProject *project, GErr
}
}
anjuta_util_glist_strings_free (include_dirs);
-
+
return TRUE;
}
@@ -208,7 +208,7 @@ static void
amp_package_node_init (AmpPackageNode *node)
{
node->base.type = ANJUTA_PROJECT_PACKAGE;
- node->base.native_properties = amp_get_package_property_list();
+ node->base.properties_info = amp_get_package_property_list();
node->base.state = ANJUTA_PROJECT_CAN_REMOVE;
node->version = NULL;
}
@@ -218,8 +218,8 @@ amp_package_node_finalize (GObject *object)
{
AmpPackageNode *node = AMP_PACKAGE_NODE (object);
- g_list_foreach (node->base.custom_properties, (GFunc)amp_property_free, NULL);
-
+ g_list_foreach (node->base.properties, (GFunc)amp_property_free, NULL);
+
G_OBJECT_CLASS (amp_package_node_parent_class)->finalize (object);
}
@@ -228,9 +228,9 @@ amp_package_node_class_init (AmpPackageNodeClass *klass)
{
GObjectClass* object_class = G_OBJECT_CLASS (klass);
AmpNodeClass* node_class;
-
+
object_class->finalize = amp_package_node_finalize;
-
+
node_class = AMP_NODE_CLASS (klass);
node_class->load = amp_package_node_load;
node_class->update = amp_package_node_update;
diff --git a/plugins/am-project/amp-root.c b/plugins/am-project/amp-root.c
index 40c0f03..cebe05d 100644
--- a/plugins/am-project/amp-root.c
+++ b/plugins/am-project/amp-root.c
@@ -85,7 +85,7 @@ static void
amp_root_node_init (AmpRootNode *node)
{
node->base.base.type = ANJUTA_PROJECT_GROUP;
- node->base.base.native_properties = amp_get_project_property_list();
+ node->base.base.properties_info = amp_get_project_property_list();
node->base.base.state = ANJUTA_PROJECT_CAN_ADD_GROUP |
ANJUTA_PROJECT_CAN_ADD_PACKAGE,
ANJUTA_PROJECT_CAN_SAVE;
diff --git a/plugins/am-project/amp-source.c b/plugins/am-project/amp-source.c
index e9f3b6e..de3b55c 100644
--- a/plugins/am-project/amp-source.c
+++ b/plugins/am-project/amp-source.c
@@ -148,7 +148,7 @@ static void
amp_source_node_init (AmpSourceNode *node)
{
node->base.type = ANJUTA_PROJECT_SOURCE;
- node->base.native_properties = amp_get_source_property_list();
+ node->base.properties_info = amp_get_source_property_list();
node->base.state = ANJUTA_PROJECT_CAN_REMOVE;
node->token = NULL;
}
@@ -158,7 +158,7 @@ amp_source_node_finalize (GObject *object)
{
AmpSourceNode *node = AMP_SOURCE_NODE (object);
- g_list_foreach (node->base.custom_properties, (GFunc)amp_property_free, NULL);
+ g_list_foreach (node->base.properties, (GFunc)amp_property_free, NULL);
G_OBJECT_CLASS (amp_source_node_parent_class)->finalize (object);
}
diff --git a/plugins/am-project/amp-target.c b/plugins/am-project/amp-target.c
index b3027a6..51987d2 100644
--- a/plugins/am-project/amp-target.c
+++ b/plugins/am-project/amp-target.c
@@ -207,7 +207,7 @@ void
amp_target_node_set_type (AmpTargetNode *target, AmTokenType type)
{
target->base.type = ANJUTA_PROJECT_TARGET | type;
- target->base.native_properties = amp_get_target_property_list(type);
+ target->base.properties_info = amp_get_target_property_list(type);
}
void
@@ -273,11 +273,11 @@ amp_target_changed (AmpTargetNode *node)
GList *item;
gboolean custom = FALSE;
- for (item = ANJUTA_PROJECT_NODE (node)->custom_properties; item != NULL; item = g_list_next (item))
+ for (item = ANJUTA_PROJECT_NODE (node)->properties; item != NULL; item = g_list_next (item))
{
AmpProperty *prop = (AmpProperty *)item->data;
- custom = ((AmpProperty *)prop->base.native)->flags & AM_PROPERTY_COMPILATION_FLAG;
+ custom = ((AmpPropertyInfo *)prop->base.info)->flags & AM_PROPERTY_COMPILATION_FLAG;
if (custom) break;
}
@@ -467,11 +467,11 @@ amp_target_node_erase (AmpNode *target, AmpNode *parent, AmpProject *project, GE
{
GList *item;
- for (item = ANJUTA_PROJECT_NODE (parent)->custom_properties; item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (ANJUTA_PROJECT_NODE (parent)); item != NULL; item = g_list_next (item))
{
AmpProperty *prop = (AmpProperty *)item->data;
- if ((prop->token_type == AM_TOKEN_DIR) && (g_strcmp0 (prop->base.name, installdir) == 0))
+ if ((((AmpPropertyInfo *)prop->base.info)->token_type == AM_TOKEN_DIR) && (g_strcmp0 (prop->base.name, installdir) == 0))
{
/* Remove directory variable */
anjuta_token_remove_list (anjuta_token_list (prop->token));
@@ -515,7 +515,7 @@ amp_target_node_finalize (GObject *object)
{
AmpTargetNode *node = AMP_TARGET_NODE (object);
- g_list_foreach (node->base.custom_properties, (GFunc)amp_property_free, NULL);
+ g_list_foreach (node->base.properties, (GFunc)amp_property_free, NULL);
tagged_token_list_free (node->tokens);
node->tokens = NULL;
diff --git a/plugins/am-project/projectparser.c b/plugins/am-project/projectparser.c
index e968c1e..52c8fb8 100644
--- a/plugins/am-project/projectparser.c
+++ b/plugins/am-project/projectparser.c
@@ -80,16 +80,20 @@ list_property (IAnjutaProject *project, AnjutaProjectNode *parent, gint indent)
value = g_string_new (NULL);
- for (item = anjuta_project_node_get_custom_properties (parent); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (parent); item != NULL; item = g_list_next (item))
{
AnjutaProjectProperty *prop;
- AnjutaProjectProperty *native;
+ AnjutaProjectPropertyInfo *info;
GList *list;
+ gchar *name;
prop = (AnjutaProjectProperty *)item->data;
- native = prop->native;
+ info = prop->info;
- switch (prop->type)
+ /* Default property */
+ if (info->property == prop) continue;
+
+ switch (info->type)
{
case ANJUTA_PROJECT_PROPERTY_STRING:
case ANJUTA_PROJECT_PROPERTY_LIST:
@@ -100,11 +104,11 @@ list_property (IAnjutaProject *project, AnjutaProjectNode *parent, gint indent)
break;
case ANJUTA_PROJECT_PROPERTY_MAP:
g_string_assign (value, "");
- for (list = anjuta_project_node_get_custom_properties (parent); list != NULL; list = g_list_next (list))
+ for (list = anjuta_project_node_get_properties (parent); list != NULL; list = g_list_next (list))
{
AnjutaProjectProperty *list_prop = (AnjutaProjectProperty *)list->data;
- if (list_prop->native == native)
+ if (list_prop->info == info)
{
if ((value->len == 0) && (list_prop != prop))
{
@@ -116,21 +120,17 @@ list_property (IAnjutaProject *project, AnjutaProjectNode *parent, gint indent)
g_string_append_printf (value, "%s = %s", list_prop->name == NULL ? "?" : list_prop->name, list_prop->value == NULL ? "" : list_prop->value);
}
}
+ if (value->len == 0) continue;
break;
}
- if (value->len != 0)
+ name = g_strdup (info->name);
+ if (*(name + strlen (name) - 1) == ':')
{
- gchar *name;
-
- name = g_strdup (native->name);
- if (*(name + strlen (name) - 1) == ':')
- {
- *(name + strlen (name) - 1) = '\0';
- }
- print ("%*sPROPERTY (%s): %s", indent * INDENT, "", name, value->str);
- g_free (name);
+ *(name + strlen (name) - 1) = '\0';
}
+ print ("%*sPROPERTY (%s): %s", indent * INDENT, "", name, value->str);
+ g_free (name);
}
g_string_free (value, TRUE);
@@ -360,34 +360,34 @@ compare_name (const gchar *id, const gchar *name)
return (*id == '\0') ? miss : -1;
}
-static AnjutaProjectProperty *
+static AnjutaProjectPropertyInfo *
get_project_property (IAnjutaProject *project, AnjutaProjectNode *parent, const gchar *id)
{
GList *item;
- AnjutaProjectProperty *prop = NULL;
+ AnjutaProjectPropertyInfo *info = NULL;
gint best = G_MAXINT;
- for (item = anjuta_project_node_get_native_properties (parent); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (parent); item != NULL; item = g_list_next (item))
{
gint miss;
/* Find property based on their id */
- if (strcmp (id, ((AnjutaProjectProperty *)item->data)->id) == 0)
+ if (strcmp (id, ((AnjutaProjectPropertyInfo *)item->data)->id) == 0)
{
- prop = ((AnjutaProjectProperty *)item->data);
+ info = ((AnjutaProjectPropertyInfo *)item->data);
break;
}
/* Else use the best name */
- miss = compare_name (id, ((AnjutaProjectProperty *)item->data)->name);
+ miss = compare_name (id, ((AnjutaProjectPropertyInfo *)item->data)->name);
if ((miss >= 0) && (miss < best))
{
best = miss;
- prop = ((AnjutaProjectProperty *)item->data);
+ info = ((AnjutaProjectPropertyInfo *)item->data);
}
}
- return prop;
+ return info;
}
static AnjutaProjectNodeType
@@ -704,14 +704,14 @@ main(int argc, char *argv[])
{
if (AMP_IS_PROJECT (project))
{
- AnjutaProjectProperty *item;
+ AnjutaProjectPropertyInfo *info;
node = get_node (project, root, command[1]);
- item = get_project_property (project, node, command[2]);
- if (item != NULL)
+ info = get_project_property (project, node, command[2]);
+ if (info != NULL)
{
gchar *value = g_shell_unquote (command[3], NULL);
- ianjuta_project_set_property (project, node, item, value, NULL);
+ ianjuta_project_set_property (project, node, info->id, NULL, value, NULL);
g_free (value);
}
}
@@ -721,13 +721,13 @@ main(int argc, char *argv[])
{
if (AMP_IS_PROJECT (project))
{
- AnjutaProjectProperty *item;
+ AnjutaProjectPropertyInfo *info;
node = get_node (project, root, command[1]);
- item = get_project_property (project, node, command[2]);
- if (item != NULL)
+ info = get_project_property (project, node, command[2]);
+ if (info != NULL)
{
- ianjuta_project_remove_property (project, node, item, NULL);
+ ianjuta_project_remove_property (project, node, info->id, NULL, NULL);
}
}
command += 2;
diff --git a/plugins/am-project/tests/anjuta.lst b/plugins/am-project/tests/anjuta.lst
index ccc4562..9a04f10 100644
--- a/plugins/am-project/tests/anjuta.lst
+++ b/plugins/am-project/tests/anjuta.lst
@@ -1,5 +1,5 @@
ROOT (): anjuta
- PROPERTY (Name): anjuta
+ PROPERTY (Name): Anjuta
PROPERTY (Version): anjuta_version
PROPERTY (Bug report URL): http://bugzilla.gnome.org/enter_bug.cgi?product=anjuta
PROPERTY (Package name): anjuta
diff --git a/plugins/am-project/tests/nemiver.lst b/plugins/am-project/tests/nemiver.lst
index 6915425..872fc72 100644
--- a/plugins/am-project/tests/nemiver.lst
+++ b/plugins/am-project/tests/nemiver.lst
@@ -453,6 +453,7 @@ ROOT (): nemiver
SOURCE (): tests/pointer-deref.cc
TARGET (): fooprog
PROPERTY (Do not install): true
+ PROPERTY (Libraries):
SOURCE (): tests/fooprog.cc
TARGET (): templatedvar
PROPERTY (Do not install): true
diff --git a/plugins/dir-project/dir-node.c b/plugins/dir-project/dir-node.c
index 9c76d71..14f2f4d 100644
--- a/plugins/dir-project/dir-node.c
+++ b/plugins/dir-project/dir-node.c
@@ -45,8 +45,8 @@ dir_root_node_new (GFile *file)
root = g_object_new (ANJUTA_TYPE_DIR_ROOT_NODE, NULL);
root->base.type = ANJUTA_PROJECT_ROOT;
- root->base.custom_properties = NULL;
- root->base.native_properties = NULL;
+ root->base.properties = NULL;
+ root->base.properties_info = NULL;
root->base.file = g_file_dup (file);
root->base.name = NULL;
@@ -110,8 +110,8 @@ dir_group_node_new (GFile *file, GObject *emitter)
group = g_object_new (ANJUTA_TYPE_DIR_GROUP_NODE, NULL);
group->base.type = ANJUTA_PROJECT_GROUP;
- group->base.native_properties = NULL;
- group->base.custom_properties = NULL;
+ group->base.properties = NULL;
+ group->base.properties_info = NULL;
group->base.file = g_object_ref (file);
group->base.name = NULL;
group->base.state = ANJUTA_PROJECT_CAN_ADD_GROUP |
@@ -158,9 +158,9 @@ static void
anjuta_dir_group_node_finalize (GObject *object)
{
AnjutaDirGroupNode *node = ANJUTA_DIR_GROUP_NODE (object);
-
+
if (node->monitor != NULL) g_file_monitor_cancel (node->monitor);
-
+
G_OBJECT_CLASS (anjuta_dir_group_node_parent_class)->finalize (object);
}
@@ -168,7 +168,7 @@ static void
anjuta_dir_group_node_class_init (AnjutaDirGroupNodeClass *klass)
{
GObjectClass* object_class = G_OBJECT_CLASS (klass);
-
+
object_class->finalize = anjuta_dir_group_node_finalize;
}
@@ -187,8 +187,8 @@ dir_object_node_new (GFile *file)
node = g_object_new (ANJUTA_TYPE_DIR_OBJECT_NODE, NULL);
node->base.type = ANJUTA_PROJECT_OBJECT;
- node->base.native_properties = NULL;
- node->base.custom_properties = NULL;
+ node->base.properties = NULL;
+ node->base.properties_info = NULL;
node->base.name = NULL;
node->base.file = g_file_dup (file);
node->base.state = ANJUTA_PROJECT_CAN_REMOVE |
@@ -235,8 +235,8 @@ dir_source_node_new (GFile *file)
source = g_object_new (ANJUTA_TYPE_DIR_SOURCE_NODE, NULL);
source->base.type = ANJUTA_PROJECT_SOURCE;
- source->base.native_properties = NULL;
- source->base.custom_properties = NULL;
+ source->base.properties = NULL;
+ source->base.properties_info = NULL;
source->base.name = NULL;
source->base.file = g_file_dup (file);
source->base.state = ANJUTA_PROJECT_CAN_REMOVE |
diff --git a/plugins/dir-project/dir-project.c b/plugins/dir-project/dir-project.c
index 535064a..2dfc9e0 100644
--- a/plugins/dir-project/dir-project.c
+++ b/plugins/dir-project/dir-project.c
@@ -53,7 +53,7 @@ struct _DirProject {
/* shortcut hash tables, mapping id -> GNode from the tree above */
GHashTable *groups;
-
+
/* project files monitors */
GHashTable *monitors;
@@ -121,21 +121,21 @@ static AnjutaProjectNode *
project_node_new (DirProject *project, AnjutaProjectNode *parent, AnjutaProjectNodeType type, GFile *file, const gchar *name, GError **error)
{
AnjutaProjectNode *node = NULL;
-
+
switch (type & ANJUTA_PROJECT_TYPE_MASK) {
case ANJUTA_PROJECT_GROUP:
if (file == NULL)
{
if (name == NULL)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_VALIDATION_FAILED,
_("Missing name"));
}
else
{
GFile *group_file;
-
+
group_file = g_file_get_child (anjuta_project_node_get_file (parent), name);
node = dir_group_node_new (group_file, G_OBJECT (project));
g_object_unref (group_file);
@@ -151,14 +151,14 @@ project_node_new (DirProject *project, AnjutaProjectNode *parent, AnjutaProjectN
{
if (name == NULL)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_VALIDATION_FAILED,
_("Missing name"));
}
else
{
GFile *object_file;
-
+
object_file = g_file_get_child (anjuta_project_node_get_file (parent), name);
node = dir_object_node_new (object_file);
g_object_unref (object_file);
@@ -174,14 +174,14 @@ project_node_new (DirProject *project, AnjutaProjectNode *parent, AnjutaProjectN
{
if (name == NULL)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_VALIDATION_FAILED,
_("Missing name"));
}
else
{
GFile *source_file;
-
+
source_file = g_file_get_child (anjuta_project_node_get_file (parent), name);
node = dir_source_node_new (source_file);
g_object_unref (source_file);
@@ -204,7 +204,7 @@ project_node_new (DirProject *project, AnjutaProjectNode *parent, AnjutaProjectN
node->type = type;
node->parent = parent;
}
-
+
return node;
}
@@ -217,12 +217,12 @@ dir_pattern_free (DirPattern *pat)
{
if (pat->source != NULL) g_regex_unref (pat->source);
g_free (pat->object);
-
+
g_slice_free (DirPattern, pat);
}
/* Create a new pattern matching a directory of a file name in a path */
-
+
static DirPattern*
dir_pattern_new (const gchar *pattern, gboolean reverse)
{
@@ -241,7 +241,7 @@ dir_pattern_new (const gchar *pattern, gboolean reverse)
{
pat->match = reverse ? FALSE : TRUE;
}
-
+
/* Check if the pattern is local */
if (*ptr == '/')
{
@@ -252,7 +252,7 @@ dir_pattern_new (const gchar *pattern, gboolean reverse)
{
g_string_append (regex, "(?:^|\\" G_DIR_SEPARATOR_S ")");
}
-
+
while (*ptr != '\0')
{
@@ -365,7 +365,7 @@ dir_pattern_new (const gchar *pattern, gboolean reverse)
}
/* Read a file containing pattern, the syntax is similar to .gitignore file.
- *
+ *
* It is not a regular expression, only * and ? are used as joker.
* If the name end with / it will match only a directory.
* If the name starts with / it must be relative to the project directory, so
@@ -402,7 +402,7 @@ dir_push_pattern_list (GList *stack, GFile *dir, GFile *file, gboolean ignore, G
for (ptr = content; *ptr != '\0';)
{
gchar *next;
-
+
next = strchr (ptr, '\n');
if (next != NULL) *next = '\0';
line++;
@@ -435,7 +435,7 @@ dir_push_pattern_list (GList *stack, GFile *dir, GFile *file, gboolean ignore, G
g_free (content);
list->pattern = g_list_reverse (list->pattern);
-
+
return g_list_prepend (stack, list);
}
@@ -464,7 +464,7 @@ dir_pattern_stack_is_match (GFile *root, GList *stack, GFile *file)
/* Create name from file */
filename = g_file_get_relative_path (root, file);
-
+
directory = g_file_query_file_type (file, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL) == G_FILE_TYPE_DIRECTORY;
/* Include directories by default */
match = directory;
@@ -474,7 +474,7 @@ dir_pattern_stack_is_match (GFile *root, GList *stack, GFile *file)
{
DirPatternList *pat_list = (DirPatternList *)list->data;
GList *node;
-
+
for (node = g_list_first (pat_list->pattern); node != NULL; node = g_list_next (node))
{
DirPattern *pat = (DirPattern *)node->data;
@@ -502,16 +502,16 @@ dir_pattern_find_file_object (GFile *root, GList *stack, GFile *file)
{
GList *list;
gchar *filename;
-
+
/* Create name from file */
filename = g_file_get_relative_path (root, file);
-
+
/* Check all valid patterns */
for (list = g_list_last (stack); list != NULL; list = g_list_previous (list))
{
DirPatternList *pat_list = (DirPatternList *)list->data;
GList *node;
-
+
for (node = g_list_first (pat_list->pattern); node != NULL; node = g_list_next (node))
{
DirPattern *pat = (DirPattern *)node->data;
@@ -522,7 +522,7 @@ dir_pattern_find_file_object (GFile *root, GList *stack, GFile *file)
if (g_regex_match (pat->source, filename, 0, NULL))
{
gchar *objname;
-
+
objname = g_regex_replace (pat->source, filename, -1, 0, pat->object, 0, NULL);
object = g_file_get_child (root, objname);
g_free (objname);
@@ -614,7 +614,7 @@ dir_project_load_directory_callback (GObject *source_object,
/* Check if file is a source */
if (!dir_pattern_stack_is_match (root, data->proj->sources, file)) continue;
-
+
if (g_file_query_file_type (file, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY)
{
AnjutaProjectNode *group;
@@ -670,7 +670,7 @@ dir_project_load_directory_callback (GObject *source_object,
{
parent = data->parent;
}
-
+
/* Create a source for files */
source = project_node_new (data->proj, NULL, ANJUTA_PROJECT_SOURCE | ANJUTA_PROJECT_PROJECT, file, NULL, NULL);
anjuta_project_node_append (parent, source);
@@ -721,7 +721,7 @@ dir_project_load_directory (DirProject *project, AnjutaProjectNode *parent, GErr
}
static AnjutaProjectNode *
-dir_project_load_root (DirProject *project, GError **error)
+dir_project_load_root (DirProject *project, GError **error)
{
GFile *source_file;
GFile *root_file;
@@ -742,7 +742,7 @@ dir_project_load_root (DirProject *project, GError **error)
if (g_file_query_file_type (root_file, G_FILE_QUERY_INFO_NONE, NULL) != G_FILE_TYPE_DIRECTORY)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_DOESNT_EXIST,
_("Project doesn't exist or invalid path"));
@@ -757,14 +757,14 @@ dir_project_load_root (DirProject *project, GError **error)
source_file = g_file_new_for_path (SOURCES_FILE);
project->sources = dir_push_pattern_list (NULL, g_object_ref (root_file), source_file, FALSE, NULL);
g_object_unref (source_file);
-
+
dir_project_load_directory (project, group, NULL);
return project->root;
}
AnjutaProjectNode *
-dir_project_load_node (DirProject *project, AnjutaProjectNode *node, GError **error)
+dir_project_load_node (DirProject *project, AnjutaProjectNode *node, GError **error)
{
if (node == NULL) node = project->root;
switch (anjuta_project_node_get_node_type (node))
@@ -785,7 +785,7 @@ foreach_node_save (AnjutaProjectNode *node,
gint state = anjuta_project_node_get_state (node);
GError *err = NULL;
gboolean ret;
-
+
if (state & ANJUTA_PROJECT_MODIFIED)
{
switch (anjuta_project_node_get_node_type (node))
@@ -821,7 +821,7 @@ dir_project_save_node (DirProject *project, AnjutaProjectNode *node, GError **er
{
/* Save children */
anjuta_project_node_foreach (node, G_POST_ORDER, foreach_node_save, project);
-
+
return node;
}
@@ -855,7 +855,7 @@ dir_project_probe (GFile *file,
probe = g_file_query_file_type (file, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY;
if (!probe)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_DOESNT_EXIST,
_("Project doesn't exist or invalid path"));
}
@@ -881,7 +881,7 @@ dir_project_get_node_info (DirProject *project, GError **error)
if (info_list == NULL)
{
AnjutaProjectNodeInfo *node;
-
+
for (node = node_info; node->type != 0; node++)
{
info_list = g_list_prepend (info_list, node);
@@ -889,7 +889,7 @@ dir_project_get_node_info (DirProject *project, GError **error)
info_list = g_list_reverse (info_list);
}
-
+
return info_list;
}
@@ -898,12 +898,12 @@ find_not_loaded_node (gpointer key, gpointer value, gpointer user_data)
{
AnjutaProjectNode *node = (AnjutaProjectNode *)value;
gboolean found;
-
+
found = anjuta_project_node_get_state (node) & (ANJUTA_PROJECT_LOADING | ANJUTA_PROJECT_INCOMPLETE);
return found;
}
-
+
static gboolean
dir_project_is_loaded (DirProject *project)
{
@@ -917,7 +917,7 @@ DirProject *
dir_project_new (GFile *directory, GError **error)
{
DirProject *project;
-
+
project = DIR_PROJECT (g_object_new (DIR_TYPE_PROJECT, NULL));
project->root = dir_root_node_new (directory);
@@ -949,7 +949,7 @@ static AnjutaProjectNode *
iproject_add_node_before (IAnjutaProject *obj, AnjutaProjectNode *parent, AnjutaProjectNode *sibling, AnjutaProjectNodeType type, GFile *file, const gchar *name, GError **error)
{
AnjutaProjectNode *node;
-
+
node = project_node_new (DIR_PROJECT (obj), parent, type, file, name, error);
anjuta_project_node_set_state (node, ANJUTA_PROJECT_MODIFIED);
anjuta_project_node_insert_before (parent, sibling, node);
@@ -963,7 +963,7 @@ static AnjutaProjectNode *
iproject_add_node_after (IAnjutaProject *obj, AnjutaProjectNode *parent, AnjutaProjectNode *sibling, AnjutaProjectNodeType type, GFile *file, const gchar *name, GError **error)
{
AnjutaProjectNode *node;
-
+
node = project_node_new (DIR_PROJECT (obj), parent, type, file, name, error);
anjuta_project_node_set_state (node, ANJUTA_PROJECT_MODIFIED);
anjuta_project_node_insert_after (parent, sibling, node);
@@ -983,22 +983,22 @@ iproject_remove_node (IAnjutaProject *obj, AnjutaProjectNode *node, GError **err
}
static AnjutaProjectProperty*
-iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, const gchar *value, GError **error)
+iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, const gchar *value, GError **error)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_NOT_SUPPORTED,
_("Project doesn't allow to set properties"));
-
+
return NULL;
}
static gboolean
-iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, GError **error)
+iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, GError **error)
{
- g_set_error (error, IANJUTA_PROJECT_ERROR,
+ g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_NOT_SUPPORTED,
_("Project doesn't allow to set properties"));
-
+
return FALSE;
}
@@ -1008,7 +1008,7 @@ iproject_get_root (IAnjutaProject *obj, GError **error)
return DIR_PROJECT (obj)->root;
}
-static const GList*
+static const GList*
iproject_get_node_info (IAnjutaProject *obj, GError **err)
{
return dir_project_get_node_info (DIR_PROJECT (obj), err);
@@ -1045,7 +1045,7 @@ dir_project_dispose (GObject *object)
dir_project_unload (DIR_PROJECT (object));
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
@@ -1053,7 +1053,7 @@ dir_project_instance_init (DirProject *project)
{
g_return_if_fail (project != NULL);
g_return_if_fail (DIR_IS_PROJECT (project));
-
+
/* project data */
project->root = NULL;
//project->root_node = NULL;
@@ -1068,7 +1068,7 @@ static void
dir_project_class_init (DirProjectClass *klass)
{
GObjectClass *object_class;
-
+
parent_class = g_type_class_peek_parent (klass);
object_class = G_OBJECT_CLASS (klass);
diff --git a/plugins/mk-project/mk-project.c b/plugins/mk-project/mk-project.c
index 27a09cf..eab1c21 100644
--- a/plugins/mk-project/mk-project.c
+++ b/plugins/mk-project/mk-project.c
@@ -206,8 +206,8 @@ mkp_group_new (GFile *file)
group->base.file = g_object_ref (file);
group->base.type = ANJUTA_PROJECT_GROUP;
- group->base.native_properties = NULL;
- group->base.custom_properties = NULL;
+ group->base.properties = NULL;
+ group->base.properties_info = NULL;
group->base.name = NULL;
group->base.state = 0;
@@ -314,8 +314,8 @@ mkp_source_new (GFile *file)
source = g_object_new (MKP_TYPE_SOURCE, NULL);
source->base.file = g_object_ref (file);
source->base.type = ANJUTA_PROJECT_SOURCE;
- source->base.native_properties = NULL;
- source->base.custom_properties = NULL;
+ source->base.properties = NULL;
+ source->base.properties_info = NULL;
source->base.name = NULL;
source->base.state = 0;
@@ -826,7 +826,7 @@ void
mkp_project_unload (MkpProject *project)
{
AnjutaProjectNode *node;
-
+
monitors_remove (project);
/* project data */
@@ -838,7 +838,7 @@ mkp_project_unload (MkpProject *project)
{
g_object_unref (node);
}
-
+
/* shortcut hash tables */
if (project->groups) g_hash_table_destroy (project->groups);
project->groups = NULL;
@@ -1010,7 +1010,7 @@ iproject_save_node (IAnjutaProject *obj, AnjutaProjectNode *node, GError **err)
}
static AnjutaProjectProperty *
-iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, const gchar *value, GError **error)
+iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, const gchar *value, GError **error)
{
g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_NOT_SUPPORTED,
@@ -1020,7 +1020,7 @@ iproject_set_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProje
}
static gboolean
-iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, AnjutaProjectProperty *property, GError **error)
+iproject_remove_property (IAnjutaProject *obj, AnjutaProjectNode *node, const gchar *id, const gchar *name, GError **error)
{
g_set_error (error, IANJUTA_PROJECT_ERROR,
IANJUTA_PROJECT_ERROR_NOT_SUPPORTED,
diff --git a/plugins/mk-project/mk-rule.c b/plugins/mk-project/mk-rule.c
index 86ee6b6..d5cb751 100644
--- a/plugins/mk-project/mk-rule.c
+++ b/plugins/mk-project/mk-rule.c
@@ -47,8 +47,8 @@ mkp_rule_new (gchar *name, AnjutaToken *token)
MkpRule *rule = NULL;
g_return_val_if_fail (name != NULL, NULL);
-
- rule = g_slice_new0(MkpRule);
+
+ rule = g_slice_new0(MkpRule);
rule->name = g_strdup (name);
rule->rule = token;
@@ -61,7 +61,7 @@ mkp_rule_free (MkpRule *rule)
g_free (rule->name);
g_list_foreach (rule->prerequisite, (GFunc)g_free, NULL);
g_list_free (rule->prerequisite);
-
+
g_slice_free (MkpRule, rule);
}
@@ -89,9 +89,9 @@ mkp_project_find_dependencies (MkpProject *project, gchar *target, AnjutaProject
{
gchar *source;
GList *dependencies;
-
+
if (rule->part == NULL)
- {
+ {
/* simple suffix rule */
source = g_strconcat (target, rule->name, NULL);
}
@@ -113,7 +113,7 @@ mkp_project_find_dependencies (MkpProject *project, gchar *target, AnjutaProject
continue;
}
}
-
+
dependencies = mkp_project_find_dependencies (project, source, parent, backtrack + 1);
if (dependencies != NULL)
{
@@ -123,7 +123,7 @@ mkp_project_find_dependencies (MkpProject *project, gchar *target, AnjutaProject
}
}
}
-
+
child = g_file_get_child (anjuta_project_node_get_file (parent), target);
exist = g_file_query_exists (child, NULL);
//g_message ("target =%s= filename =%s=", target, g_file_get_parse_name (child));
@@ -153,7 +153,7 @@ mkp_project_add_rule (MkpProject *project, AnjutaToken *group)
//fprintf(stdout, "add rule\n");
//anjuta_token_dump (group);
-
+
targ = anjuta_token_first_item (group);
arg = anjuta_token_next_word (targ);
if (anjuta_token_get_type (arg) == MK_TOKEN_DOUBLE_COLON) double_colon = TRUE;
@@ -174,7 +174,7 @@ mkp_project_add_rule (MkpProject *project, AnjutaToken *group)
if (anjuta_token_get_type (src) != MK_TOKEN_ORDER)
{
target = anjuta_token_evaluate (src);
-
+
rule = g_hash_table_lookup (project->rules, target);
if (rule == NULL)
{
@@ -182,7 +182,7 @@ mkp_project_add_rule (MkpProject *project, AnjutaToken *group)
g_hash_table_insert (project->rules, rule->name, rule);
}
rule->phony = TRUE;
-
+
//g_message (" with target %s", target);
if (target != NULL) g_free (target);
}
@@ -224,9 +224,9 @@ mkp_project_add_rule (MkpProject *project, AnjutaToken *group)
break;
default:
target = g_strstrip (anjuta_token_evaluate (arg));
- if (*target == '\0') break;
+ if (*target == '\0') break;
//g_message ("add rule =%s=", target);
-
+
rule = g_hash_table_lookup (project->rules, target);
if (rule == NULL)
{
@@ -237,7 +237,7 @@ mkp_project_add_rule (MkpProject *project, AnjutaToken *group)
{
rule->rule = group;
}
-
+
for (src = anjuta_token_first_word (dep); src != NULL; src = anjuta_token_next_word (src))
{
gchar *src_name = anjuta_token_evaluate (src);
@@ -284,10 +284,10 @@ mkp_project_enumerate_targets (MkpProject *project, AnjutaProjectNode *parent)
GString *pattern = g_string_sized_new (16);
GList *suffix;
GList *src;
-
+
/* Check double suffix rule */
suffix = g_hash_table_get_keys (project->suffix);
-
+
for (src = g_list_first (suffix); src != NULL; src = g_list_next (src))
{
GList *obj;
@@ -321,7 +321,7 @@ mkp_project_enumerate_targets (MkpProject *project, AnjutaProjectNode *parent)
//g_message ("rule =%s=", rule->name);
if (rule->phony || rule->pattern) continue;
-
+
/* Create target */
target = MKP_TARGET(mkp_target_new (rule->name, ANJUTA_PROJECT_UNKNOWN));
mkp_target_add_token (target, rule->rule);
@@ -331,7 +331,7 @@ mkp_project_enumerate_targets (MkpProject *project, AnjutaProjectNode *parent)
prerequisite = anjuta_token_first_word (rule->rule);
if (prerequisite != NULL) prerequisite = anjuta_token_next_word (prerequisite);
if (prerequisite != NULL) prerequisite = anjuta_token_next_word (prerequisite);
-
+
/* Add prerequisite */
for (arg = anjuta_token_first_word (prerequisite); arg != NULL; arg = anjuta_token_next_word (arg))
{
@@ -356,8 +356,8 @@ mkp_project_enumerate_targets (MkpProject *project, AnjutaProjectNode *parent)
{
GFile *src_file;
gchar *name;
-
- AnjutaProjectNode *parent = target;
+
+ AnjutaProjectNode *parent = (AnjutaProjectNode *)target;
while (g_list_next (dependencies) != NULL)
{
/* Create object nodes */
@@ -385,14 +385,14 @@ mkp_project_enumerate_targets (MkpProject *project, AnjutaProjectNode *parent)
}
}
-void
+void
mkp_project_init_rules (MkpProject *project)
{
project->rules = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify)mkp_rule_free);
project->suffix = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
}
-void
+void
mkp_project_free_rules (MkpProject *project)
{
if (project->rules) g_hash_table_destroy (project->rules);
diff --git a/plugins/project-manager/dialogs.c b/plugins/project-manager/dialogs.c
index 5dfd2b5..f251c4d 100644
--- a/plugins/project-manager/dialogs.c
+++ b/plugins/project-manager/dialogs.c
@@ -60,7 +60,7 @@ typedef struct _PropertiesTable
typedef struct _PropertyEntry
{
GtkWidget *entry;
- AnjutaProjectProperty *property;
+ AnjutaProjectPropertyInfo *info;
} PropertyEntry;
typedef struct _PropertyValue
@@ -130,13 +130,13 @@ error_dialog (GtkWindow *parent, const gchar *summary, const gchar *msg, ...)
*---------------------------------------------------------------------------*/
static PropertyEntry*
-pm_property_entry_new (GtkWidget *entry, AnjutaProjectProperty *property)
+pm_property_entry_new (GtkWidget *entry, AnjutaProjectPropertyInfo *info)
{
PropertyEntry *prop;
prop = g_slice_new0(PropertyEntry);
prop->entry = entry;
- prop->property = property;
+ prop->info = info;
return prop;
}
@@ -418,26 +418,19 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
gchar *tooltip = NULL;
gboolean editable = TRUE;
- if (prop->native != NULL)
- {
- label = gtk_label_new (_(prop->native->name));
- }
- else
- {
- label = gtk_label_new (_(prop->name));
- }
+ label = gtk_label_new (_(prop->info->name));
- editable = prop->flags & ANJUTA_PROJECT_PROPERTY_READ_ONLY ? FALSE : TRUE;
+ editable = prop->info->flags & ANJUTA_PROJECT_PROPERTY_READ_ONLY ? FALSE : TRUE;
- if (prop->detail != NULL)
+ if (prop->info->description != NULL)
{
if (!editable)
{
- tooltip = g_strconcat (_(prop->detail), _(" This property is not modifiable."), NULL);
+ tooltip = g_strconcat (_(prop->info->description), _(" This property is not modifiable."), NULL);
}
else
{
- tooltip = g_strdup (_(prop->detail));
+ tooltip = g_strdup (_(prop->info->description));
}
}
@@ -450,7 +443,7 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
gtk_table_attach (GTK_TABLE (table), label, 0, 1, *position, *position+1,
GTK_FILL, GTK_FILL, 5, 3);
- switch (prop->type)
+ switch (prop->info->type)
{
case ANJUTA_PROJECT_PROPERTY_STRING:
case ANJUTA_PROJECT_PROPERTY_LIST:
@@ -473,13 +466,11 @@ add_entry (IAnjutaProject *project, AnjutaProjectNode *node, AnjutaProjectProper
case ANJUTA_PROJECT_PROPERTY_MAP:
model = GTK_TREE_MODEL (gtk_list_store_newv (LIST_COLUMNS_NB, column_type));
- if (prop->native != NULL) prop = prop->native;
-
- for (item = anjuta_project_node_get_custom_properties (node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties (node); item != NULL; item = g_list_next (item))
{
AnjutaProjectProperty *cust_prop = (AnjutaProjectProperty *)item->data;
- if (cust_prop->native == prop)
+ if (cust_prop->info == prop->info)
{
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
@@ -680,17 +671,17 @@ update_properties (PropertiesTable *table)
/* Display other node properties */
single = FALSE;
- for (item = anjuta_project_node_get_native_properties (table->node); item != NULL; item = g_list_next (item))
+ for (item = anjuta_project_node_get_properties_info (table->node); item != NULL; item = g_list_next (item))
{
- AnjutaProjectProperty *valid_prop = (AnjutaProjectProperty *)item->data;
+ AnjutaProjectPropertyInfo *info = (AnjutaProjectPropertyInfo *)item->data;
- if (!(valid_prop->flags & ANJUTA_PROJECT_PROPERTY_HIDDEN))
+ if (!(info->flags & ANJUTA_PROJECT_PROPERTY_HIDDEN))
{
AnjutaProjectProperty *prop;
GtkWidget *entry;
- prop = anjuta_project_node_get_property (table->node, valid_prop);
- if (prop->native != NULL)
+ prop = anjuta_project_node_get_property (table->node, info->id);
+ if (prop != prop->info->property)
{
/* This property has been set, display it in the main part */
entry = add_entry (table->project->project, table->node, prop, table->main, &main_pos);
@@ -698,14 +689,14 @@ update_properties (PropertiesTable *table)
else
{
/* This property has not been set, hide it by default */
- entry = add_entry (table->project->project, table->node, valid_prop, table->extra, &extra_pos);
+ entry = add_entry (table->project->project, table->node, info->property, table->extra, &extra_pos);
single = TRUE;
}
if (entry != NULL)
{
table->properties = g_list_prepend (table->properties,
- pm_property_entry_new (entry, valid_prop));
+ pm_property_entry_new (entry, info));
}
}
}
@@ -740,10 +731,9 @@ on_properties_dialog_response (GtkWidget *dialog,
GtkTreeModel *model;
/* Get property value in node */
- prop = anjuta_project_node_get_property (table->node, entry->property);
- if (prop == NULL) prop = entry->property;
+ prop = anjuta_project_node_get_property (table->node, entry->info->id);
- switch (prop->type)
+ switch (prop->info->type)
{
case ANJUTA_PROJECT_PROPERTY_STRING:
case ANJUTA_PROJECT_PROPERTY_LIST:
@@ -755,7 +745,7 @@ on_properties_dialog_response (GtkWidget *dialog,
if ((prop->value != NULL) && (*prop->value != '\0'))
{
/* Remove */
- ianjuta_project_set_property (table->project->project, table->node, prop, NULL, NULL);
+ ianjuta_project_set_property (table->project->project, table->node, entry->info->id, NULL, NULL, NULL);
}
}
else
@@ -763,7 +753,7 @@ on_properties_dialog_response (GtkWidget *dialog,
if (g_strcmp0 (prop->value, text) != 0)
{
/* Modified */
- ianjuta_project_set_property (table->project->project, table->node, prop, text, NULL);
+ ianjuta_project_set_property (table->project->project, table->node, entry->info->id, NULL, text, NULL);
}
}
}
@@ -775,7 +765,7 @@ on_properties_dialog_response (GtkWidget *dialog,
if (active != (*text == '1'))
{
/* Modified */
- ianjuta_project_set_property (table->project->project, table->node, prop, text, NULL);
+ ianjuta_project_set_property (table->project->project, table->node, entry->info->id, NULL, text, NULL);
}
break;
case ANJUTA_PROJECT_PROPERTY_MAP:
@@ -791,7 +781,7 @@ on_properties_dialog_response (GtkWidget *dialog,
if ((cust_prop != NULL) && (g_strcmp0 (cust_prop->value, value) != 0))
{
/* Modified */
- ianjuta_project_set_property (table->project->project, table->node, cust_prop, value, NULL);
+ ianjuta_project_set_property (table->project->project, table->node, entry->info->id, cust_prop->name, value, NULL);
}
g_free (value);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]