Added a debug tool to view and manage log files. Slight tweaks to the main form as well as the thread exception methods.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AdvertsingProfitControl
|
||||
{
|
||||
public partial class FrmLogFileViewer : Form
|
||||
{
|
||||
private string _clickedNode;
|
||||
//Create the right-click context menu.
|
||||
private readonly ContextMenu _menu = new ContextMenu();
|
||||
private readonly MenuItem _item = new MenuItem("Delete File");
|
||||
public FrmLogFileViewer()
|
||||
{
|
||||
InitializeComponent();
|
||||
RefreshLogFileListing();
|
||||
fileListTreeView.NodeMouseClick += NodeSelectionChangedOnMouseClick;
|
||||
_menu.MenuItems.Add(_item);
|
||||
_item.Click += DeleteFile;
|
||||
}
|
||||
|
||||
private void DeleteFile(object sender, EventArgs e)
|
||||
{
|
||||
if (_clickedNode == string.Empty) return;
|
||||
if (!File.Exists(_clickedNode)) return;
|
||||
if (_clickedNode != null) File.Delete(_clickedNode);
|
||||
RefreshLogFileListing();
|
||||
}
|
||||
|
||||
private void NodeSelectionChangedOnMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
//Refresh the text boxes.
|
||||
ReadSelectedFile(e.Node.Index);
|
||||
}
|
||||
else if(e.Button == MouseButtons.Right)
|
||||
{
|
||||
_clickedNode = e.Node.Name;
|
||||
_menu.Show(fileListTreeView, e.Location);
|
||||
fileListTreeView.SelectedNode = e.Node;
|
||||
ReadSelectedFile(e.Node.Index);
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshLogFileListing()
|
||||
{
|
||||
var fileNames = Directory.GetFiles(GlobalClasses.LogFilePath);
|
||||
fileListTreeView.Nodes.Clear();
|
||||
foreach (var fileName in fileNames)
|
||||
{
|
||||
var file = new FileInfo(fileName);
|
||||
var node = new TreeNode(file.Name) { Name = file.FullName };
|
||||
fileListTreeView.Nodes.Add(node);
|
||||
}
|
||||
|
||||
if (fileListTreeView.Nodes.Count <= 0) return;
|
||||
ReadSelectedFile();
|
||||
}
|
||||
|
||||
private void ReadSelectedFile(int selectedIndex = -1)
|
||||
{
|
||||
var lines = File.ReadAllLines(selectedIndex == -1 ? fileListTreeView.Nodes[0].Name : fileListTreeView.Nodes[selectedIndex].Name);
|
||||
selectedFileNameLabel.Text = selectedIndex == -1
|
||||
? fileListTreeView.Nodes[0].Text
|
||||
: fileListTreeView.Nodes[selectedIndex].Text;
|
||||
friendlyViewTextBox.Text = string.Empty;
|
||||
rawViewTextBox.Text = string.Empty;
|
||||
var lastCharWasWhiteSpace = false;
|
||||
foreach (var line in lines)
|
||||
{
|
||||
if (line == string.Empty)
|
||||
{
|
||||
rawViewTextBox.Text += Environment.NewLine;
|
||||
if (!lastCharWasWhiteSpace)
|
||||
{
|
||||
friendlyViewTextBox.Text += Environment.NewLine;
|
||||
}
|
||||
lastCharWasWhiteSpace = true;
|
||||
continue;
|
||||
}
|
||||
if (!line.Trim().StartsWith("at"))
|
||||
{
|
||||
friendlyViewTextBox.Text += line + Environment.NewLine;
|
||||
}
|
||||
rawViewTextBox.Text += line + Environment.NewLine;
|
||||
lastCharWasWhiteSpace = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user