54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System;
|
||
using System.Diagnostics;
|
||
using System.Windows.Forms;
|
||
|
||
/// <summary>
|
||
/// Provides actions for interacting with and managing the content of a log displayed in a <see cref="RichTextBox"/>.
|
||
/// </summary>
|
||
/// <remarks>This class allows users to perform common operations on a log, such as copying its content to the
|
||
/// clipboard, analyzing it using the CrapFixer online analyzer tool, or clearing the log. It is designed to work with a <see
|
||
/// cref="RichTextBox"/> control that serves as the log display.</remarks>
|
||
public sealed class LogActions
|
||
{
|
||
private readonly RichTextBox _logBox;
|
||
|
||
public LogActions(RichTextBox logBox)
|
||
{
|
||
_logBox = logBox ?? throw new ArgumentNullException(nameof(logBox));
|
||
}
|
||
|
||
/// <summary>Copies the whole log to the clipboard.</summary>
|
||
public void CopyToClipboard()
|
||
{
|
||
var text = _logBox.Text;
|
||
if (!string.IsNullOrEmpty(text))
|
||
Clipboard.SetText(text);
|
||
}
|
||
|
||
/// <summary>Opens CrapFixer online analyzer tool and passes the log via URL‑encoded GET parameter.</summary>
|
||
public void AnalyzeOnline(string baseUrl)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(baseUrl)) return;
|
||
|
||
// Get the current log text
|
||
var logText = _logBox.Text;
|
||
if (string.IsNullOrEmpty(logText)) return;
|
||
|
||
// Copy the log to the cboard
|
||
Clipboard.SetText(logText);
|
||
|
||
Process.Start(baseUrl);
|
||
|
||
MessageBox.Show(
|
||
"The log has been copied to the clipboard.\n" +
|
||
"Click “Paste log from clipboard” on the log analyzer page, or simply press CTRL+V,\n" +
|
||
"to insert it into the analyzer.",
|
||
"Log copied",
|
||
MessageBoxButtons.OK,
|
||
MessageBoxIcon.Information);
|
||
}
|
||
|
||
/// <summary>Clears the logger output.</summary>
|
||
public void Clear()
|
||
=> _logBox.Clear();
|
||
} |