Horizon – Blame information for rev 8

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
2 using System.Windows.Forms;
3 using Be.Windows.Forms;
4 using Horizon.Database;
5 using Horizon.Utilities;
6  
7 namespace Horizon.Snapshots
8 {
9 public partial class HexViewForm : Form
10 {
11 #region Public Events & Delegates
12  
13 public event EventHandler<SaveDataEventArgs> SaveData;
14  
15 #endregion
16  
17 #region Public Methods
18  
19 public void UpdateData(byte[] data)
20 {
21 hexBox1.InvokeIfRequired(hexBox =>
22 {
23 _originalData = (byte[])data.Clone();
24  
25 _dynamicByteProvider = new DynamicByteProvider(data);
26 hexBox.ByteProvider = _dynamicByteProvider;
27 hexBox.Refresh();
28 });
29 }
30  
31 #endregion
32  
33 #region Private Delegates, Events, Enums, Properties, Indexers and Fields
34  
35 private readonly SnapshotDatabase _snapshotDatabase;
36  
37 private DynamicByteProvider _dynamicByteProvider;
38  
39 private string _hash;
40  
41 private byte[] _originalData;
42  
43 #endregion
44  
45 #region Constructors, Destructors and Finalizers
46  
47 public HexViewForm()
48 {
49 InitializeComponent();
50 }
51  
52 public HexViewForm(SnapshotDatabase snapshotDatabase, string hash, byte[] data) : this()
53 {
54 _originalData = (byte[])data.Clone();
55 _hash = hash;
56  
57 _snapshotDatabase = snapshotDatabase;
58 _snapshotDatabase.SnapshotDataUpdate += SnapshotDatabaseSnapshotDataUpdate;
59  
60 _dynamicByteProvider = new DynamicByteProvider(data);
61 hexBox1.ByteProvider = _dynamicByteProvider;
62 }
63  
64 /// <summary>
65 /// Clean up any resources being used.
66 /// </summary>
67 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
68 protected override void Dispose(bool disposing)
69 {
70 if (disposing && components != null)
71 {
72 components.Dispose();
73 }
74  
75 _snapshotDatabase.SnapshotDataUpdate -= SnapshotDatabaseSnapshotDataUpdate;
76  
77 base.Dispose(disposing);
78 }
79  
80 #endregion
81  
82 #region Event Handlers
8 office 83 private void HexViewForm_Load(object sender, EventArgs e)
84 {
85 Utilities.WindowState.FormTracker.Track(this);
86 }
1 office 87 private void SnapshotDatabaseSnapshotDataUpdate(object sender, SnapshotDataUpdateEventArgs e)
88 {
89 switch (e)
90 {
91 case SnapshotDataUpdateSuccessEventArgs snapshotDataUpdateSuccessEventArgs:
92 _hash = snapshotDataUpdateSuccessEventArgs.NewHash;
93  
94 statusStrip1.InvokeIfRequired(statusStrip =>
95 {
96 toolStripProgressBar1.Value = toolStripProgressBar1.Maximum;
97 toolStripStatusLabel1.Text = "Data saved.";
98 });
99 break;
100 case SnapshotDataUpdateFailureEventArgs _:
101 statusStrip1.InvokeIfRequired(statusStrip =>
102 {
103 toolStripProgressBar1.Value = toolStripProgressBar1.Minimum;
104 toolStripStatusLabel1.Text = "Could not save data.";
105 });
106 break;
107 }
108 }
109  
110 private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
111 {
112 if (_dynamicByteProvider.HasChanges())
113 {
114 _dynamicByteProvider.ApplyChanges();
115  
116 statusStrip1.InvokeIfRequired(statusStrip =>
117 {
118 toolStripProgressBar1.Value = toolStripProgressBar1.Minimum;
119 toolStripStatusLabel1.Text = "Saving.";
120 });
121  
122 SaveData?.Invoke(this, new SaveDataEventArgs(_hash, _dynamicByteProvider.Bytes.ToArray()));
123 }
124 }
125  
126 private void ReloadToolStripMenuItem_Click(object sender, EventArgs e)
127 {
128 hexBox1.InvokeIfRequired(hexBox =>
129 {
130 _dynamicByteProvider = new DynamicByteProvider(_originalData);
131 hexBox.ByteProvider = _dynamicByteProvider;
132 hexBox.Refresh();
133 });
134 }
135  
136 #endregion
8 office 137  
138  
1 office 139 }
140 }