X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=win%2FC%23%2FfrmMain.cs;h=83ea0de121def14055c8959f83491b84510490ad;hb=8d0c431738a99cd4776cc31e195fea690f6fb20a;hp=c8753d184d93636b1be803c7b82e50c63d310fda;hpb=391e7675424309678ca22e58a17d4aad5a9075ba;p=handbrake-jp%2Fhandbrake-jp-git.git
diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs
index c8753d18..83ea0de1 100644
--- a/win/C#/frmMain.cs
+++ b/win/C#/frmMain.cs
@@ -8,23 +8,20 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
-using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;
-using System.Runtime.InteropServices;
-using System.Globalization;
-using System.Text.RegularExpressions;
namespace Handbrake
{
public partial class frmMain : Form
{
// Objects which may be used by one or more other objects
+ private delegate void UpdateWindowHandler();
Functions.Main hb_common_func = new Functions.Main();
- Functions.Encode cliObj = new Functions.Encode();
- Queue.Queue encodeQueue = new Queue.Queue();
+ Functions.Encode encodeHandler = new Functions.Encode();
+ Queue.QueueHandler encodeQueue = new Queue.QueueHandler();
Presets.PresetsHandler presetHandler = new Presets.PresetsHandler();
Parsing.Title selectedTitle;
Parsing.DVD thisDVD;
@@ -36,7 +33,8 @@ namespace Handbrake
// Globals: Mainly used for tracking.
private frmQueue queueWindow;
- private frmGenPreview preview;
+ private frmGenPreview vlcpreview;
+ private frmPreview qtpreview;
private string lastAction = null;
public int maxWidth = 0;
public int maxHeight = 0;
@@ -86,18 +84,35 @@ namespace Handbrake
loadPresetPanel(); // Load the Preset Panel
treeView_presets.ExpandAll();
lbl_encode.Text = "";
- queueWindow = new frmQueue(this); // Prepare the Queue
+ queueWindow = new frmQueue(encodeQueue); // Prepare the Queue
if (Properties.Settings.Default.QueryEditorTab != "Checked")
tabs_panel.TabPages.RemoveAt(5); // Remove the query editor tab if the user does not want it enabled.
// Load the user's default settings or Normal Preset
- if (Properties.Settings.Default.defaultSettings == "Checked" && Properties.Settings.Default.defaultUserSettings != "")
+ if (Properties.Settings.Default.defaultSettings == "Checked" && Properties.Settings.Default.defaultPreset != "")
{
- Functions.QueryParser presetQuery = Functions.QueryParser.Parse(Properties.Settings.Default.defaultUserSettings);
- presetLoader.presetLoader(this, presetQuery, "User Defaults ");
- // The x264 widgets will need updated, so do this now:
- x264PanelFunctions.X264_StandardizeOptString(this);
- x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);
+ // Ok, so, we've selected a preset. Now we want to load it.
+ if (presetHandler.getPreset(Properties.Settings.Default.defaultPreset) != null)
+ {
+ string query = presetHandler.getPreset(Properties.Settings.Default.defaultPreset).Query;
+ Boolean loadPictureSettings = presetHandler.getPreset(Properties.Settings.Default.defaultPreset).PictureSettings;
+
+ if (query != null)
+ {
+ //Ok, Reset all the H264 widgets before changing the preset
+ x264PanelFunctions.reset2Defaults(this);
+
+ // Send the query from the file to the Query Parser class, then load the preset
+ Functions.QueryParser presetQuery = Functions.QueryParser.Parse(query);
+ presetLoader.presetLoader(this, presetQuery, Properties.Settings.Default.defaultPreset, loadPictureSettings);
+
+ // The x264 widgets will need updated, so do this now:
+ x264PanelFunctions.X264_StandardizeOptString(this);
+ x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);
+ }
+ }
+ else
+ loadNormalPreset();
}
else
loadNormalPreset();
@@ -114,8 +129,7 @@ namespace Handbrake
this.Enabled = true;
// Event Handlers
- if (Properties.Settings.Default.MainWindowMinimize == "Checked")
- this.Resize += new EventHandler(frmMain_Resize);
+ events();
// Queue Recovery
queueRecovery();
@@ -161,6 +175,34 @@ namespace Handbrake
}
#endregion
+ #region Events
+ // Encoding Events for setting up the GUI
+ private void events()
+ {
+ // Handle Window Resize
+ if (Properties.Settings.Default.MainWindowMinimize == "Checked")
+ this.Resize += new EventHandler(frmMain_Resize);
+
+ // Handle Encode Start
+ encodeQueue.OnEncodeEnded += new EventHandler(encodeEnded);
+ encodeQueue.OnPaused += new EventHandler(encodePaused);
+ encodeQueue.OnEncodeStart += new EventHandler(encodeStarted);
+ }
+ private void encodeStarted(object sender, EventArgs e)
+ {
+ setLastAction("encode");
+ setEncodeStarted();
+ }
+ private void encodeEnded(object sender, EventArgs e)
+ {
+ setEncodeFinished();
+ }
+ private void encodePaused(object sender, EventArgs e)
+ {
+ setEncodeFinished();
+ }
+ #endregion
+
// User Interface Menus / Tool Strips *********************************
#region File Menu
@@ -173,7 +215,7 @@ namespace Handbrake
#region Tools Menu
private void mnu_encode_Click(object sender, EventArgs e)
{
- queueWindow.setQueue(encodeQueue);
+ queueWindow.setQueue();
queueWindow.Show();
}
private void mnu_encodeLog_Click(object sender, EventArgs e)
@@ -184,12 +226,12 @@ namespace Handbrake
else
file = "hb_encode_log.dat";
- frmActivityWindow dvdInfoWindow = new frmActivityWindow(file, this, queueWindow);
+ frmActivityWindow dvdInfoWindow = new frmActivityWindow(file, encodeHandler);
dvdInfoWindow.Show();
}
private void mnu_options_Click(object sender, EventArgs e)
{
- Form Options = new frmOptions(this);
+ Form Options = new frmOptions();
Options.ShowDialog();
}
#endregion
@@ -286,6 +328,14 @@ namespace Handbrake
{
treeView_presets.CollapseAll();
}
+ private void pmnu_saveChanges_Click(object sender, EventArgs e)
+ {
+ DialogResult result = MessageBox.Show("Do you wish to include picture settings when updating the preset: " + treeView_presets.SelectedNode.Text, "Update Preset", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
+ if (result == DialogResult.Yes)
+ presetHandler.updatePreset(treeView_presets.SelectedNode.Text, queryGen.generateTabbedComponentsQuery(this), true);
+ else if (result == DialogResult.No)
+ presetHandler.updatePreset(treeView_presets.SelectedNode.Text, queryGen.generateTabbedComponentsQuery(this), false);
+ }
private void pmnu_delete_click(object sender, EventArgs e)
{
if (treeView_presets.SelectedNode != null)
@@ -303,6 +353,21 @@ namespace Handbrake
}
treeView_presets.Select();
}
+ private void presets_menu_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ // Make sure that the save menu is always disabled by default
+ pmnu_saveChanges.Enabled = false;
+
+ // Now enable the save menu if the selected preset is a user preset
+ if (treeView_presets.SelectedNode != null)
+ {
+ if (presetHandler.checkIfUserPresetExists(treeView_presets.SelectedNode.Text))
+ {
+ pmnu_saveChanges.Enabled = true;
+ }
+ }
+ treeView_presets.Select();
+ }
// Presets Management
private void btn_addPreset_Click(object sender, EventArgs e)
@@ -339,11 +404,14 @@ namespace Handbrake
}
private void btn_setDefault_Click(object sender, EventArgs e)
{
- String query = queryGen.GenerateTheQuery(this);
- Properties.Settings.Default.defaultUserSettings = query;
- // Save the new default Settings
- Properties.Settings.Default.Save();
- MessageBox.Show("New default settings saved.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
+ if (treeView_presets.SelectedNode != null)
+ {
+ Properties.Settings.Default.defaultPreset = treeView_presets.SelectedNode.Text;
+ Properties.Settings.Default.Save();
+ MessageBox.Show("New default preset set.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ MessageBox.Show("Please select a preset first.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
private void treeview_presets_mouseUp(object sender, MouseEventArgs e)
{
@@ -364,22 +432,26 @@ namespace Handbrake
{
// Ok, so, we've selected a preset. Now we want to load it.
string presetName = treeView_presets.SelectedNode.Text;
- string query = presetHandler.getCliForPreset(presetName);
-
- if (query != null)
+ if (presetHandler.getPreset(presetName) != null)
{
- //Ok, Reset all the H264 widgets before changing the preset
- x264PanelFunctions.reset2Defaults(this);
+ string query = presetHandler.getPreset(presetName).Query;
+ Boolean loadPictureSettings = presetHandler.getPreset(presetName).PictureSettings;
+
+ if (query != null)
+ {
+ //Ok, Reset all the H264 widgets before changing the preset
+ x264PanelFunctions.reset2Defaults(this);
- // Send the query from the file to the Query Parser class
- Functions.QueryParser presetQuery = Functions.QueryParser.Parse(query);
+ // Send the query from the file to the Query Parser class
+ Functions.QueryParser presetQuery = Functions.QueryParser.Parse(query);
- // Now load the preset
- presetLoader.presetLoader(this, presetQuery, presetName);
+ // Now load the preset
+ presetLoader.presetLoader(this, presetQuery, presetName, loadPictureSettings);
- // The x264 widgets will need updated, so do this now:
- x264PanelFunctions.X264_StandardizeOptString(this);
- x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);
+ // The x264 widgets will need updated, so do this now:
+ x264PanelFunctions.X264_StandardizeOptString(this);
+ x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);
+ }
}
}
}
@@ -478,9 +550,20 @@ namespace Handbrake
if (result == DialogResult.Yes)
{
- queueWindow.frmMain_cancelEncode();
- if (!queueWindow.isEncoding())
- setEncodeStatus(0);
+ // Pause The Queue
+ encodeQueue.pauseEncode();
+
+ // Kill the current process.
+ Process[] aProc = Process.GetProcessesByName("HandBrakeCLI");
+ Process HandBrakeCLI;
+ if (aProc.Length > 0)
+ {
+ HandBrakeCLI = aProc[0];
+ HandBrakeCLI.Kill();
+ }
+
+ // Update the GUI
+ setEncodeFinished();
}
}
else
@@ -502,13 +585,13 @@ namespace Handbrake
encodeQueue.add(query, text_source.Text, text_destination.Text);
encodeQueue.write2disk("hb_queue_recovery.xml");
}
- queueWindow.setQueue(encodeQueue);
+ queueWindow.setQueue();
if (encodeQueue.count() > 1)
queueWindow.Show();
- queueWindow.frmMain_encode();
+ setEncodeStarted(); // Encode is running, so setup the GUI appropriately
+ encodeQueue.startEncode(); // Start The Queue Encoding Process
- setEncodeStatus(1); // Encode is running, so setup the GUI appropriately
}
else if (text_source.Text == string.Empty || text_source.Text == "Click 'Source' to continue" || text_destination.Text == string.Empty)
MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
@@ -528,30 +611,50 @@ namespace Handbrake
encodeQueue.add(query, text_source.Text, text_destination.Text);
encodeQueue.write2disk("hb_queue_recovery.xml"); // Writes the queue to the recovery file, just incase the GUI crashes.
- queueWindow.setQueue(encodeQueue);
+ queueWindow.setQueue();
queueWindow.Show();
}
}
private void btn_showQueue_Click(object sender, EventArgs e)
{
- queueWindow.setQueue(encodeQueue);
+ queueWindow.setQueue();
queueWindow.Show();
}
- private void btn_vidPreview_Click(object sender, EventArgs e)
+ private void mnu_vlcpreview_Click(object sender, EventArgs e)
+ {
+ if (text_source.Text == "" || text_source.Text == "Click 'Source' to continue" || text_destination.Text == "")
+ MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ else
+ {
+ if (vlcpreview == null)
+ {
+ vlcpreview = new frmGenPreview(this);
+ vlcpreview.Show();
+ }
+ else if (vlcpreview.IsDisposed)
+ {
+ vlcpreview = new frmGenPreview(this);
+ vlcpreview.Show();
+ }
+ else
+ MessageBox.Show("The preview window is already open!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
+ private void mnu_qtpreview_Click(object sender, EventArgs e)
{
if (text_source.Text == "" || text_source.Text == "Click 'Source' to continue" || text_destination.Text == "")
MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
{
- if (preview == null)
+ if (qtpreview == null)
{
- preview = new frmGenPreview(this);
- preview.Show();
+ qtpreview = new frmPreview(this);
+ qtpreview.Show();
}
- else if (preview.IsDisposed)
+ else if (qtpreview.IsDisposed)
{
- preview = new frmGenPreview(this);
- preview.Show();
+ qtpreview = new frmPreview(this);
+ qtpreview.Show();
}
else
MessageBox.Show("The preview window is already open!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
@@ -565,7 +668,7 @@ namespace Handbrake
else
file = "hb_encode_log.dat";
- frmActivityWindow ActivityWindow = new frmActivityWindow(file, this, queueWindow);
+ frmActivityWindow ActivityWindow = new frmActivityWindow(file, encodeHandler);
ActivityWindow.Show();
}
#endregion
@@ -832,15 +935,15 @@ namespace Handbrake
DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", "").Replace(".m4v", "").Replace(".mkv", "").Replace(".ogm", "").Replace(".avi", "");
// Show the dialog and set the main form file path
- if (text_destination.Text.EndsWith(".mp4"))
+ if (drop_format.SelectedIndex.Equals(0))
DVD_Save.FilterIndex = 1;
- else if (text_destination.Text.EndsWith(".m4v"))
+ else if (drop_format.SelectedIndex.Equals(1))
DVD_Save.FilterIndex = 2;
- else if (text_destination.Text.EndsWith(".avi"))
+ else if (drop_format.SelectedIndex.Equals(2))
DVD_Save.FilterIndex = 3;
- else if (text_destination.Text.EndsWith(".ogm"))
+ else if (drop_format.SelectedIndex.Equals(3))
DVD_Save.FilterIndex = 4;
- else if (text_destination.Text.EndsWith(".mkv"))
+ else if (drop_format.SelectedIndex.Equals(4))
DVD_Save.FilterIndex = 5;
if (DVD_Save.ShowDialog() == DialogResult.OK)
@@ -984,6 +1087,9 @@ namespace Handbrake
//Picture Tab
private void text_width_TextChanged(object sender, EventArgs e)
{
+ if (text_width.Text == "")
+ text_width.BackColor = Color.White;
+
maxWidth = 0; maxHeight = 0; // Reset max width so that it's not using the MaxWidth -X. Quick hack to allow -X for preset usage.
int width;
@@ -1009,6 +1115,9 @@ namespace Handbrake
}
private void text_height_TextChanged(object sender, EventArgs e)
{
+ if (text_height.Text == "")
+ text_height.BackColor = Color.White;
+
maxHeight = 0; // Reset max height so that it's not using the MaxHeight -Y. Quick hack to allow -Y for preset usage.
int height;
@@ -1143,7 +1252,7 @@ namespace Handbrake
setBitrateSelections384(drp_audbit_1);
else if ((drp_audenc_1.Text == "AAC") && (drp_audmix_1.Text != "6 Channel Discrete"))
setBitrateSelections160(drp_audbit_1); drp_audbit_1.Text = "160";
-
+
// Update an item in the Audio list if required.
if (lv_audioList.Items.Count != 0 && lv_audioList.SelectedIndices.Count != 0)
{
@@ -1238,7 +1347,7 @@ namespace Handbrake
}
}
-
+
private void audioList_remove_Click(object sender, EventArgs e)
{
removeAudioTrack();
@@ -1294,7 +1403,7 @@ namespace Handbrake
else
check_forced.Enabled = true;
}
-
+
// Chapter Marker Tab
private void Check_ChapterMarkers_CheckedChanged(object sender, EventArgs e)
{
@@ -1649,16 +1758,16 @@ namespace Handbrake
else
{
// Just make sure not to re-enable the following boxes if the track above is none
- /* if (drp_track2Audio.Text != "None")
- {
- audMix.Enabled = true;
- audbit.Enabled = true;
- audsr.Enabled = true;
+ /* if (drp_track2Audio.Text != "None")
+ {
+ audMix.Enabled = true;
+ audbit.Enabled = true;
+ audsr.Enabled = true;
- audMix.Text = "Automatic";
- audbit.Text = "160";
- audsr.Text = "Auto";
- }*/
+ audMix.Text = "Automatic";
+ audbit.Text = "160";
+ audsr.Text = "Auto";
+ }*/
}
}
#endregion
@@ -1671,10 +1780,16 @@ namespace Handbrake
/// 0 = Encode Finished.
///
/// Int
- public void setEncodeStatus(int i)
+ public void setEncodeFinished()
{
- if (i == 0)
+ try
{
+ if (this.InvokeRequired)
+ {
+ this.BeginInvoke(new UpdateWindowHandler(setEncodeFinished));
+ return;
+ }
+
lbl_encode.Text = "Encoding Finished";
btn_start.Text = "Start";
btn_start.ToolTipText = "Start the encoding process";
@@ -1686,15 +1801,33 @@ namespace Handbrake
notifyIcon.BalloonTipText = lbl_encode.Text;
notifyIcon.ShowBalloonTip(500);
}
+
}
- else
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
+ }
+ public void setEncodeStarted()
+ {
+ try
{
+ if (this.InvokeRequired)
+ {
+ this.BeginInvoke(new UpdateWindowHandler(setEncodeStarted));
+ return;
+ }
+
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;
}
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
}
///
@@ -1814,6 +1947,9 @@ namespace Handbrake
#endregion
+
+
+
// This is the END of the road ------------------------------------------------------------------------------
}
}
\ No newline at end of file