Skip to content

Commit cc42465

Browse files
committed
Moved logging stuff.
1 parent c22e284 commit cc42465

13 files changed

+115
-50
lines changed

Forms/LogForm.Designer.cs

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Forms/LogForm.cs

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Drawing;
66
using System.Linq;
77
using System.Windows.Forms;
8+
using Microsoft.SqlServer.MessageBox;
89
using ReClassNET.Logger;
910
using ReClassNET.UI;
1011

@@ -17,6 +18,8 @@ private class LogItem
1718
public Image Icon { get; set; }
1819

1920
public string Message { get; set; }
21+
22+
public Exception Exception { get; set; }
2023
}
2124

2225
private readonly List<LogItem> items = new List<LogItem>();
@@ -43,14 +46,47 @@ protected override void OnFormClosed(FormClosedEventArgs e)
4346
GlobalWindowManager.RemoveWindow(this);
4447
}
4548

49+
#region Event Handler
50+
51+
private void copyToClipboardButton_Click(object sender, EventArgs e)
52+
{
53+
Clipboard.SetText(items.Select(i => i.Message).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}"));
54+
}
55+
56+
private void closeButton_Click(object sender, EventArgs e)
57+
{
58+
Close();
59+
}
60+
61+
private void entriesDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
62+
{
63+
ShowDetailsForm();
64+
}
65+
66+
private void showDetailsToolStripMenuItem_Click(object sender, EventArgs e)
67+
{
68+
ShowDetailsForm();
69+
}
70+
71+
#endregion
72+
73+
private void RefreshDataBinding()
74+
{
75+
var cm = entriesDataGridView.BindingContext[items] as CurrencyManager;
76+
if (cm != null)
77+
{
78+
cm.Refresh();
79+
}
80+
}
81+
4682
public void Clear()
4783
{
4884
items.Clear();
4985

5086
RefreshDataBinding();
5187
}
5288

53-
public void Add(LogLevel level, string message)
89+
public void Add(LogLevel level, string message, Exception ex)
5490
{
5591
Contract.Requires(message != null);
5692

@@ -71,28 +107,26 @@ public void Add(LogLevel level, string message)
71107
break;
72108
}
73109

74-
items.Add(new LogItem { Icon = icon, Message = message });
110+
items.Add(new LogItem { Icon = icon, Message = message, Exception = ex });
75111

76112
RefreshDataBinding();
77113
}
78114

79-
private void RefreshDataBinding()
115+
private void ShowDetailsForm()
80116
{
81-
var cm = entriesDataGridView.BindingContext[items] as CurrencyManager;
82-
if (cm != null)
117+
var item = entriesDataGridView.SelectedRows.Cast<DataGridViewRow>().FirstOrDefault()?.DataBoundItem as LogItem;
118+
if (item != null)
83119
{
84-
cm.Refresh();
120+
if (item.Exception != null)
121+
{
122+
item.Exception.HelpLink = "https://github.com/KN4CK3R/ReClass.NET/issues";
123+
124+
var msg = new ExceptionMessageBox(item.Exception);
125+
msg.ShowToolBar = true;
126+
msg.Symbol = ExceptionMessageBoxSymbol.Error;
127+
msg.Show(null);
128+
}
85129
}
86130
}
87-
88-
private void copyToClipboardButton_Click(object sender, EventArgs e)
89-
{
90-
Clipboard.SetText(items.Select(i => i.Message).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}"));
91-
}
92-
93-
private void closeButton_Click(object sender, EventArgs e)
94-
{
95-
Close();
96-
}
97131
}
98132
}

Forms/LogForm.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,7 @@
123123
<metadata name="messageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
124124
<value>True</value>
125125
</metadata>
126+
<metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
127+
<value>17, 17</value>
128+
</metadata>
126129
</root>

Forms/MainForm.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ protected override void OnLoad(EventArgs e)
8080

8181
GlobalWindowManager.AddWindow(this);
8282

83-
pluginManager.LoadAllPlugins(Path.Combine(Application.StartupPath, Constants.PluginsFolder));
83+
pluginManager.LoadAllPlugins(Path.Combine(Application.StartupPath, Constants.PluginsFolder), Program.Logger);
8484
}
8585

8686
protected override void OnFormClosed(FormClosedEventArgs e)
@@ -330,7 +330,7 @@ private void loadSymbolToolStripMenuItem_Click(object sender, EventArgs e)
330330
}
331331
catch (Exception ex)
332332
{
333-
ex.ShowDialog();
333+
Program.Logger.Log(ex);
334334
}
335335
}
336336
}

Forms/ProcessMemoryViewForm.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ private void sectionsDataGridView_CellMouseDown(object sender, DataGridViewCellM
7575
{
7676
if (e.Button == MouseButtons.Right)
7777
{
78-
int rowSelected = e.RowIndex;
78+
int row = e.RowIndex;
7979
if (e.RowIndex != -1)
8080
{
81-
sectionsDataGridView.Rows[rowSelected].Selected = true;
81+
sectionsDataGridView.Rows[row].Selected = true;
8282
}
8383
}
8484
}

Logger/BaseLogger.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System;
1+
using Microsoft.SqlServer.MessageBox;
2+
using System;
3+
using System.Diagnostics.Contracts;
24

35
namespace ReClassNET.Logger
46
{
@@ -10,14 +12,25 @@ class BaseLogger : ILogger
1012

1113
public void Log(Exception ex)
1214
{
13-
Log(LogLevel.Error, ex.ToString());
15+
Contract.Requires(ex != null);
16+
17+
Log(LogLevel.Error, ExceptionMessageBox.GetMessageText(ex), ex);
1418
}
1519

1620
public void Log(LogLevel level, string message)
1721
{
22+
Contract.Requires(message != null);
23+
24+
Log(level, message, null);
25+
}
26+
27+
private void Log(LogLevel level, string message, Exception ex)
28+
{
29+
Contract.Requires(message != null);
30+
1831
lock (sync)
1932
{
20-
NewLogEntry?.Invoke(level, message);
33+
NewLogEntry?.Invoke(level, message, ex);
2134
}
2235
}
2336
}

Logger/GuiLogger.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Diagnostics.Contracts;
22
using System.Windows.Forms;
33
using ReClassNET.Forms;
4+
using System;
45

56
namespace ReClassNET.Logger
67
{
@@ -26,7 +27,7 @@ public GuiLogger()
2627
NewLogEntry += OnNewLogEntry;
2728
}
2829

29-
private void OnNewLogEntry(LogLevel level, string message)
30+
private void OnNewLogEntry(LogLevel level, string message, Exception ex)
3031
{
3132
Contract.Requires(message != null);
3233

@@ -37,14 +38,16 @@ private void OnNewLogEntry(LogLevel level, string message)
3738

3839
ShowForm();
3940

40-
form.Add(level, message);
41+
form.Add(level, message, ex);
4142
}
4243

4344
public void ShowForm()
4445
{
4546
if (!form.Visible)
4647
{
4748
form.Show();
49+
50+
form.BringToFront();
4851
}
4952
}
5053
}

Logger/ILogger.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace ReClassNET.Logger
55
{
6-
public delegate void NewLogEntryEventHandler(LogLevel level, string message);
6+
public delegate void NewLogEntryEventHandler(LogLevel level, string message, Exception ex);
77

88
[ContractClass(typeof(ILoggerContract))]
99
public interface ILogger

Plugins/PluginManager.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Runtime.InteropServices;
88
using ReClassNET.Memory;
99
using ReClassNET.Util;
10+
using ReClassNET.Logger;
1011

1112
namespace ReClassNET.Plugins
1213
{
@@ -35,9 +36,10 @@ public IEnumerator<PluginInfo> GetEnumerator()
3536
return plugins.GetEnumerator();
3637
}
3738

38-
public void LoadAllPlugins(string path)
39+
public void LoadAllPlugins(string path, ILogger logger)
3940
{
4041
Contract.Requires(path != null);
42+
Contract.Requires(logger != null);
4143

4244
try
4345
{
@@ -48,19 +50,20 @@ public void LoadAllPlugins(string path)
4850

4951
var directory = new DirectoryInfo(path);
5052

51-
LoadPlugins(directory.GetFiles("*.dll"));
53+
LoadPlugins(directory.GetFiles("*.dll"), logger);
5254

53-
LoadPlugins(directory.GetFiles("*.exe"));
55+
LoadPlugins(directory.GetFiles("*.exe"), logger);
5456
}
55-
catch
57+
catch (Exception ex)
5658
{
57-
59+
logger.Log(ex);
5860
}
5961
}
6062

61-
private void LoadPlugins(IEnumerable<FileInfo> files)
63+
private void LoadPlugins(IEnumerable<FileInfo> files, ILogger logger)
6264
{
6365
Contract.Requires(files != null);
66+
Contract.Requires(logger != null);
6467

6568
foreach (var fi in files)
6669
{
@@ -114,7 +117,7 @@ private void LoadPlugins(IEnumerable<FileInfo> files)
114117
}
115118
catch (Exception ex)
116119
{
117-
ex.ShowDialog();
120+
logger.Log(ex);
118121
}
119122
}
120123
}

UI/ClassNodeView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ private void deleteClassToolStripMenuItem_Click(object sender, EventArgs e)
227227
}
228228
catch (ClassReferencedException ex)
229229
{
230-
ex.ShowDialog();
230+
Program.Logger.Log(ex);
231231
}
232232
}
233233
}

0 commit comments

Comments
 (0)