// Загрузка связи с процедурами 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); }
/// <summary> /// Производит сохранение информации о связи с процедурами /// </summary> /// <param name="element"></param> /// <param name="processes"></param> /// <param name="saveProcess"></param> private void SaveProcConnection(UIElement element, Dictionary <ProcedureWPF, Guid> procedures, SaveProcess saveProcess) { var connection = element as ProcConnectionWPF; // Достаём информацию о связи BlockWPF Start = connection.StartBlock; // Информация о начальном блоке в связи BlockWPF End = connection.EndBlock; // Информация о конечном блоке в связи var StartProcedure = SaveBlockProcedure(Start, procedures, saveProcess); // Сохраняем информацию о начальной процедуре var EndProcedure = SaveBlockProcedure(End, procedures, saveProcess); // Сохраняем информацию о конецной процедуре // Формируем информацию о связи SaveProcedureConnection connect = new SaveProcedureConnection() { StartID = StartProcedure.Id, EndID = EndProcedure.Id, StartPort = connection.StartPort, EndPort = connection.EndPort, RelativeStartPosition = connection.RelateStart, RelativeEndPosition = connection.RelateEnd }; // Сохраняем информацию saveProcess.ProcedureConnectonList.Add(connect); }