Ejemplo n.º 1
0
        public TParmEditForm(AI_TemplateParmItem item, bool bLockName)
        {
            InitializeComponent();

            // 是否锁定名字不允许编辑
            if (bLockName)
            {
                this.txtName.Enabled  = false;
                this.txtEname.Enabled = false;
            }

            this.Text               = "编辑变量";
            this.m_keyID            = Int32.Parse(item.keyID);
            this.cmbVarType.Enabled = false;
            this.TemplateParmItem   = item;
            // 填写变量名、变量类型
            this.txtName.Text    = item.Name;
            this.txtEname.Text   = item.Ename;
            this.cmbVarType.Text = item.GetTypeString();

            // 填写默认值
            if (this.cmbVarType.Text == "数字" ||
                this.cmbVarType.Text == "字符串")
            {
                this.cmbDefaultValue.Visible = false;
                this.txtDefaultValue.Visible = true;
                this.txtDefaultValue.Text    = item.defaultValue;
                return;
            }
            else
            {
                this.cmbDefaultValue.Visible = true;
                this.txtDefaultValue.Visible = false;
                cmbDefaultValue.Items.Clear();

                EnumType etype = EnumTable.GetEnumTypeByID(item.m_type.ToString());
                cmbDefaultValue.Items.AddRange(etype.Items.ToArray());
                if (item.defaultValue != null && item.defaultValue != "")
                {
                    cmbDefaultValue.SelectedIndex = Int32.Parse((item.defaultValue));
                }
            }
        }
Ejemplo n.º 2
0
        public TParmEditForm(AI_TemplateParmItem item, bool bLockName)
        {
            InitializeComponent();

            // 是否锁定名字不允许编辑
            if(bLockName)
            {
                this.txtName.Enabled = false;
                this.txtEname.Enabled = false;
            }

            this.Text = "编辑变量";
            this.m_keyID = Int32.Parse(item.keyID);
            this.cmbVarType.Enabled = false;
            this.TemplateParmItem = item;
            // 填写变量名、变量类型
            this.txtName.Text = item.Name;
            this.txtEname.Text = item.Ename;
            this.cmbVarType.Text = item.GetTypeString();

            // 填写默认值
            if (this.cmbVarType.Text == "数字" ||
                this.cmbVarType.Text == "字符串")
            {
                this.cmbDefaultValue.Visible = false;
                this.txtDefaultValue.Visible = true;
                this.txtDefaultValue.Text = item.defaultValue;
                return;
            }
            else
            {
                this.cmbDefaultValue.Visible = true;
                this.txtDefaultValue.Visible = false;
                cmbDefaultValue.Items.Clear();

                EnumType etype = EnumTable.GetEnumTypeByID(item.m_type.ToString());
                cmbDefaultValue.Items.AddRange(etype.Items.ToArray());
                if(item.defaultValue!= null && item.defaultValue != "")
                    cmbDefaultValue.SelectedIndex = Int32.Parse((item.defaultValue));
            }
        }
Ejemplo n.º 3
0
        private void buttonX1_Click(object sender, EventArgs e)
        {
            // 检查完整性
            if (txtName.Text == "" || txtEname.Text == "" || (cmbVarType.Enabled && cmbVarType.SelectedItem == null))
            {
                MessageBox.Show("请输入完整", "错误",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 检查重名
            if (this.Other_NameArray.Contains(this.txtName.Text))
            {
                MessageBox.Show("显示名不能有重复", "错误",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (this.Other_ENameArray.Contains(this.txtEname.Text))
            {
                MessageBox.Show("变量名不能有重复", "错误",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 构造模板参数对象
            AI_TemplateParmItem tpnew = new AI_TemplateParmItem();

            if (this.Text == "编辑变量") // 编辑变量
            {
                tpnew       = this.TemplateParmItem;
                tpnew.Name  = this.txtName.Text;
                tpnew.Ename = this.txtEname.Text;
                if (cmbDefaultValue.Visible)
                {
                    // 存枚举默认值
                    if (cmbDefaultValue.SelectedItem != null)
                    {
                        tpnew.defaultValue = (cmbDefaultValue.SelectedItem as EnumItem).m_asParentsPos.ToString();
                    }
                }
                else
                {
                    // 存数字字符串默认值
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
            }
            else  // 新增变量
            {
                tpnew.Name  = this.txtName.Text;
                tpnew.Ename = this.txtEname.Text;
                tpnew.keyID = this.m_keyID.ToString();

                if (cmbVarType.SelectedItem.ToString() == "数字")
                {
                    tpnew.m_type       = -1;
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
                else if (cmbVarType.SelectedItem.ToString() == "字符串")
                {
                    tpnew.m_type       = -2;
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
                else
                {
                    tpnew.m_type = Int32.Parse((cmbVarType.SelectedItem as EnumType).DBID);
                    if (cmbDefaultValue.SelectedItem != null)
                    {
                        tpnew.defaultValue = (cmbDefaultValue.SelectedItem as EnumItem).m_asParentsPos.ToString();
                    }
                }
            }

            this.TemplateParmItem = tpnew;
            this.DialogResult     = DialogResult.OK;
            this.Close();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 选择确定
        /// </summary>
        /// <param name="sender">事件发送者</param>
        /// <param name="e">事件参数</param>
        private void buttonX1_Click(object sender, EventArgs e)
        {
            AI_Action newAction = null;

            if (tabControl1.SelectedTabIndex == 0) // 选择系统Action
            {
                Node currentNode = actionTree.SelectedNode;

                if (currentNode != null && currentNode.Level == 1)
                {
                    AI_Action selectedAction = actionTable[currentNode.Tag.ToString()] as AI_Action;

                    if (selectedAction != null)
                    {
                        // 第一步,检查输入数据正确性
                        for (int i = 0; i < selectedAction.Args.Count; i++)
                        {
                            if (!CheckParameterValid(selectedAction.Args[i].m_type, comboBoxArray[i].Text, checkBoxArray[i].Checked))
                            {
                                MessageBox.Show(string.Format("{0}参数值无效!", labelArray[i].Text), "参数检查",
                                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                                comboBoxArray[i].Focus();

                                return;
                            }
                        }

                        // 第二步,把输入数据存到Action里
                        newAction = selectedAction.Clone() as AI_Action;

                        for (int i = 0; i < newAction.Args.Count; i++)
                        {
                            AI_Parm parm      = newAction.Args[i];
                            object  objSelect = comboBoxArray[i].SelectedItem;

                            if (comboBoxArray[i].Text.StartsWith("<") && comboBoxArray[i].Text.EndsWith(">")) // 模板参数
                            {
                                if (checkBoxArray[i].Checked)
                                {
                                    MessageBox.Show("模板参数不能为变量类型!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    comboBoxArray[i].Focus();

                                    return;
                                }

                                parm.m_IsTemplateParm = true;
                                AI_TemplateParmItem tpitem = objSelect as AI_TemplateParmItem;

                                if (objSelect == null)
                                {
                                    MessageBox.Show("参数错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    comboBoxArray[i].Focus();

                                    return;
                                }

                                int index = AI_TemplateParmTable.GetAIParamTemplateTable().GetAIParamIndex(tpitem.Name);
                                parm.SetTemplateValue(index.ToString());
                            }
                            else // 非模板参数
                            {
                                parm.m_IsTemplateParm = false;

                                if (objSelect == null) // 是填的,不是选的,那就是字符串或者数字了
                                {
                                    parm.m_Value = comboBoxArray[i].Text;
                                }
                                else if (objSelect is EnumItem) // 是枚举
                                {
                                    EnumItem ei = objSelect as EnumItem;
                                    parm.m_Value = ei.m_asParentsPos.ToString();
                                }
                            }

                            // 记录下是否是变量类型
                            parm.IsVar = checkBoxArray[i].Checked;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("请先选择动作!", "参数检查", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
            }
            else // 选择自定义Action
            {
                string functionName = actionNameBox.Text;
                string functionText = codeEditBox.Text;
                string returnValue  = "";

                if (functionName == "")
                {
                    MessageBox.Show("动作名不能为空!", "参数检查", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (functionText == "")
                {
                    MessageBox.Show("自定义脚本不能为空!", "参数检查", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                for (int i = 0; i < 3; i++)
                {
                    if (returnValueBoxArray[i].Text.Trim() != "")
                    {
                        returnValue += string.Format("{0},", returnValueBoxArray[i].Text.Trim());
                    }
                    else
                    {
                        break;
                    }
                }
                returnValue = returnValue.TrimEnd(new char[] { ',' });

                if (returnValue == "")
                {
                    MessageBox.Show("至少需要有一个返回值!", "参数检查", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                int actionID = graphElementID + 2000;

                if (inActionGroup) // 动作组内的自定义动作需要重新分配ID
                {
                    actionID = (graphElementID + 2000) * 10 + groupIndex;
                }

                string englishName = GetFunctionName(functionText);

                if (!CheckScriptValid(functionText)) // 检查脚本有效性
                {
                    MessageBox.Show("脚本必须在最后明确返回执行结果(如:return 1)!", "脚本检查", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (!AIDiagramHelper.CheckScript(codeEditBox, functionText)) // 没有通过脚本检查
                {
                    if (MessageBox.Show("没有通过脚本检查,是否重新编辑脚本?", "脚本检查",
                                        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        return;
                    }
                }

                newAction          = new AI_Action();
                newAction.ActionID = actionID.ToString();
                newAction.Name     = functionName;
                newAction.Info     = functionText;
                newAction.Ename    = englishName;
                newAction.Args     = new List <AI_Parm>();
                newAction.rettype  = returnValue;
            }

            singleAction.Action = newAction;
            editSuccess         = true;
            this.DialogResult   = DialogResult.OK;
            this.Close();
        }
Ejemplo n.º 5
0
        private void buttonX1_Click(object sender, EventArgs e)
        {
            // 检查完整性
            if (txtName.Text == "" || txtEname.Text == "" || (cmbVarType.Enabled && cmbVarType.SelectedItem == null))
            {
                MessageBox.Show("请输入完整", "错误",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 检查重名
            if(this.Other_NameArray.Contains(this.txtName.Text))
            {
                MessageBox.Show("显示名不能有重复", "错误",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (this.Other_ENameArray.Contains(this.txtEname.Text))
            {
                MessageBox.Show("变量名不能有重复", "错误",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // 构造模板参数对象
            AI_TemplateParmItem tpnew = new AI_TemplateParmItem();
            if (this.Text == "编辑变量") // 编辑变量
            {
                tpnew = this.TemplateParmItem;
                tpnew.Name = this.txtName.Text;
                tpnew.Ename = this.txtEname.Text;
                if (cmbDefaultValue.Visible)
                {
                    // 存枚举默认值
                    if (cmbDefaultValue.SelectedItem != null)
                        tpnew.defaultValue = (cmbDefaultValue.SelectedItem as EnumItem).m_asParentsPos.ToString();
                }
                else
                {
                    // 存数字字符串默认值
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
            }
            else  // 新增变量
            {
                tpnew.Name = this.txtName.Text;
                tpnew.Ename = this.txtEname.Text;
                tpnew.keyID = this.m_keyID.ToString();

                if (cmbVarType.SelectedItem.ToString() == "数字")
                {
                    tpnew.m_type = -1;
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
                else if (cmbVarType.SelectedItem.ToString() == "字符串")
                {
                    tpnew.m_type = -2;
                    tpnew.defaultValue = txtDefaultValue.Text;
                }
                else
                {
                    tpnew.m_type = Int32.Parse((cmbVarType.SelectedItem as EnumType).DBID);
                    if (cmbDefaultValue.SelectedItem != null)
                        tpnew.defaultValue = (cmbDefaultValue.SelectedItem as EnumItem).m_asParentsPos.ToString();
                }
            }

            this.TemplateParmItem = tpnew;
            this.DialogResult = DialogResult.OK;
            this.Close();
        }