コード例 #1
0
ファイル: Bookmarks.cs プロジェクト: ikvm/pascalabcnet
        public static void InvokeAddCondition()
        {
            if (bcf == null)
            {
                bcf = new BreakpointConditionForm();
                Form1StringResources.SetTextForAllControls(bcf);
            }
            BreakpointInfo bi = null;
            Breakpoint     br = breakpoints[cur_bookmark];

            if (breakpoints_conditions.TryGetValue(br, out bi))
            {
                bcf.IsConditionEnabled = bi.enabled;
                bcf.Condition          = bi.condition;
                if (bi.kind == hit_kind.is_true)
                {
                    bcf.IfTrue = true;
                }
                else
                {
                    bcf.IfChanged = true;
                }
            }
            else
            {
                bcf.IsConditionEnabled = true;
                bcf.Condition          = "";
                bcf.IfTrue             = true;
            }
            if (bcf.ShowDialog() == DialogResult.OK)
            {
                if (bi == null)
                {
                    bi = new BreakpointInfo();
                    breakpoints_conditions.Add(br, bi);
                }
                bi.enabled   = bcf.IsConditionEnabled;
                bi.condition = bcf.Condition;
                if (bcf.IfTrue)
                {
                    bi.kind = hit_kind.is_true;
                }
                else
                {
                    bi.kind = hit_kind.changed;
                }
                cur_bookmark.IsOnCondition = bi.enabled && !string.IsNullOrEmpty(bi.condition.Trim(' ', '\t'));
            }
        }
コード例 #2
0
ファイル: Bookmarks.cs プロジェクト: ikvm/pascalabcnet
        public static bool MustHit(Breakpoint br)
        {
            BreakpointInfo bi = null;

            if (breakpoints_conditions.TryGetValue(br, out bi))
            {
                if (!bi.enabled)
                {
                    return(true);
                }
                string cond = bi.condition.Trim(' ', '\t');
                if (string.IsNullOrEmpty(cond))
                {
                    return(true);
                }
                try
                {
                    RetValue res = WorkbenchServiceFactory.DebuggerManager.Evaluate(cond);
                    if (bi.kind == hit_kind.is_true)
                    {
                        if (res.prim_val != null && res.prim_val is bool)
                        {
                            if ((bool)res.prim_val)
                            {
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else if (res.obj_val != null && res.obj_val.IsPrimitive && res.obj_val.PrimitiveValue is bool)
                        {
                            if ((bool)res.obj_val.PrimitiveValue)
                            {
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(true);
                        }
                    }
                    else
                    {
                        if (res.obj_val != null && res.obj_val.IsPrimitive)
                        {
                            res.prim_val = res.obj_val.PrimitiveValue;
                            res.obj_val  = null;
                        }
                        if (!WorkbenchServiceFactory.DebuggerManager.evaluator.IsEqual(res, bi.val))
                        {
                            bi.val = res;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                catch
                {
                    return(true);
                }
            }
            else
            {
                return(true);
            }
        }
コード例 #3
0
ファイル: Bookmarks.cs プロジェクト: lisiynos/pascalabcnet
 public static void InvokeAddCondition()
 {
 	if (bcf == null)
 	{
 		bcf = new BreakpointConditionForm();
 		Form1StringResources.SetTextForAllControls(bcf);
 	}
 	BreakpointInfo bi = null;
 	Breakpoint br = breakpoints[cur_bookmark];
 	if (breakpoints_conditions.TryGetValue(br,out bi))
 	{
 		bcf.IsConditionEnabled = bi.enabled;
 		bcf.Condition = bi.condition;
 		if (bi.kind == hit_kind.is_true)
 			bcf.IfTrue = true;
 		else
 			bcf.IfChanged = true;
 	}
 	else
 	{
 		bcf.IsConditionEnabled = true;
 		bcf.Condition = "";
 		bcf.IfTrue = true;
 	}
 	if (bcf.ShowDialog() == DialogResult.OK)
 	{
 		if (bi == null)
 		{
 			bi = new BreakpointInfo();
 			breakpoints_conditions.Add(br,bi);
 		}
 		bi.enabled = bcf.IsConditionEnabled;
 		bi.condition = bcf.Condition;
 		if (bcf.IfTrue)
 			bi.kind = hit_kind.is_true;
 		else
 			bi.kind = hit_kind.changed;
 		cur_bookmark.IsOnCondition = bi.enabled && !string.IsNullOrEmpty(bi.condition.Trim(' ','\t'));
 		
 	}
 }