Пример #1
0
 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();
 }
Пример #2
0
        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));
            }
        }
Пример #3
0
        /// <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());
        }
Пример #4
0
        /// <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));
        }
Пример #5
0
 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);
 }
Пример #6
0
 public ActionVariable Find(string variableName)
 {
     foreach (var action in this)
     {
         ActionVariable var = action as ActionVariable;
         if (var.Name == variableName)
         {
             return(var);
         }
     }
     return(null);
 }
Пример #7
0
        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;
                }
            }
        }
Пример #8
0
 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;
     }
 }
Пример #9
0
        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("操作成功");
        }
Пример #10
0
        /// <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);
        }
Пример #11
0
 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();
     }
 }
Пример #12
0
 public void Set(ActionVariable var, object value)
 {
     Set(var.name, value);
 }
Пример #13
0
 public T Get <T>(ActionVariable var)
 {
     return(Get <T>(var.name));
 }
Пример #14
0
 private void GuiToObject(ActionVariable var)
 {
     var.Direction    = (VariableDirection)directComboBox.SelectedIndex;
     var.Name         = namebox.Text;
     var.DefaultValue = defaultValueTextBox.Text;
 }
Пример #15
0
    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();
    }