fixed #1914: Use singleton debug window

This commit is contained in:
Jaex 2018-01-04 10:08:42 +03:00
parent 3b06f7daa0
commit 212b21904f
2 changed files with 16 additions and 4 deletions

View file

@ -33,9 +33,11 @@ namespace ShareX.HelpersLib
{ {
public partial class DebugForm : Form public partial class DebugForm : Form
{ {
private static DebugForm instance;
public Logger Logger { get; private set; } public Logger Logger { get; private set; }
public DebugForm(Logger logger) private DebugForm(Logger logger)
{ {
InitializeComponent(); InitializeComponent();
Icon = ShareXResources.Icon; Icon = ShareXResources.Icon;
@ -54,6 +56,16 @@ public DebugForm(Logger logger)
FormClosing += (sender, e) => Logger.MessageAdded -= logger_MessageAdded; FormClosing += (sender, e) => Logger.MessageAdded -= logger_MessageAdded;
} }
public static DebugForm GetFormInstance(Logger logger)
{
if (instance == null || instance.IsDisposed)
{
instance = new DebugForm(logger);
}
return instance;
}
private void logger_MessageAdded(string message) private void logger_MessageAdded(string message)
{ {
this.InvokeSafe(() => AppendMessage(message)); this.InvokeSafe(() => AppendMessage(message));
@ -65,7 +77,7 @@ private void AppendMessage(string message)
{ {
int start = rtbDebug.SelectionStart; int start = rtbDebug.SelectionStart;
int len = rtbDebug.SelectionLength; int len = rtbDebug.SelectionLength;
rtbDebug.AppendText(message + Environment.NewLine); rtbDebug.AppendText(message);
if (len > 0) if (len > 0)
{ {
rtbDebug.Select(start, len); rtbDebug.Select(start, len);
@ -97,7 +109,7 @@ private void btnLoadedAssemblies_Click(object sender, EventArgs e)
} }
string assemblies = sb.ToString().Trim(); string assemblies = sb.ToString().Trim();
AppendMessage("Loaded assemblies:\r\n" + assemblies); DebugHelper.WriteLine($"Loaded assemblies:\r\n{assemblies}");
} }
private void rtbDebug_LinkClicked(object sender, LinkClickedEventArgs e) private void rtbDebug_LinkClicked(object sender, LinkClickedEventArgs e)

View file

@ -1585,7 +1585,7 @@ private void tsbImageHistory_Click(object sender, EventArgs e)
private void tsmiShowDebugLog_Click(object sender, EventArgs e) private void tsmiShowDebugLog_Click(object sender, EventArgs e)
{ {
new DebugForm(DebugHelper.Logger).Show(); DebugForm.GetFormInstance(DebugHelper.Logger).ForceActivate();
} }
private void tsmiTestImageUpload_Click(object sender, EventArgs e) private void tsmiTestImageUpload_Click(object sender, EventArgs e)