From 40f3eab91de2779cf2490fa51b6b232a0d4432ae Mon Sep 17 00:00:00 2001 From: sr55 Date: Thu, 19 Feb 2009 18:30:32 +0000 Subject: WinGui: - Re-add all the x264 tooltips. - Combines the 2 Preview windows for VLC and QT into one. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2167 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- win/C#/frmPreview.cs | 152 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 103 insertions(+), 49 deletions(-) (limited to 'win/C#/frmPreview.cs') diff --git a/win/C#/frmPreview.cs b/win/C#/frmPreview.cs index 029ac85d2..dabde2bb1 100644 --- a/win/C#/frmPreview.cs +++ b/win/C#/frmPreview.cs @@ -3,6 +3,7 @@ using System.Windows.Forms; using System.Threading; using System.Diagnostics; using System.Runtime.InteropServices; +using System.IO; using QTOLibrary; namespace Handbrake @@ -14,7 +15,7 @@ namespace Handbrake Functions.Encode process = new Functions.Encode(); private delegate void UpdateUIHandler(); String currently_playing = ""; - frmMain mainWindow; + readonly frmMain mainWindow; private Process hbProc; private Thread player; @@ -25,52 +26,21 @@ namespace Handbrake cb_preview.SelectedIndex = 0; cb_duration.SelectedIndex = 1; } - - private void play() - { - player = new Thread(OpenMovie) {IsBackground = true}; - player.Start(); - } - - [STAThread] - private void OpenMovie() - { - try - { - if (InvokeRequired) - { - BeginInvoke(new UpdateUIHandler(OpenMovie)); - return; - } - QTControl.URL = currently_playing; - QTControl.Width = QTControl.Movie.Width; - QTControl.Height = QTControl.Movie.Height; - // The initial control size is 64,64. If we do not reload the clip here - // it'll scale the video from 64,64. - // Unsure why as it correctly resizes the control to the movies actual size. - QTControl.URL = currently_playing; - QTControl.SetScale(0); - QTControl.Show(); - - this.Width = QTControl.Width + 5; - this.Height = QTControl.Height + 90; - } - catch (COMException ex) - { - QTUtils qtu = new QTUtils(); - MessageBox.Show("Unable to open movie:\n\nError Code: " + ex.ErrorCode.ToString("X") + "\nQT Error code : " + qtu.QTErrorFromErrorCode(ex.ErrorCode)); - } - catch (Exception ex) - { - MessageBox.Show("Unable to open movie:\n\n" + ex); - } - } #region Encode Sample - private void btn_encode_Click(object sender, EventArgs e) + private void btn_playVLC_Click(object sender, EventArgs e) { - btn_encode.Enabled = false; - lbl_encode.Text = "Encoding Sample ..."; + btn_playQT.Enabled = false; + btn_playVLC.Enabled = false; + lbl_status.Text = "Encoding Sample for (VLC) ..."; + String query = hb_common_func.GeneratePreviewQuery(mainWindow, cb_duration.Text, cb_preview.Text); + ThreadPool.QueueUserWorkItem(procMonitor, query); + } + private void btn_playQT_Click(object sender, EventArgs e) + { + btn_playQT.Enabled = false; + btn_playVLC.Enabled = false; + lbl_status.Text = "Encoding Sample for (QT) ..."; String query = hb_common_func.GeneratePreviewQuery(mainWindow, cb_duration.Text, cb_preview.Text); ThreadPool.QueueUserWorkItem(procMonitor, query); } @@ -96,14 +66,25 @@ namespace Handbrake BeginInvoke(new UpdateUIHandler(encodeCompleted)); return; } - btn_encode.Enabled = true; - lbl_encode.Text = "Loading Clip ..."; + btn_playQT.Enabled = true; + btn_playVLC.Enabled = true; + + // Decide which player to use. + String playerSelection = lbl_status.Text.Contains("QT") ? "QT" : "VLC"; + + lbl_status.Text = "Loading Clip ..."; + // Get the sample filename if (mainWindow.text_destination.Text != "") - currently_playing = mainWindow.text_destination.Text.Replace(".m", "_sample.m").Replace(".avi", "_sample.avi").Replace(".ogm", "_sample.ogm"); + currently_playing = mainWindow.text_destination.Text.Replace(".mp4", "_sample.mp4").Replace(".m4v", "_sample.m4v").Replace(".avi", "_sample.avi").Replace(".ogm", "_sample.ogm"); - play(); - lbl_encode.Text = ""; + // Play back in QT or VLC + if (playerSelection == "QT") + play(); + else + playVLC(); + + lbl_status.Text = ""; } catch (Exception exc) { @@ -112,5 +93,78 @@ namespace Handbrake } #endregion + #region Playback + + /// + /// Play the video back in the QuickTime control + /// + private void play() + { + player = new Thread(OpenMovie) { IsBackground = true }; + player.Start(); + } + + /// + /// Play the video back in an external VLC player + /// + private void playVLC() + { + // Launch VLC and play video. + if (currently_playing != "") + { + if (File.Exists(currently_playing)) + { + if (File.Exists(Properties.Settings.Default.VLC_Path)) + { + String args = "\"" + currently_playing + "\""; + ProcessStartInfo vlc = new ProcessStartInfo(Properties.Settings.Default.VLC_Path, args); + Process.Start(vlc); + lbl_status.Text = "VLC will now launch."; + } + else + MessageBox.Show("Unable to detect VLC Player. \nPlease make sure VLC is installed and the directory specified in the program options is correct.", "VLC", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + else + MessageBox.Show("Unable to find the preview file. Either the file was deleted or the encode failed. Check the activity log for details.", "VLC", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + + /// + /// QT control - Open the file + /// + [STAThread] + private void OpenMovie() + { + try + { + if (InvokeRequired) + { + BeginInvoke(new UpdateUIHandler(OpenMovie)); + return; + } + QTControl.URL = currently_playing; + QTControl.Width = QTControl.Movie.Width; + QTControl.Height = QTControl.Movie.Height; + // The initial control size is 64,64. If we do not reload the clip here + // it'll scale the video from 64,64. + // Unsure why as it correctly resizes the control to the movies actual size. + QTControl.URL = currently_playing; + QTControl.SetScale(0); + QTControl.Show(); + + this.Width = QTControl.Width + 5; + this.Height = QTControl.Height + 90; + } + catch (COMException ex) + { + QTUtils qtu = new QTUtils(); + MessageBox.Show("Unable to open movie:\n\nError Code: " + ex.ErrorCode.ToString("X") + "\nQT Error code : " + qtu.QTErrorFromErrorCode(ex.ErrorCode)); + } + catch (Exception ex) + { + MessageBox.Show("Unable to open movie:\n\n" + ex); + } + } + #endregion } } \ No newline at end of file -- cgit v1.2.3