diff options
author | sr55 <[email protected]> | 2008-12-16 18:01:48 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2008-12-16 18:01:48 +0000 |
commit | 89b5566c50b3f19c760351845a85c3efa4afe10f (patch) | |
tree | a53adf8349e8da34b95f2c61c90d1f9c09b67195 | |
parent | c26a35a7b7a5839946123c9670aac337c8bcf518 (diff) |
WinGui:
- Preview Generator Window. Can generate previews form 5 to 60 seconds long. Will launch VLC (from a user specified (in options) install path) to play back the clip.
Note: Clip duration is currently waiting for a patch to the CLI, so this part won't work yet.
- Experimental in-gui VLC media player via ActiveX. (This causes a Blue Screen of Death (See comments in code), however if anyone can fix this and submit a patch, id be grateful) Alternative suggestions welcome!
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2036 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | win/C#/Experimental/frmPreviewAX.Designer.cs | 200 | ||||
-rw-r--r-- | win/C#/Experimental/frmPreviewAX.cs | 169 | ||||
-rw-r--r-- | win/C#/Experimental/frmPreviewAX.resx | 549 | ||||
-rw-r--r-- | win/C#/HandBrakeCS.csproj | 38 | ||||
-rw-r--r-- | win/C#/Properties/Resources.Designer.cs | 14 | ||||
-rw-r--r-- | win/C#/Properties/Resources.resx | 6 | ||||
-rw-r--r-- | win/C#/Properties/Settings.Designer.cs | 12 | ||||
-rw-r--r-- | win/C#/Properties/Settings.settings | 3 | ||||
-rw-r--r-- | win/C#/Resources/picture.png | bin | 0 -> 698 bytes | |||
-rw-r--r-- | win/C#/Resources/window.png | bin | 0 -> 935 bytes | |||
-rw-r--r-- | win/C#/app.config | 3 | ||||
-rw-r--r-- | win/C#/frmGenPreview.Designer.cs | 170 | ||||
-rw-r--r-- | win/C#/frmGenPreview.cs | 115 | ||||
-rw-r--r-- | win/C#/frmGenPreview.resx | 503 | ||||
-rw-r--r-- | win/C#/frmMain.Designer.cs | 23 | ||||
-rw-r--r-- | win/C#/frmMain.cs | 22 | ||||
-rw-r--r-- | win/C#/frmMain/QueryGenerator.cs | 5 | ||||
-rw-r--r-- | win/C#/frmOptions.Designer.cs | 430 | ||||
-rw-r--r-- | win/C#/frmOptions.cs | 15 | ||||
-rw-r--r-- | win/C#/frmOptions.resx | 3 |
20 files changed, 2276 insertions, 4 deletions
diff --git a/win/C#/Experimental/frmPreviewAX.Designer.cs b/win/C#/Experimental/frmPreviewAX.Designer.cs new file mode 100644 index 000000000..534abaaeb --- /dev/null +++ b/win/C#/Experimental/frmPreviewAX.Designer.cs @@ -0,0 +1,200 @@ +namespace Handbrake
+{
+ partial class frmPreviewAX
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmPreviewAX));
+ this.toolBar = new System.Windows.Forms.ToolStrip();
+ this.btn_encode = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.btn_play = new System.Windows.Forms.ToolStripButton();
+ this.btn_stop = new System.Windows.Forms.ToolStripButton();
+ this.btn_step_fwd = new System.Windows.Forms.ToolStripButton();
+ this.btn_step_back = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.btn_reset = new System.Windows.Forms.ToolStripButton();
+ this.statusStrip = new System.Windows.Forms.StatusStrip();
+ this.txt_position = new System.Windows.Forms.ToolStripStatusLabel();
+ this.vlc_player = new AxAXVLC.AxVLCPlugin2();
+ this.toolBar.SuspendLayout();
+ this.statusStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.vlc_player)).BeginInit();
+ this.SuspendLayout();
+ //
+ // toolBar
+ //
+ this.toolBar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+ this.toolBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.btn_encode,
+ this.toolStripSeparator1,
+ this.btn_play,
+ this.btn_stop,
+ this.btn_step_fwd,
+ this.btn_step_back,
+ this.toolStripSeparator2,
+ this.btn_reset});
+ this.toolBar.Location = new System.Drawing.Point(0, 0);
+ this.toolBar.Name = "toolBar";
+ this.toolBar.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
+ this.toolBar.Size = new System.Drawing.Size(750, 39);
+ this.toolBar.TabIndex = 37;
+ this.toolBar.Text = "toolStrip1";
+ //
+ // btn_encode
+ //
+ this.btn_encode.Image = global::Handbrake.Properties.Resources.Play;
+ this.btn_encode.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_encode.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_encode.Name = "btn_encode";
+ this.btn_encode.Size = new System.Drawing.Size(127, 36);
+ this.btn_encode.Text = "Encode Sample";
+ this.btn_encode.Click += new System.EventHandler(this.btn_encode_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 39);
+ //
+ // btn_play
+ //
+ this.btn_play.Image = global::Handbrake.Properties.Resources.Play;
+ this.btn_play.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_play.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_play.Name = "btn_play";
+ this.btn_play.Size = new System.Drawing.Size(64, 36);
+ this.btn_play.Text = "Play";
+ this.btn_play.Click += new System.EventHandler(this.btn_play_Click);
+ //
+ // btn_stop
+ //
+ this.btn_stop.Image = global::Handbrake.Properties.Resources.stop;
+ this.btn_stop.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_stop.ImageTransparentColor = System.Drawing.Color.MediumAquamarine;
+ this.btn_stop.Name = "btn_stop";
+ this.btn_stop.Size = new System.Drawing.Size(69, 36);
+ this.btn_stop.Text = "Stop";
+ this.btn_stop.Click += new System.EventHandler(this.btn_stop_Click);
+ //
+ // btn_step_fwd
+ //
+ this.btn_step_fwd.Image = ((System.Drawing.Image)(resources.GetObject("btn_step_fwd.Image")));
+ this.btn_step_fwd.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_step_fwd.Name = "btn_step_fwd";
+ this.btn_step_fwd.Size = new System.Drawing.Size(64, 36);
+ this.btn_step_fwd.Text = "Slower";
+ //
+ // btn_step_back
+ //
+ this.btn_step_back.Image = ((System.Drawing.Image)(resources.GetObject("btn_step_back.Image")));
+ this.btn_step_back.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_step_back.Name = "btn_step_back";
+ this.btn_step_back.Size = new System.Drawing.Size(60, 36);
+ this.btn_step_back.Text = "Faster";
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 39);
+ //
+ // btn_reset
+ //
+ this.btn_reset.Image = global::Handbrake.Properties.Resources.window;
+ this.btn_reset.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_reset.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_reset.Name = "btn_reset";
+ this.btn_reset.Size = new System.Drawing.Size(148, 36);
+ this.btn_reset.Text = "Reset Window Size";
+ this.btn_reset.Click += new System.EventHandler(this.btn_reset_Click);
+ //
+ // statusStrip
+ //
+ this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.txt_position});
+ this.statusStrip.Location = new System.Drawing.Point(0, 438);
+ this.statusStrip.Name = "statusStrip";
+ this.statusStrip.Size = new System.Drawing.Size(750, 23);
+ this.statusStrip.TabIndex = 38;
+ this.statusStrip.Text = "statusStrip1";
+ //
+ // txt_position
+ //
+ this.txt_position.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txt_position.Name = "txt_position";
+ this.txt_position.Size = new System.Drawing.Size(704, 18);
+ this.txt_position.Spring = true;
+ this.txt_position.Text = "DANGER! MAY CAUSE BLUESCREEN OF DEATH!!, SEE CODE FOR COMMENTS";
+ //
+ // vlc_player
+ //
+ this.vlc_player.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.vlc_player.Enabled = true;
+ this.vlc_player.Location = new System.Drawing.Point(0, 39);
+ this.vlc_player.Name = "vlc_player";
+ this.vlc_player.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("vlc_player.OcxState")));
+ this.vlc_player.Size = new System.Drawing.Size(750, 399);
+ this.vlc_player.TabIndex = 39;
+ //
+ // frmPreviewAX
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(750, 461);
+ this.Controls.Add(this.vlc_player);
+ this.Controls.Add(this.statusStrip);
+ this.Controls.Add(this.toolBar);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "frmPreviewAX";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Video Preview";
+ this.TopMost = true;
+ this.toolBar.ResumeLayout(false);
+ this.toolBar.PerformLayout();
+ this.statusStrip.ResumeLayout(false);
+ this.statusStrip.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.vlc_player)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStrip toolBar;
+ private System.Windows.Forms.ToolStripButton btn_encode;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripButton btn_play;
+ private System.Windows.Forms.ToolStripButton btn_step_fwd;
+ private System.Windows.Forms.ToolStripButton btn_step_back;
+ private System.Windows.Forms.ToolStripButton btn_stop;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.StatusStrip statusStrip;
+ private System.Windows.Forms.ToolStripStatusLabel txt_position;
+ private System.Windows.Forms.ToolStripButton btn_reset;
+ private AxAXVLC.AxVLCPlugin2 vlc_player;
+ }
+}
\ No newline at end of file diff --git a/win/C#/Experimental/frmPreviewAX.cs b/win/C#/Experimental/frmPreviewAX.cs new file mode 100644 index 000000000..bbcc8202e --- /dev/null +++ b/win/C#/Experimental/frmPreviewAX.cs @@ -0,0 +1,169 @@ +using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Threading;
+using System.Diagnostics;
+
+
+namespace Handbrake
+{
+ public partial class frmPreviewAX : Form
+ {
+ // !!!!!!!!!!!! WARNING !!!!!!!!!!!!
+ // This code may cause a Blue Screen of Death if run.
+ // This usually happens after the VLC active X control has been playing video for a short period
+ // and the user tries to close the window. Calling vlc_player.dispose() also causes this I believe.
+ // Patches to fix this would be very welcome!
+ // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+ Handbrake.QueryGenerator hb_common_func = new Handbrake.QueryGenerator();
+ Functions.Encode process = new Functions.Encode();
+
+ String currently_playing = "";
+ frmMain mainWindow;
+ private Process hbProc;
+ Boolean playing = false;
+ int window_height;
+ int window_width;
+
+
+ public frmPreviewAX(frmMain mw, int w, int h)
+ {
+ InitializeComponent();
+
+ this.Width = w;
+ this.Height = h + statusStrip.Height + toolBar.Height;
+ this.mainWindow = mw;
+
+ resizeWindowUntilCorrect(w, h);
+
+ vlc_player.Height = h;
+ vlc_player.Width = w;
+ }
+ private void resizeWindowUntilCorrect(int w, int h)
+ {
+ // This needs fixed. It makes the window seriously slow to load.
+ while (vlc_player.Width != w || vlc_player.Height != h)
+ {
+ if (vlc_player.Width < w)
+ this.Width++;
+
+ if (vlc_player.Width > w)
+ this.Width--;
+
+ if (vlc_player.Height < h)
+ this.Height++;
+
+ if (vlc_player.Height > h)
+ this.Height--;
+ }
+
+ window_height = this.Height;
+ window_width = this.Width;
+ }
+ private void btn_reset_Click(object sender, EventArgs e)
+ {
+ this.WindowState = FormWindowState.Normal;
+ this.Width = window_width;
+ this.Height = window_height;
+ }
+
+ // Playback Controls
+ private void btn_play_Click(object sender, EventArgs e)
+ {
+ // Get the Destination of the sample video.
+ currently_playing = "";
+ if (mainWindow.text_destination.Text != "")
+ currently_playing = mainWindow.text_destination.Text.Replace(".m", "_sample.m").Replace(".avi", "_sample.avi").Replace(".ogm", "_sample.ogm");
+
+ if (currently_playing != "" && playing != true)
+ {
+ vlc_player.playlist.clear();
+ vlc_player.playlist.add(currently_playing, null, null);
+ vlc_player.playlist.play();
+ }
+
+ if (playing == false)
+ {
+ btn_play.Text = "Pause";
+ btn_play.Image = Handbrake.Properties.Resources.Pause;
+ playing = true;
+ }
+ else
+ {
+ vlc_player.playlist.togglePause();
+ btn_play.Text = "Play";
+ btn_play.Image = Handbrake.Properties.Resources.Play;
+ playing = false;
+ }
+ }
+ private void btn_stop_Click(object sender, EventArgs e)
+ {
+ if (vlc_player.playlist.isPlaying)
+ {
+ vlc_player.playlist.stop();
+ vlc_player.playlist.clear();
+ //vlc_player.Dispose(); // Causes a BlueScreen of Death!!!
+ btn_play.Text = "Play";
+ playing = false;
+ }
+ }
+
+
+ // Encoding a Sample
+ private void btn_encode_Click(object sender, EventArgs e)
+ {
+ String query;
+ query = hb_common_func.GeneratePreviewQuery(mainWindow,"30");
+
+ ThreadPool.QueueUserWorkItem(procMonitor, query);
+ }
+ private void procMonitor(object state)
+ {
+ // Make sure we are not already encoding and if we are then display an error.
+ if (hbProc != null)
+ MessageBox.Show("Handbrake is already encoding a video!", "Status", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ else
+ {
+ hbProc = process.runCli(this, (string)state);
+ hbProc.WaitForExit();
+ hbProc = null;
+ }
+ }
+
+ protected override void OnClosing(CancelEventArgs e)
+ {
+
+ /* try
+ {
+ while (vlc_player.playlist.isPlaying)
+ {
+ vlc_player.playlist.stop();
+ Thread.Sleep(100);
+ }
+ }
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
+
+
+ //vlc_player.Dispose();
+ while (vlc_player.IsDisposed == false)
+ {
+ Thread.Sleep(100);
+ }
+ vlc_player = null;
+ */
+
+ this.Dispose();
+ this.Hide();
+ }
+
+
+ }
+}
diff --git a/win/C#/Experimental/frmPreviewAX.resx b/win/C#/Experimental/frmPreviewAX.resx new file mode 100644 index 000000000..6809a5a8e --- /dev/null +++ b/win/C#/Experimental/frmPreviewAX.resx @@ -0,0 +1,549 @@ +<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="toolBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="btn_step_fwd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="btn_step_back.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+ </data>
+ <metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>116, 17</value>
+ </metadata>
+ <data name="vlc_player.OcxState" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAQQEAAAIB
+ AAAAAQAAAAAAAAAAAAAAACwBAAAHAAAAKABDAG8AdQBuAHQAKQADAAsAAAAIAAAAQQB1AHQAbwBMAG8A
+ bwBwAAsAAAAIAAAAQQB1AHQAbwBQAGwAYQB5AAsA//8JAAAAQgBhAGMAawBDAG8AbABvAHIAAwAAAAAA
+ BwAAAEIAYQBzAGUAVQBSAEwACAAAAAAADAAAAEUAeAB0AGUAbgB0AEgAZQBpAGcAaAB0AAMAPSkAAAsA
+ AABFAHgAdABlAG4AdABXAGkAZAB0AGgAAwCETQAAAwAAAE0AUgBMAAgAAAAAAAkAAABTAHQAYQByAHQA
+ VABpAG0AZQADAAAAAAAHAAAAVABvAG8AbABiAGEAcgALAP//BwAAAFYAaQBzAGkAYgBsAGUACwD//wYA
+ AABWAG8AbAB1AG0AZQADADIAAAAL
+</value>
+ </data>
+ <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ AAABAAYAMDAAAAEACACoDgAAZgAAACAgAAABAAgAqAgAAA4PAAAQEAAAAQAIAGgFAAC2FwAAMDAAAAEA
+ IACoJQAAHh0AACAgAAABACAAqBAAAMZCAAAQEAAAAQAgAGgEAABuUwAAKAAAADAAAABgAAAAAQAIAAAA
+ AACACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAD///8A/wAAAAD/AAAAAIAAgICAAICAAAAAgAAAAICAAIAA
+ AACAAIAAgP//ACAgIADg4OAAIAAAAAAgAABg4CAAQOBAAGBgYAAgYAAAQKDgAAAAIABAwCAAIEAAAECg
+ AABg4AAAIGCAAECAoABgoMAAYECgAGDAAABgICAAoKCgAOAAAAAgIAAAAGAAAEDgAABgAAAAIAAgAEAg
+ IAAgQGAAIIDAAADg4ABgAGAAgOD/ACCA/wCgAAAAQGAAACCAAAAAoAAAYCAAAAAgIAAgIEAAYGBAAEBg
+ YAAAIIAAAGCAAGCAgABAAKAAAICgAACgoACAoKAAIKDAAECgwAAAAOAAQADgAADA4ABgwOAAIODgAADg
+ AADA4AAAAEAgAKDgIAAA4EAAYABAAABAYACAAGAAgCBgAGAggABA4KAAAECgAGBAwADgIOAAIEDgAACA
+ 4ADgoOAAYAD/ACBg/wAAoP8A4KD/AGD//wAICAgACAAAAAgIAAAAAJgACAAIAAAACAAACAAACBAQACA4
+ SAAgYIgAOHCIADhw+AAIGAAAEBAIACg4QAAwYHgAAACIACA4QAAoQFAAKFh4AHh4eAAwaIAAIGiQADh4
+ mAAACAgAEAgIABAYGAAgGBgASEhIABhIYAAoUGAAIFBoAChQaAAoWGgAMFhoAChoiAAweJgAKHioACiA
+ sAAIEAAACAgQAAgQGAAQGCAAGCAoABhAUAAoSFgAaGhoABhQcAAgWHAAKFhwADhgcAAYWIAAOGiAAIiI
+ iAAoaJAAKHCYACh4oAA4gKAAMICoAKioqAAwmNAAEDgAAChYAAAweAAAMIgQAAgYGAAYGBgACBggABAg
+ KAAgKCgAKCgoACAwOAA4ODgAKDhIADBQWABYWFgAGEhoADBYcAAYUHgAGFh4ACBYeAAoYHgAKGCAABhY
+ iAAgaJgAKICoACiIuAC4uLgAMJDIADiw6AAQCAAAABgAAAggAAAAOAAAMGgAABgQCAAwgAgAEAgQABgQ
+ EAAwmBgAGBggAAgYKAAAICgACCAoABgoMAAgKDAAGDBAABg4QAAYOFAAEEBYACBIWAAwSFgAOEhYACBI
+ YAAQSGgAOFhoABhIcAAoUHAAQFhwACBgeABAaIAAIGiIADBwiABAcIgAGGCQADhwkABYeJAACBCgAChw
+ oAAweKAAKIC4ACiQwAAwmMgAOKjgADBg6ABAsOgAELD4AAgoAAAIMAAAGDAAABhIAAAYUAAAKHgAAACY
+ AAAwmAAAAMgAABAACAAIEAgAEBgIABA4CAAYOAgAMHgIABAYEAAYGBAAIBgQACh4EAAwmBAAEBAYABgg
+ GAAoIBgAGCAgAAgIKAAgICgAGAgwAAggMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAn2KfdXV1XAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoo2+QIJCJb28Sd3em
+ nQAAAFuKqW0aqsd6Y5/DXAAAAAAAAAAAAAAAAAAAAAAAAAB3kAWQkG8SpqaJb28gsncAbIeSroyii21x
+ kczIwwAAAAAAAAAAAAAAAAAAAAAAAABoo4mJkLKylm9vb5BvdwwAcZO/fox7z2NjqsOss2MAWwAAAAAA
+ AAAAAAAAAAAAAAAAvaGmo5ANlgUFEiBvo1xjq3p6qMTJroBkxXt9cGzFnAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAL2ylgV3vQAAAGOvxMXXq41uh6yVjxqp1YhknwAAAAAAAAAAAAAAAAAAAAAAAAAAAABvsolbAAAA
+ +5KneouS2Kx4pZF9ndywsXuvkocAAAAAAAAAAAAAAAAAAAAAAAAAAAB3sncAAAAAdayHca95bH9+cKmv
+ fMVucG2B4MYAAAAAAAAAAAAAAAAAAAAAAAAAAAChsqMAAAAAe3VkyHF5kW59cN3eZc/XyXutyot7AAAA
+ AAAAAAAAAAAAAAAAAAAAAACjIKEAAACgfv94gX+PituLDI0/aoBxqxqOY8PgbQAAAAAAAAAAAAAAAAAA
+ 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
+ OAAABwAA//wYAAADAAD/+BgAAAMAAP/AAAAAAwAA/wAAAAADAAD8AAAAAAMAAPwAAAAAAwAA+AAAAAAD
+ AADwAAAAAAMAAPAAAAAAAwAA8AAAAAADAADwAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAQAA8AAPAA
+ ABgADwAA+AAAHgAHAAD8AAAfgAMAAP4QAA+ADwAA/gAADgADAAD8AAAfAAMAAPAfxD/ABwAA4B/n/+AB
+ AADgB+B/wB8AAOADgB+ADwAA8AOAHhAPAAD4BwB/8kcAAPz/gf/nLwAA+P/5/+8/AADwf/n//z8AAPh/
+ /P//vwAA+P////+fAAAoAAAAIAAAAEAAAAABAAgAAAAAAIAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAP//
+ /wAAAP8AAP//AAAAgACAgIAAgAAAAACAAAAAgIAAgIAAAECg4ABAgKAAYOAgAEDgQAAAIAAAACAgACAg
+ IABgIIAAIAAAACBAAAAAYAAAIIAAAGAgIABAYGAAAACgAGCAoACgoKAA4ODgAGDAAAAAACAAYABgAIAg
+ YAAAYMAAICAAACBgAABgYAAAQKAAAKDAAAAA4AAAYOAAAABAIAAgQCAAYAAgACBAQABgYEAAIABgACAg
+ YAAgQGAAYGBgACBggABgYIAAgACgAKCAoABgIMAAQKDAAGCgwAAgwMAAAADgAIDA4ACgwOAAAODgAIDg
+ 4ACA4AAAgIAgAEDgIACgACAAQABgAIAggAAgYP8AAKD/AAgIAAAICAgACAAAABhAWAAoUGAAaGhoADBg
+ eAAoaIgAMICoAChggAAACAgAEAgIABgYGAAoUGgAKFhwAChwkAAIGAgACBAQABAgKAAQKDgAIEhgACBQ
+ aAAAAHgAIFh4AChgeAAAeHgAeHh4AChogAAwaIAAIGCIADBoiAA4cIgAIGiQADhwkAAoeKgAKICwAAgQ
+ AAAIIAAACAAIABhICAAICBAAMIgQABAYGAAYICgAGCgwAEhISAAwSFgAGFBoAChYaAAICHgAOGiAACh4
+ oAAweKAAGAAAAAAIAAAAGAAACBgAABAoAAAYUAAAKGAAAChoAAAAeAAAAAAIAAgQCAAQEAgAGP8IACAY
+ EAAIEBgAMJAYABggIAAAACgACBAoACgwMAAAKDgAEDA4ADg4OAAoOEAAGDhIACA4SAAAQEgAMEBIAEhQ
+ UAAISFgAIEhYAChIWAAwUFgAIEhoAEhYaAAYUHAAMFhwABhYeAAoWHgAIFiAAEhwgACIiIgAGGCQAAAA
+ mAAgcJgAKHCYADB4mACYmJgAACjIAEBw+ACo//8ASAAAAFgAAABoAAAAeAAAABAIAABICAAAGCgAAAA4
+ AAAYOAAACEAAAAhIAAAoUAAAAFgAACBYAAAAaAAAIGgAADB4AAAAiAAAMIgAAGiIAACAmAAAGAAIADAI
+ CABgCAgAEBgIAAggCAAQIAgAECgIAAgwCAAQMAgAODAIABA4CAAYOAgAEEAIABhACAAgQAgAIFAIAChg
+ CAAwgAgAMJAIADCoCAAACBAAGBAQABggEAAoIBAAKGAQAChoEAAgeBAAKHgQAEh4EAAY+BAACAAYAAAI
+ GAAICBgAEAgYAAAQGAAQEBgAABgYAAgYGAAYMBgAKHgYADCYGAAwoBgAMKgYAGj/GABgCCAACBAgAAgY
+ IAAQGCAAGBggACggIABIcCAACAAoABAAKAAAECgAEBAoAAggKAAACDAASAgwAAgQMAAIKDAAECgwAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAARxBSUlJHAAAAAABYWFlY8kYAAAAAAAAAAAAAAAAAAJFgqqRLSzAwBXMAkKJbW1pdSVmE
+ AAAAAAAAAAAAAAAAEJdLqhpgYKQFkf9NmVRanHVJVZRQAAAAAAAAAAAAAAAAUY6RO6qXMHNYW5MxdFpm
+ TVtPSpAAAAAAAAAAAAAAAAAAAAAFpIYAAFSeW09PU15KU05MaEkAAAAAAAAAAAAAAAAAAEtgAAAAk55j
+ ml5Mp2haXUqpW3IAAAAAAAAAAAAAAAAAS0sAAEpJoE5PpZpMZVWnMZyZVQAAAAAAAAAAAAAAAABLMAAA
+ cqCeSnppZGZKWzFNaV2ecAAAAAAAAAAAAAAAAEtLAACLVF6iZHROp2eiW1paeWnxAAAAAAAAAAAAAABI
+ GmAAAElJSmh6SWNVSk5hZqJ1VXUAAAAAAAAAAAAAlpmjeJAAk12eZXZ5p3WndnZpaUlbZgAAAAAAAAAA
+ m2lFRTw8PDZeWV1OlE0xeWlNeVVdZmmZUAAAAAAAjzYKRaysRUVFRa02SXSnYaFNTUxpTFSoTmKTAAAA
+ AI8KOkSrrKysrKxErDullF6fVWhiVakLaVWbVZoAAAAAqK2sRKZEqyCsRKummKBZT0xPTHppZVMLqVN4
+ cQAAAAA6O6sYGKYYGKsYphgELjejY09KTTZNaWdMNpkAAAAA+zc6XFxcd3d3XASmXEw6PZZiZ6g2ZUw2
+ T2QLnwAAAAAdoTtcLcV3pndfLi2jraMtcmNkT05np0xnaXhUAAAAAAD5NKL87xgYd1+eLZ06+1wAVE6o
+ p2cKZ2WjjgAAAAAAAAAQo67EcuZuj5jkACue9gAAkTEKeJfbioptRgAAAAAAAACIr0dLVwBXmEeL5Qg4
+ AAAAAOnqwNbVb9O5AAAAAAAAAP38RmDae3tfkDqIX0UAAABq3W9v6+2BtssAAAAAAAD9q6v7AFl1dV9f
+ mpgIXwAAAABrtG9v7O2BagAAAACSF52fL/AAAAAAAHUAAAAAAAAAAACC1NS+3s/ZzAAAAJ03MjqjdJ0A
+ AAC3FIMUtwAAAAAAzr27goK5awAAAAAAWaNgGho3dAAAyr+/v4ODtQAAAMmAAM+2zxMTawAAAAAAAK6z
+ kZ1xAAC1un3HVwAAAAAAAAAAawB/ftAAAAAAAABCNUIAAAAAAAAAAF8AAAAAAAAAAEcAAGpGAAAAAAAA
+ AEKsEQAAAAAAAAAAlZUAAAAAAAAAAAAAAEgAAAAAAAAAAC3hAAAAAAAAAAAAAAAAAAAAAAAAAAAARgAA
+ AAD///////////4BwH/8AAAf/AAAD/4AAA//xgAP/84AB//MAAf/zAAD/8wAA/+MAAP/BAAD/AAAAfAA
+ AAHgAAAB4AAAAeAAAAPAAAADwAAAA+AAIAfgADAD8AA8A/gAOAPwgDwDwPv+AcBwfAfAYDkD8GD/Q+P9
+ /s/j/P/v8///7ygAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAA////AFEl
+ swBJDW0ABEMwAAJHSQAFDwIAXl9ZAHJtagBwfYQAQVNqAAFtAAAAZgAAAz0CABQ/AQAXQwAAGkAAAA8g
+ AQAhSJQAM1SRABw6fgAFVk0ADE48AAplaQAgWgIAMYcMACl7CwAOJwMAAAMtABwPNwAhIQAABxACAA9S
+ UAAnQUgAAISfACRoDAAxmwQAK4MHABMpAAA8P1kATBMbACQSVwAKL1EADS5CADFMVQABIF4AJ3CGADB2
+ kAAzdlEAMnY1ABMnEwBARooAVVq5ABgATwAWBn0ABh56AAULaQBOeKYAT3WSACpNZwAucpgAMHifADFx
+ nwA1b5YAMF93AEBalgBvjecADCLAAAkPpQAbJr4AFiLGAAAJjgAzbIEANGh8AClhgAAzfKEAMHWWADJz
+ kwAsW3MAQ4mvADyY9AAtgf8AIpr/ACuk/wBdk9UAG0tkACladQAqbI4AK3GUAC5vjwArbpEALWJ7ACdl
+ aAAOaoQAJJ20ABx0gQAeTF8AJ116ACViggAgZosAJmeJAChvlAAhZIgAH1ZyAHVmYwAaPVMAJ19+ACto
+ hgAmaIwAKGB9ACFdfAAgY4YAGU5qAFtgYQAYQVgAIVx7ACtrjgAtZYIAJmKAACNhgQAmX3wAIUpdAHp6
+ ewARN0wAH1R0ACdXcgApXnoAJ2B+ACligQAdSmAAKiopAGZlZQCRkZEAbm9vAFFSUwAWO08AJFRuACFP
+ agAhUm0AHD9RAAMKDgA3NjUAWlpaADk5OQA3NzcAPDk3AAYSGQAVNUgAFjFAAA8jLwABAgQAVQAAAP//
+ /wBWAAAA/f//AFcAAAD8//8AWAAAAPz//wBZAAAA/P//AFoAAAD9//8AWwAAAP7//wBcAAAA////AF4A
+ AAABAAAAXwAAAAEAAABgAAAAAQAAAGEAAAABAAAAYgAAAAEAAAB3IFIAbWFuAAAAAAAAAAAAAAAAAAAA
+ AAC0VWMAtFVjALwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAEAAAAAADgDAACfAQAAPwAAAAEA
+ AABAAAAAAQAAAEEAAAABAAAAQgAAAAEAAABFAAAA////AEYAAAD+//8ARwAAAP3//wBIAAAA/P//AEkA
+ AAD8//8ASgAAAPz//wBLAAAA/f//AEwAAAD///8ATQAAAAMAAABOAAAABwAAAE8AAAALAAAAUAAAABAA
+ AABRAAAAFQAAAFIAAAAZAAAAUwAAABwAAABUAAAAHgAAAFUAAAAeAAAAVgAAAB0AAABXAAAAGgAAAFgA
+ AAAWAAAAWQAAABIAAABaAAAADQAAAFsAAAAIAAAAXAAAAAQAAABeAAAA/v//AF8AAAD8//8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAI2Oj5CRkpOUlZYAAAAAAACCg4SFhoeIiYqLjAAAAAAAAAB6AHt8fX5/gIEAAAAA
+ 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
+</value>
+ </data>
+</root>
\ No newline at end of file diff --git a/win/C#/HandBrakeCS.csproj b/win/C#/HandBrakeCS.csproj index c24034177..ab257abea 100644 --- a/win/C#/HandBrakeCS.csproj +++ b/win/C#/HandBrakeCS.csproj @@ -124,6 +124,12 @@ <Compile Include="frmDownload.Designer.cs">
<DependentUpon>frmDownload.cs</DependentUpon>
</Compile>
+ <Compile Include="frmGenPreview.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="frmGenPreview.Designer.cs">
+ <DependentUpon>frmGenPreview.cs</DependentUpon>
+ </Compile>
<Compile Include="frmMain.cs">
<SubType>Form</SubType>
</Compile>
@@ -136,6 +142,12 @@ <Compile Include="frmOptions.Designer.cs">
<DependentUpon>frmOptions.cs</DependentUpon>
</Compile>
+ <Compile Include="Experimental\frmPreviewAX.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Experimental\frmPreviewAX.Designer.cs">
+ <DependentUpon>frmPreviewAX.cs</DependentUpon>
+ </Compile>
<Compile Include="frmQueue.cs">
<SubType>Form</SubType>
</Compile>
@@ -182,6 +194,9 @@ <SubType>Designer</SubType>
<DependentUpon>frmDownload.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="frmGenPreview.resx">
+ <DependentUpon>frmGenPreview.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<SubType>Designer</SubType>
<DependentUpon>frmMain.cs</DependentUpon>
@@ -190,6 +205,9 @@ <SubType>Designer</SubType>
<DependentUpon>frmOptions.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="Experimental\frmPreviewAX.resx">
+ <DependentUpon>frmPreviewAX.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="frmQueue.resx">
<SubType>Designer</SubType>
<DependentUpon>frmQueue.cs</DependentUpon>
@@ -256,9 +274,11 @@ <Content Include="Resources\Output_Small.png" />
<None Include="Resources\Pause.png" />
<None Include="Resources\Play.png" />
+ <None Include="Resources\picture.png" />
<Content Include="Resources\Pref_Small.png" />
<Content Include="Resources\Queue.png" />
<Content Include="Resources\Queue_Small.png" />
+ <Content Include="Resources\window.png" />
<None Include="Resources\save.png" />
<None Include="Resources\stop.png" />
<None Include="Resources\SplashScreen.jpg" />
@@ -297,6 +317,24 @@ <Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
+ <ItemGroup>
+ <COMReference Include="AxAXVLC">
+ <Guid>{DF2BBE39-40A8-433B-A279-073F48DA94B6}</Guid>
+ <VersionMajor>1</VersionMajor>
+ <VersionMinor>0</VersionMinor>
+ <Lcid>0</Lcid>
+ <WrapperTool>aximp</WrapperTool>
+ <Isolated>False</Isolated>
+ </COMReference>
+ <COMReference Include="stdole">
+ <Guid>{00020430-0000-0000-C000-000000000046}</Guid>
+ <VersionMajor>2</VersionMajor>
+ <VersionMinor>0</VersionMinor>
+ <Lcid>0</Lcid>
+ <WrapperTool>primary</WrapperTool>
+ <Isolated>False</Isolated>
+ </COMReference>
+ </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/win/C#/Properties/Resources.Designer.cs b/win/C#/Properties/Resources.Designer.cs index 0a9c4b7c4..d347dc47b 100644 --- a/win/C#/Properties/Resources.Designer.cs +++ b/win/C#/Properties/Resources.Designer.cs @@ -179,6 +179,13 @@ namespace Handbrake.Properties { }
}
+ internal static System.Drawing.Bitmap picture {
+ get {
+ object obj = ResourceManager.GetObject("picture", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap Play {
get {
object obj = ResourceManager.GetObject("Play", resourceCulture);
@@ -227,5 +234,12 @@ namespace Handbrake.Properties { return ((System.Drawing.Bitmap)(obj));
}
}
+
+ internal static System.Drawing.Bitmap window {
+ get {
+ object obj = ResourceManager.GetObject("window", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
}
}
diff --git a/win/C#/Properties/Resources.resx b/win/C#/Properties/Resources.resx index 7fa9934d3..db3ecbe0e 100644 --- a/win/C#/Properties/Resources.resx +++ b/win/C#/Properties/Resources.resx @@ -190,4 +190,10 @@ <data name="copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
+ <data name="window" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\resources\window.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
+ <data name="picture" type="System.Resources.ResXFileRef, System.Windows.Forms">
+ <value>..\Resources\picture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+ </data>
</root>
\ No newline at end of file diff --git a/win/C#/Properties/Settings.Designer.cs b/win/C#/Properties/Settings.Designer.cs index c8f9f66a3..a488f9ffc 100644 --- a/win/C#/Properties/Settings.Designer.cs +++ b/win/C#/Properties/Settings.Designer.cs @@ -298,5 +298,17 @@ namespace Handbrake.Properties { this["saveLogWithVideo"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("T:\\\\Program Files\\\\VideoLAN\\\\vlc\\\\vlc.exe")]
+ public string VLC_Path {
+ get {
+ return ((string)(this["VLC_Path"]));
+ }
+ set {
+ this["VLC_Path"] = value;
+ }
+ }
}
}
diff --git a/win/C#/Properties/Settings.settings b/win/C#/Properties/Settings.settings index 8d4af320a..179177f14 100644 --- a/win/C#/Properties/Settings.settings +++ b/win/C#/Properties/Settings.settings @@ -71,5 +71,8 @@ <Setting Name="saveLogWithVideo" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
+ <Setting Name="VLC_Path" Type="System.String" Scope="User">
+ <Value Profile="(Default)">T:\\Program Files\\VideoLAN\\vlc\\vlc.exe</Value>
+ </Setting>
</Settings>
</SettingsFile>
\ No newline at end of file diff --git a/win/C#/Resources/picture.png b/win/C#/Resources/picture.png Binary files differnew file mode 100644 index 000000000..0072ccfb6 --- /dev/null +++ b/win/C#/Resources/picture.png diff --git a/win/C#/Resources/window.png b/win/C#/Resources/window.png Binary files differnew file mode 100644 index 000000000..48a14a35b --- /dev/null +++ b/win/C#/Resources/window.png diff --git a/win/C#/app.config b/win/C#/app.config index 522578bd7..7098f26cf 100644 --- a/win/C#/app.config +++ b/win/C#/app.config @@ -76,6 +76,9 @@ <setting name="saveLogWithVideo" serializeAs="String">
<value />
</setting>
+ <setting name="VLC_Path" serializeAs="String">
+ <value>T:\\Program Files\\VideoLAN\\vlc\\vlc.exe</value>
+ </setting>
</Handbrake.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
diff --git a/win/C#/frmGenPreview.Designer.cs b/win/C#/frmGenPreview.Designer.cs new file mode 100644 index 000000000..eefe1362d --- /dev/null +++ b/win/C#/frmGenPreview.Designer.cs @@ -0,0 +1,170 @@ +namespace Handbrake
+{
+ partial class frmGenPreview
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmGenPreview));
+ this.toolBar = new System.Windows.Forms.ToolStrip();
+ this.btn_encode = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.btn_play = new System.Windows.Forms.ToolStripButton();
+ this.label1 = new System.Windows.Forms.Label();
+ this.lbl_status = new System.Windows.Forms.Label();
+ this.cb_duration = new System.Windows.Forms.ComboBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.toolBar.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // toolBar
+ //
+ this.toolBar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+ this.toolBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.btn_encode,
+ this.toolStripSeparator1,
+ this.btn_play});
+ this.toolBar.Location = new System.Drawing.Point(0, 0);
+ this.toolBar.Name = "toolBar";
+ this.toolBar.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
+ this.toolBar.Size = new System.Drawing.Size(340, 39);
+ this.toolBar.TabIndex = 38;
+ this.toolBar.Text = "toolStrip1";
+ //
+ // btn_encode
+ //
+ this.btn_encode.Image = global::Handbrake.Properties.Resources.picture;
+ this.btn_encode.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_encode.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_encode.Name = "btn_encode";
+ this.btn_encode.Size = new System.Drawing.Size(127, 36);
+ this.btn_encode.Text = "Encode Sample";
+ this.btn_encode.Click += new System.EventHandler(this.btn_encode_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 39);
+ this.toolStripSeparator1.Visible = false;
+ //
+ // btn_play
+ //
+ this.btn_play.Image = global::Handbrake.Properties.Resources.Play;
+ this.btn_play.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_play.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_play.Name = "btn_play";
+ this.btn_play.Size = new System.Drawing.Size(64, 36);
+ this.btn_play.Text = "Play";
+ this.btn_play.Visible = false;
+ this.btn_play.Click += new System.EventHandler(this.btn_play_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.Location = new System.Drawing.Point(12, 77);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(47, 13);
+ this.label1.TabIndex = 39;
+ this.label1.Text = "Status:";
+ //
+ // lbl_status
+ //
+ this.lbl_status.AutoSize = true;
+ this.lbl_status.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lbl_status.Location = new System.Drawing.Point(133, 77);
+ this.lbl_status.Name = "lbl_status";
+ this.lbl_status.Size = new System.Drawing.Size(111, 13);
+ this.lbl_status.TabIndex = 40;
+ this.lbl_status.Text = "Click \"Encode Sample\"";
+ //
+ // cb_duration
+ //
+ this.cb_duration.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cb_duration.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.cb_duration.FormattingEnabled = true;
+ this.cb_duration.Items.AddRange(new object[] {
+ "5",
+ "10",
+ "15",
+ "20",
+ "25",
+ "30",
+ "35",
+ "40",
+ "45",
+ "50",
+ "55",
+ "60"});
+ this.cb_duration.Location = new System.Drawing.Point(136, 46);
+ this.cb_duration.MaxLength = 2;
+ this.cb_duration.Name = "cb_duration";
+ this.cb_duration.Size = new System.Drawing.Size(46, 21);
+ this.cb_duration.TabIndex = 41;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label2.Location = new System.Drawing.Point(12, 49);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(118, 13);
+ this.label2.TabIndex = 42;
+ this.label2.Text = "Duration (seconds):";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // frmGenPreview
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(340, 102);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.cb_duration);
+ this.Controls.Add(this.lbl_status);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.toolBar);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "frmGenPreview";
+ this.Text = "Live Preview";
+ this.toolBar.ResumeLayout(false);
+ this.toolBar.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStrip toolBar;
+ private System.Windows.Forms.ToolStripButton btn_encode;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripButton btn_play;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lbl_status;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.ComboBox cb_duration;
+ }
+}
\ No newline at end of file diff --git a/win/C#/frmGenPreview.cs b/win/C#/frmGenPreview.cs new file mode 100644 index 000000000..3d6528de9 --- /dev/null +++ b/win/C#/frmGenPreview.cs @@ -0,0 +1,115 @@ +using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Threading;
+using System.Diagnostics;
+using System.IO;
+
+namespace Handbrake
+{
+ public partial class frmGenPreview : Form
+ {
+ private delegate void UpdateHandler();
+ Handbrake.QueryGenerator queryGen = new Handbrake.QueryGenerator();
+ Functions.Encode process = new Functions.Encode();
+ Process hbProc;
+ frmMain mainWindow;
+ Boolean playing = false;
+
+ public frmGenPreview(frmMain mw)
+ {
+ InitializeComponent();
+ this.mainWindow = mw;
+ }
+
+ private void btn_play_Click(object sender, EventArgs e)
+ {
+ String currently_playing;
+
+ // Get the Destination of the sample video.
+ currently_playing = "";
+ if (mainWindow.text_destination.Text != "")
+ currently_playing = mainWindow.text_destination.Text.Replace(".m", "_sample.m").Replace(".avi", "_sample.avi").Replace(".ogm", "_sample.ogm");
+
+ // Launch VLC and play video.
+ if (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.Information);
+ }
+ }
+ }
+
+ private void btn_encode_Click(object sender, EventArgs e)
+ {
+ String query = queryGen.GeneratePreviewQuery(mainWindow, cb_duration.Text);
+ ThreadPool.QueueUserWorkItem(procMonitor, query);
+ }
+ private void procMonitor(object state)
+ {
+ // Make sure we are not already encoding and if we are then display an error.
+ if (hbProc != null)
+ MessageBox.Show("Handbrake is already encoding a video!", "Status", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ else
+ {
+ encodingMessage();
+ hbProc = process.runCli(this, (string)state);
+ hbProc.WaitForExit();
+ hbProc = null;
+ updateUIElements();
+ }
+ }
+ // Update the UI now that the encode has finished.
+ private void encodingMessage()
+ {
+ try
+ {
+ if (this.InvokeRequired)
+ {
+ this.BeginInvoke(new UpdateHandler(encodingMessage));
+ return;
+ }
+ lbl_status.Text = "Encoding, Please wait ...";
+ }
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
+ }
+
+ // Update the UI now that the encode has finished.
+ private void updateUIElements()
+ {
+ try
+ {
+ if (this.InvokeRequired)
+ {
+ this.BeginInvoke(new UpdateHandler(updateUIElements));
+ return;
+ }
+
+ btn_play.Visible = true;
+ toolStripSeparator1.Visible = true;
+ lbl_status.Text = "Your sample is ready to play.";
+ }
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.ToString());
+ }
+ }
+
+
+ }
+}
diff --git a/win/C#/frmGenPreview.resx b/win/C#/frmGenPreview.resx new file mode 100644 index 000000000..b5b3babf1 --- /dev/null +++ b/win/C#/frmGenPreview.resx @@ -0,0 +1,503 @@ +<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="toolBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ AAABAAYAMDAAAAEACACoDgAAZgAAACAgAAABAAgAqAgAAA4PAAAQEAAAAQAIAGgFAAC2FwAAMDAAAAEA
+ IACoJQAAHh0AACAgAAABACAAqBAAAMZCAAAQEAAAAQAgAGgEAABuUwAAKAAAADAAAABgAAAAAQAIAAAA
+ AACACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAD///8A/wAAAAD/AAAAAIAAgICAAICAAAAAgAAAAICAAIAA
+ AACAAIAAgP//ACAgIADg4OAAIAAAAAAgAABg4CAAQOBAAGBgYAAgYAAAQKDgAAAAIABAwCAAIEAAAECg
+ AABg4AAAIGCAAECAoABgoMAAYECgAGDAAABgICAAoKCgAOAAAAAgIAAAAGAAAEDgAABgAAAAIAAgAEAg
+ IAAgQGAAIIDAAADg4ABgAGAAgOD/ACCA/wCgAAAAQGAAACCAAAAAoAAAYCAAAAAgIAAgIEAAYGBAAEBg
+ YAAAIIAAAGCAAGCAgABAAKAAAICgAACgoACAoKAAIKDAAECgwAAAAOAAQADgAADA4ABgwOAAIODgAADg
+ AADA4AAAAEAgAKDgIAAA4EAAYABAAABAYACAAGAAgCBgAGAggABA4KAAAECgAGBAwADgIOAAIEDgAACA
+ 4ADgoOAAYAD/ACBg/wAAoP8A4KD/AGD//wAICAgACAAAAAgIAAAAAJgACAAIAAAACAAACAAACBAQACA4
+ SAAgYIgAOHCIADhw+AAIGAAAEBAIACg4QAAwYHgAAACIACA4QAAoQFAAKFh4AHh4eAAwaIAAIGiQADh4
+ mAAACAgAEAgIABAYGAAgGBgASEhIABhIYAAoUGAAIFBoAChQaAAoWGgAMFhoAChoiAAweJgAKHioACiA
+ sAAIEAAACAgQAAgQGAAQGCAAGCAoABhAUAAoSFgAaGhoABhQcAAgWHAAKFhwADhgcAAYWIAAOGiAAIiI
+ iAAoaJAAKHCYACh4oAA4gKAAMICoAKioqAAwmNAAEDgAAChYAAAweAAAMIgQAAgYGAAYGBgACBggABAg
+ KAAgKCgAKCgoACAwOAA4ODgAKDhIADBQWABYWFgAGEhoADBYcAAYUHgAGFh4ACBYeAAoYHgAKGCAABhY
+ iAAgaJgAKICoACiIuAC4uLgAMJDIADiw6AAQCAAAABgAAAggAAAAOAAAMGgAABgQCAAwgAgAEAgQABgQ
+ EAAwmBgAGBggAAgYKAAAICgACCAoABgoMAAgKDAAGDBAABg4QAAYOFAAEEBYACBIWAAwSFgAOEhYACBI
+ YAAQSGgAOFhoABhIcAAoUHAAQFhwACBgeABAaIAAIGiIADBwiABAcIgAGGCQADhwkABYeJAACBCgAChw
+ oAAweKAAKIC4ACiQwAAwmMgAOKjgADBg6ABAsOgAELD4AAgoAAAIMAAAGDAAABhIAAAYUAAAKHgAAACY
+ AAAwmAAAAMgAABAACAAIEAgAEBgIABA4CAAYOAgAMHgIABAYEAAYGBAAIBgQACh4EAAwmBAAEBAYABgg
+ GAAoIBgAGCAgAAgIKAAgICgAGAgwAAggMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAn2KfdXV1XAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoo2+QIJCJb28Sd3em
+ nQAAAFuKqW0aqsd6Y5/DXAAAAAAAAAAAAAAAAAAAAAAAAAB3kAWQkG8SpqaJb28gsncAbIeSroyii21x
+ kczIwwAAAAAAAAAAAAAAAAAAAAAAAABoo4mJkLKylm9vb5BvdwwAcZO/fox7z2NjqsOss2MAWwAAAAAA
+ AAAAAAAAAAAAAAAAvaGmo5ANlgUFEiBvo1xjq3p6qMTJroBkxXt9cGzFnAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAL2ylgV3vQAAAGOvxMXXq41uh6yVjxqp1YhknwAAAAAAAAAAAAAAAAAAAAAAAAAAAABvsolbAAAA
+ +5KneouS2Kx4pZF9ndywsXuvkocAAAAAAAAAAAAAAAAAAAAAAAAAAAB3sncAAAAAdayHca95bH9+cKmv
+ fMVucG2B4MYAAAAAAAAAAAAAAAAAAAAAAAAAAAChsqMAAAAAe3VkyHF5kW59cN3eZc/XyXutyot7AAAA
+ AAAAAAAAAAAAAAAAAAAAAACjIKEAAACgfv94gX+PituLDI0/aoBxqxqOY8PgbQAAAAAAAAAAAAAAAAAA
+ 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
+ OAAABwAA//wYAAADAAD/+BgAAAMAAP/AAAAAAwAA/wAAAAADAAD8AAAAAAMAAPwAAAAAAwAA+AAAAAAD
+ AADwAAAAAAMAAPAAAAAAAwAA8AAAAAADAADwAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAQAA8AAPAA
+ ABgADwAA+AAAHgAHAAD8AAAfgAMAAP4QAA+ADwAA/gAADgADAAD8AAAfAAMAAPAfxD/ABwAA4B/n/+AB
+ AADgB+B/wB8AAOADgB+ADwAA8AOAHhAPAAD4BwB/8kcAAPz/gf/nLwAA+P/5/+8/AADwf/n//z8AAPh/
+ /P//vwAA+P////+fAAAoAAAAIAAAAEAAAAABAAgAAAAAAIAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAP//
+ /wAAAP8AAP//AAAAgACAgIAAgAAAAACAAAAAgIAAgIAAAECg4ABAgKAAYOAgAEDgQAAAIAAAACAgACAg
+ IABgIIAAIAAAACBAAAAAYAAAIIAAAGAgIABAYGAAAACgAGCAoACgoKAA4ODgAGDAAAAAACAAYABgAIAg
+ YAAAYMAAICAAACBgAABgYAAAQKAAAKDAAAAA4AAAYOAAAABAIAAgQCAAYAAgACBAQABgYEAAIABgACAg
+ YAAgQGAAYGBgACBggABgYIAAgACgAKCAoABgIMAAQKDAAGCgwAAgwMAAAADgAIDA4ACgwOAAAODgAIDg
+ 4ACA4AAAgIAgAEDgIACgACAAQABgAIAggAAgYP8AAKD/AAgIAAAICAgACAAAABhAWAAoUGAAaGhoADBg
+ eAAoaIgAMICoAChggAAACAgAEAgIABgYGAAoUGgAKFhwAChwkAAIGAgACBAQABAgKAAQKDgAIEhgACBQ
+ aAAAAHgAIFh4AChgeAAAeHgAeHh4AChogAAwaIAAIGCIADBoiAA4cIgAIGiQADhwkAAoeKgAKICwAAgQ
+ AAAIIAAACAAIABhICAAICBAAMIgQABAYGAAYICgAGCgwAEhISAAwSFgAGFBoAChYaAAICHgAOGiAACh4
+ oAAweKAAGAAAAAAIAAAAGAAACBgAABAoAAAYUAAAKGAAAChoAAAAeAAAAAAIAAgQCAAQEAgAGP8IACAY
+ EAAIEBgAMJAYABggIAAAACgACBAoACgwMAAAKDgAEDA4ADg4OAAoOEAAGDhIACA4SAAAQEgAMEBIAEhQ
+ UAAISFgAIEhYAChIWAAwUFgAIEhoAEhYaAAYUHAAMFhwABhYeAAoWHgAIFiAAEhwgACIiIgAGGCQAAAA
+ mAAgcJgAKHCYADB4mACYmJgAACjIAEBw+ACo//8ASAAAAFgAAABoAAAAeAAAABAIAABICAAAGCgAAAA4
+ AAAYOAAACEAAAAhIAAAoUAAAAFgAACBYAAAAaAAAIGgAADB4AAAAiAAAMIgAAGiIAACAmAAAGAAIADAI
+ CABgCAgAEBgIAAggCAAQIAgAECgIAAgwCAAQMAgAODAIABA4CAAYOAgAEEAIABhACAAgQAgAIFAIAChg
+ CAAwgAgAMJAIADCoCAAACBAAGBAQABggEAAoIBAAKGAQAChoEAAgeBAAKHgQAEh4EAAY+BAACAAYAAAI
+ GAAICBgAEAgYAAAQGAAQEBgAABgYAAgYGAAYMBgAKHgYADCYGAAwoBgAMKgYAGj/GABgCCAACBAgAAgY
+ IAAQGCAAGBggACggIABIcCAACAAoABAAKAAAECgAEBAoAAggKAAACDAASAgwAAgQMAAIKDAAECgwAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAARxBSUlJHAAAAAABYWFlY8kYAAAAAAAAAAAAAAAAAAJFgqqRLSzAwBXMAkKJbW1pdSVmE
+ AAAAAAAAAAAAAAAAEJdLqhpgYKQFkf9NmVRanHVJVZRQAAAAAAAAAAAAAAAAUY6RO6qXMHNYW5MxdFpm
+ TVtPSpAAAAAAAAAAAAAAAAAAAAAFpIYAAFSeW09PU15KU05MaEkAAAAAAAAAAAAAAAAAAEtgAAAAk55j
+ ml5Mp2haXUqpW3IAAAAAAAAAAAAAAAAAS0sAAEpJoE5PpZpMZVWnMZyZVQAAAAAAAAAAAAAAAABLMAAA
+ cqCeSnppZGZKWzFNaV2ecAAAAAAAAAAAAAAAAEtLAACLVF6iZHROp2eiW1paeWnxAAAAAAAAAAAAAABI
+ GmAAAElJSmh6SWNVSk5hZqJ1VXUAAAAAAAAAAAAAlpmjeJAAk12eZXZ5p3WndnZpaUlbZgAAAAAAAAAA
+ m2lFRTw8PDZeWV1OlE0xeWlNeVVdZmmZUAAAAAAAjzYKRaysRUVFRa02SXSnYaFNTUxpTFSoTmKTAAAA
+ AI8KOkSrrKysrKxErDullF6fVWhiVakLaVWbVZoAAAAAqK2sRKZEqyCsRKummKBZT0xPTHppZVMLqVN4
+ cQAAAAA6O6sYGKYYGKsYphgELjejY09KTTZNaWdMNpkAAAAA+zc6XFxcd3d3XASmXEw6PZZiZ6g2ZUw2
+ T2QLnwAAAAAdoTtcLcV3pndfLi2jraMtcmNkT05np0xnaXhUAAAAAAD5NKL87xgYd1+eLZ06+1wAVE6o
+ p2cKZ2WjjgAAAAAAAAAQo67EcuZuj5jkACue9gAAkTEKeJfbioptRgAAAAAAAACIr0dLVwBXmEeL5Qg4
+ AAAAAOnqwNbVb9O5AAAAAAAAAP38RmDae3tfkDqIX0UAAABq3W9v6+2BtssAAAAAAAD9q6v7AFl1dV9f
+ mpgIXwAAAABrtG9v7O2BagAAAACSF52fL/AAAAAAAHUAAAAAAAAAAACC1NS+3s/ZzAAAAJ03MjqjdJ0A
+ AAC3FIMUtwAAAAAAzr27goK5awAAAAAAWaNgGho3dAAAyr+/v4ODtQAAAMmAAM+2zxMTawAAAAAAAK6z
+ kZ1xAAC1un3HVwAAAAAAAAAAawB/ftAAAAAAAABCNUIAAAAAAAAAAF8AAAAAAAAAAEcAAGpGAAAAAAAA
+ AEKsEQAAAAAAAAAAlZUAAAAAAAAAAAAAAEgAAAAAAAAAAC3hAAAAAAAAAAAAAAAAAAAAAAAAAAAARgAA
+ AAD///////////4BwH/8AAAf/AAAD/4AAA//xgAP/84AB//MAAf/zAAD/8wAA/+MAAP/BAAD/AAAAfAA
+ AAHgAAAB4AAAAeAAAAPAAAADwAAAA+AAIAfgADAD8AA8A/gAOAPwgDwDwPv+AcBwfAfAYDkD8GD/Q+P9
+ /s/j/P/v8///7ygAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAA////AFEl
+ swBJDW0ABEMwAAJHSQAFDwIAXl9ZAHJtagBwfYQAQVNqAAFtAAAAZgAAAz0CABQ/AQAXQwAAGkAAAA8g
+ AQAhSJQAM1SRABw6fgAFVk0ADE48AAplaQAgWgIAMYcMACl7CwAOJwMAAAMtABwPNwAhIQAABxACAA9S
+ UAAnQUgAAISfACRoDAAxmwQAK4MHABMpAAA8P1kATBMbACQSVwAKL1EADS5CADFMVQABIF4AJ3CGADB2
+ kAAzdlEAMnY1ABMnEwBARooAVVq5ABgATwAWBn0ABh56AAULaQBOeKYAT3WSACpNZwAucpgAMHifADFx
+ nwA1b5YAMF93AEBalgBvjecADCLAAAkPpQAbJr4AFiLGAAAJjgAzbIEANGh8AClhgAAzfKEAMHWWADJz
+ kwAsW3MAQ4mvADyY9AAtgf8AIpr/ACuk/wBdk9UAG0tkACladQAqbI4AK3GUAC5vjwArbpEALWJ7ACdl
+ aAAOaoQAJJ20ABx0gQAeTF8AJ116ACViggAgZosAJmeJAChvlAAhZIgAH1ZyAHVmYwAaPVMAJ19+ACto
+ hgAmaIwAKGB9ACFdfAAgY4YAGU5qAFtgYQAYQVgAIVx7ACtrjgAtZYIAJmKAACNhgQAmX3wAIUpdAHp6
+ ewARN0wAH1R0ACdXcgApXnoAJ2B+ACligQAdSmAAKiopAGZlZQCRkZEAbm9vAFFSUwAWO08AJFRuACFP
+ agAhUm0AHD9RAAMKDgA3NjUAWlpaADk5OQA3NzcAPDk3AAYSGQAVNUgAFjFAAA8jLwABAgQAVQAAAP//
+ /wBWAAAA/f//AFcAAAD8//8AWAAAAPz//wBZAAAA/P//AFoAAAD9//8AWwAAAP7//wBcAAAA////AF4A
+ AAABAAAAXwAAAAEAAABgAAAAAQAAAGEAAAABAAAAYgAAAAEAAAB3IFIAbWFuAAAAAAAAAAAAAAAAAAAA
+ AAC0VWMAtFVjALwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAEAAAAAADgDAACfAQAAPwAAAAEA
+ AABAAAAAAQAAAEEAAAABAAAAQgAAAAEAAABFAAAA////AEYAAAD+//8ARwAAAP3//wBIAAAA/P//AEkA
+ AAD8//8ASgAAAPz//wBLAAAA/f//AEwAAAD///8ATQAAAAMAAABOAAAABwAAAE8AAAALAAAAUAAAABAA
+ AABRAAAAFQAAAFIAAAAZAAAAUwAAABwAAABUAAAAHgAAAFUAAAAeAAAAVgAAAB0AAABXAAAAGgAAAFgA
+ AAAWAAAAWQAAABIAAABaAAAADQAAAFsAAAAIAAAAXAAAAAQAAABeAAAA/v//AF8AAAD8//8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAI2Oj5CRkpOUlZYAAAAAAACCg4SFhoeIiYqLjAAAAAAAAAB6AHt8fX5/gIEAAAAA
+ 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
+</value>
+ </data>
+</root>
\ No newline at end of file diff --git a/win/C#/frmMain.Designer.cs b/win/C#/frmMain.Designer.cs index e64cfadb0..ca288cea8 100644 --- a/win/C#/frmMain.Designer.cs +++ b/win/C#/frmMain.Designer.cs @@ -257,6 +257,8 @@ namespace Handbrake this.btn_ActivityWindow = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
this.btn_minimize = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.btn_vidPreview = new System.Windows.Forms.ToolStripButton();
this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.StatusStrip = new System.Windows.Forms.StatusStrip();
this.lbl_encode = new System.Windows.Forms.ToolStripStatusLabel();
@@ -3038,9 +3040,11 @@ namespace Handbrake this.btn_add2Queue,
this.btn_showQueue,
this.toolStripSeparator4,
+ this.btn_vidPreview,
this.btn_ActivityWindow,
this.toolStripSeparator8,
- this.btn_minimize});
+ this.btn_minimize,
+ this.toolStripSeparator2});
this.toolStrip1.Location = new System.Drawing.Point(0, 24);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
@@ -3164,6 +3168,21 @@ namespace Handbrake this.btn_minimize.Text = "Minimize To System Tray";
this.btn_minimize.Click += new System.EventHandler(this.btn_minimize_Click);
//
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 39);
+ //
+ // btn_vidPreview
+ //
+ this.btn_vidPreview.Image = global::Handbrake.Properties.Resources.picture;
+ this.btn_vidPreview.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.btn_vidPreview.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.btn_vidPreview.Name = "btn_vidPreview";
+ this.btn_vidPreview.Size = new System.Drawing.Size(86, 36);
+ this.btn_vidPreview.Text = "Preview";
+ this.btn_vidPreview.Click += new System.EventHandler(this.btn_vidPreview_Click);
+ //
// notifyIcon
//
this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
@@ -3480,6 +3499,8 @@ namespace Handbrake private System.Windows.Forms.ToolStripSeparator sep1;
private System.Windows.Forms.ToolStripMenuItem pmnu_delete;
private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripButton btn_vidPreview;
}
}
\ No newline at end of file diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs index 0f2d4dfae..adbe7c269 100644 --- a/win/C#/frmMain.cs +++ b/win/C#/frmMain.cs @@ -36,6 +36,7 @@ namespace Handbrake // Globals: Mainly used for tracking.
private frmQueue queueWindow;
+ private frmGenPreview preview;
private string lastAction = null;
public int maxWidth = 0;
public int maxHeight = 0;
@@ -499,6 +500,26 @@ namespace Handbrake queueWindow.setQueue(encodeQueue);
queueWindow.Show();
}
+ private void btn_vidPreview_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)
+ {
+ preview = new frmGenPreview(this);
+ preview.Show();
+ }
+ else if (preview.IsDisposed)
+ {
+ preview = new frmGenPreview(this);
+ preview.Show();
+ }
+ else
+ MessageBox.Show("The preview window is already open!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
private void btn_ActivityWindow_Click(object sender, EventArgs e)
{
String file = String.Empty;
@@ -1926,7 +1947,6 @@ namespace Handbrake treeView_presets.Nodes.Add(rootNode);
}
-
// User Presets
presetNames = presetHandler.getUserPresetNames();
foreach (string preset in presetNames)
diff --git a/win/C#/frmMain/QueryGenerator.cs b/win/C#/frmMain/QueryGenerator.cs index a2cb50ed0..b79510704 100644 --- a/win/C#/frmMain/QueryGenerator.cs +++ b/win/C#/frmMain/QueryGenerator.cs @@ -49,8 +49,11 @@ namespace Handbrake /// </summary>
/// <param name="mainWindow"></param>
/// <returns>Returns a CLI query String.</returns>
- public string GeneratePreviewQuery(frmMain mainWindow)
+ public string GeneratePreviewQuery(frmMain mainWindow, string duration)
{
+ int seconds = 0;
+ int.TryParse(duration, out seconds);
+
// Source tab
string query = "";
diff --git a/win/C#/frmOptions.Designer.cs b/win/C#/frmOptions.Designer.cs index 91bd684fa..b0953dc71 100644 --- a/win/C#/frmOptions.Designer.cs +++ b/win/C#/frmOptions.Designer.cs @@ -79,6 +79,38 @@ namespace Handbrake this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.pathFinder = new System.Windows.Forms.FolderBrowserDialog();
this.ToolTip = new System.Windows.Forms.ToolTip(this.components);
+ this.label16 = new System.Windows.Forms.Label();
+ this.label17 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label18 = new System.Windows.Forms.Label();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.label19 = new System.Windows.Forms.Label();
+ this.checkBox2 = new System.Windows.Forms.CheckBox();
+ this.checkBox3 = new System.Windows.Forms.CheckBox();
+ this.checkBox4 = new System.Windows.Forms.CheckBox();
+ this.label20 = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label22 = new System.Windows.Forms.Label();
+ this.label23 = new System.Windows.Forms.Label();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.button2 = new System.Windows.Forms.Button();
+ this.label24 = new System.Windows.Forms.Label();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.checkBox5 = new System.Windows.Forms.CheckBox();
+ this.label25 = new System.Windows.Forms.Label();
+ this.checkBox6 = new System.Windows.Forms.CheckBox();
+ this.checkBox7 = new System.Windows.Forms.CheckBox();
+ this.checkBox8 = new System.Windows.Forms.CheckBox();
+ this.label26 = new System.Windows.Forms.Label();
+ this.label27 = new System.Windows.Forms.Label();
+ this.comboBox2 = new System.Windows.Forms.ComboBox();
+ this.btn_vlcPath = new System.Windows.Forms.Button();
+ this.txt_vlcPath = new System.Windows.Forms.TextBox();
+ this.label29 = new System.Windows.Forms.Label();
+ this.openFile_vlc = new System.Windows.Forms.OpenFileDialog();
this.tab_options.SuspendLayout();
this.tab_general.SuspendLayout();
this.tab_picture.SuspendLayout();
@@ -308,6 +340,9 @@ namespace Handbrake //
// tab_picture
//
+ this.tab_picture.Controls.Add(this.btn_vlcPath);
+ this.tab_picture.Controls.Add(this.txt_vlcPath);
+ this.tab_picture.Controls.Add(this.label29);
this.tab_picture.Controls.Add(this.txt_decomb);
this.tab_picture.Controls.Add(this.label3);
this.tab_picture.Location = new System.Drawing.Point(4, 22);
@@ -319,7 +354,7 @@ namespace Handbrake //
// txt_decomb
//
- this.txt_decomb.Location = new System.Drawing.Point(90, 16);
+ this.txt_decomb.Location = new System.Drawing.Point(98, 16);
this.txt_decomb.Name = "txt_decomb";
this.txt_decomb.Size = new System.Drawing.Size(181, 21);
this.txt_decomb.TabIndex = 78;
@@ -613,6 +648,367 @@ namespace Handbrake this.ToolTip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
this.ToolTip.ToolTipTitle = "Tooltip";
//
+ // label16
+ //
+ this.label16.AutoSize = true;
+ this.label16.Font = new System.Drawing.Font("Verdana", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label16.Location = new System.Drawing.Point(197, 222);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(242, 12);
+ this.label16.TabIndex = 81;
+ this.label16.Text = "Available Options: {source} {title} {chapters}";
+ //
+ // label17
+ //
+ this.label17.AutoSize = true;
+ this.label17.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label17.Location = new System.Drawing.Point(111, 201);
+ this.label17.Name = "label17";
+ this.label17.Size = new System.Drawing.Size(52, 13);
+ this.label17.TabIndex = 80;
+ this.label17.Text = "Format:";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(199, 198);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(255, 20);
+ this.textBox1.TabIndex = 79;
+ this.ToolTip.SetToolTip(this.textBox1, "Define the format of the automatically named file.\r\ne.g {source}_{title}_some-te" +
+ "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +
+ "sources values.");
+ //
+ // button1
+ //
+ this.button1.FlatAppearance.BorderColor = System.Drawing.Color.Black;
+ this.button1.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.button1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
+ this.button1.Location = new System.Drawing.Point(386, 171);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(68, 22);
+ this.button1.TabIndex = 78;
+ this.button1.Text = "Browse";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // label18
+ //
+ this.label18.AutoSize = true;
+ this.label18.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label18.Location = new System.Drawing.Point(111, 174);
+ this.label18.Name = "label18";
+ this.label18.Size = new System.Drawing.Size(82, 13);
+ this.label18.TabIndex = 77;
+ this.label18.Text = "Default Path:";
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(199, 171);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(181, 20);
+ this.textBox2.TabIndex = 76;
+ this.ToolTip.SetToolTip(this.textBox2, "The default location where auto named files are stored.");
+ //
+ // checkBox1
+ //
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox1.Location = new System.Drawing.Point(114, 148);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(206, 17);
+ this.checkBox1.TabIndex = 72;
+ this.checkBox1.Text = "Automatically name output files";
+ this.ToolTip.SetToolTip(this.checkBox1, "Automatically name output files");
+ this.checkBox1.UseVisualStyleBackColor = true;
+ //
+ // label19
+ //
+ this.label19.AutoSize = true;
+ this.label19.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label19.Location = new System.Drawing.Point(10, 149);
+ this.label19.Name = "label19";
+ this.label19.Size = new System.Drawing.Size(86, 13);
+ this.label19.TabIndex = 71;
+ this.label19.Text = "Output files:";
+ //
+ // checkBox2
+ //
+ this.checkBox2.AutoSize = true;
+ this.checkBox2.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox2.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox2.Location = new System.Drawing.Point(114, 41);
+ this.checkBox2.Name = "checkBox2";
+ this.checkBox2.Size = new System.Drawing.Size(135, 17);
+ this.checkBox2.TabIndex = 70;
+ this.checkBox2.Text = "Enable GUI tooltips";
+ this.ToolTip.SetToolTip(this.checkBox2, "Enable the built in tooltips for gui controls.");
+ this.checkBox2.UseVisualStyleBackColor = false;
+ //
+ // checkBox3
+ //
+ this.checkBox3.AutoSize = true;
+ this.checkBox3.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox3.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox3.Location = new System.Drawing.Point(114, 18);
+ this.checkBox3.Name = "checkBox3";
+ this.checkBox3.Size = new System.Drawing.Size(131, 17);
+ this.checkBox3.TabIndex = 68;
+ this.checkBox3.Text = "Check for updates";
+ this.ToolTip.SetToolTip(this.checkBox3, "Enables the built in update checker. This check is performed when the application" +
+ " starts.");
+ this.checkBox3.UseVisualStyleBackColor = false;
+ //
+ // checkBox4
+ //
+ this.checkBox4.AutoSize = true;
+ this.checkBox4.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox4.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox4.Location = new System.Drawing.Point(114, 64);
+ this.checkBox4.Name = "checkBox4";
+ this.checkBox4.Size = new System.Drawing.Size(166, 17);
+ this.checkBox4.TabIndex = 69;
+ this.checkBox4.Text = "Load my default settings";
+ this.ToolTip.SetToolTip(this.checkBox4, "Loads the users default settings rather than the Normal preset.");
+ this.checkBox4.UseVisualStyleBackColor = false;
+ //
+ // label20
+ //
+ this.label20.AutoSize = true;
+ this.label20.BackColor = System.Drawing.Color.Transparent;
+ this.label20.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label20.Location = new System.Drawing.Point(21, 19);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(75, 13);
+ this.label20.TabIndex = 67;
+ this.label20.Text = "At Launch:";
+ //
+ // label21
+ //
+ this.label21.AutoSize = true;
+ this.label21.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label21.Location = new System.Drawing.Point(12, 103);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(84, 13);
+ this.label21.TabIndex = 54;
+ this.label21.Text = "When Done:";
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "Do Nothing",
+ "Shutdown",
+ "Suspend",
+ "Hibernate",
+ "Lock System",
+ "Log Off",
+ "Quit HandBrake"});
+ this.comboBox1.Location = new System.Drawing.Point(114, 100);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(166, 21);
+ this.comboBox1.TabIndex = 43;
+ this.ToolTip.SetToolTip(this.comboBox1, "Performs an action when an encode or queue has completed.");
+ //
+ // label22
+ //
+ this.label22.AutoSize = true;
+ this.label22.Font = new System.Drawing.Font("Verdana", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label22.Location = new System.Drawing.Point(197, 222);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(242, 12);
+ this.label22.TabIndex = 81;
+ this.label22.Text = "Available Options: {source} {title} {chapters}";
+ //
+ // label23
+ //
+ this.label23.AutoSize = true;
+ this.label23.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label23.Location = new System.Drawing.Point(111, 201);
+ this.label23.Name = "label23";
+ this.label23.Size = new System.Drawing.Size(52, 13);
+ this.label23.TabIndex = 80;
+ this.label23.Text = "Format:";
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(199, 198);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(255, 20);
+ this.textBox3.TabIndex = 79;
+ this.ToolTip.SetToolTip(this.textBox3, "Define the format of the automatically named file.\r\ne.g {source}_{title}_some-te" +
+ "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +
+ "sources values.");
+ //
+ // button2
+ //
+ this.button2.FlatAppearance.BorderColor = System.Drawing.Color.Black;
+ this.button2.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.button2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
+ this.button2.Location = new System.Drawing.Point(386, 171);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(68, 22);
+ this.button2.TabIndex = 78;
+ this.button2.Text = "Browse";
+ this.button2.UseVisualStyleBackColor = true;
+ //
+ // label24
+ //
+ this.label24.AutoSize = true;
+ this.label24.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label24.Location = new System.Drawing.Point(111, 174);
+ this.label24.Name = "label24";
+ this.label24.Size = new System.Drawing.Size(82, 13);
+ this.label24.TabIndex = 77;
+ this.label24.Text = "Default Path:";
+ //
+ // textBox4
+ //
+ this.textBox4.Location = new System.Drawing.Point(199, 171);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(181, 20);
+ this.textBox4.TabIndex = 76;
+ this.ToolTip.SetToolTip(this.textBox4, "The default location where auto named files are stored.");
+ //
+ // checkBox5
+ //
+ this.checkBox5.AutoSize = true;
+ this.checkBox5.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox5.Location = new System.Drawing.Point(114, 148);
+ this.checkBox5.Name = "checkBox5";
+ this.checkBox5.Size = new System.Drawing.Size(206, 17);
+ this.checkBox5.TabIndex = 72;
+ this.checkBox5.Text = "Automatically name output files";
+ this.ToolTip.SetToolTip(this.checkBox5, "Automatically name output files");
+ this.checkBox5.UseVisualStyleBackColor = true;
+ //
+ // label25
+ //
+ this.label25.AutoSize = true;
+ this.label25.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label25.Location = new System.Drawing.Point(10, 149);
+ this.label25.Name = "label25";
+ this.label25.Size = new System.Drawing.Size(86, 13);
+ this.label25.TabIndex = 71;
+ this.label25.Text = "Output files:";
+ //
+ // checkBox6
+ //
+ this.checkBox6.AutoSize = true;
+ this.checkBox6.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox6.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox6.Location = new System.Drawing.Point(114, 41);
+ this.checkBox6.Name = "checkBox6";
+ this.checkBox6.Size = new System.Drawing.Size(135, 17);
+ this.checkBox6.TabIndex = 70;
+ this.checkBox6.Text = "Enable GUI tooltips";
+ this.ToolTip.SetToolTip(this.checkBox6, "Enable the built in tooltips for gui controls.");
+ this.checkBox6.UseVisualStyleBackColor = false;
+ //
+ // checkBox7
+ //
+ this.checkBox7.AutoSize = true;
+ this.checkBox7.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox7.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox7.Location = new System.Drawing.Point(114, 18);
+ this.checkBox7.Name = "checkBox7";
+ this.checkBox7.Size = new System.Drawing.Size(131, 17);
+ this.checkBox7.TabIndex = 68;
+ this.checkBox7.Text = "Check for updates";
+ this.ToolTip.SetToolTip(this.checkBox7, "Enables the built in update checker. This check is performed when the application" +
+ " starts.");
+ this.checkBox7.UseVisualStyleBackColor = false;
+ //
+ // checkBox8
+ //
+ this.checkBox8.AutoSize = true;
+ this.checkBox8.BackColor = System.Drawing.Color.Transparent;
+ this.checkBox8.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.checkBox8.Location = new System.Drawing.Point(114, 64);
+ this.checkBox8.Name = "checkBox8";
+ this.checkBox8.Size = new System.Drawing.Size(166, 17);
+ this.checkBox8.TabIndex = 69;
+ this.checkBox8.Text = "Load my default settings";
+ this.ToolTip.SetToolTip(this.checkBox8, "Loads the users default settings rather than the Normal preset.");
+ this.checkBox8.UseVisualStyleBackColor = false;
+ //
+ // label26
+ //
+ this.label26.AutoSize = true;
+ this.label26.BackColor = System.Drawing.Color.Transparent;
+ this.label26.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label26.Location = new System.Drawing.Point(21, 19);
+ this.label26.Name = "label26";
+ this.label26.Size = new System.Drawing.Size(75, 13);
+ this.label26.TabIndex = 67;
+ this.label26.Text = "At Launch:";
+ //
+ // label27
+ //
+ this.label27.AutoSize = true;
+ this.label27.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label27.Location = new System.Drawing.Point(12, 103);
+ this.label27.Name = "label27";
+ this.label27.Size = new System.Drawing.Size(84, 13);
+ this.label27.TabIndex = 54;
+ this.label27.Text = "When Done:";
+ //
+ // comboBox2
+ //
+ this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox2.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.comboBox2.FormattingEnabled = true;
+ this.comboBox2.Items.AddRange(new object[] {
+ "Do Nothing",
+ "Shutdown",
+ "Suspend",
+ "Hibernate",
+ "Lock System",
+ "Log Off",
+ "Quit HandBrake"});
+ this.comboBox2.Location = new System.Drawing.Point(114, 100);
+ this.comboBox2.Name = "comboBox2";
+ this.comboBox2.Size = new System.Drawing.Size(166, 21);
+ this.comboBox2.TabIndex = 43;
+ this.ToolTip.SetToolTip(this.comboBox2, "Performs an action when an encode or queue has completed.");
+ //
+ // btn_vlcPath
+ //
+ this.btn_vlcPath.FlatAppearance.BorderColor = System.Drawing.Color.Black;
+ this.btn_vlcPath.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btn_vlcPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
+ this.btn_vlcPath.Location = new System.Drawing.Point(398, 56);
+ this.btn_vlcPath.Name = "btn_vlcPath";
+ this.btn_vlcPath.Size = new System.Drawing.Size(68, 22);
+ this.btn_vlcPath.TabIndex = 83;
+ this.btn_vlcPath.Text = "Browse";
+ this.btn_vlcPath.UseVisualStyleBackColor = true;
+ this.btn_vlcPath.Click += new System.EventHandler(this.btn_vlcPath_Click);
+ //
+ // txt_vlcPath
+ //
+ this.txt_vlcPath.Location = new System.Drawing.Point(98, 56);
+ this.txt_vlcPath.Name = "txt_vlcPath";
+ this.txt_vlcPath.Size = new System.Drawing.Size(294, 21);
+ this.txt_vlcPath.TabIndex = 81;
+ this.ToolTip.SetToolTip(this.txt_vlcPath, "The default location where auto named files are stored.");
+ this.txt_vlcPath.TextChanged += new System.EventHandler(this.txt_vlcPath_TextChanged);
+ //
+ // label29
+ //
+ this.label29.AutoSize = true;
+ this.label29.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label29.Location = new System.Drawing.Point(17, 61);
+ this.label29.Name = "label29";
+ this.label29.Size = new System.Drawing.Size(67, 13);
+ this.label29.TabIndex = 79;
+ this.label29.Text = "VLC Path:";
+ //
+ // openFile_vlc
+ //
+ this.openFile_vlc.DefaultExt = "exe";
+ this.openFile_vlc.Filter = "exe|*.exe";
+ //
// frmOptions
//
this.ClientSize = new System.Drawing.Size(514, 375);
@@ -688,5 +1084,37 @@ namespace Handbrake private System.Windows.Forms.TextBox text_logPath;
internal System.Windows.Forms.CheckBox check_keepLogs;
internal System.Windows.Forms.CheckBox check_saveLogWithVideo;
+ internal System.Windows.Forms.Button btn_vlcPath;
+ private System.Windows.Forms.TextBox txt_vlcPath;
+ private System.Windows.Forms.Label label29;
+ private System.Windows.Forms.Label label16;
+ internal System.Windows.Forms.Label label17;
+ private System.Windows.Forms.TextBox textBox1;
+ internal System.Windows.Forms.Button button1;
+ internal System.Windows.Forms.Label label18;
+ private System.Windows.Forms.TextBox textBox2;
+ internal System.Windows.Forms.CheckBox checkBox1;
+ private System.Windows.Forms.Label label19;
+ internal System.Windows.Forms.CheckBox checkBox2;
+ internal System.Windows.Forms.CheckBox checkBox3;
+ internal System.Windows.Forms.CheckBox checkBox4;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label label21;
+ internal System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label22;
+ internal System.Windows.Forms.Label label23;
+ private System.Windows.Forms.TextBox textBox3;
+ internal System.Windows.Forms.Button button2;
+ internal System.Windows.Forms.Label label24;
+ private System.Windows.Forms.TextBox textBox4;
+ internal System.Windows.Forms.CheckBox checkBox5;
+ private System.Windows.Forms.Label label25;
+ internal System.Windows.Forms.CheckBox checkBox6;
+ internal System.Windows.Forms.CheckBox checkBox7;
+ internal System.Windows.Forms.CheckBox checkBox8;
+ private System.Windows.Forms.Label label26;
+ private System.Windows.Forms.Label label27;
+ internal System.Windows.Forms.ComboBox comboBox2;
+ private System.Windows.Forms.OpenFileDialog openFile_vlc;
}
}
\ No newline at end of file diff --git a/win/C#/frmOptions.cs b/win/C#/frmOptions.cs index 4e6d698e2..d139998ed 100644 --- a/win/C#/frmOptions.cs +++ b/win/C#/frmOptions.cs @@ -66,6 +66,9 @@ namespace Handbrake // Store decomb value string
txt_decomb.Text = Properties.Settings.Default.decomb;
+ // VLC Path
+ txt_vlcPath.Text = Properties.Settings.Default.VLC_Path;
+
// #############################
// CLI
// #############################
@@ -176,6 +179,17 @@ namespace Handbrake {
Properties.Settings.Default.decomb = txt_decomb.Text;
}
+
+ private void btn_vlcPath_Click(object sender, EventArgs e)
+ {
+ openFile_vlc.ShowDialog();
+ if (openFile_vlc.FileName != string.Empty)
+ txt_vlcPath.Text = openFile_vlc.FileName;
+ }
+ private void txt_vlcPath_TextChanged(object sender, EventArgs e)
+ {
+ Properties.Settings.Default.VLC_Path = txt_vlcPath.Text;
+ }
#endregion
#region CLI
@@ -240,5 +254,6 @@ namespace Handbrake Properties.Settings.Default.Save(); // Small hack for Vista. Seems to work fine on XP without this
this.Close();
}
+
}
}
\ No newline at end of file diff --git a/win/C#/frmOptions.resx b/win/C#/frmOptions.resx index 74bf18620..139d8245b 100644 --- a/win/C#/frmOptions.resx +++ b/win/C#/frmOptions.resx @@ -123,6 +123,9 @@ <metadata name="pathFinder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
+ <metadata name="openFile_vlc.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>224, 18</value>
+ </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
|