public static void AppendSlidesFromFile(this PowerPointProcessor target, string filePath) { if (!File.Exists(filePath)) { return; } try { var thread = new Thread(delegate() { var activeSlideIndex = target.GetActiveSlideIndex(); var presentation = target.PowerPointObject.Presentations.Open(filePath, WithWindow: MsoTriState.msoFalse); target.AppendSlide(presentation, -1, indexToPaste: activeSlideIndex); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } }
public static void AppendCalendar(this PowerPointProcessor target, CalendarOutputData monthOutputData, Presentation destinationPresentation = null) { var presentationTemplatePath = BusinessObjects.Instance.OutputManager.GetCalendarFile(monthOutputData.ShowLogo, monthOutputData.DayOutput.Length); if (String.IsNullOrEmpty(presentationTemplatePath) || !File.Exists(presentationTemplatePath)) { return; } try { var thread = new Thread(delegate() { monthOutputData.PrepareDayLogoPaths(); var daysCount = monthOutputData.DayOutput.Length; MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { if (shape.HasTextFrame == MsoTriState.msoTrue) { shape.TextFrame.TextRange.Font.Color.RGB = monthOutputData.SlideRGB; shape.TextFrame.TextRange.Paragraphs().Font.Color.RGB = monthOutputData.SlideRGB; } for (int i = 1; i <= shape.Tags.Count; i++) { var shapeName = shape.Tags.Name(i).Trim(); switch (shapeName) { case "LOGO": if (!string.IsNullOrEmpty(monthOutputData.LogoFile)) { var logoShape = slide.Shapes.AddPicture(monthOutputData.LogoFile, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); logoShape.Top = shape.Top; logoShape.Left = shape.Left; logoShape.Width = shape.Width; logoShape.Height = shape.Height; if (SlideSettingsManager.Instance.SlideSettings.SlideSize.Orientation == SlideOrientationEnum.Portrait) { logoShape.Rotation = 90; } } shape.Visible = MsoTriState.msoFalse; break; case "HEADERTAG": shape.TextFrame.TextRange.Text = monthOutputData.SlideTitle; break; case "PREPAREDFOR": if (string.IsNullOrEmpty(monthOutputData.BusinessName) && string.IsNullOrEmpty(monthOutputData.DecisionMaker)) { shape.Visible = MsoTriState.msoFalse; } else { shape.Visible = MsoTriState.msoCTrue; } break; case "ADVORDEC1": if (string.IsNullOrEmpty(monthOutputData.BusinessName) && string.IsNullOrEmpty(monthOutputData.DecisionMaker)) { shape.Visible = MsoTriState.msoFalse; } else { shape.Visible = MsoTriState.msoCTrue; if (string.IsNullOrEmpty(monthOutputData.BusinessName)) { shape.TextFrame.TextRange.Text = monthOutputData.DecisionMaker; } else { shape.TextFrame.TextRange.Text = monthOutputData.BusinessName; } } break; case "DECNAME2": if (string.IsNullOrEmpty(monthOutputData.DecisionMaker)) { shape.Visible = MsoTriState.msoFalse; } else { shape.Visible = MsoTriState.msoCTrue; shape.TextFrame.TextRange.Text = monthOutputData.DecisionMaker; } break; case "MONTHYEAR": shape.TextFrame.TextRange.Text = monthOutputData.MonthText; break; case "COMMENTS": shape.TextFrame.TextRange.Text = monthOutputData.Comments; break; case "TAGA": shape.TextFrame.TextRange.Text = monthOutputData.TagA; break; case "TAGB": shape.TextFrame.TextRange.Text = monthOutputData.TagB; break; case "TAGC": shape.TextFrame.TextRange.Text = monthOutputData.TagC; break; case "TAGD": shape.TextFrame.TextRange.Text = monthOutputData.TagD; break; case "DAY1": case "1-1": if (daysCount > 0) { SetDayRecordTagValue(monthOutputData, slide, shape, 1); } break; case "DAY2": case "2-1": if (daysCount > 1) { SetDayRecordTagValue(monthOutputData, slide, shape, 2); } break; case "DAY3": case "3-1": if (daysCount > 2) { SetDayRecordTagValue(monthOutputData, slide, shape, 3); } break; case "DAY4": case "4-1": if (daysCount > 3) { SetDayRecordTagValue(monthOutputData, slide, shape, 4); } break; case "DAY5": case "5-1": if (daysCount > 4) { SetDayRecordTagValue(monthOutputData, slide, shape, 5); } break; case "DAY6": case "6-1": if (daysCount > 5) { SetDayRecordTagValue(monthOutputData, slide, shape, 6); } break; case "DAY7": case "7-1": if (daysCount > 6) { SetDayRecordTagValue(monthOutputData, slide, shape, 7); } break; case "DAY8": case "8-1": if (daysCount > 7) { SetDayRecordTagValue(monthOutputData, slide, shape, 8); } break; case "DAY9": case "9-1": if (daysCount > 8) { SetDayRecordTagValue(monthOutputData, slide, shape, 9); } break; case "DAY10": case "10-1": if (daysCount > 9) { SetDayRecordTagValue(monthOutputData, slide, shape, 10); } break; case "DAY11": case "11-1": if (daysCount > 10) { SetDayRecordTagValue(monthOutputData, slide, shape, 11); } break; case "DAY12": case "12-1": if (daysCount > 11) { SetDayRecordTagValue(monthOutputData, slide, shape, 12); } break; case "DAY13": case "13-1": if (daysCount > 12) { SetDayRecordTagValue(monthOutputData, slide, shape, 13); } break; case "DAY14": case "14-1": if (daysCount > 13) { SetDayRecordTagValue(monthOutputData, slide, shape, 14); } break; case "DAY15": case "15-1": if (daysCount > 14) { SetDayRecordTagValue(monthOutputData, slide, shape, 15); } break; case "DAY16": case "16-1": if (daysCount > 15) { SetDayRecordTagValue(monthOutputData, slide, shape, 16); } break; case "DAY17": case "17-1": if (daysCount > 16) { SetDayRecordTagValue(monthOutputData, slide, shape, 17); } break; case "DAY18": case "18-1": if (daysCount > 17) { SetDayRecordTagValue(monthOutputData, slide, shape, 18); } break; case "DAY19": case "19-1": if (daysCount > 18) { SetDayRecordTagValue(monthOutputData, slide, shape, 19); } break; case "DAY20": case "20-1": if (daysCount > 19) { SetDayRecordTagValue(monthOutputData, slide, shape, 20); } break; case "DAY21": case "21-1": if (daysCount > 20) { SetDayRecordTagValue(monthOutputData, slide, shape, 21); } break; case "DAY22": case "22-1": if (daysCount > 21) { SetDayRecordTagValue(monthOutputData, slide, shape, 22); } break; case "DAY23": case "23-1": if (daysCount > 22) { SetDayRecordTagValue(monthOutputData, slide, shape, 23); } break; case "DAY24": case "24-1": if (daysCount > 23) { SetDayRecordTagValue(monthOutputData, slide, shape, 24); } break; case "DAY25": case "25-1": if (daysCount > 24) { SetDayRecordTagValue(monthOutputData, slide, shape, 25); } break; case "DAY26": case "26-1": if (daysCount > 25) { SetDayRecordTagValue(monthOutputData, slide, shape, 26); } break; case "DAY27": case "27-1": if (daysCount > 26) { SetDayRecordTagValue(monthOutputData, slide, shape, 27); } break; case "DAY28": case "28-1": if (daysCount > 27) { SetDayRecordTagValue(monthOutputData, slide, shape, 28); } break; case "DAY29": case "29-1": if (daysCount > 28) { SetDayRecordTagValue(monthOutputData, slide, shape, 29); } break; case "DAY30": case "30-1": if (daysCount > 29) { SetDayRecordTagValue(monthOutputData, slide, shape, 30); } break; case "DAY31": case "31-1": if (daysCount > 30) { SetDayRecordTagValue(monthOutputData, slide, shape, 31); } break; case "DAY32": if (daysCount > 31) { SetDayRecordTagValue(monthOutputData, slide, shape, 32); } break; case "DAY33": if (daysCount > 32) { SetDayRecordTagValue(monthOutputData, slide, shape, 33); } break; case "DAY34": if (daysCount > 33) { SetDayRecordTagValue(monthOutputData, slide, shape, 34); } break; case "DAY35": if (daysCount > 34) { SetDayRecordTagValue(monthOutputData, slide, shape, 35); } break; } } } foreach (var note in monthOutputData.Notes) { Shape noteShape = null; if (SlideSettingsManager.Instance.SlideSettings.SlideSize.Orientation == SlideOrientationEnum.Portrait) { noteShape = slide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationVertical, note.Left, note.Top, note.StaticWidth, note.Bottom - note.Top); } else { noteShape = slide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, note.Left, note.Top, note.Right - note.Left, note.StaticHeight); } noteShape.Fill.Visible = MsoTriState.msoTrue; noteShape.Fill.Solid(); noteShape.Fill.ForeColor.RGB = Information.RGB(note.BackgroundColor.R, note.BackgroundColor.G, note.BackgroundColor.B); noteShape.Fill.Transparency = 0; noteShape.Line.Visible = MsoTriState.msoTrue; noteShape.Line.ForeColor.SchemeColor = PpColorSchemeIndex.ppForeground; noteShape.Line.BackColor.RGB = Information.RGB(0, 0, 0); noteShape.Shadow.Visible = MsoTriState.msoTrue; noteShape.Shadow.Type = MsoShadowType.msoShadow14; noteShape.TextFrame.TextRange.Font.Color.RGB = Information.RGB(note.ForeColor.R, note.ForeColor.G, note.ForeColor.B); noteShape.TextFrame.TextRange.Font.Name = "Calibri"; noteShape.TextFrame.TextRange.Font.Size = 8; note.Note.AddTextRange(noteShape.TextFrame.TextRange); } } var backgroundFilePath = BusinessObjects.Instance.OutputManager.GetCalendarBackgroundFile(monthOutputData.SlideColor, monthOutputData.Parent.Date, monthOutputData.ShowBigDate); if (!String.IsNullOrEmpty(backgroundFilePath) && File.Exists(backgroundFilePath)) { var backgroundShape = presentation.SlideMaster.Shapes.AddPicture(backgroundFilePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, 0, 0); if (SlideSettingsManager.Instance.SlideSettings.SlideSize.Orientation == SlideOrientationEnum.Portrait) { backgroundShape.Height = presentation.SlideMaster.Width; backgroundShape.Width = presentation.SlideMaster.Height; backgroundShape.Top = (presentation.SlideMaster.Height - backgroundShape.Height) / 2; backgroundShape.Left = (presentation.SlideMaster.Width - backgroundShape.Width) / 2;; backgroundShape.Rotation = 90; } else { backgroundShape.Top = (presentation.SlideMaster.Height - backgroundShape.Height) / 2; backgroundShape.Left = (presentation.SlideMaster.Width - backgroundShape.Width) / 2; } } presentation.SlideMaster.Design.Name = GetSlideMasterName(monthOutputData); target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } finally { MessageFilter.Revoke(); } }
public static void AppendDashboardTargetCustomers(this PowerPointProcessor target, ITargetCustomersOutputData outputData, Presentation destinationPresentation = null) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetTargetCustomersFile(String.Format(MasterWizardManager.TargetCustomersSlideTemplate, 1)); if (!File.Exists(presentationTemplatePath)) { return; } try { var thread = new Thread(delegate() { MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = outputData.Title; break; case "TEXTBOX0": shape.TextFrame.TextRange.Text = outputData.TargetDemo; break; case "TEXTBOX1": shape.TextFrame.TextRange.Text = outputData.HHI; break; case "TEXTBOX2": shape.TextFrame.TextRange.Text = outputData.Geography; break; } } } } var selectedTheme = outputData.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendOptions(this PowerPointProcessor target, IEnumerable <IOptionsSlideData> pages, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); foreach (var page in pages) { var slideNumber = 0; foreach (var pageDictionary in page.ReplacementsList) { var copyOfReplacementList = new Dictionary <string, string>(pageDictionary); var presentationTemplatePath = page.TemplateFilePath; if (!File.Exists(presentationTemplatePath)) { return; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); var taggedSlide = presentation.Slides.Count > 0 ? presentation.Slides[1] : null; var logoShapes = new List <Shape>(); if (page.Logos != null && slideNumber < page.Logos.Length) { var slideLogos = page.Logos[slideNumber]; foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue)) { for (var i = 1; i <= shape.Tags.Count; i++) { var shapeTagName = shape.Tags.Name(i); for (var j = 0; j < slideLogos.Length; j++) { if (!shapeTagName.Equals(string.Format("STATIONLOGO{0}", j + 1))) { continue; } string fileName = slideLogos[j]; if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName)) { var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; logoShapes.Add(newShape); } shape.Visible = MsoTriState.msoFalse; } } } } var tableContainer = taggedSlide.Shapes.OfType <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue); if (tableContainer == null) { return; } var tableWidth = tableContainer.Width; var table = tableContainer.Table; var tableRowsCount = table.Rows.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= table.Columns.Count; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); var key = copyOfReplacementList.Keys.FirstOrDefault(k => k.Trim().ToLower().Equals(cellText.ToLower())); if (String.IsNullOrEmpty(key)) { continue; } tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key]; copyOfReplacementList.Remove(key); } } tableRowsCount = table.Rows.Count; for (var i = tableRowsCount; i >= 1; i--) { for (var j = 1; j < 3; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("Delete Row")) { continue; } table.Rows[i].Delete(); break; } } tableRowsCount = table.Rows.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = table.Columns.Count; j >= 1; j--) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); while (cellText == "Merge") { var prevColumnIndex = j - 1; tableShape.TextFrame.TextRange.Text = String.Empty; if (prevColumnIndex >= table.Columns.Count) { break; } table.Cell(i, prevColumnIndex).Merge(table.Cell(i, j)); tableShape = table.Cell(i, prevColumnIndex).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { break; } tableShape.TextFrame.TextRange.ParagraphFormat.Alignment = PpParagraphAlignment.ppAlignLeft; cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (cellText == "Merge") { j--; } } } } var tableColumnsCount = table.Columns.Count; if (page.ColumnWidths != null) { for (var i = 0; i < page.ColumnWidths.Length; i++) { if ((i + 2) <= tableColumnsCount) { table.Columns[i + 2].Width = page.ColumnWidths[i] * 72.27f; } } } tableColumnsCount = table.Columns.Count; for (var i = tableColumnsCount - 1; i >= 0; i--) { var tableShape = table.Cell(4, i + 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (cellText.Equals("Delete Column")) { table.Columns[i + 1].Delete(); } } tableContainer.Width = tableWidth; if (pasteToSlideMaster) { var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank); Design design; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); design = presentation.Designs[presentation.Designs.Count]; design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt"); } else { design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt")); } tableContainer.Copy(); design.SlideMaster.Shapes.Paste(); foreach (var logoShape in logoShapes) { logoShape.Copy(); design.SlideMaster.Shapes.Paste(); } if (page.ContractSettings.IsConfigured) { target.FillContractInfo(design, page.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } newSlide.Design = design; } else { if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } if (page.ContractSettings.IsConfigured) { target.FillContractInfo(taggedSlide, page.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } } target.AppendSlide(presentation, 1, destinationPresentation); presentation.Close(); slideNumber++; } } }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendDigitalSummary(this PowerPointProcessor target, IDigitalSummaryContainerControl digitalSummary, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var slidesCount = digitalSummary.OutputReplacementsLists.Count; for (var k = 0; k < slidesCount; k++) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlineSummaryFile(); if (!File.Exists(presentationTemplatePath)) { continue; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { if (shape.HasTable != MsoTriState.msoTrue) { continue; } var table = shape.Table; var tableRowsCount = table.Rows.Count; var tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!digitalSummary.OutputReplacementsLists[k].ContainsKey(cellText)) { continue; } tableShape.TextFrame.TextRange.Text = digitalSummary.OutputReplacementsLists[k][cellText]; digitalSummary.OutputReplacementsLists[k].Remove(cellText); } } var deletedRows = 0; for (var i = 1; i <= tableRowsCount; i++) { var tableShape = table.Cell(i - deletedRows, 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteRow")) { continue; } table.Rows[i - deletedRows].Delete(); deletedRows++; } } } var selectedTheme = digitalSummary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); } }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendDashboardCover(this PowerPointProcessor target, ICoverOutputData outputData, Presentation destinationPresentation = null) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetCoverFile(); try { var thread = new Thread(delegate() { MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "DATE_DATA0": shape.TextFrame.TextRange.Text = outputData.PresentationDate; break; case "TITLE": shape.TextFrame.TextRange.Text = outputData.Title; break; case "BUSINESS_NAME": shape.TextFrame.TextRange.Text = outputData.DecisionMaker; break; case "DECISION_MAKER": shape.TextFrame.TextRange.Text = outputData.Advertiser; break; case "QUOTE": shape.TextFrame.TextRange.Text = outputData.Quote; break; case "SALESPERSON_NAME": shape.TextFrame.TextRange.Text = outputData.SalesRep; break; } } } } var selectedTheme = outputData.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation, outputData.AddAsPageOne); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendSolutionCommonSlide(this PowerPointProcessor target, OutputDataPackage dataPackage, Presentation destinationPresentation = null) { var presentationTemplatePath = dataPackage.TemplateName; try { var thread = new Thread(delegate() { MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { var backgroundClipartShapes = new List <Shape>(); foreach (Shape shape in slide.Shapes) { for (var i = 1; i <= shape.Tags.Count; i++) { var tagName = shape.Tags.Name(i); if (tagName.ToUpper().Contains("CLIPART")) { if (dataPackage.ClipartItems.ContainsKey(tagName.ToUpper())) { var clipartObject = dataPackage.ClipartItems[tagName.ToUpper()]; var newShape = slide.Shapes.AddClipartObject(clipartObject, shape); if (newShape != null && clipartObject.OutputBackground) { backgroundClipartShapes.Add(newShape); } } shape.Visible = MsoTriState.msoFalse; } else if (tagName.ToUpper().Contains("CHART")) { if (dataPackage.ChartItems.ContainsKey(tagName.ToUpper())) { shape.UpdateChartData(dataPackage.ChartItems[tagName.ToUpper()]); } } else if (shape.TextFrame.HasText != MsoTriState.msoFalse) { if (dataPackage.TextItems.ContainsKey(tagName.ToUpper())) { shape.TextFrame.TextRange.Text = dataPackage.TextItems[tagName.ToUpper()] ?? String.Empty; } else { shape.Visible = MsoTriState.msoFalse; } } } } var tableContainer = slide.Shapes.OfType <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue); tableContainer?.UpdateTableData(dataPackage.TableItems, dataPackage.TableWithHeader); if (!String.IsNullOrEmpty(dataPackage.LayoutName)) { foreach (CustomLayout customLayout in slide.Design.SlideMaster.CustomLayouts) { if (!String.Equals(dataPackage.LayoutName, customLayout.Name, StringComparison.OrdinalIgnoreCase)) { continue; } slide.CustomLayout = customLayout; break; } } foreach (var clipartShape in backgroundClipartShapes) { clipartShape.ZOrder(MsoZOrderCmd.msoSendToBack); } } var selectedTheme = dataPackage.Theme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation, dataPackage.AddAsFirtsPage); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendOneSheet(this PowerPointProcessor target, DigitalProduct source, Theme theme, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlineOneSheetFile(source.OutputData.GetSlideSource()); if (string.IsNullOrEmpty(presentationTemplatePath)) { return; } if (!File.Exists(presentationTemplatePath)) { return; } MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { #region Top Part case "HEADER": shape.TextFrame.TextRange.Text = String.Format(source.OutputData.Header, shape.TextFrame.TextRange.Text); break; case "WEBSITEURL": shape.TextFrame.TextRange.Text = source.OutputData.Websites; break; case "DATETAG": shape.TextFrame.TextRange.Text = source.OutputData.PresentationDate; break; case "ADVERTISER": shape.TextFrame.TextRange.Text = source.OutputData.BusinessName; break; case "DECMKR": shape.TextFrame.TextRange.Text = source.OutputData.DecisionMaker; break; case "CAMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.FlightDates; break; case "WEBPRODUCT": shape.TextFrame.TextRange.Text = source.OutputData.ProductName; break; case "WEBDESCRIPT": shape.TextFrame.TextRange.Text = source.OutputData.Description; break; #endregion case "MTHIMPLABEL": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Name : String.Empty; break; case "MONTHLYIMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Code : String.Empty; break; case "MONTHINVLBL": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Name : String.Empty; break; case "MONTHINVVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Code : String.Empty; break; case "MCPM": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Name : String.Empty; break; case "MCPMVALUE": shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Code : String.Empty; break; case "TTLIMPLABEL": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Name : String.Empty; break; case "TOTALIMPVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Code : String.Empty; break; case "TOTINVLBL": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Name : String.Empty; break; case "TOTINVVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Code : String.Empty; break; case "TCPM": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Name : String.Empty; break; case "TCPMVALUE": shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Code : String.Empty; break; case "INVDET": shape.TextFrame.TextRange.Text = source.OutputData.InvestmentDetails;; break; case "CMNTVALUE": shape.TextFrame.TextRange.Text = source.OutputData.Comment;; break; } } } } if (theme != null) { presentation.ApplyTheme(theme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
private static void AppendTableSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var slidesCount = summary.OutputReplacementsLists.Count; for (var k = 0; k < slidesCount; k++) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTableFile(String.Format(MasterWizardManager.SimpleSummaryTableTemplate, summary.ItemsPerTable)); if (!File.Exists(presentationTemplatePath)) { continue; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (var i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; default: var startIndex = k * summary.ItemsPerTable; for (var j = 0; j < summary.ItemsPerTable; j++) { if (shape.Tags.Name(i).Equals(String.Format("ICON{0}", j + 1))) { if (summary.ShowIcons && (j + startIndex) < summary.ItemsCount && !String.IsNullOrEmpty(summary.TableIcons[j + startIndex])) { var filePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryIconFile(summary.TableIcons[j + startIndex]); var newShape = slide.Shapes.AddPicture(filePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; } shape.Visible = MsoTriState.msoFalse; } } break; } } if (shape.HasTable != MsoTriState.msoTrue) { continue; } var table = shape.Table; var tableRowsCount = table.Rows.Count; var tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { if (j > table.Columns.Count) { continue; } var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Contains("Product") || summary.ShowIcons) { continue; } var prevColumnIndex = j - 1; if (prevColumnIndex < 1) { continue; } table.Cell(i, j).Merge(table.Cell(i, prevColumnIndex)); } } tableRowsCount = table.Rows.Count; tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!summary.OutputReplacementsLists[k].ContainsKey(cellText)) { continue; } tableShape.TextFrame.TextRange.Text = summary.OutputReplacementsLists[k][cellText]; summary.OutputReplacementsLists[k].Remove(cellText); } } for (var i = tableRowsCount; i >= 1; i--) { var tableShape = table.Cell(i, 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteRow")) { continue; } try { table.Rows[i].Delete(); } catch { shape.Visible = MsoTriState.msoFalse; } } } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); } }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
private static void AppendSlideSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { var itemsCount = summary.ItemsCount; var mainFileTemplateIndex = itemsCount >= SummaryConstants.MaxOneSheetItems ? SummaryConstants.MaxOneSheetItems : itemsCount; var additionalFileTemplateIndex = itemsCount > SummaryConstants.MaxOneSheetItems ? itemsCount % SummaryConstants.MaxOneSheetItems : 0; var mainFilesCount = itemsCount / SummaryConstants.MaxOneSheetItems; if (mainFilesCount == 0 && itemsCount > 0) { mainFilesCount++; } try { var thread = new Thread(delegate() { var mainPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, mainFileTemplateIndex)); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(mainPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); for (int j = 0; j < (itemsCount - additionalFileTemplateIndex); j += mainFileTemplateIndex) { foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: for (int k = 0; k < mainFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); } presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } if (additionalFileTemplateIndex == 0) { return; } try { var thread = new Thread(delegate() { var additionalPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, (additionalFileTemplateIndex + mainFileTemplateIndex))); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(additionalPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: int j = mainFileTemplateIndex * mainFilesCount; for (int k = 0; k < additionalFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } }
public static void AppendStrategy(this PowerPointProcessor target, DigitalInfoStrategyOutputModel source, Theme theme, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { var presentationTemplatePath = source.TemplatePath; if (string.IsNullOrEmpty(presentationTemplatePath)) { return; } if (!File.Exists(presentationTemplatePath)) { return; } MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { var shapeTagName = shape.Tags.Name(i); switch (shapeTagName) { case "MONTHDIGINV": shape.TextFrame.TextRange.Text = source.Total2; break; case "TOTALDIGINV": shape.TextFrame.TextRange.Text = source.Total1; break; default: for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++) { if (shapeTagName.Equals(String.Format("DIGITAL_GRAPHIC{0}", j + 1))) { var fileName = source.Logos.Length > j ? source.Logos[j] : String.Empty; if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName)) { var newShape = slide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; } shape.Visible = MsoTriState.msoFalse; } if (shapeTagName.Equals(String.Format("DIGITAL_TAG{0}", j + 1))) { shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text1 : String.Empty; } if (shapeTagName.Equals(String.Format("DIGITAL_DETAILS{0}", j + 1))) { shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text2 : String.Empty; } } break; } } } } if (theme != null) { presentation.ApplyTheme(theme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
public static void AppendDigitalOneSheet(this PowerPointProcessor target, StandaloneDigitalInfoOneSheetOutputModel dataModel, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var copyOfReplacementList = new Dictionary <string, string>(dataModel.ReplacementsList); var presentationTemplatePath = dataModel.TemplateFilePath; if (!File.Exists(presentationTemplatePath)) { return; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); var taggedSlide = presentation.Slides.Count > 0 ? presentation.Slides[1] : null; var logoShapes = new List <Shape>(); foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue)) { for (var i = 1; i <= shape.Tags.Count; i++) { var shapeTagName = shape.Tags.Name(i); for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++) { if (shapeTagName.Equals(String.Format("DIGLOGO{0}", j + 1))) { var fileName = dataModel.Logos.Length > j ? dataModel.Logos[j] : String.Empty; if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName)) { var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; logoShapes.Add(newShape); } shape.Visible = MsoTriState.msoFalse; } } } } var tableContainer = taggedSlide.Shapes.Cast <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue); if (tableContainer == null) { return; } var table = tableContainer.Table; var tableRowsCount = table.Rows.Count; var tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Replace(" ", ""); var key = copyOfReplacementList.Keys.FirstOrDefault(k => k.Replace(" ", "").ToLower().Equals(cellText.ToLower())); if (String.IsNullOrEmpty(key)) { continue; } tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key]; copyOfReplacementList.Remove(cellText); } } tableColumnsCount = table.Columns.Count; for (var i = tableColumnsCount; i >= 1; i--) { var tableShape = table.Cell(3, i).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("Delete Column")) { continue; } table.Columns[i].Delete(); } tableRowsCount = table.Rows.Count; for (var i = tableRowsCount; i >= 1; i--) { for (var j = 1; j < 3; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("Delete Row")) { continue; } table.Rows[i].Delete(); break; } } if (pasteToSlideMaster) { var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank); Design design; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); design = presentation.Designs[presentation.Designs.Count]; design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt"); } else { design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt")); } tableContainer.Copy(); design.SlideMaster.Shapes.Paste(); foreach (var logoShape in logoShapes) { logoShape.Copy(); design.SlideMaster.Shapes.Paste(); } if (dataModel.ContractSettings.IsConfigured) { target.FillContractInfo(design, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } newSlide.Design = design; } else { if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } if (dataModel.ContractSettings.IsConfigured) { target.FillContractInfo(taggedSlide, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder); } } target.AppendSlide(presentation, 1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }