EasterEggWizard.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using FastReport.Design;
  2. using FastReport.Utils;
  3. using System.IO;
  4. namespace FastReport.Wizards
  5. {
  6. internal abstract class EasterEggWizard : WizardBase
  7. {
  8. #region Protected Methods
  9. protected bool LoadStreamToDesigner(Stream s, Designer designer)
  10. {
  11. ReportTab reportTab = null;
  12. if (designer.MdiMode)
  13. {
  14. Report report = new Report();
  15. report.Designer = designer;
  16. reportTab = designer.CreateReportTab(report);
  17. }
  18. else
  19. {
  20. reportTab = designer.ActiveReportTab;
  21. }
  22. if (LoadStreamToReprotTab(s, designer, reportTab))
  23. {
  24. if (designer.MdiMode)
  25. designer.AddReportTab(reportTab);
  26. return true;
  27. }
  28. else if (designer.MdiMode)
  29. {
  30. reportTab.Dispose();
  31. }
  32. return false;
  33. }
  34. protected virtual void ProcessPages(Report report)
  35. {
  36. foreach (PageBase page in report.Pages)
  37. {
  38. if (page is ReportPage)
  39. {
  40. ReportPage reportPage = page as ReportPage;
  41. switch (Config.ReportSettings.DefaultPaperSize)
  42. {
  43. case DefaultPaperSize.A4:
  44. reportPage.PaperWidth = 210;
  45. reportPage.PaperHeight = 297;
  46. break;
  47. case DefaultPaperSize.Letter:
  48. reportPage.PaperWidth = 215.9f;
  49. reportPage.PaperHeight = 279.4f;
  50. break;
  51. }
  52. }
  53. }
  54. }
  55. protected virtual bool ShowDialog()
  56. {
  57. return true;
  58. }
  59. #endregion Protected Methods
  60. #region Private Methods
  61. private bool LoadStreamToReprotTab(Stream s, Designer designer, ReportTab reportTab)
  62. {
  63. OpenSaveDialogEventArgs e = new OpenSaveDialogEventArgs(designer);
  64. bool result = reportTab.SaveCurrentFile();
  65. if (result)
  66. {
  67. result = ShowDialog();
  68. if (result)
  69. {
  70. try
  71. {
  72. designer.Lock();
  73. reportTab.Report.Load(s);
  74. ProcessPages(reportTab.Report);
  75. Config.DesignerSettings.OnReportLoaded(this, new ReportLoadedEventArgs(reportTab.Report));
  76. result = true;
  77. }
  78. finally
  79. {
  80. reportTab.InitReport();
  81. designer.Unlock();
  82. }
  83. }
  84. }
  85. return result;
  86. }
  87. #endregion Private Methods
  88. }
  89. }