Example #1
0
 /// <summary>
 /// Fuegt einen neuen Baustein an der uebergebenen Position ein.
 /// </summary>
 /// <param name="pos">Position des neuen Bausteins.</param>
 /// <param name="stm">Einzufuegender Baustein.</param>
 public void addBeforeStm(Statement pos, Statement stm)
 {
     if (pos == null)
     {
         StmList.AddBefore(StmList.Last, stm);
     }
     else
     {
         StmList.AddBefore(StmList.Find(pos), stm);
     }
     stm.Parent = this;
     stm.Indent = this.Indent + 1;
 }
Example #2
0
        /// <summary>
        /// Entfernt den uebergebenen Baustein aus der stmList.
        /// </summary>
        /// <param name="stm">Zu entfernender Baustein.</param>
        public void removeStm(Statement stm)
        {
            stm.Parent = null;
            stm.Indent = 0;
            if (stm is ListStm)
            {
                for (int i = (stm as ListStm).StmList.Count - 2; i  >= 0; i--)
                {

                    (stm as ListStm).StmList.ElementAt<Statement>(i).Indent = this.Indent + 1;
                    this.addBeforeStm(stm, (stm as ListStm).StmList.ElementAt<Statement>(i));
                    (stm as ListStm).StmList.Remove((stm as ListStm).StmList.ElementAt<Statement>(i));
                }
            }
            stmList.Remove(stm);
        }
Example #3
0
        /// <summary>
        /// Prueft ob sich der uebergebene Baustein in der stmList befindet.
        /// </summary>
        /// <param name="stm">Gesuchter Baustein.</param>
        /// <param name="listStm">Zu durchsuchende Liste.</param>
        /// <returns>True, wenn der Baustein gefunden wurde. False, wenn nicht.</returns>
        public bool stmListContains(Statement stm, ListStm listStm)
        {
            if (stm == listStm)
                return true;

            foreach (Statement x in listStm.StmList)
            {
                if (x is ListStm)
                {
                    if (stmListContains(stm, x as ListStm))
                        return true;
                }
                else if(x == stm)
                {
                    return true;
                }
            }
            return false;
        }
Example #4
0
        /// <summary>
        /// Aktualisiert die Schriftfarbe des Pseudocodes.
        /// </summary>
        /// <param name="s"></param>
        private void updateFontStyle(Statement s)
        {
            bool foundOldStm = false;
            bool foundNewStm = false;
            int indexOld = Config.NOT_USED;
            int indexNew = Config.NOT_USED;
            foreach(Tuple<Statement, string> x in _stms)
            {
                if(x.Item2 == Config.TEXT_RED)
                {
                    indexOld = _stms.IndexOf(x);
                    foundOldStm = true;
                }
                if(x.Item1 == s)
                {
                    indexNew = _stms.IndexOf(x);
                    foundNewStm = true;
                }
                if(foundOldStm && foundNewStm)
                {
                    break;
                }
            }
            if (indexNew != Config.NOT_USED)
            {
                Tuple<Statement, string> tmpTuple = _stms.ElementAt(indexNew);
                _stms.Insert(indexNew, new Tuple<Statement, string>(_stms.ElementAt<Tuple<Statement, string>>(indexNew).Item1, Config.TEXT_RED));
                _stms.Remove(tmpTuple);
            }

            if (indexOld != Config.NOT_USED)
            {
                Tuple<Statement, string> tmpTuple = _stms.ElementAt(indexOld);
                _stms.Insert(indexOld, new Tuple<Statement, string>(_stms.ElementAt(indexOld).Item1, Config.TEXT_NORMAL));
                _stms.Remove(tmpTuple);
            }
        }