public VariableData(ActionVariable variable) { this.variable = variable; variable.DataUpdate -= new AutoRobo.Core.Actions.ActionVariable.VariableDataUpdate(rs_DataUpdate); variable.DataUpdate += new AutoRobo.Core.Actions.ActionVariable.VariableDataUpdate(rs_DataUpdate); InitializeComponent(); }
private string[] GetInputVariableSchema(string name) { ActionVariable var = variableActions.Find(name); if (var is ActionAttributeObject) { return(((IMapAttribute)var.Data).Fields.Select(c => c.DisplayName).ToArray()); } else if (var is ActionTableVariable) { List <string> list = new List <string>(); foreach (DataColumn c in ((DataTable)var.Data).Columns) { list.Add(c.ColumnName); } return(list.ToArray()); } else if (var is ActionArrayVariable) { List <string> list = new List <string>(); list.Add("DataItem"); return(list.ToArray()); } else { throw new ApplicationException(string.Format("{0}对于变量数据类型错误", name)); } }
/// <summary> /// 将字符串中包含的变量用变量值替换, 输入字符串只能是包含整数和字符串变量,其他变量报告异常 /// </summary> /// <param name="input"></param> /// <returns></returns> public string Parse(string input) { var variables = StringHelper.GetVariable(input); if (variables.Count == 0) { return(input); } Dictionary <string, string> dict = new Dictionary <string, string>(); foreach (var varName in variables) { string variable = varName.Substring(1); ActionVariable actionVar = Find(variable); if (actionVar == null) { throw new ApplicationException(string.Format("变量{0}不存在异常", variable)); } if (actionVar is ActionIntegerVariable || actionVar is ActionStringVariable) { dict.Add(varName, actionVar.Data.ToString()); } } StringBuilder sb = new StringBuilder(input); foreach (string key in dict.Keys) { sb.Replace(key, dict[key]); } return(sb.ToString()); }
/// <summary> /// 获取勾选变量名称,多个以逗号分割 /// </summary> /// <returns></returns> public string Get() { List <string> vars = new List <string>(); for (int i = 0; i < CheckedItems.Count; i++) { ActionVariable var = CheckedItems[i] as ActionVariable; vars.Add(var.Name); } return(string.Join(",", vars)); }
public T2 Find <T2>(string variableName) where T2 : ActionVariable { foreach (var action in this) { ActionVariable var = action as ActionVariable; if (var.Name == variableName) { return((T2)var); } } return(null); }
public ActionVariable Find(string variableName) { foreach (var action in this) { ActionVariable var = action as ActionVariable; if (var.Name == variableName) { return(var); } } return(null); }
void arrayCombox_SelectedIndexChanged(object sender, EventArgs e) { ActionFetchText action = (ActionFetchText)base.Action; if (arrayCombox.SelectedItem != null) { ActionVariable var1 = action.VariableModel.Find(arrayCombox.SelectedItem.ToString()); methodComboBox1.Enabled = false; if (var1 is ActionTableVariable) { methodComboBox1.Enabled = true; } } }
private void listView1_SelectedIndexChanged(object sender, EventArgs e) { if (listView1.SelectedItems.Count == 1) { string name = listView1.SelectedItems[0].Text; ActionVariable var = variableActionModel.Find(name); namebox.Text = var.Name; namebox.Enabled = false; typeComboBox.SelectedIndex = GetTypeVale(var); typeComboBox.Enabled = false; directComboBox.SelectedIndex = (int)var.Direction; defaultValueTextBox.Text = var.DefaultValue; model = Mode.Edit; } }
private void okBtn_Click(object sender, EventArgs e) { if (model == Mode.Add) { if (string.IsNullOrEmpty(namebox.Text)) { MessageBox.Show("变量名称不能为空"); return; } if (variableActionModel.Any(c => c.ElementName == namebox.Text)) { MessageBox.Show(string.Format("已包含变量{0},变量名称不能重复", namebox.Text)); return; } if (typeComboBox.SelectedIndex == -1) { MessageBox.Show("请选择变量类型"); return; } if (directComboBox.SelectedIndex == -1) { MessageBox.Show("请选择变量方向"); return; } currentVariable = CreateVariable((VarType)typeComboBox.SelectedIndex); } else { currentVariable = variableActionModel.Find(namebox.Text); } GuiToObject(currentVariable); if (model == Mode.Add) { variableActionModel.Add(currentVariable); ListViewBind(); Reset(); } MessageBox.Show("操作成功"); }
/// <summary> /// 读取数据 /// </summary> private void Load() { ActionVariable var = null; IActionReadRepository rep = Repository as IActionReadRepository; if (rep == null) { throw new ApplicationException("Repository必须实现IActionReadRepository接口"); } ActionXmlSet xmlset = rep.Read(); if (xmlset == null) { return; } if (!string.IsNullOrEmpty(xmlset.XmlAction)) { ModelSerilizer serializer = new ModelSerilizer(); serializer.Deserialize(xmlset.XmlAction); } if (xmlset.IsLoadIdentiy) { InjectIdentity(); } AppContext.Current.ActionModel.ProjectName = xmlset.Name; //构造数据模型 if (!string.IsNullOrEmpty(xmlset.SchemaSet.Schema)) { VariableActionModel.Remove(xmlset.SchemaSet.Name); var map = new DataMap(xmlset.SchemaSet.Name); map.Init(xmlset.SchemaSet.Schema); map.UpdateValues(xmlset.SchemaSet.SchemaValue); //将数据模型转换为输入表变量增加到ModelSet var = new ActionAttributeObject(map, VariableDirection.Input); VariableActionModel.Add(var); } Switch(StatementType.Main); }
private int GetTypeVale(ActionVariable var) { if (var is ActionIntegerVariable) { return(0); } else if (var is ActionStringVariable) { return(1); } else if (var is ActionArrayVariable) { return(2); } else if (var is ActionTableVariable) { return(3); } else { throw new NotImplementedException(); } }
public void Set(ActionVariable var, object value) { Set(var.name, value); }
public T Get <T>(ActionVariable var) { return(Get <T>(var.name)); }
private void GuiToObject(ActionVariable var) { var.Direction = (VariableDirection)directComboBox.SelectedIndex; var.Name = namebox.Text; var.DefaultValue = defaultValueTextBox.Text; }
public override void OnInspectorGUI() { targetSequence = (Sequence)target; if (actionClasses == null) { CollectActionClasses(); } if (targetSequence != null) { GUILayout.Label(targetSequence.name); } else { GUILayout.Label("None"); return; } GUILayout.BeginVertical(GUILayout.MaxWidth(500)); { if (targetSequence.actionStates.Count == 0) { insertState.Push(0); } for (int i = 0; i < targetSequence.actionStates.Count; i++) { GUILayout.BeginVertical(GUI.skin.box); { GUILayout.BeginHorizontal(); { if (GUILayout.Button("Remove")) { removedStates.Push(targetSequence.actionStates[i]); } if (GUILayout.Button("Insert")) { insertState.Push(i); } if (GUILayout.Button("Clone")) { cloneState.Push(targetSequence.actionStates[i]); } } GUILayout.EndHorizontal(); ActionState state = targetSequence.actionStates[i]; state.ActionClass = GetActionName(EditorGUILayout.Popup("Action", GetActionIndex(state.ActionClass), actionClassNames)); state.targetActorName = EditorGUILayout.TextField("Target Actor Name", state.targetActorName); GUILayout.BeginVertical(GUI.skin.box); { ActionVariable[] variables = null; if (variablesByType.TryGetValue(state.ActionClass, out variables)) { for (int v = 0; v < variables.Length; v++) { ActionVariable variable = variables[v]; switch (variable.type) { case VariableType.Item: state.Set(variable, EditorGUILayout.ObjectField(variable.name, state.Get <Item>(variable), typeof(Item), false)); break; case VariableType.Sequence: state.Set(variable, EditorGUILayout.ObjectField(variable.name, state.Get <Sequence>(variable), typeof(Sequence), false)); break; case VariableType.Float: state.Set(variable, EditorGUILayout.FloatField(variable.name, state.Get <float>(variable))); break; case VariableType.String: state.Set(variable, EditorGUILayout.TextField(variable.name, state.Get <string>(variable))); break; case VariableType.Vector2: state.Set(variable, EditorGUILayout.Vector2Field(variable.name, state.Get <Vector2>(variable))); break; } } } } GUILayout.EndVertical(); } GUILayout.EndVertical(); } while (removedStates.Count != 0) { targetSequence.actionStates.Remove(removedStates.Pop()); } while (insertState.Count != 0) { targetSequence.actionStates.Insert(insertState.Pop(), new ActionState()); } if (GUI.changed) { EditorUtility.SetDirty(targetSequence); } } GUILayout.EndVertical(); DrawDefaultInspector(); }