AddNewItemForm.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. columnHeader1.Width = columnHeader2.Width = lvWizards.Width / 2 - 10;
  89. }
  90. public AddNewItemForm(Designer designer)
  91. {
  92. this.designer = designer;
  93. InitializeComponent();
  94. Localize();
  95. Init();
  96. UIUtils.CheckRTL(this);
  97. UpdateDpiDependencies();
  98. }
  99. int gameStep = 0;
  100. private void AddNewItemForm_KeyUp(object sender, KeyEventArgs e)
  101. {
  102. if (!isEasterEggMode)
  103. {
  104. switch (gameStep)
  105. {
  106. case 0:
  107. if (e.KeyCode == Keys.G)
  108. {
  109. gameStep = 1;
  110. }
  111. break;
  112. case 1:
  113. if (e.KeyCode == Keys.A)
  114. {
  115. gameStep = 2;
  116. }
  117. break;
  118. case 2:
  119. if (e.KeyCode == Keys.M)
  120. {
  121. gameStep = 3;
  122. }
  123. break;
  124. case 3:
  125. if (e.KeyCode == Keys.E)
  126. {
  127. isEasterEggMode = true;
  128. gameStep = 4;
  129. }
  130. break;
  131. default:
  132. break;
  133. }
  134. if (isEasterEggMode)
  135. {
  136. lvWizards.Groups.Add("2", Res.Get("Forms,AddNewItem,Games"));
  137. PopulateWizardList();
  138. }
  139. }
  140. }
  141. }
  142. }