Example #1
0
static gchar *
mpp_property_to_string (MrpObject   *object,
			MrpProperty *property)
{
	const gchar *name;
	gchar       *str;
	gchar        buffer[G_ASCII_DTOSTR_BUF_SIZE];
	gint         i;
	gfloat       f;
	mrptime      date;
	GArray      *array;

	name = mrp_property_get_name (property);

	switch (mrp_property_get_property_type (property)) {
	case MRP_PROPERTY_TYPE_STRING:
		mrp_object_get (object, name, &str, NULL);
		return str;
	case MRP_PROPERTY_TYPE_STRING_LIST:
		mrp_object_get (object, name, &array, NULL);
		if (!array) {
			return NULL;
		}

		/* FIXME */
		str = g_strdup ("text-list-foo");

		return str;
	case MRP_PROPERTY_TYPE_INT:
		mrp_object_get (object, name, &i, NULL);
		return g_strdup_printf ("%d", i);
	case MRP_PROPERTY_TYPE_FLOAT:
		mrp_object_get (object, name, &f, NULL);
		g_ascii_dtostr (buffer, sizeof (buffer), (double) f);
		return g_strdup (buffer);
	case MRP_PROPERTY_TYPE_DURATION:
		mrp_object_get (object, name, &i, NULL);
		return g_strdup_printf ("%d", i);
	case MRP_PROPERTY_TYPE_DATE:
		mrp_object_get (object, name, &date, NULL);
		str = mrp_time_to_string (date);
		return str;
	case MRP_PROPERTY_TYPE_COST:
		/* FIXME: implement cost */
		return NULL;
	default:
		g_warning ("Not implemented support for type %d",
			   mrp_property_get_property_type (property));
		break;
	}

	return NULL;
}
Example #2
0
static void
property_model_property_added_cb (MrpProject   *project,
				  GType         owner_type,
				  MrpProperty  *property,
				  MrpPropertyStore  *shop)
{
	GtkTreeIter     iter;
	MrpPropertyType type;
	GtkListStore    *store;

	if (owner_type != shop->owner_type) {
		return;
	}

	store = shop->store;

	if (store) {
	type = mrp_property_get_property_type (property);

	gtk_list_store_append (store, &iter);

	gtk_list_store_set (store, &iter,
			    COL_NAME, mrp_property_get_name (property),
			    COL_LABEL, mrp_property_get_label (property),
			    COL_TYPE, mrp_property_type_as_string (type),
			    COL_PROPERTY, property,
			    -1);
	}
}
static PlannerCmd *
property_cmd_remove (PlannerWindow *window,
		     MrpProject	   *project,
		     GType          owner,
		     const gchar   *name)
{
	PlannerCmd        *cmd_base;
	PropertyCmdRemove *cmd;
	MrpProperty       *property;

	cmd_base = planner_cmd_new (PropertyCmdRemove,
				    _("Remove property"),
				    property_cmd_remove_do,
				    property_cmd_remove_undo,
				    property_cmd_remove_free);

	cmd = (PropertyCmdRemove *) cmd_base;

	cmd->project = g_object_ref (project);
	cmd->owner = owner;
	cmd->name = g_strdup (name);

	property = mrp_project_get_property (project,
					     name,
					     owner);

	cmd->property = mrp_property_ref (property);
	cmd->type = mrp_property_get_property_type (property);
	cmd->description = g_strdup (mrp_property_get_description (property));
	cmd->label_text = g_strdup ( mrp_property_get_label (property));
	cmd->user_defined = mrp_property_get_user_defined (property);

	cmd->tasks = g_hash_table_new (NULL, NULL);
	cmd->resources = g_hash_table_new (NULL, NULL);

	planner_cmd_manager_insert_and_do (planner_window_get_cmd_manager (window),
					   cmd_base);

	return cmd_base;
}
Example #4
0
static void
mpp_write_custom_properties (MrpParser  *parser,
			     xmlNodePtr  node,
			     MrpObject  *object)
{
	GList           *properties, *l;
	xmlNodePtr       child;
	MrpProperty     *property;
	gchar           *value;

	properties = mrp_project_get_properties_from_type (parser->project,
							   G_OBJECT_TYPE (object));

	if (properties == NULL) {
		return;
	}

	node = xmlNewChild (node, NULL, "properties", NULL);

	for (l = properties; l; l = l->next) {
		property = l->data;

		child = xmlNewChild (node, NULL, "property", NULL);

		xmlSetProp (child, "name", mrp_property_get_name (property));

		if (mrp_property_get_property_type (property) == MRP_PROPERTY_TYPE_STRING_LIST) {
			mpp_write_string_list (child, property, object);
		} else {
			value = mpp_property_to_string (object, property);

			xmlSetProp (child, "value", value);

			g_free (value);
		}
	}

	g_list_free (properties);
}
Example #5
0
GtkTreeModel *
planner_property_model_new (MrpProject *project,
		            GType      		owner_type,
			    MrpPropertyStore	*shop)
{
	GtkListStore    *store;
	GList           *properties, *l;
	MrpProperty     *property;
	MrpPropertyType  type;
	GtkTreeIter      iter;

	store = gtk_list_store_new (5,
				    G_TYPE_STRING,
				    G_TYPE_STRING,
				    G_TYPE_STRING,
				    G_TYPE_POINTER,
				    G_TYPE_POINTER);

	shop->store = store;
	shop->owner_type = owner_type;

	properties = mrp_project_get_properties_from_type (project,
							   owner_type);

	for (l = properties; l; l = l->next) {
		property = l->data;

		type = mrp_property_get_property_type (property);

		gtk_list_store_append (store, &iter);
		gtk_list_store_set (store,
				    &iter,
				    COL_NAME, mrp_property_get_name (property),
				    COL_LABEL, mrp_property_get_label (property),
				    COL_TYPE, mrp_property_type_as_string (type),
				    COL_PROPERTY, property,
				    -1);
	}

	/* We need to know which store to add the property so we pass the shop
	*  reference not the store. The shop is a structure that correlates
	*  which store currently holds which owner. We don't have to bother with
	*  this when changing or removing - just adding.
	*/
	g_signal_connect (project,
			  "property_added",
			  G_CALLBACK (property_model_property_added_cb),
			  shop);

	g_signal_connect (project,
			  "property_removed",
			  G_CALLBACK (property_model_property_removed_cb),
			  store);

	g_signal_connect (project,
			  "property_changed",
			  G_CALLBACK (property_model_property_changed_cb),
			  store);

	return GTK_TREE_MODEL (store);
}
Example #6
0
static void
mpp_write_property_specs (MrpParser *parser, xmlNodePtr node)
{
	GList           *properties, *l;
	xmlNodePtr       child;
	MrpProperty     *property;
	MrpPropertyType  type;

	properties = mrp_project_get_properties_from_type (parser->project,
							   MRP_TYPE_PROJECT);

	node = xmlNewChild (node, NULL, "properties", NULL);

	for (l = properties; l; l = l->next) {
		property = l->data;

		child = xmlNewChild (node, NULL, "property", NULL);

		xmlSetProp (child, "name", mrp_property_get_name (property));

		type = mrp_property_get_property_type (property);
		xmlSetProp (child, "type", mpp_property_type_to_string (type));

		xmlSetProp (child, "owner", "project");
		xmlSetProp (child, "label", mrp_property_get_label (property));
		xmlSetProp (child, "description", mrp_property_get_description (property));
	}

	g_list_free (properties);

	properties = mrp_project_get_properties_from_type (parser->project,
							   MRP_TYPE_TASK);

	for (l = properties; l; l = l->next) {
		property = l->data;

		child = xmlNewChild (node, NULL, "property", NULL);

		xmlSetProp (child, "name", mrp_property_get_name (property));

		type = mrp_property_get_property_type (property);
		xmlSetProp (child, "type", mpp_property_type_to_string (type));

		xmlSetProp (child, "owner", "task");
		xmlSetProp (child, "label", mrp_property_get_label (property));
		xmlSetProp (child, "description", mrp_property_get_description (property));
	}

	g_list_free (properties);

	properties = mrp_project_get_properties_from_type (parser->project,
							   MRP_TYPE_RESOURCE);

	for (l = properties; l; l = l->next) {
		property = l->data;

		child = xmlNewChild (node, NULL, "property", NULL);

		xmlSetProp (child, "name", mrp_property_get_name (property));

		type = mrp_property_get_property_type (property);
		xmlSetProp (child, "type", mpp_property_type_to_string (type));

		xmlSetProp (child, "owner", "resource");
		xmlSetProp (child, "label", mrp_property_get_label (property));
		xmlSetProp (child, "description", mrp_property_get_description (property));
	}

	g_list_free (properties);
}