예제 #1
0
static void
relation_set_property (GObject      *object,
		       guint         prop_id,
		       const GValue *value,
		       GParamSpec   *pspec)
{
	MrpRelation     *relation;
	MrpRelationPriv *priv;
	MrpTask         *task;
	gboolean         changed = FALSE;

	relation = MRP_RELATION (object);
	priv    = relation->priv;

	switch (prop_id) {
	case PROP_SUCCESSOR:
		priv->successor = g_value_get_object (value);
		if (priv->successor) {
			g_object_ref (priv->successor);
			changed = TRUE;
		}
		break;

	case PROP_PREDECESSOR:
		priv->predecessor = g_value_get_object (value);
		if (priv->predecessor) {
			g_object_ref (priv->predecessor);
			changed = TRUE;
		}
		break;

	case PROP_TYPE:
		priv->type = (MrpRelationType) g_value_get_enum (value);
		changed = TRUE;
		break;

	case PROP_LAG:
		priv->lag = g_value_get_int (value);
		changed = TRUE;
		break;

	default:
		break;
	}

	if (changed) {
		task = mrp_relation_get_predecessor (relation);
		/* If we get called from the constructor, we don't always have
		 * one of these.
		 */
		if (task == NULL) {
			task = mrp_relation_get_successor (relation);
		}
		if (task != NULL) {
			mrp_object_changed (MRP_OBJECT (task));
		}
	}
}
예제 #2
0
파일: mrp-parser.c 프로젝트: GNOME/planner
static void
mpp_write_predecessor (MrpParser   *parser,
		       xmlNodePtr   node,
		       MrpRelation *relation)
{
	gchar     *str;
	NodeEntry *entry;
	gint       lag;

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

	xmlSetProp (node, "id", "1"); /* Don't need id here. */

	entry = g_hash_table_lookup (parser->task_hash,
				     mrp_relation_get_predecessor (relation));
	mpp_xml_set_int (node, "predecessor-id", entry->id);

	switch (mrp_relation_get_relation_type (relation)) {
	case MRP_RELATION_FS:
		str = "FS";
		break;
	case MRP_RELATION_FF:
		str = "FF";
		break;
	case MRP_RELATION_SF:
		str = "SF";
		break;
	case MRP_RELATION_SS:
		str = "SS";
		break;
	default:
		str = "FS";
	}

	xmlSetProp (node, "type", str);

	lag = mrp_relation_get_lag (relation);
	if (lag) {
		mpp_xml_set_int (node, "lag", lag);
	}
}