Ejemplo n.º 1
0
        public override bool IsValid(int Line, string[] Lines, NormalLabel Label)
        {
            if (Label == null)
            {
                return(false);
            }
            if (Lines == null || Lines.Length <= 0)
            {
                return(false);
            }
            if (Line < 0 || Line >= Lines.Length)
            {
                return(false);
            }

            if (!SyntaxIsCorrect(Lines[Line]))
            {
                return(false);
            }

            for (int i = 0; i < Line; i++)
            {
                if (Label.SyntaxIsCorrect(Lines[i]))
                {
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        public override bool IsValid(int Line, string[] Lines, NormalLabel Label)
        {
            if (Lines == null || Lines.Length <= 0)
            {
                return(false);
            }
            if (Line < 0 || Line >= Lines.Length)
            {
                return(false);
            }

            return(SyntaxIsCorrect(Lines[Line]));
        }
        /// <summary>
        /// Expression member that's using our descriptor was clicked.
        /// </summary>
        /// <param name="container"></param>
        public void OnClick(ExpressionMemberContainer container, NormalLabel l, Point curPos, ExpressionMemberValueEditorActivationMode mode)
        {
            if (   mode == ExpressionMemberValueEditorActivationMode.Plus01
                || mode == ExpressionMemberValueEditorActivationMode.Plus
                || mode == ExpressionMemberValueEditorActivationMode.Plus10
                || mode == ExpressionMemberValueEditorActivationMode.Plus100
                || mode == ExpressionMemberValueEditorActivationMode.Plus1000
                || mode == ExpressionMemberValueEditorActivationMode.Minus01
                || mode == ExpressionMemberValueEditorActivationMode.Minus
                || mode == ExpressionMemberValueEditorActivationMode.Minus10
                || mode == ExpressionMemberValueEditorActivationMode.Minus100
                || mode == ExpressionMemberValueEditorActivationMode.Minus1000)
            {
                if ((container.Member as ExpressionMemberCheck == null)
                    && (Type == ExpressionMemberValueType.VarDouble
                     || Type == ExpressionMemberValueType.VarInteger
                     || Type == ExpressionMemberValueType.VarBool))
                {
                    bool changed = false;
                    double delta = 0.0;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus01		? 0.1	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus		? 1		: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus10		? 10	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus100	? 100	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus1000	? 1000	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus01	? -0.1	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus		? -1	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus10	? -10	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus100	? -100	: delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus1000	? -1000	: delta;

                    switch (Type)
                    {
                        case ExpressionMemberValueType.VarBool:
                            int tmpBool;
                            if (Helper.IntTryParse(container.GetValue(), out tmpBool))
                            {
                                if (tmpBool == 0)
                                    tmpBool = 1;
                                else
                                    tmpBool = 0;
                                container.SetValue(tmpBool.ToString());
                                changed = true;
                            }
                            break;
                        case ExpressionMemberValueType.VarDouble:
                            double tmpDouble;
                            if (Helper.DoubleTryParse(container.GetValue(), out tmpDouble))
                            {
                                tmpDouble+=delta;
                                if (Min != null && tmpDouble < (double)Min)
                                        tmpDouble = Max != null ? (double)Max : (double)Min;
                                if (Max != null && tmpDouble > (double)Max)
                                    tmpDouble = Min != null ? (double)Min : (double)Max;
                                container.SetValue(Helper.DoubleToString(tmpDouble));
                                changed = true;
                            }
                            break;
                        case ExpressionMemberValueType.VarInteger:
                            int tmpInt;
                            if (Helper.IntTryParse(container.GetValue(), out tmpInt))
                            {
                                tmpInt += (int)Math.Round(delta);
                                if (Min != null && tmpInt < (int)Min)
                                        tmpInt = Max != null ? (int)Max : (int)Min;
                                if (Max != null && tmpInt > (int)Max)
                                    tmpInt = Min != null ? (int)Min : (int)Max;
                                container.SetValue(tmpInt.ToString());
                                changed = true;
                            }
                            break;
                    }

                    if (changed)
                    {
                        Mission.Current.UpdateStatementTree();
                        Mission.Current.RegisterChange("Expression member value changed");
                    }
                    return;
                }
                else
                {
                    return;
                }
            }

            ContextMenuStrip curCMS;
            if ((curCMS = Editor.PrepareContextMenuStrip(container, mode)) != null)
            {
                if (mode == ExpressionMemberValueEditorActivationMode.NextMenuItem)
                {
                    if ((bool)curCMS.Tag)
                    {
                        ShowEditingDialog(container);
                        return;
                    }

                    bool next = false;
                    foreach (ToolStripItem item in curCMS.Items)
                        if (OnClick_RecursivelyActivate(item, ref next, true))
                        {
                            curCMS.Close();
                            return;
                        }
                    if (curCMS.Items[0] is ToolStripMenuItem && ((ToolStripMenuItem)curCMS.Items[0]).DropDownItems.Count > 0)
                        ((ToolStripMenuItem)curCMS.Items[0]).DropDownItems[0].PerformClick();
                    else
                        curCMS.Items[0].PerformClick();
                    curCMS.Close();
                    return;
                }
                if (mode == ExpressionMemberValueEditorActivationMode.PreviousMenuItem)
                {
                    if ((bool)curCMS.Tag)
                    {
                        ShowEditingDialog(container);
                        return;
                    }

                    bool next = false;
                    for(int i=curCMS.Items.Count-1;i>=0;i--)
                        if (OnClick_RecursivelyActivate(curCMS.Items[i], ref next, false))
                        {
                            curCMS.Close();
                            return;
                        }
                    if (curCMS.Items[curCMS.Items.Count - 1] is ToolStripMenuItem && ((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).DropDownItems.Count > 0)
                        ((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).
                            DropDownItems[((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).
                            DropDownItems.Count - 1].
                            PerformClick();
                    else
                        curCMS.Items[curCMS.Items.Count - 1].PerformClick();
                    curCMS.Close();
                    return;
                }
                curCMS.Show(curPos);
            }
            else
                ShowEditingDialog(container);
        }
 /// <summary>
 /// Routine to be done when label control assigned to this member is clicked
 /// </summary>
 public void OnClick(ExpressionMemberContainer container, NormalLabel l, Point curPos, ExpressionMemberValueEditorActivationMode mode)
 {
     ValueDescription.OnClick(container, l, curPos, mode);
 }
 /// <summary>
 /// Routine to be done when label control assigned to this member is clicked
 /// </summary>
 public void OnClick(ExpressionMemberContainer container, NormalLabel l, Point curPos, ExpressionMemberValueEditorActivationMode mode)
 {
     ValueDescription.OnClick(container, l, curPos, mode);
 }
        /// <summary>
        /// Expression member that's using our descriptor was clicked.
        /// </summary>
        /// <param name="container"></param>
        public void OnClick(ExpressionMemberContainer container, NormalLabel l, Point curPos, ExpressionMemberValueEditorActivationMode mode)
        {
            if (mode == ExpressionMemberValueEditorActivationMode.Plus01 ||
                mode == ExpressionMemberValueEditorActivationMode.Plus ||
                mode == ExpressionMemberValueEditorActivationMode.Plus10 ||
                mode == ExpressionMemberValueEditorActivationMode.Plus100 ||
                mode == ExpressionMemberValueEditorActivationMode.Plus1000 ||
                mode == ExpressionMemberValueEditorActivationMode.Minus01 ||
                mode == ExpressionMemberValueEditorActivationMode.Minus ||
                mode == ExpressionMemberValueEditorActivationMode.Minus10 ||
                mode == ExpressionMemberValueEditorActivationMode.Minus100 ||
                mode == ExpressionMemberValueEditorActivationMode.Minus1000)
            {
                if ((container.Member as ExpressionMemberCheck == null) &&
                    (Type == ExpressionMemberValueType.VarDouble ||
                     Type == ExpressionMemberValueType.VarInteger ||
                     Type == ExpressionMemberValueType.VarBool))
                {
                    bool   changed = false;
                    double delta   = 0.0;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus01                ? 0.1   : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus          ? 1             : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus10                ? 10    : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus100       ? 100   : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Plus1000      ? 1000  : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus01       ? -0.1  : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus         ? -1    : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus10       ? -10   : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus100      ? -100  : delta;
                    delta = mode == ExpressionMemberValueEditorActivationMode.Minus1000     ? -1000 : delta;

                    switch (Type)
                    {
                    case ExpressionMemberValueType.VarBool:
                        int tmpBool;
                        if (Helper.IntTryParse(container.GetValue(), out tmpBool))
                        {
                            if (tmpBool == 0)
                            {
                                tmpBool = 1;
                            }
                            else
                            {
                                tmpBool = 0;
                            }
                            container.SetValue(tmpBool.ToString());
                            changed = true;
                        }
                        break;

                    case ExpressionMemberValueType.VarDouble:
                        double tmpDouble;
                        if (Helper.DoubleTryParse(container.GetValue(), out tmpDouble))
                        {
                            tmpDouble += delta;
                            if (Min != null && tmpDouble < (double)Min)
                            {
                                tmpDouble = Max != null ? (double)Max : (double)Min;
                            }
                            if (Max != null && tmpDouble > (double)Max)
                            {
                                tmpDouble = Min != null ? (double)Min : (double)Max;
                            }
                            container.SetValue(Helper.DoubleToString(tmpDouble));
                            changed = true;
                        }
                        break;

                    case ExpressionMemberValueType.VarInteger:
                        int tmpInt;
                        if (Helper.IntTryParse(container.GetValue(), out tmpInt))
                        {
                            tmpInt += (int)Math.Round(delta);
                            if (Min != null && tmpInt < (int)Min)
                            {
                                tmpInt = Max != null ? (int)Max : (int)Min;
                            }
                            if (Max != null && tmpInt > (int)Max)
                            {
                                tmpInt = Min != null ? (int)Min : (int)Max;
                            }
                            container.SetValue(tmpInt.ToString());
                            changed = true;
                        }
                        break;
                    }

                    if (changed)
                    {
                        Mission.Current.UpdateStatementTree();
                        Mission.Current.RegisterChange("Expression member value changed");
                    }
                    return;
                }
                else
                {
                    return;
                }
            }

            ContextMenuStrip curCMS;

            if ((curCMS = Editor.PrepareContextMenuStrip(container, mode)) != null)
            {
                if (mode == ExpressionMemberValueEditorActivationMode.NextMenuItem)
                {
                    if ((bool)curCMS.Tag)
                    {
                        ShowEditingDialog(container);
                        return;
                    }

                    bool next = false;
                    foreach (ToolStripItem item in curCMS.Items)
                    {
                        if (OnClick_RecursivelyActivate(item, ref next, true))
                        {
                            curCMS.Close();
                            return;
                        }
                    }
                    if (curCMS.Items[0] is ToolStripMenuItem && ((ToolStripMenuItem)curCMS.Items[0]).DropDownItems.Count > 0)
                    {
                        ((ToolStripMenuItem)curCMS.Items[0]).DropDownItems[0].PerformClick();
                    }
                    else
                    {
                        curCMS.Items[0].PerformClick();
                    }
                    return;
                }
                if (mode == ExpressionMemberValueEditorActivationMode.PreviousMenuItem)
                {
                    if ((bool)curCMS.Tag)
                    {
                        ShowEditingDialog(container);
                        return;
                    }

                    bool next = false;
                    for (int i = curCMS.Items.Count - 1; i >= 0; i--)
                    {
                        if (OnClick_RecursivelyActivate(curCMS.Items[i], ref next, false))
                        {
                            curCMS.Close();
                            return;
                        }
                    }
                    if (curCMS.Items[curCMS.Items.Count - 1] is ToolStripMenuItem && ((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).DropDownItems.Count > 0)
                    {
                        ((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).
                        DropDownItems[((ToolStripMenuItem)curCMS.Items[curCMS.Items.Count - 1]).
                                      DropDownItems.Count - 1].
                        PerformClick();
                    }
                    else
                    {
                        curCMS.Items[curCMS.Items.Count - 1].PerformClick();
                    }
                    curCMS.Close();
                    return;
                }
                curCMS.Show(curPos);
            }
            else
            {
                ShowEditingDialog(container);
            }
        }
 /// <summary>
 /// Call routine to be done when label control assigned to this member is clicked.
 /// </summary>
 public void OnClick(NormalLabel l, Point curPos, ExpressionMemberValueEditorActivationMode mode)
 {
     Member.OnClick(this, l, curPos, mode);
 }