Form1.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. using System;
  2. using System.Linq;
  3. using System.Reflection;
  4. using System.Windows.Forms;
  5. using FirmwareHeaderBuilder.Controller;
  6. using FirmwareHeaderBuilder.Model;
  7. using FirmwareHeaderBuilder.Model.ModelNaming;
  8. namespace FirmwareHeaderBuilder
  9. {
  10. public partial class Form1 : Form
  11. {
  12. private HeaderBuilder headerBuilder;
  13. private OpenFileDialog openFileDialog;
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. InitializeMyComponent();
  18. InitializeUI();
  19. }
  20. private void OptImageType_SelectedIndexChanged(object sender, EventArgs e)
  21. {
  22. ImageType imgType = ImageType.Parse((ushort)optImageType.SelectedIndex);
  23. headerBuilder.SelectImageType(imgType.Index);
  24. openFileDialog.FilterIndex = imgType.Filter.Index + 1; // Base 1??
  25. }
  26. private void BtnBrowse_Click(object sender, EventArgs e)
  27. {
  28. if (openFileDialog.ShowDialog() == DialogResult.OK)
  29. {
  30. lbFilePath.Text = openFileDialog.FileName;
  31. if (headerBuilder.CheckHeaderExist(lbFilePath.Text))
  32. {
  33. if (MessageBox.Show("已存在檔頭資訊,合併後將被複寫,是否繼續進行?", "載入", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
  34. {
  35. ErrorCode errCode = headerBuilder.ImportImage(lbFilePath.Text, true);
  36. PostErrorCode(errCode);
  37. }
  38. else
  39. {
  40. headerBuilder.ClearImage();
  41. lbFilePath.Text = string.Empty;
  42. }
  43. }
  44. else
  45. {
  46. ErrorCode errCode = headerBuilder.ImportImage(lbFilePath.Text);
  47. PostErrorCode(errCode);
  48. }
  49. }
  50. }
  51. private void BtnMerge_Click(object sender, EventArgs e)
  52. {
  53. ErrorCode errCode = headerBuilder.InputModelName(txtModelName.Text);
  54. if (errCode == ErrorCode.NoError)
  55. {
  56. errCode = headerBuilder.Build();
  57. PostErrorCode(errCode);
  58. }
  59. else
  60. {
  61. PostErrorCode(errCode);
  62. }
  63. }
  64. private void InitializeMyComponent()
  65. {
  66. headerBuilder = new HeaderBuilder();
  67. optType.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  68. optInputConfiguration.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  69. optSafetyRegulation.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  70. //optRatedPower.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  71. txtRatedPower.TextChanged += ModuleNaming_SelectedIndexChanged;
  72. optConnector1.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  73. optConnector2.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  74. optConnector3.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  75. optNetworkOption.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  76. optGeneration.SelectedIndexChanged += ModuleNaming_SelectedIndexChanged;
  77. txtCustomization.TextChanged += ModuleNaming_SelectedIndexChanged;
  78. optImageType.SelectedIndexChanged += OptImageType_SelectedIndexChanged;
  79. optImageType.Items.Clear();
  80. optImageType.Items.AddRange(ImageType.ListText.ToArray());
  81. btnBrowse.Click += BtnBrowse_Click;
  82. btnMerge.Click += BtnMerge_Click;
  83. openFileDialog = new OpenFileDialog();
  84. openFileDialog.Filter = OpenDialogFilter.GetFilterRuleText();
  85. }
  86. private void ModuleNaming_SelectedIndexChanged(object sender, EventArgs e)
  87. {
  88. MajorType majorType = MajorType.Parse((string)optType.SelectedItem);
  89. InputConfiguration inputConfig = InputConfiguration.Parse((string)optInputConfiguration.SelectedItem);
  90. SafetyRegulation safetyRegulation = SafetyRegulation.Parse((string)optSafetyRegulation.SelectedItem);
  91. //RatedPower ratedPower = RatedPower.Parse((string)optRatedPower.SelectedItem);
  92. SocketType socketType1 = SocketType.Parse((string)optConnector1.SelectedItem);
  93. SocketType socketType2 = SocketType.Parse((string)optConnector2.SelectedItem);
  94. SocketType socketType3 = SocketType.Parse((string)optConnector3.SelectedItem);
  95. NetworkOption networkOption = NetworkOption.Parse((string)optNetworkOption.SelectedItem);
  96. Generation generation = Generation.Parse((string)optGeneration.SelectedItem);
  97. if (string.IsNullOrEmpty(txtRatedPower.Text))
  98. {
  99. MessageBox.Show("請輸入額定功率代碼", "ModuleNaming", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  100. txtRatedPower.Text = "000";
  101. return;
  102. }
  103. if (majorType != null &&
  104. inputConfig != null &&
  105. safetyRegulation != null &&
  106. socketType1 != null &&
  107. socketType2 != null &&
  108. socketType3 != null &&
  109. //ratedPower != null &&
  110. networkOption != null &&
  111. generation != null)
  112. {
  113. txtModelName.Text = majorType.Code + inputConfig.Code + safetyRegulation.Code + txtRatedPower.Text + socketType1.Code + socketType2.Code + socketType3.Code + networkOption.Code + generation.Code + txtCustomization.Text;
  114. }
  115. }
  116. private void InitializeUI()
  117. {
  118. Text = Text + string.Format(" V{0}", Assembly.GetEntryAssembly().GetName().Version);
  119. optType.Items.AddRange(MajorType.ListName.ToArray());
  120. optInputConfiguration.Items.AddRange(InputConfiguration.ListName.ToArray());
  121. optSafetyRegulation.Items.AddRange(SafetyRegulation.ListName.ToArray());
  122. //optRatedPower.Items.AddRange(RatedPower.ListName.ToArray());
  123. optConnector1.Items.AddRange(SocketType.ListName.ToArray());
  124. optConnector2.Items.AddRange(SocketType.ListName.ToArray());
  125. optConnector3.Items.AddRange(SocketType.ListName.ToArray());
  126. optNetworkOption.Items.AddRange(NetworkOption.ListName.ToArray());
  127. optGeneration.Items.AddRange(Generation.ListName.ToArray());
  128. optType.SelectedIndex = 0;
  129. optInputConfiguration.SelectedIndex = 0;
  130. optSafetyRegulation.SelectedIndex = 0;
  131. //optRatedPower.SelectedIndex = 0;
  132. optConnector1.SelectedIndex = 0;
  133. optConnector2.SelectedIndex = 0;
  134. optConnector3.SelectedIndex = 0;
  135. optNetworkOption.SelectedIndex = 0;
  136. optGeneration.SelectedIndex = 0;
  137. optImageType.SelectedIndex = 0;
  138. }
  139. private void PostErrorCode(ErrorCode code)
  140. {
  141. switch(code)
  142. {
  143. case ErrorCode.BuiltFileError:
  144. MessageBox.Show("創建檔案失敗", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  145. break;
  146. case ErrorCode.BuiltSuccess:
  147. MessageBox.Show("創建完成", "執行", MessageBoxButtons.OK, MessageBoxIcon.Information);
  148. break;
  149. case ErrorCode.FileNotExist:
  150. MessageBox.Show("映像檔不存在", "執行", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  151. break;
  152. case ErrorCode.FilePathEmpty:
  153. MessageBox.Show("尚未選擇映像檔", "執行", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  154. break;
  155. case ErrorCode.ImageDataNotReady:
  156. MessageBox.Show("尚未選擇映像檔", "執行", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  157. break;
  158. case ErrorCode.ImageTypeIndexNotExist:
  159. MessageBox.Show("未定義的映像檔型態", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  160. break;
  161. case ErrorCode.MemoryAllocationError:
  162. MessageBox.Show("記憶體配置時發生錯誤", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  163. break;
  164. case ErrorCode.ModelNameEmpty:
  165. MessageBox.Show("尚未輸入 Model Name", "執行", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  166. break;
  167. case ErrorCode.ModelNameInputTypeError:
  168. MessageBox.Show("輸入的 Model Name 出現不合法的字元", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  169. break;
  170. case ErrorCode.ModelNameLenError:
  171. MessageBox.Show("輸入的 Model Name 長度須為 14", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  172. break;
  173. case ErrorCode.ReadFileError:
  174. MessageBox.Show("讀取映像檔時發生錯誤", "執行", MessageBoxButtons.OK, MessageBoxIcon.Error);
  175. break;
  176. case ErrorCode.NoError:
  177. default:
  178. break;
  179. }
  180. }
  181. }
  182. }