コード例 #1
0
ファイル: TokenViewer.xaml.cs プロジェクト: Alleshka/Gidra
        private void AnalizeToken()
        {
            var list = _collector.GetHistory();                    // Получаем список токенов

            list = list.OrderBy(x => x.ProcessStartTime).ToList(); // Выстраиваем по времени начала

            try
            {
                MinDuration = list.Min(x => x.ProcessEndTime - x.ProcessStartTime); // Находим минимальную продолжительность
            }
            catch (InvalidOperationException ex)
            {
                throw new InvalidOperationException("TokenViewer: список токенов содержит 0 токенов");
            }

            // Проставляем блоки
            foreach (var l in list)
            {
                AddBlock(l);
            }

            // Проставляем связи (так как пока нет параллельности, идут друг за другом)
            int count = MainWindow.Children.Count; // Смотрим количество блоков из которых пойдёт связь

            this.Width = (count + 1) * ProcedureWPF.DEFAULT_WIDTH;

            for (int i = 0; i < count; i++)
            {
                if (i < count - 1)
                {
                    // Берём начальный и конечный блоки
                    ProcedureWPF Start = MainWindow.Children[i] as ProcedureWPF;
                    ProcedureWPF End   = MainWindow.Children[i + 1] as ProcedureWPF;

                    // Создаём связь
                    ProcConnectionWPF connectionWPF = new ProcConnectionWPF(Start, End, new Point(ProcedureWPF.DEFAULT_WIDTH, ProcedureWPF.DEFAULT_HEIGHT / 2), new Point(ProcedureWPF.DEFAULT_WIDTH, ProcedureWPF.DEFAULT_HEIGHT / 2));

                    // Добавляем связь к ресурсам
                    Start.AddOutPutConnection(connectionWPF);
                    End.AddInPutConnection(connectionWPF);

                    // Добавляем связь на область
                    MainWindow.Children.Add(connectionWPF);
                }
            }
        }
コード例 #2
0
ファイル: ProjectSaver.cs プロジェクト: Alleshka/Gidra
        // Загрузка связи с процедурами
        private ProcConnectionWPF LoadProcConnection(SaveProcedureConnection connectproc, Dictionary <Guid, ProcedureWPF> worksavelistproc, StartBlockWPF startBlock, EndBlockWPF endBlock)
        {
            ProcedureWPF procStart = null;
            ProcedureWPF procEnd   = null;

            if (connectproc.StartID.CompareTo(new Guid()) != 0)
            {
                procStart = worksavelistproc[connectproc.StartID];
            }

            if (connectproc.EndID.CompareTo(new Guid()) != 0)
            {
                procEnd = worksavelistproc[connectproc.EndID];
            }

            ProcConnectionWPF connection = null;

            if (procStart != null && procEnd != null)
            {
                connection = new ProcConnectionWPF(procStart, procEnd, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);

                procStart.AddOutPutConnection(connection);
                procEnd.AddInPutConnection(connection);
            }
            else
            {
                if (procStart == null)
                {
                    connection = new ProcConnectionWPF(startBlock, procEnd, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);
                    procEnd.AddInPutConnection(connection);
                    startBlock.AddOutPutConnection(connection);
                }

                if (procEnd == null)
                {
                    connection = new ProcConnectionWPF(procStart, endBlock, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);
                    procStart.AddOutPutConnection(connection);
                    endBlock.AddInPutConnection(connection);
                }
            }

            return(connection);
        }