summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsr55 <[email protected]>2010-09-11 20:04:22 +0000
committersr55 <[email protected]>2010-09-11 20:04:22 +0000
commitf2629a7d079b7a20dd53b94b1dce8a7e112b3e32 (patch)
tree324b81c9ebdaaed5286637e67eb6e4690b90ca0d
parent716a835052599eec774e1c0fb5be76e6a6ae3836 (diff)
WinGui:
- Title specific scan added to the File and Folder scan options which can be used for slow scanning bluray sources. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3515 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--win/C#/HandBrake.ApplicationServices/Functions/Main.cs4
-rw-r--r--win/C#/HandBrake.ApplicationServices/Functions/Win32.cs3
-rw-r--r--win/C#/HandBrake.ApplicationServices/Services/Interfaces/IErrorService.cs3
-rw-r--r--win/C#/HandBrake.ApplicationServices/Settings.StyleCop15
-rw-r--r--win/C#/HandBrake10.5.1.ReSharper339
-rw-r--r--win/C#/HandBrakeCS.csproj9
-rw-r--r--win/C#/TitleSpecificScan.Designer.cs120
-rw-r--r--win/C#/TitleSpecificScan.cs55
-rw-r--r--win/C#/TitleSpecificScan.resx500
-rw-r--r--win/C#/frmMain.Designer.cs45
-rw-r--r--win/C#/frmMain.cs60
11 files changed, 1105 insertions, 48 deletions
diff --git a/win/C#/HandBrake.ApplicationServices/Functions/Main.cs b/win/C#/HandBrake.ApplicationServices/Functions/Main.cs
index 43a064ca8..8cc209e52 100644
--- a/win/C#/HandBrake.ApplicationServices/Functions/Main.cs
+++ b/win/C#/HandBrake.ApplicationServices/Functions/Main.cs
@@ -3,12 +3,12 @@
Homepage: <http://handbrake.fr>.
It may be used under the terms of the GNU General Public License. */
-using HandBrake.ApplicationServices.Views;
-
namespace HandBrake.ApplicationServices.Functions
{
using System.Diagnostics;
+ using HandBrake.ApplicationServices.Views;
+
/// <summary>
/// Useful functions which various screens can use.
/// </summary>
diff --git a/win/C#/HandBrake.ApplicationServices/Functions/Win32.cs b/win/C#/HandBrake.ApplicationServices/Functions/Win32.cs
index 98f224797..ce36a9c1f 100644
--- a/win/C#/HandBrake.ApplicationServices/Functions/Win32.cs
+++ b/win/C#/HandBrake.ApplicationServices/Functions/Win32.cs
@@ -140,6 +140,9 @@ namespace HandBrake.ApplicationServices.Functions
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
+ /// <summary>
+ /// Execution State
+ /// </summary>
[FlagsAttribute]
public enum EXECUTION_STATE : uint
{
diff --git a/win/C#/HandBrake.ApplicationServices/Services/Interfaces/IErrorService.cs b/win/C#/HandBrake.ApplicationServices/Services/Interfaces/IErrorService.cs
index 385f67f09..2c61f0ff4 100644
--- a/win/C#/HandBrake.ApplicationServices/Services/Interfaces/IErrorService.cs
+++ b/win/C#/HandBrake.ApplicationServices/Services/Interfaces/IErrorService.cs
@@ -5,6 +5,9 @@
namespace HandBrake.ApplicationServices.Services.Interfaces
{
+ /// <summary>
+ /// The Error service for showing the exception window.
+ /// </summary>
public interface IErrorService
{
/// <summary>
diff --git a/win/C#/HandBrake.ApplicationServices/Settings.StyleCop b/win/C#/HandBrake.ApplicationServices/Settings.StyleCop
index 7f55ce6c6..e61afbf69 100644
--- a/win/C#/HandBrake.ApplicationServices/Settings.StyleCop
+++ b/win/C#/HandBrake.ApplicationServices/Settings.StyleCop
@@ -1 +1,14 @@
-<StyleCopSettings Version="4.3" /> \ No newline at end of file
+<StyleCopSettings Version="4.3">
+ <Analyzers>
+ <Analyzer AnalyzerId="Microsoft.StyleCop.CSharp.DocumentationRules">
+ <Rules>
+ <Rule Name="ElementsMustBeDocumented">
+ <RuleSettings>
+ <BooleanProperty Name="Enabled">True</BooleanProperty>
+ </RuleSettings>
+ </Rule>
+ </Rules>
+ <AnalyzerSettings />
+ </Analyzer>
+ </Analyzers>
+</StyleCopSettings> \ No newline at end of file
diff --git a/win/C#/HandBrake10.5.1.ReSharper b/win/C#/HandBrake10.5.1.ReSharper
index 968b693f1..22ca79976 100644
--- a/win/C#/HandBrake10.5.1.ReSharper
+++ b/win/C#/HandBrake10.5.1.ReSharper
@@ -5,6 +5,20 @@
<Sharing>SOLUTION</Sharing>
<CSharp>
<FormatSettings>
+ <ALIGN_MULTILINE_ARGUMENT>False</ALIGN_MULTILINE_ARGUMENT>
+ <BLANK_LINES_AROUND_SINGLE_LINE_FIELD>1</BLANK_LINES_AROUND_SINGLE_LINE_FIELD>
+ <BLANK_LINES_AROUND_SINGLE_LINE_INVOCABLE>1</BLANK_LINES_AROUND_SINGLE_LINE_INVOCABLE>
+ <BLANK_LINES_BETWEEN_USING_GROUPS>1</BLANK_LINES_BETWEEN_USING_GROUPS>
+ <FORCE_ATTRIBUTE_STYLE>SEPARATE</FORCE_ATTRIBUTE_STYLE>
+ <FORCE_FOR_BRACES_STYLE>ALWAYS_ADD</FORCE_FOR_BRACES_STYLE>
+ <FORCE_FOREACH_BRACES_STYLE>ALWAYS_ADD</FORCE_FOREACH_BRACES_STYLE>
+ <FORCE_IFELSE_BRACES_STYLE>ALWAYS_ADD</FORCE_IFELSE_BRACES_STYLE>
+ <FORCE_WHILE_BRACES_STYLE>ALWAYS_ADD</FORCE_WHILE_BRACES_STYLE>
+ <INDENT_ANONYMOUS_METHOD_BLOCK>False</INDENT_ANONYMOUS_METHOD_BLOCK>
+ <INDENT_EMBRACED_INITIALIZER_BLOCK>False</INDENT_EMBRACED_INITIALIZER_BLOCK>
+ <KEEP_BLANK_LINES_IN_CODE>1</KEEP_BLANK_LINES_IN_CODE>
+ <KEEP_BLANK_LINES_IN_DECLARATIONS>1</KEEP_BLANK_LINES_IN_DECLARATIONS>
+ <KEEP_USER_LINEBREAKS>False</KEEP_USER_LINEBREAKS>
<MODIFIERS_ORDER IsNull="False">
<Item>public</Item>
<Item>protected</Item>
@@ -21,11 +35,36 @@
<Item>unsafe</Item>
<Item>volatile</Item>
</MODIFIERS_ORDER>
+ <PLACE_CONSTRUCTOR_INITIALIZER_ON_SAME_LINE>False</PLACE_CONSTRUCTOR_INITIALIZER_ON_SAME_LINE>
+ <PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE>False</PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE>
+ <PLACE_SIMPLE_ACCESSOR_ON_SINGLE_LINE>False</PLACE_SIMPLE_ACCESSOR_ON_SINGLE_LINE>
+ <PLACE_TYPE_CONSTRAINTS_ON_SAME_LINE>False</PLACE_TYPE_CONSTRAINTS_ON_SAME_LINE>
+ <PLACE_WHILE_ON_NEW_LINE>True</PLACE_WHILE_ON_NEW_LINE>
+ <REDUNDANT_THIS_QUALIFIER_STYLE>ALWAYS_USE</REDUNDANT_THIS_QUALIFIER_STYLE>
+ <SIMPLE_EMBEDDED_STATEMENT_STYLE>ON_SINGLE_LINE</SIMPLE_EMBEDDED_STATEMENT_STYLE>
+ <SPACE_AFTER_TYPECAST_PARENTHESES>False</SPACE_AFTER_TYPECAST_PARENTHESES>
+ <SPACE_AROUND_MULTIPLICATIVE_OP>True</SPACE_AROUND_MULTIPLICATIVE_OP>
+ <SPACE_BEFORE_SIZEOF_PARENTHESES>False</SPACE_BEFORE_SIZEOF_PARENTHESES>
+ <SPACE_BEFORE_TYPEOF_PARENTHESES>False</SPACE_BEFORE_TYPEOF_PARENTHESES>
+ <SPACE_WITHIN_SINGLE_LINE_ARRAY_INITIALIZER_BRACES>True</SPACE_WITHIN_SINGLE_LINE_ARRAY_INITIALIZER_BRACES>
+ <STICK_COMMENT>False</STICK_COMMENT>
+ <WRAP_AFTER_DECLARATION_LPAR>True</WRAP_AFTER_DECLARATION_LPAR>
+ <WRAP_AFTER_INVOCATION_LPAR>True</WRAP_AFTER_INVOCATION_LPAR>
+ <WRAP_ARGUMENTS_STYLE>CHOP_IF_LONG</WRAP_ARGUMENTS_STYLE>
+ <WRAP_BEFORE_FIRST_TYPE_PARAMETER_CONSTRAINT>True</WRAP_BEFORE_FIRST_TYPE_PARAMETER_CONSTRAINT>
+ <WRAP_EXTENDS_LIST_STYLE>CHOP_IF_LONG</WRAP_EXTENDS_LIST_STYLE>
+ <WRAP_PARAMETERS_STYLE>CHOP_IF_LONG</WRAP_PARAMETERS_STYLE>
</FormatSettings>
- <UsingsSettings />
+ <UsingsSettings>
+ <AddImportsToDeepestScope>True</AddImportsToDeepestScope>
+ <QualifiedUsingAtNestedScope>True</QualifiedUsingAtNestedScope>
+ </UsingsSettings>
<Naming2>
<EventHandlerPatternLong>$object$_On$event$</EventHandlerPatternLong>
<EventHandlerPatternShort>$event$Handler</EventHandlerPatternShort>
+ <ExceptionName IsNull="False">
+ </ExceptionName>
+ <OverrideDefaultSettings>True</OverrideDefaultSettings>
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" />
<PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" />
<PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" />
@@ -34,15 +73,267 @@
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" />
- <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
- <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateConstants" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateStaticReadonly" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" />
+ <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
+ <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
+ <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateConstants" />
+ <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateStaticReadonly" />
</Naming2>
+ <CustomMemberReorderingPatterns><![CDATA[<?xml version="1.0" encoding="utf-8"?>
+<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns">
+
+ <!-- Do not reorder COM interfaces -->
+ <Pattern>
+ <Match>
+ <And Weight="2000">
+ <Kind Is="interface"/>
+ <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"
+ Inherit="true"/>
+ </And>
+ </Match>
+ </Pattern>
+
+ <!-- Do not reorder P/Invoke structs -->
+ <Pattern>
+ <Match>
+ <And Weight="2000">
+ <Or>
+ <Kind Is="struct"/>
+ <Kind Is="class"/>
+ </Or>
+ <HasAttribute CLRName="System.Runtime.InteropServices.StructLayoutAttribute"
+ Inherit="true"/>
+ </And>
+ </Match>
+ </Pattern>
+
+ <!-- Do not reorder P/Invoke classes (called xxxNativeMethods) -->
+ <Pattern>
+ <Match>
+ <And Weight="2000">
+ <Kind Is="class"/>
+ <Name Is=".*NativeMethods" />
+ </And>
+ </Match>
+ </Pattern>
+
+ <!-- StyleCop pattern -->
+ <Pattern RemoveAllRegions="true">
+ <Match>
+ <Or Weight="1000" >
+ <Kind Is="class" />
+ <Kind Is="struct" />
+ <Kind Is="interface"/>
+ </Or>
+ </Match>
+
+ <!-- constants and fields -->
+ <Entry>
+ <Match>
+ <Or>
+ <Kind Is="constant"/>
+ <Kind Is="field"/>
+ </Or>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private"/>
+ <Kind Order="constant field"/>
+ <Readonly/>
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Constants and Fields"/>
+ </Entry>
+
+ <!-- constructors -->
+ <Entry>
+ <Match>
+ <Or Weight="200">
+ <Kind Is="constructor"/>
+ <Kind Is="destructor"/>
+ </Or>
+ </Match>
+ <Sort>
+ <Static/>
+ <Kind Order="constructor destructor"/>
+ <Access Order="public internal protected-internal protected private"/>
+ </Sort>
+ <Group Region="Constructors and Destructors"/>
+ </Entry>
+
+ <!-- delegates -->
+ <Entry>
+ <Match>
+ <Kind Is="delegate"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Static />
+ <Name/>
+ </Sort>
+ <Group Region="Delegates"/>
+ </Entry>
+
+ <!-- events -->
+ <Entry>
+ <Match>
+ <Kind Is="event"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Static />
+ <Name/>
+ </Sort>
+ <Group Region="Events"/>
+ </Entry>
+
+ <!-- enum -->
+ <Entry>
+ <Match>
+ <Kind Is="enum"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Name/>
+ </Sort>
+ <Group Region="Enums"/>
+ </Entry>
+
+ <!-- interfaces -->
+ <Entry>
+ <Match>
+ <Kind Is="interface" />
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Name/>
+ </Sort>
+ <Group Region="Interfaces"/>
+ </Entry>
+
+ <!-- properties -->
+ <Entry>
+ <Match>
+ <Kind Is="property"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private"/>
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Properties"/>
+ </Entry>
+
+ <!-- indexers -->
+ <Entry>
+ <Match>
+ <Kind Is="indexer"
+ Weight="300" />
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Indexers"/>
+ </Entry>
+
+ <!-- operator -->
+ <Entry>
+ <Match>
+ <Kind Is="operator"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private" />
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Operators"/>
+ </Entry>
+
+ <!-- public methods -->
+ <Entry>
+ <Match>
+ <And>
+ <Kind Is="method"/>
+ <Access Is="public"/>
+ </And>
+ </Match>
+ <Sort>
+ <Access Order="public"/>
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Public Methods"/>
+ </Entry>
+
+ <!-- Implemented Interfaces -->
+ <Entry>
+ <Match>
+ <And Weight="500">
+ <Kind Is="method"/>
+ <ImplementsInterface CLRName=".*"/>
+ </And>
+ </Match>
+ <Sort>
+ <ImplementsInterface />
+ <Access Order="public internal protected-internal protected private"/>
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Implemented Interfaces">
+ <ImplementsInterface Region="${ImplementsInterface}" />
+ </Group>
+ </Entry>
+
+ <!-- other methods -->
+ <Entry>
+ <Match>
+ <Kind Is="method"/>
+ </Match>
+ <Sort>
+ <Access Order="public internal protected-internal protected private"/>
+ <Static/>
+ <Name/>
+ </Sort>
+ <Group Region="Methods"/>
+ </Entry>
+
+ <!-- Nested structs -->
+ <Entry>
+ <Match>
+ <Kind Is="struct"
+ Weight="600" />
+ </Match>
+ <Sort>
+ <Static />
+ <Access Order="public internal protected-internal protected private" />
+ <Name/>
+ </Sort>
+ </Entry>
+
+ <!-- Nested classes -->
+ <Entry>
+ <Match>
+ <Kind Is="class"
+ Weight="700" />
+ </Match>
+ <Sort>
+ <Static />
+ <Access Order="public internal protected-internal protected private" />
+ <Name/>
+ </Sort>
+ </Entry>
+
+ <!-- all other members -->
+ <Entry/>
+
+ </Pattern>
+</Patterns>
+]]></CustomMemberReorderingPatterns>
</CSharp>
<VB>
<FormatSettings />
@@ -56,11 +347,7 @@
<Naming2 />
</Web>
<Xaml>
- <Naming2>
- <UserRule Name="XAML_FIELD" Inspect="True" Prefix="_" Suffix="" Style="aaBb" />
- <UserRule Name="NAMESPACE_ALIAS" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
- <UserRule Name="XAML_RESOURCE" Inspect="True" Prefix="" Suffix="" Style="AaBb" />
- </Naming2>
+ <Naming2 />
</Xaml>
<XML>
<FormatSettings />
@@ -69,22 +356,24 @@
<Naming2>
<EventHandlerPatternLong>$object$_On$event$</EventHandlerPatternLong>
<EventHandlerPatternShort>$event$Handler</EventHandlerPatternShort>
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" />
- <PredefinedRule Inspect="True" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" />
- <PredefinedRule Inspect="True" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" />
- <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" />
+ <ExceptionName IsNull="False">
+ </ExceptionName>
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="aaBb" ElementKind="Locals" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="aaBb" ElementKind="Parameters" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="TypesAndNamespaces" />
+ <PredefinedRule Inspect="False" Prefix="I" Suffix="" Style="AaBb" ElementKind="Interfaces" />
+ <PredefinedRule Inspect="False" Prefix="T" Suffix="" Style="AaBb" ElementKind="TypeParameters" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="MethodPropertyEvent" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="aaBb" ElementKind="LocalConstants" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="PublicFields" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="Constants" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" />
+ <PredefinedRule Inspect="False" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" />
<PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateConstants" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="StaticReadonly" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="aaBb" ElementKind="PrivateStaticReadonly" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="EnumMember" />
- <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="Other" />
+ <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateInstanceFields" />
+ <PredefinedRule Inspect="True" Prefix="_" Suffix="" Style="aaBb" ElementKind="PrivateStaticFields" />
+ <PredefinedRule Inspect="True" Prefix="" Suffix="" Style="AaBb" ElementKind="PrivateStaticReadonly" />
</Naming2>
</CodeStyleSettings>
</Configuration> \ No newline at end of file
diff --git a/win/C#/HandBrakeCS.csproj b/win/C#/HandBrakeCS.csproj
index e093b2ac2..52b1db28b 100644
--- a/win/C#/HandBrakeCS.csproj
+++ b/win/C#/HandBrakeCS.csproj
@@ -282,6 +282,12 @@
<Compile Include="Functions\AppcastReader.cs" />
<Compile Include="Functions\QueryParser.cs" />
<Compile Include="Program.cs" />
+ <Compile Include="TitleSpecificScan.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="TitleSpecificScan.Designer.cs">
+ <DependentUpon>TitleSpecificScan.cs</DependentUpon>
+ </Compile>
<EmbeddedResource Include="Controls\AudioPanel.resx">
<DependentUpon>AudioPanel.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -348,6 +354,9 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
+ <EmbeddedResource Include="TitleSpecificScan.resx">
+ <DependentUpon>TitleSpecificScan.cs</DependentUpon>
+ </EmbeddedResource>
<None Include="app.config" />
<None Include="Installer\MakeNightly.nsi.tmpl" />
<None Include="Installer\MakeNightly.nsi" />
diff --git a/win/C#/TitleSpecificScan.Designer.cs b/win/C#/TitleSpecificScan.Designer.cs
new file mode 100644
index 000000000..01955c04a
--- /dev/null
+++ b/win/C#/TitleSpecificScan.Designer.cs
@@ -0,0 +1,120 @@
+namespace Handbrake
+{
+ partial class TitleSpecificScan
+ {
+ /// <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(TitleSpecificScan));
+ this.label1 = new System.Windows.Forms.Label();
+ this.titleNumber = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.btnScan = new System.Windows.Forms.Button();
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(92, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Scan title number:";
+ //
+ // titleNumber
+ //
+ this.titleNumber.Location = new System.Drawing.Point(110, 6);
+ this.titleNumber.Name = "titleNumber";
+ this.titleNumber.Size = new System.Drawing.Size(51, 20);
+ this.titleNumber.TabIndex = 2;
+ this.titleNumber.Text = "0";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 29);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(309, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "Note: (entering 0 or leaving blank will result in a full source scan)";
+ //
+ // btnScan
+ //
+ this.btnScan.FlatAppearance.BorderColor = System.Drawing.Color.Black;
+ this.btnScan.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnScan.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
+ this.btnScan.Location = new System.Drawing.Point(231, 56);
+ this.btnScan.Name = "btnScan";
+ this.btnScan.Size = new System.Drawing.Size(90, 22);
+ this.btnScan.TabIndex = 4;
+ this.btnScan.TabStop = false;
+ this.btnScan.Text = "Open Title";
+ this.btnScan.UseVisualStyleBackColor = true;
+ this.btnScan.Click += new System.EventHandler(this.BtnScanClick);
+ //
+ // btnCancel
+ //
+ this.btnCancel.FlatAppearance.BorderColor = System.Drawing.Color.Black;
+ this.btnCancel.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnCancel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
+ this.btnCancel.Location = new System.Drawing.Point(15, 56);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(60, 22);
+ this.btnCancel.TabIndex = 5;
+ this.btnCancel.TabStop = false;
+ this.btnCancel.Text = "Cancel";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ this.btnCancel.Click += new System.EventHandler(this.BtnCancelClick);
+ //
+ // TitleSpecificScan
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(334, 89);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.btnScan);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.titleNumber);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "TitleSpecificScan";
+ this.Text = "Title Scan";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox titleNumber;
+ private System.Windows.Forms.Label label2;
+ internal System.Windows.Forms.Button btnScan;
+ internal System.Windows.Forms.Button btnCancel;
+ }
+} \ No newline at end of file
diff --git a/win/C#/TitleSpecificScan.cs b/win/C#/TitleSpecificScan.cs
new file mode 100644
index 000000000..a78ab61fa
--- /dev/null
+++ b/win/C#/TitleSpecificScan.cs
@@ -0,0 +1,55 @@
+/* TitleSpecificScan.cs $
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr>.
+ It may be used under the terms of the GNU General Public License. */
+
+namespace Handbrake
+{
+ using System;
+ using System.Windows.Forms;
+
+ /// <summary>
+ /// Title Specific Scan
+ /// </summary>
+ public partial class TitleSpecificScan : Form
+ {
+ public TitleSpecificScan()
+ {
+ InitializeComponent();
+ }
+
+ /// <summary>
+ /// Button Cancel Click Event Handler
+ /// </summary>
+ /// <param name="sender">The Sender</param>
+ /// <param name="e">The EventArgs</param>
+ private void BtnCancelClick(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ /// <summary>
+ /// Button Scan Click Event Handler
+ /// </summary>
+ /// <param name="sender">The Sender</param>
+ /// <param name="e">The EventArgs</param>
+ private void BtnScanClick(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.OK;
+ }
+
+ /// <summary>
+ /// Gets the title that the user entered.
+ /// </summary>
+ public int Title
+ {
+ get
+ {
+ int title;
+ int.TryParse(this.titleNumber.Text, out title);
+
+ return title;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/win/C#/TitleSpecificScan.resx b/win/C#/TitleSpecificScan.resx
new file mode 100644
index 000000000..ff217dc4f
--- /dev/null
+++ b/win/C#/TitleSpecificScan.resx
@@ -0,0 +1,500 @@
+<?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>
+ <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 27c7db1f4..63b5a205b 100644
--- a/win/C#/frmMain.Designer.cs
+++ b/win/C#/frmMain.Designer.cs
@@ -59,6 +59,8 @@ namespace Handbrake
this.name = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ChaptersMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.mnu_resetChapters = new System.Windows.Forms.ToolStripMenuItem();
+ this.btn_file_source = new System.Windows.Forms.ToolStripMenuItem();
+ this.VideoTitleSpecificScan = new System.Windows.Forms.ToolStripMenuItem();
this.btn_addPreset = new System.Windows.Forms.Button();
this.btn_removePreset = new System.Windows.Forms.Button();
this.drop_format = new System.Windows.Forms.ComboBox();
@@ -143,8 +145,8 @@ namespace Handbrake
this.pmnu_delete = new System.Windows.Forms.ToolStripMenuItem();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.btn_source = new System.Windows.Forms.ToolStripDropDownButton();
- this.btn_file_source = new System.Windows.Forms.ToolStripMenuItem();
this.btn_dvd_source = new System.Windows.Forms.ToolStripMenuItem();
+ this.FolderTitleSpecificScan = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
this.btn_start = new System.Windows.Forms.ToolStripButton();
@@ -427,6 +429,7 @@ namespace Handbrake
this.ChaptersMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnu_resetChapters});
this.ChaptersMenu.Name = "presets_menu";
+ this.ChaptersMenu.OwnerItem = this.btn_file_source;
this.ChaptersMenu.Size = new System.Drawing.Size(188, 26);
this.ChaptersMenu.Text = ";";
//
@@ -437,6 +440,24 @@ namespace Handbrake
this.mnu_resetChapters.Text = "Reset Chapter Names";
this.mnu_resetChapters.Click += new System.EventHandler(this.mnu_resetChapters_Click);
//
+ // btn_file_source
+ //
+ this.btn_file_source.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.VideoTitleSpecificScan});
+ this.btn_file_source.Image = global::Handbrake.Properties.Resources.Movies_Small;
+ this.btn_file_source.Name = "btn_file_source";
+ this.btn_file_source.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
+ this.btn_file_source.Size = new System.Drawing.Size(182, 22);
+ this.btn_file_source.Text = "Video File";
+ this.btn_file_source.Click += new System.EventHandler(this.BtnFileScanClicked);
+ //
+ // VideoTitleSpecificScan
+ //
+ this.VideoTitleSpecificScan.Name = "VideoTitleSpecificScan";
+ this.VideoTitleSpecificScan.Size = new System.Drawing.Size(169, 22);
+ this.VideoTitleSpecificScan.Text = "Title Specific Scan";
+ this.VideoTitleSpecificScan.Click += new System.EventHandler(this.VideoTitleSpecificScanClick);
+ //
// btn_addPreset
//
this.btn_addPreset.FlatAppearance.BorderColor = System.Drawing.Color.Black;
@@ -1323,17 +1344,10 @@ namespace Handbrake
this.btn_source.ToolTipText = "Open a new source file or folder.";
this.btn_source.Click += new System.EventHandler(this.btn_source_Click);
//
- // btn_file_source
- //
- this.btn_file_source.Image = global::Handbrake.Properties.Resources.Movies_Small;
- this.btn_file_source.Name = "btn_file_source";
- this.btn_file_source.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
- this.btn_file_source.Size = new System.Drawing.Size(182, 22);
- this.btn_file_source.Text = "Video File";
- this.btn_file_source.Click += new System.EventHandler(this.btn_file_source_Click);
- //
// btn_dvd_source
//
+ this.btn_dvd_source.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.FolderTitleSpecificScan});
this.btn_dvd_source.Image = global::Handbrake.Properties.Resources.folder;
this.btn_dvd_source.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btn_dvd_source.Name = "btn_dvd_source";
@@ -1341,7 +1355,14 @@ namespace Handbrake
| System.Windows.Forms.Keys.O)));
this.btn_dvd_source.Size = new System.Drawing.Size(182, 22);
this.btn_dvd_source.Text = "Folder";
- this.btn_dvd_source.Click += new System.EventHandler(this.btn_dvd_source_Click);
+ this.btn_dvd_source.Click += new System.EventHandler(this.BtnFolderScanClicked);
+ //
+ // FolderTitleSpecificScan
+ //
+ this.FolderTitleSpecificScan.Name = "FolderTitleSpecificScan";
+ this.FolderTitleSpecificScan.Size = new System.Drawing.Size(169, 22);
+ this.FolderTitleSpecificScan.Text = "Title Specific Scan";
+ this.FolderTitleSpecificScan.Click += new System.EventHandler(this.FolderTitleSpecificScanClick);
//
// toolStripSeparator1
//
@@ -1880,5 +1901,7 @@ namespace Handbrake
private ToolStripMenuItem mnu_exportMacPreset;
private ToolStripProgressBar ProgressBarStatus;
internal CheckBox checkMaximumFramerate;
+ private ToolStripMenuItem VideoTitleSpecificScan;
+ private ToolStripMenuItem FolderTitleSpecificScan;
}
} \ No newline at end of file
diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs
index a5b131b7e..3bd595353 100644
--- a/win/C#/frmMain.cs
+++ b/win/C#/frmMain.cs
@@ -1259,29 +1259,31 @@ namespace Handbrake
#region Main Window and Tab Control
// Source
- private void btn_dvd_source_Click(object sender, EventArgs e)
+ private void BtnFolderScanClicked(object sender, EventArgs e)
{
+ this.btn_source.HideDropDown();
if (DVD_Open.ShowDialog() == DialogResult.OK)
{
this.selectedSourceType = SourceType.Folder;
- SelectSource(DVD_Open.SelectedPath);
+ SelectSource(DVD_Open.SelectedPath, 0);
}
else
UpdateSourceLabel();
}
- private void btn_file_source_Click(object sender, EventArgs e)
+ private void BtnFileScanClicked(object sender, EventArgs e)
{
+ this.btn_source.HideDropDown();
if (ISO_Open.ShowDialog() == DialogResult.OK)
{
this.selectedSourceType = SourceType.VideoFile;
- SelectSource(ISO_Open.FileName);
+ SelectSource(ISO_Open.FileName, 0);
}
else
UpdateSourceLabel();
}
- private void mnu_dvd_drive_Click(object sender, EventArgs e)
+ private void MnuDvdDriveClick(object sender, EventArgs e)
{
ToolStripMenuItem item = sender as ToolStripMenuItem;
if (item != null)
@@ -1295,12 +1297,52 @@ namespace Handbrake
if (this.dvdDrivePath == null) return;
this.selectedSourceType = SourceType.DvdDrive;
- SelectSource(this.dvdDrivePath);
+ SelectSource(this.dvdDrivePath, 0);
}
}
}
- private void SelectSource(string file)
+ private void VideoTitleSpecificScanClick(object sender, EventArgs e)
+ {
+ this.btn_source.HideDropDown();
+ if (ISO_Open.ShowDialog() == DialogResult.OK)
+ {
+ this.selectedSourceType = SourceType.VideoFile;
+
+ int sourceTitle = 0;
+ TitleSpecificScan title = new TitleSpecificScan();
+ if (title.ShowDialog() == DialogResult.OK)
+ {
+ sourceTitle = title.Title;
+ }
+
+ SelectSource(ISO_Open.FileName, sourceTitle);
+ }
+ else
+ UpdateSourceLabel();
+ }
+
+ private void FolderTitleSpecificScanClick(object sender, EventArgs e)
+ {
+ this.btn_source.HideDropDown();
+ if (DVD_Open.ShowDialog() == DialogResult.OK)
+ {
+ this.selectedSourceType = SourceType.Folder;
+
+ int sourceTitle = 0;
+ TitleSpecificScan title = new TitleSpecificScan();
+ if (title.ShowDialog() == DialogResult.OK)
+ {
+ sourceTitle = title.Title;
+ }
+
+ SelectSource(DVD_Open.SelectedPath, sourceTitle);
+ }
+ else
+ UpdateSourceLabel();
+ }
+
+ private void SelectSource(string file, int titleSpecific)
{
Check_ChapterMarkers.Enabled = true;
sourcePath = string.Empty;
@@ -1312,7 +1354,7 @@ namespace Handbrake
}
sourcePath = Path.GetFileName(file);
- StartScan(file, 0);
+ StartScan(file, titleSpecific);
}
private void drp_dvdtitle_Click(object sender, EventArgs e)
@@ -2296,7 +2338,7 @@ namespace Handbrake
Text = drive.RootDirectory + " (" + drive.VolumeLabel + ")",
Image = Resources.disc_small
};
- menuItem.Click += new EventHandler(mnu_dvd_drive_Click);
+ menuItem.Click += new EventHandler(MnuDvdDriveClick);
menuItems.Add(menuItem);
}