summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--win/C#/frmActivityWindow.cs2
-rw-r--r--win/C#/frmMain.cs91
-rw-r--r--win/C#/frmQueue.cs82
3 files changed, 81 insertions, 94 deletions
diff --git a/win/C#/frmActivityWindow.cs b/win/C#/frmActivityWindow.cs
index d21eecd51..468e36cce 100644
--- a/win/C#/frmActivityWindow.cs
+++ b/win/C#/frmActivityWindow.cs
@@ -162,7 +162,7 @@ namespace Handbrake
updateTextFromThread();
while (true)
{
- if ((mainWindow.isEncoding() == true) || (queueWindow.isEncoding() == true))
+ if (queueWindow.isEncoding() == true)
updateTextFromThread();
else
{
diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs
index f70643731..0f2d4dfae 100644
--- a/win/C#/frmMain.cs
+++ b/win/C#/frmMain.cs
@@ -35,7 +35,6 @@ namespace Handbrake
QueryGenerator queryGen = new QueryGenerator();
// Globals: Mainly used for tracking.
- internal Process hbProc;
private frmQueue queueWindow;
private string lastAction = null;
public int maxWidth = 0;
@@ -470,13 +469,12 @@ namespace Handbrake
else
query = queryGen.GenerateTheQuery(this);
- ThreadPool.QueueUserWorkItem(procMonitor, query);
- lbl_encode.Visible = true;
- lbl_encode.Text = "Encoding in Progress";
+ encodeQueue.add(query, text_source.Text, text_destination.Text);
+ encodeQueue.write2disk("hb_queue_recovery.xml");
+ queueWindow.setQueue(encodeQueue);
+ queueWindow.frmMain_encode();
- btn_start.Text = "Stop";
- btn_start.ToolTipText = "Stop the encoding process. \nWarning: This may break your file. Press ctrl-c in the CLI window if you wish it to exit cleanly.";
- btn_start.Image = Properties.Resources.stop;
+ setEncodeStatus(1); // Encode is running, so setup the GUI appropriately
}
}
private void btn_add2Queue_Click(object sender, EventArgs e)
@@ -485,7 +483,6 @@ namespace Handbrake
MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
{
-
String query = queryGen.GenerateTheQuery(this);
if (rtf_query.Text != "")
query = rtf_query.Text;
@@ -1452,52 +1449,6 @@ namespace Handbrake
// MainWindow Components, Actions and Functions ***********************
- #region Encoding
-
- // Declarations
- private delegate void UpdateUIHandler();
-
- // Encoding Functions
- private void procMonitor(object state)
- {
- // Make sure we are not already encoding and if we are then display an error.
- if (hbProc != null)
- hbProc.CloseMainWindow();
- else
- {
- hbProc = cliObj.runCli(this, (string)state);
- hbProc.WaitForExit();
- setEncodeLabelFinished();
- hbProc = null;
-
- // If the window is minimized, display the notification in a popup.
- if (FormWindowState.Minimized == this.WindowState)
- {
- notifyIcon.BalloonTipText = lbl_encode.Text;
- notifyIcon.ShowBalloonTip(500);
- }
-
- // After the encode is done, we may want to shutdown, suspend etc.
- cliObj.addCLIQueryToLog((string)state);
- cliObj.copyLog((string)state, text_destination.Text); // Make a copy of the log in the users desired location if necessary
- cliObj.afterEncodeAction();
- }
- }
- private void setEncodeLabelFinished()
- {
- if (this.InvokeRequired)
- {
- this.BeginInvoke(new UpdateUIHandler(setEncodeLabelFinished));
- return;
- }
- lbl_encode.Text = "Encoding Finished";
- btn_start.Text = "Start";
- btn_start.ToolTipText = "Start the encoding process";
- btn_start.Image = Properties.Resources.Play;
- }
-
- #endregion
-
#region DVD Drive Detection
// Source Button Drive Detection
private delegate void ProgressUpdateHandler();
@@ -1841,15 +1792,35 @@ namespace Handbrake
#region Public Methods
/// <summary>
- /// Is the mainWindow currently monitoring an encoding session
+ /// Setup the GUI for Encoding or finished Encoding.
+ /// 1 = Encode Running
+ /// 0 = Encode Finished.
/// </summary>
- /// <returns>boolean</returns>
- public Boolean isEncoding()
+ /// <param name="i">Int</param>
+ public void setEncodeStatus(int i)
{
- if (hbProc == null)
- return false;
+ if (i == 0)
+ {
+ lbl_encode.Text = "Encoding Finished";
+ btn_start.Text = "Start";
+ btn_start.ToolTipText = "Start the encoding process";
+ btn_start.Image = Properties.Resources.Play;
+
+ // If the window is minimized, display the notification in a popup.
+ if (FormWindowState.Minimized == this.WindowState)
+ {
+ notifyIcon.BalloonTipText = lbl_encode.Text;
+ notifyIcon.ShowBalloonTip(500);
+ }
+ }
else
- return true;
+ {
+ lbl_encode.Visible = true;
+ lbl_encode.Text = "Encoding in Progress";
+ btn_start.Text = "Stop";
+ btn_start.ToolTipText = "Stop the encoding process. \nWarning: This may break your file. Press ctrl-c in the CLI window if you wish it to exit cleanly.";
+ btn_start.Image = Properties.Resources.stop;
+ }
}
/// <summary>
diff --git a/win/C#/frmQueue.cs b/win/C#/frmQueue.cs
index 765c940b7..86ae4b5bd 100644
--- a/win/C#/frmQueue.cs
+++ b/win/C#/frmQueue.cs
@@ -49,7 +49,10 @@ namespace Handbrake
if (progressBar.Value != 0)
{
progressBar.Value = 0;
- progressBar.Step = 100 / queue.count();
+ if (queue.count() == 0)
+ progressBar.Step = 100;
+ else
+ progressBar.Step = 100 / queue.count();
progressBar.PerformStep();
lbl_progressValue.Text = string.Format("{0} %", progressBar.Value);
}
@@ -67,6 +70,28 @@ namespace Handbrake
return true;
}
+ /// <summary>
+ /// This disables encoding from the queue when a single encode from the main window is running.
+ /// </summary>
+ public void frmMain_encode()
+ {
+ cancel = false;
+ // Start the encode
+ try
+ {
+ if (queue.count() != 0)
+ {
+ Thread theQ = new Thread(startProc);
+ theQ.IsBackground = true;
+ theQ.Start();
+ }
+ }
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
+ }
+
// Redraw's the queue with the latest data from the Queue class
private void redrawQueue()
{
@@ -111,6 +136,7 @@ namespace Handbrake
private void btn_encode_Click(object sender, EventArgs e)
{
mainWindow.setLastAction("encode");
+ mainWindow.setEncodeStatus(1);
if (queue.count() != 0)
{
@@ -124,10 +150,14 @@ namespace Handbrake
if (queue.count() != 0)
{
// Setup or reset some values
+ btn_encode.Enabled = false;
btn_stop.Visible = true;
progressBar.Value = 0;
lbl_progressValue.Text = "0 %";
- progressBar.Step = 100 / queue.count();
+ if (queue.count() == 0)
+ progressBar.Step = 100;
+ else
+ progressBar.Step = 100 / queue.count();
Thread theQ = new Thread(startProc);
theQ.IsBackground = true;
theQ.Start();
@@ -151,7 +181,8 @@ namespace Handbrake
queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file
setEncValue();
- updateUIElements();
+ if (this.Created)
+ updateUIElements();
hbProc = cliObj.runCli(this, query);
@@ -171,6 +202,7 @@ namespace Handbrake
}
resetQueue();
+ mainWindow.setEncodeStatus(0); // Tell the main window encodes have finished.
// After the encode is done, we may want to shutdown, suspend etc.
cliObj.afterEncodeAction();
@@ -296,7 +328,7 @@ namespace Handbrake
}
}
- // Move an item up the Queue
+ // Queue Management
private void btn_up_Click(object sender, EventArgs e)
{
if (list_queue.SelectedIndices.Count != 0)
@@ -313,8 +345,6 @@ namespace Handbrake
list_queue.Select();
}
}
-
- // Move an item down the Queue
private void btn_down_Click(object sender, EventArgs e)
{
if (list_queue.SelectedIndices.Count != 0)
@@ -331,8 +361,6 @@ namespace Handbrake
list_queue.Select();
}
}
-
- // Remove an item from the queue
private void btn_delete_Click(object sender, EventArgs e)
{
if (list_queue.SelectedIndices.Count != 0)
@@ -343,8 +371,20 @@ namespace Handbrake
lbl_encodesPending.Text = list_queue.Items.Count + " encode(s) pending";
}
}
+ private void list_queue_deleteKey(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Delete)
+ {
+ if (list_queue.SelectedIndices.Count != 0)
+ {
+ queue.remove(list_queue.SelectedIndices[0]);
+ queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file
+ redrawQueue();
+ }
+ }
+ }
- // Generate a Saveable batch script on the users request
+ // Queue Import/Export Features
private void mnu_batch_Click(object sender, EventArgs e)
{
SaveFile.FileName = "";
@@ -353,8 +393,6 @@ namespace Handbrake
if (SaveFile.FileName != String.Empty)
queue.writeBatchScript(SaveFile.FileName);
}
-
- // Export the HandBrake Queue to a file.
private void mnu_export_Click(object sender, EventArgs e)
{
SaveFile.FileName = "";
@@ -363,8 +401,6 @@ namespace Handbrake
if (SaveFile.FileName != String.Empty)
queue.write2disk(SaveFile.FileName);
}
-
- // Import an exported queue
private void mnu_import_Click(object sender, EventArgs e)
{
OpenFile.FileName = "";
@@ -374,26 +410,6 @@ namespace Handbrake
redrawQueue();
}
- // Delete a selected item on the queue, if the delete key is pressed.
- private void list_queue_deleteKey(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.Delete)
- {
- if (list_queue.SelectedIndices.Count != 0)
- {
- queue.remove(list_queue.SelectedIndices[0]);
- queue.write2disk("hb_queue_recovery.xml"); // Update the queue recovery file
- redrawQueue();
- }
- }
- }
-
- // Hide's the window from the users view.
- private void btn_Close_Click(object sender, EventArgs e)
- {
- this.Hide();
- }
-
// Hide's the window when the user tries to "x" out of the window instead of closing it.
protected override void OnClosing(CancelEventArgs e)
{