PageRenderTime 208ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/gameedit/CellGameEdit/CellGameEdit/Tools/FormEnumViewer.cs

http://cellengine.googlecode.com/
C# | 413 lines | 313 code | 90 blank | 10 comment | 15 complexity | 57bb8f7be987df8850a5887c2ea392a6 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0, BSD-3-Clause, AGPL-3.0, LGPL-2.1, Apache-2.0, MPL-2.0-no-copyleft-exception, CPL-1.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO;
  9. using System.Collections;
  10. using CellGameEdit.PM;
  11. namespace CellGameEdit.Tools
  12. {
  13. public partial class FormEnumViewer : Form
  14. {
  15. public FormEnumViewer()
  16. {
  17. InitializeComponent();
  18. }
  19. private void FormEnumViewer_Load(object sender, EventArgs e)
  20. {
  21. refreshEnums();
  22. }
  23. //--------------------------------------------------------------------------------------------------------------------------------------
  24. #region ???
  25. private void ????ToolStripMenuItem_Click(object sender, EventArgs e)
  26. {
  27. }
  28. private void ????ToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
  29. {
  30. this.TopMost = menuTopMost.Checked;
  31. }
  32. private void ???ToolStripMenuItem_Click(object sender, EventArgs e)
  33. {
  34. foreach(ListViewItem item in listView1.Items )
  35. {
  36. try
  37. {
  38. GameEnum gameenum = (GameEnum)item.Tag;
  39. item.SubItems[1].Text = gameenum.Value.ToString("d");
  40. }
  41. catch (Exception err) { }
  42. }
  43. }
  44. private void ????ToolStripMenuItem_Click(object sender, EventArgs e)
  45. {
  46. foreach (ListViewItem item in listView1.Items)
  47. {
  48. try
  49. {
  50. GameEnum gameenum = (GameEnum)item.Tag;
  51. item.SubItems[1].Text = "0x"+gameenum.Value.ToString("X8");
  52. }
  53. catch (Exception err) { }
  54. }
  55. }
  56. private void ???ToolStripMenuItem_Click(object sender, EventArgs e)
  57. {
  58. foreach (ListViewItem item in listView1.Items)
  59. {
  60. try
  61. {
  62. GameEnum gameenum = (GameEnum)item.Tag;
  63. long v = gameenum.Value;
  64. String bin = "";
  65. for (int i = 0; i < 32 || v!=0; i++)
  66. {
  67. bin = (v&0x01) + bin;
  68. v = (v >> 1);
  69. }
  70. item.SubItems[1].Text = bin + "(b)";
  71. }
  72. catch (Exception err) { }
  73. }
  74. }
  75. #endregion
  76. //--------------------------------------------------------------------------------------------------------------------------------------
  77. public void refreshEnums()
  78. {
  79. try
  80. {
  81. this.treeView1.Nodes.Clear();
  82. this.listView1.Items.Clear();
  83. Hashtable files = GameEnum.getEnums();
  84. int i = 0;
  85. foreach(object key in files.Keys)
  86. {
  87. try
  88. {
  89. Hashtable value = (Hashtable)files[key];
  90. TreeNode node = new TreeNode(key.ToString());
  91. node.Tag = value;
  92. treeView1.Nodes.Add(node);
  93. if(i==0)
  94. {
  95. refreshLines(value);
  96. }
  97. i++;
  98. }
  99. catch (Exception err)
  100. {
  101. }
  102. }
  103. toolStripStatusLabel1.Text = "(" + files.Count + ")???";
  104. }
  105. catch (Exception err)
  106. {
  107. MessageBox.Show(err.Message + "\n" + err.StackTrace + "\n");
  108. }
  109. }
  110. public void refreshLines(Hashtable file)
  111. {
  112. try
  113. {
  114. this.listView1.Items.Clear();
  115. foreach(object key in file.Keys)
  116. {
  117. try
  118. {
  119. GameEnum value = (GameEnum)file[key];
  120. String info = value.Key;
  121. String type = value.Value.ToString();
  122. String reson = value.Rem;
  123. ListViewItem item = new ListViewItem(new string[] { info, type, reson });
  124. item.Tag = value;
  125. listView1.Items.Add(item);
  126. }
  127. catch (Exception err)
  128. {
  129. }
  130. }
  131. listView1.Columns[0].Text = "(" + file.Count + ")???";
  132. }
  133. catch (Exception err)
  134. {
  135. MessageBox.Show(err.Message + "\n" + err.StackTrace + "\n");
  136. }
  137. }
  138. //--------------------------------------------------------------------------------------------------------------------------------------
  139. // events
  140. private void toolStripButton1_Click(object sender, EventArgs e)
  141. {
  142. refreshEnums();
  143. }
  144. // select enum file
  145. private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
  146. {
  147. try
  148. {
  149. Hashtable ht = (Hashtable)e.Node.Tag;
  150. refreshLines(ht);
  151. }
  152. catch (Exception err)
  153. {
  154. MessageBox.Show(err.Message + "\n" + err.StackTrace + "\n");
  155. }
  156. }
  157. // sum selected
  158. private void toolStripButton2_Click_1(object sender, EventArgs e)
  159. {
  160. Boolean isHex = false;
  161. long sum = 0;
  162. foreach (ListViewItem item in listView1.Items)
  163. {
  164. try
  165. {
  166. if (item.SubItems[1].Text.Contains("x"))
  167. {
  168. isHex = true;
  169. }
  170. if (item.Checked)
  171. {
  172. GameEnum gameenum = (GameEnum)item.Tag;
  173. sum = sum | gameenum.Value;
  174. }
  175. }
  176. catch (Exception err) { }
  177. }
  178. if (isHex)
  179. {
  180. TextBoxSum.Text = sum.ToString("X8");
  181. }
  182. else
  183. {
  184. TextBoxSum.Text = sum.ToString();
  185. }
  186. }
  187. // select or value
  188. private void toolStripButton3_Click_1(object sender, EventArgs e)
  189. {
  190. long sum = 0;
  191. try
  192. {
  193. if (TextBoxOR.Text.Contains("0x"))
  194. {
  195. sum = long.Parse(TextBoxOR.Text.Substring(2), System.Globalization.NumberStyles.AllowHexSpecifier);
  196. }
  197. else
  198. {
  199. sum = long.Parse(TextBoxOR.Text);
  200. }
  201. foreach (ListViewItem item in listView1.Items)
  202. {
  203. try
  204. {
  205. GameEnum gameenum = (GameEnum)item.Tag;
  206. item.Checked = (gameenum.Value & sum) != 0;
  207. }
  208. catch (Exception err) { }
  209. }
  210. }
  211. catch (Exception err)
  212. {
  213. MessageBox.Show(err.Message+ "\n");
  214. }
  215. }
  216. //clear
  217. private void toolStripButton4_Click(object sender, EventArgs e)
  218. {
  219. foreach (ListViewItem item in listView1.Items)
  220. {
  221. item.Checked = false;
  222. }
  223. }
  224. // select all
  225. private void toolStripButton5_Click(object sender, EventArgs e)
  226. {
  227. foreach (ListViewItem item in listView1.Items)
  228. {
  229. item.Checked = true;
  230. }
  231. }
  232. #region util
  233. #endregion
  234. }
  235. }
  236. namespace CellGameEdit
  237. {
  238. public class GameEnum
  239. {
  240. public string Key = "";
  241. public long Value = 0;
  242. public string Rem = "";
  243. // util
  244. public static Hashtable getEnums()
  245. {
  246. try
  247. {
  248. String dir = ProjectForm.getEnumsDir();
  249. Hashtable ret = new Hashtable();
  250. String[] files = Directory.GetFiles(dir, "*.enum", SearchOption.TopDirectoryOnly);
  251. for (int i = 0; i < files.Length; i++)
  252. {
  253. try
  254. {
  255. Hashtable ht = getEnum(files[i]);
  256. if (ht != null)
  257. {
  258. ret.Add(Path.GetFileNameWithoutExtension(files[i]), ht);
  259. }
  260. }
  261. catch (Exception err)
  262. {
  263. Console.WriteLine(err.Message + "\n" + err.StackTrace + "\n");
  264. }
  265. }
  266. return ret;
  267. }
  268. catch (Exception err)
  269. {
  270. MessageBox.Show(err.Message + "\n" + err.StackTrace + "\n");
  271. return null;
  272. }
  273. }
  274. public static Hashtable getEnum(String file)
  275. {
  276. try
  277. {
  278. Hashtable ht = new Hashtable();
  279. string[] lines = File.ReadAllLines(file);
  280. for (int j = 0; j < lines.Length; j++)
  281. {
  282. if (lines[j].Contains("="))
  283. {
  284. try
  285. {
  286. String key = lines[j].Substring(0, lines[j].IndexOf("=")).Trim();
  287. String value = Util.getIncludeString(lines[j], "=", ",").Trim();
  288. String rem = "";
  289. if (lines[j].Contains(@"//"))
  290. {
  291. try { rem = lines[j].Substring(lines[j].IndexOf(@"//") + 2); }
  292. catch (Exception err) {}
  293. }
  294. GameEnum gameenum = new GameEnum();
  295. gameenum.Key = key;
  296. gameenum.Rem = rem;
  297. if (value.Contains("0x"))
  298. {
  299. value = value.Substring(value.IndexOf("0x") + 2);
  300. gameenum.Value = long.Parse(value.Trim(), System.Globalization.NumberStyles.AllowHexSpecifier);
  301. }
  302. else
  303. {
  304. gameenum.Value = long.Parse(value.Trim());
  305. }
  306. ht.Add(key, gameenum);
  307. }
  308. catch (Exception err)
  309. {
  310. Console.WriteLine(err.Message + "\n" + err.StackTrace + "\n");
  311. }
  312. }
  313. }
  314. return ht;
  315. }
  316. catch (Exception err)
  317. {
  318. Console.WriteLine(err.Message + "\n" + err.StackTrace + "\n");
  319. return null;
  320. }
  321. }
  322. }
  323. }