private static void SyncBulletAgendaSlide(PowerPointSlide refSlide, List<AgendaSection> sections, AgendaSection currentSection, List<string> deletedShapeNames, PowerPointSlide targetSlide) { SyncShapesFromReferenceSlide(refSlide, targetSlide, deletedShapeNames); var referenceContentShape = refSlide.GetShape(AgendaShape.WithPurpose(ShapePurpose.ContentShape)); var targetContentShape = targetSlide.GetShape(AgendaShape.WithPurpose(ShapePurpose.ContentShape)); var bulletFormats = BulletFormats.ExtractFormats(referenceContentShape); Graphics.SetText(targetContentShape, sections.Where(section => section.Index > 1) .Select(section => section.Name)); Graphics.SyncShape(referenceContentShape, targetContentShape, pickupTextContent: false, pickupTextFormat: false); ApplyBulletFormats(targetContentShape.TextFrame2.TextRange, bulletFormats, currentSection); targetSlide.DeletePlaceholderShapes(); }
private static void AdjustBulletReferenceSlideContent(PowerPointSlide refSlide) { int numberOfSections = NumberOfSections; // post process bullet points var contentHolder = refSlide.GetShape(AgendaShape.WithPurpose(ShapePurpose.ContentShape)); var textRange = contentHolder.TextFrame2.TextRange; while (textRange.Paragraphs.Count < numberOfSections) { textRange.InsertAfter("\r "); } while (textRange.Paragraphs.Count > 3 && textRange.Paragraphs.Count > numberOfSections) { textRange.Paragraphs[textRange.Paragraphs.Count].Delete(); } for (var i = 4; i <= textRange.Paragraphs.Count; i++) { textRange.Paragraphs[i].ParagraphFormat.Bullet.Type = MsoBulletType.msoBulletNone; } }
/// <summary> /// Searches for the visual agenda image shape that corresponds to the given section index in the slide and returns it. /// </summary> private static Shape FindShapeCorrespondingToSection(PowerPointSlide inSlide, int sectionIndex) { return inSlide.GetShape(AgendaShape.MeetsConditions(shape => shape.ShapePurpose == ShapePurpose.VisualAgendaImage && sectionIndex == shape.Section.Index)); }
private static bool InvalidBulletAgendaReferenceSlide(PowerPointSlide refSlide) { var contentHolder = refSlide.GetShape(AgendaShape.WithPurpose(ShapePurpose.ContentShape)); return (contentHolder == null || contentHolder.TextFrame2.TextRange.Paragraphs.Count < 3); }