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; }
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); }