#pragma warning disable 0618 #region Main Synchronisation Function /// <summary> /// Call the function like this for example: /// SynchroniseSlidesUsingTemplate(slideTracker, refSlide, () => new VisualAgendaTemplate()); /// generateTemplate is a function that returns a newly created template. /// </summary> private static void SynchroniseSlidesUsingTemplate(SlideSelectionTracker slideTracker, PowerPointSlide refSlide, Func<AgendaTemplate> generateTemplate) { var sections = Sections; var deletedShapeNames = RetrieveTrackedDeletions(refSlide); refSlide.DeleteSlideNumberShapes(); refSlide.MakeShapeNamesNonDefault(); refSlide.MakeShapeNamesUnique(shape => !AgendaShape.IsAnyAgendaShape(shape) && !PowerPointSlide.IsTemplateSlideMarker(shape)); ScrambleSlideSectionNames(); foreach (var currentSection in sections) { var template = generateTemplate(); ConfigureTemplate(currentSection, template); var templateTable = RebuildSectionUsingTemplate(slideTracker, currentSection, template); SynchroniseAllSlides(template, templateTable, refSlide, sections, deletedShapeNames, currentSection); } TrackShapesInSlide(refSlide); }