//粘贴字段 private void PasteField() { try { FieldListContent content = XmlUtility.StringToObject <FieldListContent>(Clipboard.GetText()); for (int i = 0; i < content.DataList.Count; i++) { NodeField field = content.DataList[i]; string fieldName = field.FieldName; while (m_NodeDefine.ExistFieldName(fieldName)) { fieldName += "_New"; } field.FieldName = fieldName; m_NodeDefine.AddField(field); } Exec("Refresh"); MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个字段!!!"); } catch (Exception ex) { MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message); MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告"); } }
/// <summary> /// 修正数据 /// </summary> public bool AjustData() { bool ajust = false; for (int i = 0; i < m_Nodes.Count; i++) { NodeDesigner node = m_Nodes[i]; NodeDefine nodeDefine = MainForm.Instance.NodeTemplate.FindNode(node.ClassType); //修正节点标签 if (node.Label != nodeDefine.Label) { node.Label = nodeDefine.Label; ajust = true; } //移除模板中没有的字段 for (int ii = node.Fields.Count - 1; ii >= 0; ii--) { FieldDesigner field = node.Fields[ii]; if (!nodeDefine.ExistFieldName(field.FieldName)) { ajust = true; node.Fields.RemoveAt(ii); } } //修正类型不匹配的(节点字段和模板字段类型不匹配) for (int ii = 0; ii < node.Fields.Count; ii++) { FieldDesigner field = node.Fields[ii]; NodeField nodeField = nodeDefine.FindField(field.FieldName); if (field.FieldType != nodeField.FieldType) { //重新给默认值 node.Fields[ii] = EditorUtility.CreateFieldByNodeField(nodeField); ajust = true; } } //添加不存的字段 for (int ii = nodeDefine.Fields.Count - 1; ii >= 0; ii--) { NodeField nodeField = nodeDefine.Fields[ii]; FieldDesigner field = node.FindFieldByName(nodeField.FieldName); //不存在的字段要添加 if (field == null) { FieldDesigner newField = EditorUtility.CreateFieldByNodeField(nodeField); node.AddField(newField); ajust = true; } } //排序字段(要和模板中一致) for (int ii = 0; ii < nodeDefine.Fields.Count; ii++) { NodeField nodeField = nodeDefine.Fields[ii]; int index = node.GetFieldIndex(nodeField.FieldName); if (index != ii) { //交换 FieldDesigner tempField_ii = node.Fields[ii]; node.Fields[ii] = node.Fields[index]; node.Fields[index] = tempField_ii; ajust = true; } } //修正Label for (int ii = 0; ii < node.Fields.Count; ii++) { FieldDesigner field = node.Fields[ii]; NodeField nodeField = nodeDefine.Fields[ii]; if (field.Label != nodeField.Label) { field.Label = nodeField.Label; ajust = true; } } } return(ajust); }