AddNewItemForm.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. using FastReport.Utils;
  5. using FastReport.Design;
  6. using FastReport.Wizards;
  7. namespace FastReport.Forms
  8. {
  9. internal partial class AddNewItemForm : BaseDialogForm
  10. {
  11. private Designer designer;
  12. private bool isEasterEggMode;
  13. public WizardBase SelectedWizard
  14. {
  15. get
  16. {
  17. if (CurrentItem == null)
  18. return null;
  19. return Activator.CreateInstance(CurrentItem.Object) as WizardBase;
  20. }
  21. }
  22. private ObjectInfo CurrentItem
  23. {
  24. get { return lvWizards.SelectedItems.Count > 0 ? lvWizards.SelectedItems[0].Tag as ObjectInfo : null; }
  25. }
  26. private void PopulateWizardList()
  27. {
  28. List<ObjectInfo> objects = new List<ObjectInfo>();
  29. RegisteredObjects.Objects.EnumItems(objects);
  30. bool reportActive = designer.ActiveReport != null;
  31. foreach (ObjectInfo info in objects)
  32. {
  33. if (info.Object != null)
  34. {
  35. if (info.Object.IsSubclassOf(typeof(WizardBase)) && (reportActive || info.Flags != 1))
  36. {
  37. if (!isEasterEggMode && info.Object.IsSubclassOf(typeof(EasterEggWizard)))
  38. {
  39. continue;
  40. }
  41. if (!IsListHasObject(info))
  42. {
  43. ListViewItem li = lvWizards.Items.Add(Res.TryGet(info.Text), info.ImageIndex);
  44. li.Tag = info;
  45. li.Group = lvWizards.Groups[info.Flags.ToString()];
  46. }
  47. }
  48. }
  49. }
  50. if (lvWizards.Items.Count > 0)
  51. lvWizards.Items[0].Selected = true;
  52. }
  53. private bool IsListHasObject(ObjectInfo info)
  54. {
  55. foreach(ListViewItem item in lvWizards.Items)
  56. {
  57. if (item.Tag == info)
  58. return true;
  59. }
  60. return false;
  61. }
  62. private void lvWizards_SelectedIndexChanged(object sender, EventArgs e)
  63. {
  64. btnOk.Enabled = CurrentItem != null;
  65. }
  66. private void lvWizards_DoubleClick(object sender, EventArgs e)
  67. {
  68. if (CurrentItem != null)
  69. DialogResult = DialogResult.OK;
  70. }
  71. private void Init()
  72. {
  73. PopulateWizardList();
  74. }
  75. public override void Localize()
  76. {
  77. base.Localize();
  78. MyRes res = new MyRes("Forms,AddNewItem");
  79. Text = res.Get("");
  80. btnOk.Text = res.Get("Add");
  81. lvWizards.Groups.Add("0", res.Get("Reports"));
  82. lvWizards.Groups.Add("1", res.Get("ReportItems"));
  83. }
  84. public override void UpdateDpiDependencies()
  85. {
  86. base.UpdateDpiDependencies();
  87. lvWizards.SmallImageList = GetImages();
  88. }
  89. public AddNewItemForm(Designer designer)
  90. {
  91. this.designer = designer;
  92. InitializeComponent();
  93. Localize();
  94. Init();
  95. UIUtils.CheckRTL(this);
  96. UpdateDpiDependencies();
  97. }
  98. int gameStep = 0;
  99. private void AddNewItemForm_KeyUp(object sender, KeyEventArgs e)
  100. {
  101. if (!isEasterEggMode)
  102. {
  103. switch (gameStep)
  104. {
  105. case 0:
  106. if (e.KeyCode == Keys.G)
  107. {
  108. gameStep = 1;
  109. }
  110. break;
  111. case 1:
  112. if (e.KeyCode == Keys.A)
  113. {
  114. gameStep = 2;
  115. }
  116. break;
  117. case 2:
  118. if (e.KeyCode == Keys.M)
  119. {
  120. gameStep = 3;
  121. }
  122. break;
  123. case 3:
  124. if (e.KeyCode == Keys.E)
  125. {
  126. isEasterEggMode = true;
  127. gameStep = 4;
  128. }
  129. break;
  130. default:
  131. break;
  132. }
  133. if (isEasterEggMode)
  134. {
  135. lvWizards.Groups.Add("2", Res.Get("Forms,AddNewItem,Games"));
  136. PopulateWizardList();
  137. }
  138. }
  139. }
  140. }
  141. }