PageRenderTime 73ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/GeckoDotNET/Gecko dNet/Notepad.cs

http://geckowii.googlecode.com/
C# | 289 lines | 249 code | 29 blank | 11 comment | 49 complexity | 4b6d4917524a83acdfdb121ee79ca3a5 MD5 | raw file
  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 AMS.Profile;
  10. namespace GeckoApp
  11. {
  12. public partial class NoteSheets : Form
  13. {
  14. private String gId;
  15. //private List<Sheet> sheets;
  16. private TabPage PSelected;
  17. private TabPage SourceTab;
  18. public NoteSheets()
  19. {
  20. InitializeComponent();
  21. //sheets = new List<Sheet>();
  22. }
  23. public TabPage GetTabPageFromXY(int x,int y)
  24. {
  25. for(int i = 0;i<SheetSelection.TabPages.Count;i++)
  26. if(SheetSelection.GetTabRect(i).Contains(x, y))
  27. return SheetSelection.TabPages[i];
  28. return null;
  29. }
  30. private void CreateSheet(Sheet data)
  31. {
  32. TabPage newTab = new TabPage();
  33. newTab.Tag = data;
  34. NotePage noteData = new NotePage(newTab, this);
  35. noteData.Location = new Point(0, 0);
  36. noteData.Size = newTab.Size;
  37. noteData.Anchor = AnchorStyles.Bottom | AnchorStyles.Top |
  38. AnchorStyles.Right | AnchorStyles.Left;
  39. newTab.Controls.Add(noteData);
  40. UpdateTitle(newTab);
  41. SheetSelection.TabPages.Add(newTab);
  42. }
  43. private List<Sheet> ImportSheet(String filename)
  44. {
  45. List<Sheet> sheets = new List<Sheet>();
  46. Xml ImportFile = new Xml(filename);
  47. try
  48. {
  49. ImportFile.RootName = "notesheet";
  50. string[] sheetsecs = ImportFile.GetSectionNames();
  51. String name, content;
  52. foreach (String sheetname in sheetsecs)
  53. {
  54. name = ImportFile.GetValue(sheetname, "name", "[Noname]");
  55. content = ImportFile.GetValue(sheetname, "content", "");
  56. sheets.Add(new Sheet(name, content));
  57. }
  58. }
  59. finally
  60. {
  61. }
  62. return sheets;
  63. }
  64. public void Show(String gameID)
  65. {
  66. char delim = Path.DirectorySeparatorChar;
  67. if (gameID.Length >= 3)
  68. {
  69. gId = gameID.Substring(0, 3);
  70. }
  71. else
  72. {
  73. gId = "SYSMENU";
  74. }
  75. Text = "Notepad (Game ID: " + gId + ")";
  76. if (!Directory.Exists("notes"))
  77. Directory.CreateDirectory("notes");
  78. PSelected = null;
  79. SheetSelection.TabPages.Clear();
  80. List<Sheet> sheets = null;
  81. if (File.Exists("notes" + delim + gId + ".xml"))
  82. try
  83. {
  84. sheets = ImportSheet("notes" + delim + gId + ".xml");
  85. }
  86. catch
  87. {
  88. sheets = new List<Sheet>();
  89. }
  90. else
  91. sheets = new List<Sheet>();
  92. if (sheets.Count==0)
  93. sheets.Add(new Sheet("Default sheet"));
  94. for (int i = 0; i < sheets.Count; i++)
  95. {
  96. CreateSheet(sheets[i]);
  97. }
  98. SheetSelection.SelectedIndex = 0;
  99. base.Show();
  100. }
  101. public void UpdateTitle(TabPage page)
  102. {
  103. Sheet sheet = (Sheet)page.Tag;
  104. string title = sheet.title;
  105. page.ToolTipText = title;
  106. if (title.Length > 25)
  107. title = title.Substring(0, 22) + "...";
  108. page.Text = title;
  109. }
  110. private void Whatsthis_Click(object sender, EventArgs e)
  111. {
  112. MessageBox.Show("This is a simple and straight forward notepad for all notes you can do while code searching.. store addresses here you found or store breakpoint traces here. These notes are stored per game (region independent - so if you have multiple regions of a game these lists will be identical)! When closing this window, the notes you made will be immediately stored to your harddisk!");
  113. }
  114. private void SheetSelection_SelectedIndexChanged(object sender, EventArgs e)
  115. {
  116. PSelected = SheetSelection.SelectedTab;
  117. if (PSelected == null)
  118. {
  119. return;
  120. }
  121. }
  122. private void AddSheet_Click(object sender, EventArgs e)
  123. {
  124. int cnt = SheetSelection.TabPages.Count + 1;
  125. Sheet nsheet = new Sheet("New sheet " + cnt.ToString());
  126. //sheets.Add(nsheet);
  127. CreateSheet(nsheet);
  128. PSelected = SheetSelection.TabPages[SheetSelection.TabPages.Count - 1];
  129. SheetSelection.SelectedTab = PSelected;
  130. }
  131. public void DeleteSheet(TabPage selected)
  132. {
  133. if (selected == null)
  134. return;
  135. if (SheetSelection.TabPages.Count == 1)
  136. {
  137. MessageBox.Show("You must have at least one sheet!");
  138. return;
  139. }
  140. int index = SheetSelection.TabPages.IndexOf(selected);
  141. Sheet sheet = (Sheet)selected.Tag;
  142. if (sheet.content == "" ||
  143. MessageBox.Show("Are you sure you want to delete the current sheet: " +
  144. sheet.title + " ?", "Warning", MessageBoxButtons.YesNo,
  145. MessageBoxIcon.Warning) == DialogResult.Yes)
  146. {
  147. //sheets.RemoveAt(index);
  148. SheetSelection.TabPages.RemoveAt(index);
  149. if(index > 0)
  150. index--;
  151. if(SheetSelection.TabPages.Count == 0)
  152. {
  153. PSelected = null;
  154. }
  155. else
  156. {
  157. PSelected = SheetSelection.TabPages[index];
  158. SheetSelection.SelectedTab = PSelected;
  159. }
  160. }
  161. }
  162. private void NoteSheets_FormClosing(object sender, FormClosingEventArgs e)
  163. {
  164. char delim = Path.DirectorySeparatorChar;
  165. String filename = "notes" + delim + gId + ".xml";
  166. if (File.Exists(filename))
  167. File.Delete(filename);
  168. Xml ExportFile = new Xml(filename);
  169. try
  170. {
  171. ExportFile.RootName = "notesheet";
  172. String secname;
  173. int pagecount = SheetSelection.TabPages.Count;
  174. for (int i = 0; i < pagecount; i++)
  175. {
  176. Sheet sheet = (Sheet)SheetSelection.TabPages[i].Tag;
  177. secname = "sheet" + (i + 1).ToString();
  178. ExportFile.SetValue(secname, "name", sheet.title);
  179. ExportFile.SetValue(secname, "content", sheet.content);
  180. }
  181. }
  182. finally
  183. {
  184. e.Cancel = true;
  185. Hide();
  186. }
  187. }
  188. private void NoteSheets_Load(object sender, EventArgs e)
  189. {
  190. this.Icon = Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetEntryAssembly().Location);
  191. }
  192. private void SheetSelection_MouseUp(object sender, MouseEventArgs e)
  193. {
  194. if(e.Button == MouseButtons.Left && SourceTab != null)
  195. {
  196. SuspendLayout();
  197. TabPage currTabPage = GetTabPageFromXY(e.X, e.Y);
  198. if (currTabPage != null && !currTabPage.Equals(SourceTab))
  199. {
  200. SourceTab.SuspendLayout();
  201. if (SheetSelection.TabPages.IndexOf(currTabPage) < SheetSelection.TabPages.IndexOf(SourceTab))
  202. {
  203. SheetSelection.TabPages.Remove(SourceTab);
  204. SheetSelection.TabPages.Insert(SheetSelection.TabPages.IndexOf(currTabPage), SourceTab);
  205. SheetSelection.SelectedTab = SourceTab;
  206. }
  207. else if (SheetSelection.TabPages.IndexOf(currTabPage) > SheetSelection.TabPages.IndexOf(SourceTab))
  208. {
  209. SheetSelection.TabPages.Remove(SourceTab);
  210. SheetSelection.TabPages.Insert(SheetSelection.TabPages.IndexOf(currTabPage) + 1, SourceTab);
  211. SheetSelection.SelectedTab = SourceTab;
  212. }
  213. SourceTab.ResumeLayout();
  214. }
  215. }
  216. ResumeLayout();
  217. SourceTab = null;
  218. Cursor = Cursors.Default;
  219. }
  220. private void SheetSelection_MouseMove(object sender, MouseEventArgs e)
  221. {
  222. if (e.Button == MouseButtons.Left && SourceTab != null)
  223. {
  224. TabPage HoveredTabPage = GetTabPageFromXY(e.X, e.Y);
  225. if (HoveredTabPage != null)
  226. {
  227. Rectangle Rect = SheetSelection.GetTabRect(SheetSelection.TabPages.IndexOf(HoveredTabPage));
  228. if (SheetSelection.TabPages.IndexOf(HoveredTabPage) < SheetSelection.TabPages.IndexOf(SourceTab))
  229. {
  230. Cursor = Cursors.Hand;
  231. if(HoveredTabPage == SheetSelection.TabPages[0])
  232. /*''ArrowForm.Location = Me.PointToScreen(New Point(Rect.Left - 5, _
  233. ''((Rect.Top + Rect.Height) _
  234. '' - ArrowForm.Height)))*/
  235. {}
  236. else
  237. //The same as above here but this is index 0 += 1
  238. /* ''ArrowForm.Location = Me.PointToScreen(New Point(Rect.Left - 2, _
  239. ''((Rect.Top + Rect.Height) _
  240. ''- ArrowForm.Height)))*/
  241. {}
  242. }
  243. else if (SheetSelection.TabPages.IndexOf(HoveredTabPage) > SheetSelection.TabPages.IndexOf(SourceTab))
  244. {
  245. Cursor = Cursors.Hand; //Custom cursor image
  246. }
  247. else
  248. Cursor = Cursors.Default;
  249. }
  250. else
  251. Cursor = Cursors.Default;
  252. }
  253. }
  254. private void SheetSelection_MouseDown(object sender, MouseEventArgs e)
  255. {
  256. if (e.Button == MouseButtons.Left && SheetSelection.SelectedTab != null && !SheetSelection.GetTabRect(SheetSelection.SelectedIndex).IsEmpty)
  257. SourceTab = SheetSelection.SelectedTab;
  258. }
  259. }
  260. }