/[RomCheater]/trunk/RomCheater.ScratchPad/ScratchPadDocument.cs
ViewVC logotype

Diff of /trunk/RomCheater.ScratchPad/ScratchPadDocument.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 775 by william, Thu Jun 20 22:59:40 2013 UTC revision 783 by william, Fri Jun 21 04:26:36 2013 UTC
# Line 10  using WeifenLuo.WinFormsUI.Docking; Line 10  using WeifenLuo.WinFormsUI.Docking;
10  using RomCheater.Core;  using RomCheater.Core;
11  using System.IO;  using System.IO;
12  using RomCheater.Logging;  using RomCheater.Logging;
 using Fireball.CodeEditor.SyntaxFiles;  
13    
14  namespace RomCheater.ScratchPad  namespace RomCheater.ScratchPad
15  {  {
16      public partial class ScratchPadDocument : UserControl      public partial class ScratchPadDocument : UserControl
17      {      {        
18            public event EventHandler<LinkClickedEventArgs> LinkClicked;
19          public event BaseEventHandler<ControlClosingEventArgs<int>> DocumentClosing;          public event BaseEventHandler<ControlClosingEventArgs<int>> DocumentClosing;
20    
21          const string NewDocumentFilename = "New";          const string NewDocumentFilename = "ScratchPad";
22          public ScratchPadDocument() : this(NewDocumentFilename, new TabPage(), 0) { }          public ScratchPadDocument() : this(NewDocumentFilename, new TabPage(), 0) { }
23          public ScratchPadDocument(TabPage tp, int index) : this(NewDocumentFilename, tp, index) { }          public ScratchPadDocument(TabPage tp, int index) : this(NewDocumentFilename, tp, index) { }
24          public ScratchPadDocument(int index) : this(NewDocumentFilename, new TabPage(), index) { }          public ScratchPadDocument(int index) : this(NewDocumentFilename, new TabPage(), index) { }
# Line 31  namespace RomCheater.ScratchPad Line 31  namespace RomCheater.ScratchPad
31              this.DocumentTab.Name = string.Format("tp{0}", this.DocumentIndex);              this.DocumentTab.Name = string.Format("tp{0}", this.DocumentIndex);
32              this.DocumentTab.Text = string.Format("{0}{1}", this.DocumentFilename, this.DocumentIndex);              this.DocumentTab.Text = string.Format("{0}{1}", this.DocumentFilename, this.DocumentIndex);
33              //this.DocumentClosing += new BaseEventHandler<ControlClosingEventArgs<int>>(ScratchPadDocument_DocumentClosing);              //this.DocumentClosing += new BaseEventHandler<ControlClosingEventArgs<int>>(ScratchPadDocument_DocumentClosing);
34                this.IsDefaultDocument = true;
35                this.DocumentSaved = true;
36              this.DocumentTab.Controls.Add(this);              this.DocumentTab.Controls.Add(this);
37          }          }
38    
# Line 51  namespace RomCheater.ScratchPad Line 53  namespace RomCheater.ScratchPad
53    
54          private bool ShouldAskSave()          private bool ShouldAskSave()
55          {          {
56              bool shouldAskSave = false;              return !DocumentSaved;
             return shouldAskSave;  
57          }          }
58    
59                  private bool _IsDefaultDocument;
60            public bool IsDefaultDocument { get { return _IsDefaultDocument; } private set { _IsDefaultDocument = value; } }
61    
62            private bool _DocumentSaved;
63            public bool DocumentSaved { get { return _DocumentSaved; } private set { _DocumentSaved = value; } }
64    
65          private string _DocumentFilename;          private string _DocumentFilename;
66          public string DocumentFilename { get { return _DocumentFilename; } set { _DocumentFilename = value; } }          public string DocumentFilename { get { return _DocumentFilename; } set { _DocumentFilename = value; } }
67          private TabPage _DocumentTab;          private TabPage _DocumentTab;
# Line 63  namespace RomCheater.ScratchPad Line 69  namespace RomCheater.ScratchPad
69          private int _DocumentIndex;          private int _DocumentIndex;
70          public int DocumentIndex { get { return _DocumentIndex; } set { _DocumentIndex = value; } }          public int DocumentIndex { get { return _DocumentIndex; } set { _DocumentIndex = value; } }
71    
72            private void UpdateTabName(string name)
73            {
74                this.DocumentTab.Text = name;
75            }
76          private TabControl GetParentTabControl()          private TabControl GetParentTabControl()
77          {          {
78              var parent = this.DocumentTab.Parent;              var parent = this.DocumentTab.Parent;
# Line 77  namespace RomCheater.ScratchPad Line 87  namespace RomCheater.ScratchPad
87              }              }
88          }          }
89    
90            public override Font Font
91            {
92                get
93                {
94                    return base.Font;
95                }
96                set
97                {
98                    base.Font = value;
99                    txtEditor.Font = base.Font;
100                    mnuItemClose.Font = base.Font;
101                    mnuItemOpen.Font = base.Font;
102                    mnuItemSave.Font = base.Font;
103                }
104            }
105    
106          private void mnuItemOpen_Click(object sender, EventArgs e)          private void mnuItemOpen_Click(object sender, EventArgs e)
107          {          {
108              OpenDocument();              OpenDocument();
109                this.DocumentSaved = true; // the file was just opened
110          }          }
111    
112          private void mnuItemSave_Click(object sender, EventArgs e)          private void mnuItemSave_Click(object sender, EventArgs e)
# Line 98  namespace RomCheater.ScratchPad Line 125  namespace RomCheater.ScratchPad
125              DialogResult result = FileLoader.ShowDialog();              DialogResult result = FileLoader.ShowDialog();
126              if (result != DialogResult.OK) return;              if (result != DialogResult.OK) return;
127              FileInfo fi = new FileInfo(FileLoader.FileName);              FileInfo fi = new FileInfo(FileLoader.FileName);
128                this.DocumentFilename = fi.FullName;
129              try              try
130              {              {
131                                    
# Line 111  namespace RomCheater.ScratchPad Line 139  namespace RomCheater.ScratchPad
139                              {                              {
140                                  var text = sr.ReadToEnd();                                            var text = sr.ReadToEnd();          
141                                  sr.Close();                                  sr.Close();
142                                    txtEditor.Text = text;                                
143                                  txtEditor.Document = new Fireball.Syntax.SyntaxDocument();                                  this.UpdateTabName(fi.Name);
144                                  txtEditor.Document.Text = text;                                                                  this.IsDefaultDocument = false;
145                                  SyntaxLanguage language = SyntaxLanguage.Text;                                  this.DocumentSaved = true;
                                 CodeEditorSyntaxLoader.SetSyntax(txtEditor, language);  
                                 txtEditor.Document.ReParse();  
146                              }                              }
147                              catch (Exception ex)                              catch (Exception ex)
148                              {                              {
# Line 132  namespace RomCheater.ScratchPad Line 158  namespace RomCheater.ScratchPad
158              }              }
159              catch (Exception ex)              catch (Exception ex)
160              {              {
161                    this.DocumentSaved = false;
162                  MessageBox.Show(string.Format("Failed to open: '{0}'", fi.Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);                  MessageBox.Show(string.Format("Failed to open: '{0}'", fi.Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
163                  logger.Error.WriteLine("Failed to open: '{0}'", fi.FullName);                  logger.Error.WriteLine("Failed to open: '{0}'", fi.FullName);
164                  logger.Error.WriteLine(ex.ToString());                  logger.Error.WriteLine(ex.ToString());
# Line 139  namespace RomCheater.ScratchPad Line 166  namespace RomCheater.ScratchPad
166          }          }
167          private void SaveDocument()          private void SaveDocument()
168          {          {
169              DialogResult result = FileSaver.ShowDialog();              FileInfo fi = null;
170              if (result != DialogResult.OK) return;              if (this.IsDefaultDocument)
171                {
172                    DialogResult result = FileSaver.ShowDialog();
173                    if (result != DialogResult.OK) return;
174                    fi = new FileInfo(FileSaver.FileName);
175                }
176                else
177                {
178                    fi = new FileInfo(this.DocumentFilename);
179                }          
180                try
181                {
182                    using (FileStream fs = new FileStream(fi.FullName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
183                    {
184                        try
185                        {
186                            using (StreamWriter sw = new StreamWriter(fs))
187                            {
188                                try
189                                {
190                                    foreach (var t in txtEditor.Lines)
191                                    {
192                                        sw.WriteLine(t);
193                                    }
194                                    sw.Flush();
195                                    sw.Close();
196                                    this.DocumentSaved = true;
197                                }
198                                catch (Exception ex)
199                                {
200                                    throw ex;
201                                }
202                            }
203                        }
204                        catch (Exception ex)
205                        {
206                            throw ex;
207                        }
208                    }
209                }
210                catch (Exception ex)
211                {
212                    this.DocumentSaved = false;
213                    MessageBox.Show(string.Format("Failed to save: '{0}'", fi.Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
214                    logger.Error.WriteLine("Failed to save: '{0}'", fi.FullName);
215                    logger.Error.WriteLine(ex.ToString());
216                }
217          }          }
218    
219          private void CloseDocument(bool quiting)          private void CloseDocument(bool quiting)
# Line 156  namespace RomCheater.ScratchPad Line 229  namespace RomCheater.ScratchPad
229                  this.DocumentClosing.Invoke(new ControlClosingEventArgs<int>(this, this.DocumentIndex));                  this.DocumentClosing.Invoke(new ControlClosingEventArgs<int>(this, this.DocumentIndex));
230              }              }
231          }          }
232    
233            private void txtEditor_TextChanged(object sender, EventArgs e)
234            {
235                this.DocumentSaved = false;
236            }
237    
238            private void txtEditor_LinkClicked(object sender, LinkClickedEventArgs e)
239            {
240                if (this.LinkClicked != null)
241                {
242                    this.LinkClicked.Invoke(sender, e);
243                }
244            }
245      }      }
246  }  }

Legend:
Removed from v.775  
changed lines
  Added in v.783

  ViewVC Help
Powered by ViewVC 1.1.22