diff options
Diffstat (limited to 'win/C#/frmActivityWindow.cs')
-rw-r--r-- | win/C#/frmActivityWindow.cs | 105 |
1 files changed, 94 insertions, 11 deletions
diff --git a/win/C#/frmActivityWindow.cs b/win/C#/frmActivityWindow.cs index f4f6b0442..7587d6ca2 100644 --- a/win/C#/frmActivityWindow.cs +++ b/win/C#/frmActivityWindow.cs @@ -22,6 +22,7 @@ namespace Handbrake {
public partial class frmActivityWindow : Form
{
+ delegate void SetTextCallback(string text);
String read_file;
Thread monitor;
frmMain mainWindow;
@@ -31,7 +32,6 @@ namespace Handbrake /// <summary>
/// This window should be used to display the RAW output of the handbrake CLI which is produced during an encode.
/// </summary>
- ///
public frmActivityWindow(string file, frmMain fm, frmQueue fq)
{
InitializeComponent();
@@ -42,11 +42,32 @@ namespace Handbrake read_file = file;
position = 0;
+ // Print the Log header in the Rich text box.
+ displayLogHeader();
+
+ // Start a new thread which will montior and keep the log window up to date if required/
+ startLogThread(read_file);
+
+ if (file == "dvdinfo.dat")
+ txt_log.Text = "Selected Log: Scan Log";
+ else if (file == "hb_encode_log.dat")
+ txt_log.Text = "Selected Log: Encode Log";
+
+
+ // When the window closes, we want to abort the monitor thread.
+ this.Disposed += new EventHandler(forceQuit);
+ }
+
+ /// <summary>
+ /// Displays the Log header
+ /// </summary>
+ private void displayLogHeader()
+ {
// System Information
Functions.SystemInfo info = new Functions.SystemInfo();
// Add a header to the log file indicating that it's from the Windows GUI and display the windows version
- rtf_actLog.AppendText("### Windows GUI \n");
+ rtf_actLog.AppendText(String.Format("### Windows GUI {1} {0} \n", Properties.Settings.Default.hb_build, Properties.Settings.Default.hb_version));
rtf_actLog.AppendText(String.Format("### Running: {0} \n###\n", Environment.OSVersion.ToString()));
rtf_actLog.AppendText(String.Format("### CPU: {0} \n", info.getCpuCount()));
rtf_actLog.AppendText(String.Format("### Ram: {0} MB \n", info.TotalPhysicalMemory()));
@@ -55,8 +76,15 @@ namespace Handbrake rtf_actLog.AppendText(String.Format("### Install Dir: {0} \n", Application.StartupPath));
rtf_actLog.AppendText(String.Format("### Data Dir: {0} \n", Application.UserAppDataPath));
rtf_actLog.AppendText("#########################################\n\n");
+ }
- string logFile = Path.Combine(Path.GetTempPath(), read_file);
+ /// <summary>
+ /// Starts a new thread which runs the autoUpdate function.
+ /// </summary>
+ /// <param name="file"> File which will be used to populate the Rich text box.</param>
+ private void startLogThread(string file)
+ {
+ string logFile = Path.Combine(Path.GetTempPath(), file);
if (File.Exists(logFile))
{
// Start a new thread to run the autoUpdate process
@@ -66,20 +94,48 @@ namespace Handbrake }
else
rtf_actLog.AppendText("\n\n\nERROR: The log file could not be found. \nMaybe you cleared your system's tempory folder or maybe you just havn't run an encode yet. \nTried to find the log file in: " + logFile);
-
- // When the window closes, we want to abort the monitor thread.
- this.Disposed += new EventHandler(forceQuit);
}
- private void forceQuit(object sender, EventArgs e)
+ /// <summary>
+ /// Change the log file to be displayed to hb_encode_log.dat
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void btn_scan_log_Click(object sender, EventArgs e)
{
if (monitor != null)
monitor.Abort();
- this.Close();
+ rtf_actLog.Clear();
+ read_file = "dvdinfo.dat";
+ displayLogHeader();
+ startLogThread(read_file);
+ txt_log.Text = "Selected Log: Scan Log";
+ }
+
+ /// <summary>
+ /// Change the log file to be displayed to dvdinfo.dat
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void btn_encode_log_Click(object sender, EventArgs e)
+ {
+ if (monitor != null)
+ monitor.Abort();
+
+ rtf_actLog.Clear();
+ read_file = "hb_encode_log.dat";
+ position = 0;
+ displayLogHeader();
+ startLogThread(read_file);
+ txt_log.Text = "Selected Log: Encode Log";
}
- // Update the Activity window every 5 seconds with the latest log data.
+ /// <summary>
+ /// Updates the log window with any new data which is in the log file.
+ /// This is done every 5 seconds.
+ /// </summary>
+ /// <param name="state"></param>
private void autoUpdate(object state)
{
Boolean lastUpdate = false;
@@ -101,6 +157,9 @@ namespace Handbrake }
}
+ /// <summary>
+ /// Finds any new text in the log file and calls a funciton to display this new text.
+ /// </summary>
private void updateTextFromThread()
{
string text = "";
@@ -111,13 +170,17 @@ namespace Handbrake {
text = data[position].ToString();
if (data[position].ToString().Contains("has exited"))
- text = "\n ############ End of Encode ############## \n";
+ text = "\n ############ End of Log ############## \n";
position++;
SetText(text);
}
}
- delegate void SetTextCallback(string text);
+
+ /// <summary>
+ /// Updates the rich text box with anything in the string text.
+ /// </summary>
+ /// <param name="text"></param>
private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
@@ -134,6 +197,10 @@ namespace Handbrake }
}
+ /// <summary>
+ /// Read the log file, and store the data in a List.
+ /// </summary>
+ /// <returns></returns>
private List<string> readFile()
{
// Ok, the task here is to, Get an arraylist of log data.
@@ -176,5 +243,21 @@ namespace Handbrake return null;
}
+ /// <summary>
+ /// Kills the montior thead when the window is disposed of.
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void forceQuit(object sender, EventArgs e)
+ {
+ if (monitor != null)
+ monitor.Abort();
+
+ this.Close();
+ }
+
+
+
+
}
}
\ No newline at end of file |