Remove unused Forms version

This commit is contained in:
Matt Nadareski
2019-05-13 23:51:00 -07:00
parent 1b735b5d06
commit e61ca31a3f
24 changed files with 2 additions and 4750 deletions

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>

View File

@@ -1,56 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using DICUI.Data;
namespace DICUI
{
/// <summary>
/// Variables for UI elements
/// </summary>
public static class Constants
{
public const string StartDumping = "Start Dumping";
public const string StopDumping = "Stop Dumping";
public const int LogWindowMarginFromMainWindow = 10;
// Private lists of known drive speed ranges
private static IReadOnlyList<int> cd { get; } = new List<int> { 1, 2, 3, 4, 6, 8, 12, 16, 20, 24, 32, 40, 44, 48, 52, 56, 72 };
private static IReadOnlyList<int> dvd { get; } = cd.Where(s => s <= 24).ToList();
private static IReadOnlyList<int> bd { get; } = cd.Where(s => s <= 16).ToList();
private static IReadOnlyList<int> unknown { get; } = cd; // TODO: All or {1}? Maybe null?
/// <summary>
/// Get list of all drive speeds for a given MediaType
/// </summary>
/// <param name="type">MediaType? that represents the current item</param>
/// <returns>Read-only list of drive speeds</returns>
public static IReadOnlyList<int> GetSpeedsForMediaType(MediaType? type)
{
switch (type)
{
case MediaType.CDROM:
case MediaType.GDROM:
return cd;
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
return dvd;
case MediaType.BluRay:
return bd;
default:
return unknown;
}
}
// Create collections for UI based on known drive speeds
public static DoubleCollection SpeedsForCDAsCollection { get; } = GetDoubleCollectionFromIntList(cd);
public static DoubleCollection SpeedsForDVDAsCollection { get; } = GetDoubleCollectionFromIntList(dvd);
public static DoubleCollection SpeedsForBDAsCollection { get; } = GetDoubleCollectionFromIntList(bd);
private static DoubleCollection GetDoubleCollectionFromIntList(IReadOnlyList<int> list)
=> new DoubleCollection(list.Select(i => Convert.ToDouble(i)).ToList());
}
}

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A6719A99-BF0E-4637-9A8E-CB38B1E16971}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>DICUI.Forms</RootNamespace>
<AssemblyName>DICUI.Forms</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Icon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Windows" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="Constants.cs" />
<Compile Include="EnumDescriptionConverter.cs" />
<Compile Include="KnownSystemComboBoxItem.cs" />
<Compile Include="MediaTypeComboBoxItem.cs" />
<Compile Include="Options.cs" />
<Compile Include="Properties\Settings1.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings1.settings</DependentUpon>
</Compile>
<Compile Include="ViewModels.cs" />
<Compile Include="Windows\LogWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\LogWindow.Designer.cs">
<DependentUpon>LogWindow.cs</DependentUpon>
</Compile>
<Compile Include="Windows\MainWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\MainWindow.Designer.cs">
<DependentUpon>MainWindow.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Windows\OptionsWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\OptionsWindow.Designer.cs">
<DependentUpon>OptionsWindow.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Windows\LogWindow.resx">
<DependentUpon>LogWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\MainWindow.resx">
<DependentUpon>MainWindow.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Windows\OptionsWindow.resx">
<DependentUpon>OptionsWindow.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="Properties\Settings1.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings1.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Resource Include="Icon.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DICUI.Library\DICUI.Library.csproj">
<Project>{51ab0928-13f9-44bf-a407-b6957a43a056}</Project>
<Name>DICUI.Library</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -1,33 +0,0 @@
using System;
using System.Globalization;
using System.Windows.Data;
using DICUI.Data;
using DICUI.Utilities;
namespace DICUI.Forms
{
/// <summary>
/// Used to provide a converter to XAML files to render comboboxes with enum values
/// </summary>
public class EnumDescriptionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is DICCommand)
return ((DICCommand)value).Name();
else if (value is DICFlag)
return ((DICFlag)value).Name();
else if (value is MediaType?)
return ((MediaType?)value).Name();
else if (value is KnownSystem?)
return ((KnownSystem?)value).Name();
else
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return string.Empty;
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -1,34 +0,0 @@
using DICUI.Data;
using DICUI.Utilities;
namespace DICUI
{
/// <summary>
/// Represents a single item in the System combo box
/// </summary>
public class KnownSystemComboBoxItem
{
private object data;
public KnownSystemComboBoxItem(KnownSystem? system) => data = system;
public KnownSystemComboBoxItem(KnownSystemCategory? category) => data = category;
//public Brush Foreground { get => IsHeader() ? Brushes.Gray : Brushes.Black; } // TODO: Re-enable this
public bool IsHeader() => data is KnownSystemCategory?;
public bool IsSystem() => data is KnownSystem?;
public static implicit operator KnownSystem? (KnownSystemComboBoxItem item) => item.data as KnownSystem?;
public string Name
{
get
{
if (IsHeader())
return "---------- " + (data as KnownSystemCategory?).Name() + " ----------";
else
return (data as KnownSystem?).Name();
}
}
}
}

View File

@@ -1,20 +0,0 @@
using DICUI.Data;
using DICUI.Utilities;
namespace DICUI.Forms
{
/// <summary>
/// Represents a single item in the MediaType combo box
/// </summary>
public class MediaTypeComboBoxItem
{
private MediaType? data;
public MediaTypeComboBoxItem(MediaType? mediaType) => data = mediaType;
public static implicit operator MediaType? (MediaTypeComboBoxItem item) => item.data;
public string Name { get { return data.Name(); }
}
}
}

View File

@@ -1,97 +0,0 @@
using System;
using System.Configuration;
using System.Reflection;
using DICUI.Data;
namespace DICUI
{
public class Options
{
public string DefaultOutputPath { get; private set; }
public string DICPath { get; private set; }
public string SubDumpPath { get; private set; }
public int PreferredDumpSpeedCD { get; set; }
public int PreferredDumpSpeedDVD { get; set; }
public int PreferredDumpSpeedBD { get; set; }
public bool QuietMode { get; set; }
public bool ParanoidMode { get; set; }
public bool ScanForProtection { get; set; }
public int RereadAmountForC2 { get; set; }
public bool SkipMediaTypeDetection { get; set; }
public bool VerboseLogging { get; set; }
public bool OpenLogWindowAtStartup { get; set; }
public void Save()
{
Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//TODO: reflection is used
//TODO: is remove needed, doesn't the value get directly overridden
Array.ForEach(
GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance),
p => {
configFile.AppSettings.Settings.Remove(p.Name);
configFile.AppSettings.Settings.Add(p.Name, Convert.ToString(p.GetValue(this)));
}
);
configFile.Save(ConfigurationSaveMode.Modified);
}
public void Load()
{
//TODO: hardcoded, we should find a better way
DICPath = ConfigurationManager.AppSettings["DICPath"] ?? @"Programs\DiscImageCreator.exe";
SubDumpPath = ConfigurationManager.AppSettings["SubDumpPath"] ?? "subdump.exe";
DefaultOutputPath = ConfigurationManager.AppSettings["DefaultOutputPath"] ?? "ISO";
this.PreferredDumpSpeedCD = Int32.TryParse(ConfigurationManager.AppSettings["preferredDumpSpeedCD"], out int maxDumpSpeedCD) ? maxDumpSpeedCD : 72;
this.PreferredDumpSpeedDVD = Int32.TryParse(ConfigurationManager.AppSettings["preferredDumpSpeedDVD"], out int maxDumpSpeedDVD) ? maxDumpSpeedDVD : 24;
this.PreferredDumpSpeedBD = Int32.TryParse(ConfigurationManager.AppSettings["preferredDumpSpeedBD"], out int maxDumpSpeedBD) ? maxDumpSpeedBD : 16;
this.QuietMode = Boolean.TryParse(ConfigurationManager.AppSettings["QuietMode"], out bool quietMode) ? quietMode : false;
this.ParanoidMode = Boolean.TryParse(ConfigurationManager.AppSettings["ParanoidMode"], out bool paranoidMode) ? paranoidMode : false;
this.ScanForProtection = Boolean.TryParse(ConfigurationManager.AppSettings["ScanForProtection"], out bool scanForProtection) ? scanForProtection : true;
this.SkipMediaTypeDetection = Boolean.TryParse(ConfigurationManager.AppSettings["SkipMediaTypeDetection"], out bool skipMediaTypeDetection) ? skipMediaTypeDetection : false;
this.RereadAmountForC2 = Int32.TryParse(ConfigurationManager.AppSettings["RereadAmountForC2"], out int rereadAmountForC2) ? rereadAmountForC2 : 20;
this.VerboseLogging = Boolean.TryParse(ConfigurationManager.AppSettings["VerboseLogging"], out bool verboseLogging) ? verboseLogging : true;
this.OpenLogWindowAtStartup = Boolean.TryParse(ConfigurationManager.AppSettings["OpenLogWindowAtStartup"], out bool openLogWindowAtStartup) ? openLogWindowAtStartup : true;
}
//TODO: probably should be generic for non-string options
//TODO: using reflection for Set and Get is orthodox but it works, should be changed to a key,value map probably
public void Set(string key, string value)
{
GetType().GetProperty(key, BindingFlags.Public | BindingFlags.Instance).SetValue(this, value);
}
public string Get(string key)
{
return GetType().GetProperty(key, BindingFlags.Public | BindingFlags.Instance).GetValue(this) as string;
}
public int GetPreferredDumpSpeedForMediaType(MediaType? type)
{
switch (type)
{
case MediaType.CDROM:
case MediaType.GDROM:
return PreferredDumpSpeedCD;
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
return PreferredDumpSpeedDVD;
case MediaType.BluRay:
return PreferredDumpSpeedBD;
default:
return 8;
}
}
}
}

View File

@@ -1,20 +0,0 @@
using System;
using System.Windows.Forms;
using DICUI.Forms.Windows;
namespace DICUI.Forms
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
}
}

View File

@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DICUI.Forms")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DICUI.Forms")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a6719a99-bf0e-4637-9a8e-cb38b1e16971")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.11")]
[assembly: AssemblyFileVersion("1.11.0.0")]

View File

@@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace DICUI.Forms.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
internal sealed partial class Settings1 : global::System.Configuration.ApplicationSettingsBase {
private static Settings1 defaultInstance = ((Settings1)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings1())));
public static Settings1 Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -1,6 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
</SettingsFile>

View File

@@ -1,106 +0,0 @@
using System;
using DICUI.Forms.Windows;
namespace DICUI.Forms
{
public class OptionsViewModel
{
private Options _options;
public OptionsViewModel(Options options)
{
this._options = options;
}
public bool QuietMode
{
get { return _options.QuietMode; }
set { _options.QuietMode = value; }
}
public bool ParanoidMode
{
get { return _options.ParanoidMode; }
set { _options.ParanoidMode = value; }
}
public bool ScanForProtection
{
get { return _options.ScanForProtection; }
set { _options.ScanForProtection = value; }
}
public bool SkipMediaTypeDetection
{
get { return _options.SkipMediaTypeDetection; }
set { _options.SkipMediaTypeDetection = value; }
}
public string RereadAmountForC2
{
get { return Convert.ToString(_options.RereadAmountForC2); }
set
{
if (Int32.TryParse(value, out int result))
_options.RereadAmountForC2 = result;
}
}
public bool VerboseLogging
{
get { return _options.VerboseLogging; }
set
{
_options.VerboseLogging = value;
_options.Save();
}
}
public bool OpenLogWindowAtStartup
{
get { return _options.OpenLogWindowAtStartup; }
set
{
_options.OpenLogWindowAtStartup = value;
_options.Save();
}
}
}
public class LoggerViewModel
{
private LogWindow _logWindow;
public void SetWindow(LogWindow logWindow) => _logWindow = logWindow;
public bool WindowVisible
{
get => _logWindow != null ? _logWindow.Visible : false;
set
{
if (value)
{
_logWindow.AdjustPositionToMainWindow();
_logWindow.Show();
}
else
_logWindow.Hide();
}
}
public void VerboseLog(string text)
{
if (ViewModels.OptionsViewModel.VerboseLogging)
_logWindow.AppendToTextBox(text, System.Drawing.Color.Yellow);
}
public void VerboseLog(string format, params object[] args) => VerboseLog(string.Format(format, args));
public void VerboseLogLn(string format, params object[] args) => VerboseLog(string.Format(format, args) + "\n");
}
public static class ViewModels
{
public static OptionsViewModel OptionsViewModel { get; set; }
public static LoggerViewModel LoggerViewModel { get; set; } = new LoggerViewModel();
}
}

View File

@@ -1,175 +0,0 @@
namespace DICUI.Forms.Windows
{
partial class LogWindow
{
/// <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()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.progressBar = new System.Windows.Forms.ProgressBar();
this.output = new System.Windows.Forms.RichTextBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.Verbose = new System.Windows.Forms.CheckBox();
this.OpenAtStartupCheckBox = new System.Windows.Forms.CheckBox();
this.ClearButton = new System.Windows.Forms.Button();
this.HideButton = new System.Windows.Forms.Button();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.progressBar, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.output, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 2);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 12);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(560, 287);
this.tableLayoutPanel1.TabIndex = 0;
//
// progressBar
//
this.progressBar.Dock = System.Windows.Forms.DockStyle.Fill;
this.progressBar.Location = new System.Drawing.Point(3, 3);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(554, 34);
this.progressBar.TabIndex = 0;
//
// output
//
this.output.BackColor = System.Drawing.Color.DimGray;
this.output.Dock = System.Windows.Forms.DockStyle.Fill;
this.output.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.output.Location = new System.Drawing.Point(3, 43);
this.output.Name = "output";
this.output.ReadOnly = true;
this.output.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.output.Size = new System.Drawing.Size(554, 201);
this.output.TabIndex = 1;
this.output.Text = "";
this.output.TextChanged += new System.EventHandler(this.OnTextChanged);
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 5;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15F));
this.tableLayoutPanel2.Controls.Add(this.Verbose, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.OpenAtStartupCheckBox, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.ClearButton, 3, 0);
this.tableLayoutPanel2.Controls.Add(this.HideButton, 4, 0);
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 250);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(554, 34);
this.tableLayoutPanel2.TabIndex = 2;
//
// Verbose
//
this.Verbose.AutoSize = true;
this.Verbose.Dock = System.Windows.Forms.DockStyle.Left;
this.Verbose.Location = new System.Drawing.Point(3, 3);
this.Verbose.Name = "Verbose";
this.Verbose.Size = new System.Drawing.Size(65, 28);
this.Verbose.TabIndex = 1;
this.Verbose.Text = "Verbose";
this.Verbose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.Verbose.UseVisualStyleBackColor = true;
//
// OpenAtStartupCheckBox
//
this.OpenAtStartupCheckBox.AutoSize = true;
this.OpenAtStartupCheckBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.OpenAtStartupCheckBox.Location = new System.Drawing.Point(86, 3);
this.OpenAtStartupCheckBox.Name = "OpenAtStartupCheckBox";
this.OpenAtStartupCheckBox.Size = new System.Drawing.Size(104, 28);
this.OpenAtStartupCheckBox.TabIndex = 2;
this.OpenAtStartupCheckBox.Text = "Open at startup";
this.OpenAtStartupCheckBox.UseVisualStyleBackColor = true;
//
// ClearButton
//
this.ClearButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.ClearButton.Location = new System.Drawing.Point(389, 3);
this.ClearButton.Name = "ClearButton";
this.ClearButton.Size = new System.Drawing.Size(77, 28);
this.ClearButton.TabIndex = 3;
this.ClearButton.Text = "Clear";
this.ClearButton.UseVisualStyleBackColor = true;
this.ClearButton.Click += new System.EventHandler(this.OnClearButton);
//
// HideButton
//
this.HideButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.HideButton.Location = new System.Drawing.Point(472, 3);
this.HideButton.Name = "HideButton";
this.HideButton.Size = new System.Drawing.Size(79, 28);
this.HideButton.TabIndex = 4;
this.HideButton.Text = "Hide";
this.HideButton.UseVisualStyleBackColor = true;
this.HideButton.SizeChanged += new System.EventHandler(this.ScrollViewer_SizeChanged);
this.HideButton.Click += new System.EventHandler(this.OnHideButton);
//
// LogWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(584, 311);
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "LogWindow";
this.ShowIcon = false;
this.Text = "Log Window";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OnWindowClosed);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.ProgressBar progressBar;
private System.Windows.Forms.RichTextBox output;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.CheckBox Verbose;
private System.Windows.Forms.CheckBox OpenAtStartupCheckBox;
private System.Windows.Forms.Button ClearButton;
private System.Windows.Forms.Button HideButton;
}
}

View File

@@ -1,380 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Threading;
namespace DICUI.Forms.Windows
{
public partial class LogWindow : Form
{
private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
private MainWindow _mainWindow;
private List<Matcher> _matchers;
volatile Process _process;
public LogWindow(MainWindow mainWindow)
{
InitializeComponent();
this._mainWindow = mainWindow;
_matchers = new List<Matcher>();
_matchers.Add(new Matcher(
"Descrambling data sector of img (LBA)",
@"\s*(\d+)\/\s*(\d+)$",
match => {
if (UInt32.TryParse(match.Groups[1].Value, out uint current) && UInt32.TryParse(match.Groups[2].Value, out uint total))
{
float percentProgress = (current / (float)total) * 100;
progressBar.Value = (int)percentProgress;
//progressBar.Text = string.Format("Descrambling image.. ({0:##.##}%)", percentProgress);
}
}));
_matchers.Add(new Matcher(
@"Creating .scm (LBA)",
@"\s*(\d+)\/\s*(\d+)$",
match => {
if (UInt32.TryParse(match.Groups[1].Value, out uint current) && UInt32.TryParse(match.Groups[2].Value, out uint total))
{
float percentProgress = (current / (float)total) * 100;
progressBar.Value = (int)percentProgress;
//progressBar.Text = string.Format("Creating scrambled image.. ({0:##.##}%)", percentProgress);
}
}));
_matchers.Add(new Matcher(
"Checking sectors (LBA)",
@"\s*(\d+)\/\s*(\d+)$",
match => {
if (UInt32.TryParse(match.Groups[1].Value, out uint current) && UInt32.TryParse(match.Groups[2].Value, out uint total))
{
float percentProgress = (current / (float)total) * 100;
progressBar.Value = (int)percentProgress;
//progressBar.Text = string.Format("Checking for errors.. ({0:##.##}%)", percentProgress);
}
}));
_matchers.Add(new Matcher(
"Scanning sector (LBA)",
@"\s*(\d+)\/\s*(\d+)$",
match => {
if (UInt32.TryParse(match.Groups[1].Value, out uint current) && UInt32.TryParse(match.Groups[2].Value, out uint total))
{
float percentProgress = (current / (float)total) * 100;
progressBar.Value = (int)percentProgress;
//progressBar.Text = string.Format("Scanning sectors for protection.. ({0:##.##}%)", percentProgress);
}
}));
}
protected override bool ShowWithoutActivation
{
get { return true; }
}
public void StartDump(string args)
{
AppendToTextBox(string.Format("Launching DIC with args: {0}\r\n", args), System.Drawing.Color.Orange);
Task.Run(() =>
{
_process = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = @"Programs/DiscImageCreator.exe",
Arguments = args,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
},
};
StreamState stdoutState = new StreamState(false);
StreamState stderrState = new StreamState(true);
//_cmd.ErrorDataReceived += (process, text) => Dispatcher.CurrentDispatcher.Invoke(() => UpdateConsole(text.Data, Brushes.Red));
_process.Start();
var _1 = ConsumeOutput(_process.StandardOutput, s => Dispatcher.CurrentDispatcher.Invoke(() => UpdateConsole(s, stdoutState)));
var _2 = ConsumeOutput(_process.StandardError, s => Dispatcher.CurrentDispatcher.Invoke(() => UpdateConsole(s, stderrState)));
_process.EnableRaisingEvents = true;
_process.Exited += OnProcessExit;
});
}
public void AdjustPositionToMainWindow()
{
this.Left = _mainWindow.Left;
this.Top = _mainWindow.Top + _mainWindow.Height + Constants.LogWindowMarginFromMainWindow;
this.BringToFront();
}
private void GracefullyTerminateProcess()
{
if (_process != null)
{
_process.Exited -= OnProcessExit;
bool isForced = !_process.HasExited;
if (isForced)
{
AppendToTextBox("\r\nForcefully Killing the process\r\n", System.Drawing.Color.Red);
_process.Kill();
_process.WaitForExit();
}
AppendToTextBox(string.Format("\r\nExit Code: {0}\r\n", _process.ExitCode), _process.ExitCode == 0 ? System.Drawing.Color.Green : System.Drawing.Color.Red);
if (_process.ExitCode == 0)
{
Dispatcher.CurrentDispatcher.Invoke(() =>
{
//progressBar.Text = "Done!";
progressBar.Value = 100;
progressBar.ForeColor = System.Drawing.Color.Green;
});
}
else
{
Dispatcher.CurrentDispatcher.Invoke(() =>
{
//progressBar.Text = isForced ? "Aborted by user" : "Error, please check log!";
progressBar.Value = 100;
progressBar.ForeColor = System.Drawing.Color.Red;
});
}
_process.Close();
}
_process = null;
}
private void ScrollViewer_SizeChanged(object sender, EventArgs e)
{
output.ScrollToCaret();
}
async Task ConsumeOutput(TextReader reader, Action<string> callback)
{
char[] buffer = new char[256];
int cch;
while ((cch = await reader.ReadAsync(buffer, 0, buffer.Length)) > 0)
{
callback(new string(buffer, 0, cch));
}
}
// this is used to optimize the work since we need to process A LOT of text
struct Matcher
{
private readonly String prefix;
private readonly Regex regex;
private readonly int start;
private readonly Action<Match> lambda;
public Matcher(String prefix, String regex, Action<Match> lambda)
{
this.prefix = prefix;
this.regex = new Regex(regex);
this.start = prefix.Length;
this.lambda = lambda;
}
public bool Matches(ref string text) => text.StartsWith(prefix);
public void Apply(ref string text)
{
Match match = regex.Match(text, start);
lambda.Invoke(match);
}
}
private void ProcessStringForProgressBar(string text)
{
foreach (Matcher matcher in _matchers)
{
if (matcher.Matches(ref text))
{
matcher.Apply(ref text);
return;
}
}
}
class StreamState
{
public enum State
{
BEGIN,
READ_CARRIAGE,
};
public State state;
public readonly StringBuilder buffer;
public readonly bool isError;
public StreamState(bool isError)
{
this.state = State.BEGIN;
this.buffer = new StringBuilder();
this.isError = isError;
}
public bool HasData() => buffer.Length > 0;
public string Fetch() => buffer.ToString();
public void Clear() => buffer.Clear();
public void Append(char c) => buffer.Append(c);
public bool Is(State state) => this.state == state;
public void Set(State state) => this.state = state;
}
public void AppendToTextBox(string text, System.Drawing.Color color)
{
if (Dispatcher.CurrentDispatcher.CheckAccess())
{
output.ForeColor = color;
output.AppendText(text);
}
else
Dispatcher.CurrentDispatcher.Invoke(() =>
{
output.ForeColor = color;
output.AppendText(text);
});
}
private void UpdateConsole(string text, StreamState state)
{
/*if (c == '\r') { output.Inlines.Add(@"\r"); file.Write("\\r"); }
else if (c == '\n') { output.Inlines.Add(@"\n"); file.Write("\\n\n"); }
output.Inlines.Add(""+c);
file.Write(c);
file.Flush();
continue;*/
if (text != null)
{
foreach (char c in text)
{
switch (c)
{
case '\r' when (state.Is(StreamState.State.BEGIN)):
{
state.Set(StreamState.State.READ_CARRIAGE);
break;
}
case '\n' when (state.Is(StreamState.State.READ_CARRIAGE)):
{
if (state.buffer.Length > 0)
{
string buffer = state.Fetch();
AppendToTextBox(buffer, state.isError ? System.Drawing.Color.Red : System.Drawing.Color.White);
if (!state.isError)
ProcessStringForProgressBar(buffer);
}
output.AppendText(Environment.NewLine);
state.Clear();
state.Set(StreamState.State.BEGIN);
break;
}
default:
if (state.Is(StreamState.State.READ_CARRIAGE) && state.HasData())
{
if (!String.IsNullOrEmpty(output.Lines.Last()))
output.Lines[output.Lines.Length] = string.Empty;
string buffer = state.Fetch();
AppendToTextBox(buffer, state.isError ? System.Drawing.Color.Red : System.Drawing.Color.White);
if (!state.isError)
ProcessStringForProgressBar(buffer);
state.Clear();
}
state.Set(StreamState.State.BEGIN);
state.Append(c);
break;
}
}
}
}
#region EventHandlers
private void OnWindowClosed(object sender, FormClosedEventArgs e)
{
GracefullyTerminateProcess();
}
private void OnWindowLoaded(object sender, EventArgs e)
{
var hwnd = this.Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
}
void OnProcessExit(object sender, EventArgs e)
{
//Dispatcher.CurrentDispatcher.Invoke(() => AbortButton.IsEnabled = false);
GracefullyTerminateProcess();
}
private void OnHideButton(object sender, EventArgs e)
{
ViewModels.LoggerViewModel.WindowVisible = false;
//TODO: this should be bound directly to WindowVisible property in two way fashion
// we need to study how to properly do it in XAML
_mainWindow.showLogWindowToolStripMenuItem.Checked = false;
}
private void OnClearButton(object sender, EventArgs e)
{
output.Clear();
}
private void OnAbortButton(object sender, EventArgs args)
{
GracefullyTerminateProcess();
}
private void OnStartButton(object sender, EventArgs args)
{
StartDump("cd e Gam.iso 16");
}
private void OnTextChanged(object sender, EventArgs e)
{
output.ScrollToCaret();
}
#endregion
}
}

View File

@@ -1,123 +0,0 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -1,532 +0,0 @@
namespace DICUI.Forms.Windows
{
partial class MainWindow
{
/// <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(MainWindow));
this.MenuBar = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mainWindowLayout = new System.Windows.Forms.TableLayoutPanel();
this.settingsGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.parametersLabel = new System.Windows.Forms.Label();
this.driveSpeedLabel = new System.Windows.Forms.Label();
this.driveLetterLabel = new System.Windows.Forms.Label();
this.outputDirectoryLabel = new System.Windows.Forms.Label();
this.outputFilenameLabel = new System.Windows.Forms.Label();
this.systemMediaTypeLabel = new System.Windows.Forms.Label();
this.OutputFilenameTextBox = new System.Windows.Forms.TextBox();
this.SystemTypeComboBox = new System.Windows.Forms.ComboBox();
this.MediaTypeComboBox = new System.Windows.Forms.ComboBox();
this.OutputDirectoryTextBox = new System.Windows.Forms.TextBox();
this.OutputDirectoryBrowseButton = new System.Windows.Forms.Button();
this.DriveLetterComboBox = new System.Windows.Forms.ComboBox();
this.DriveSpeedComboBox = new System.Windows.Forms.ComboBox();
this.ParametersTextBox = new System.Windows.Forms.TextBox();
this.EnableParametersCheckBox = new System.Windows.Forms.CheckBox();
this.controlsGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.StartStopButton = new System.Windows.Forms.Button();
this.DiscScanButton = new System.Windows.Forms.Button();
this.CopyProtectScanButton = new System.Windows.Forms.Button();
this.EjectWhenDoneCheckBox = new System.Windows.Forms.CheckBox();
this.statusGroupBox = new System.Windows.Forms.GroupBox();
this.StatusLabel = new System.Windows.Forms.TextBox();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.showLogWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MenuBar.SuspendLayout();
this.mainWindowLayout.SuspendLayout();
this.settingsGroupBox.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.controlsGroupBox.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.statusGroupBox.SuspendLayout();
this.SuspendLayout();
//
// MenuBar
//
this.MenuBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.toolsToolStripMenuItem,
this.helpToolStripMenuItem});
this.MenuBar.Location = new System.Drawing.Point(0, 0);
this.MenuBar.Name = "MenuBar";
this.MenuBar.Size = new System.Drawing.Size(584, 24);
this.MenuBar.TabIndex = 0;
this.MenuBar.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F)));
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// toolsToolStripMenuItem
//
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.T)));
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
this.toolsToolStripMenuItem.Text = "Tools";
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.H)));
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "Help";
//
// mainWindowLayout
//
this.mainWindowLayout.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.mainWindowLayout.ColumnCount = 1;
this.mainWindowLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainWindowLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.mainWindowLayout.Controls.Add(this.settingsGroupBox, 0, 0);
this.mainWindowLayout.Controls.Add(this.controlsGroupBox, 0, 1);
this.mainWindowLayout.Controls.Add(this.statusGroupBox, 0, 2);
this.mainWindowLayout.Location = new System.Drawing.Point(13, 28);
this.mainWindowLayout.Name = "mainWindowLayout";
this.mainWindowLayout.RowCount = 3;
this.mainWindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 82.66254F));
this.mainWindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 17.33746F));
this.mainWindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 47F));
this.mainWindowLayout.Size = new System.Drawing.Size(559, 371);
this.mainWindowLayout.TabIndex = 1;
//
// settingsGroupBox
//
this.settingsGroupBox.Controls.Add(this.tableLayoutPanel2);
this.settingsGroupBox.Location = new System.Drawing.Point(3, 3);
this.settingsGroupBox.Name = "settingsGroupBox";
this.settingsGroupBox.Size = new System.Drawing.Size(553, 259);
this.settingsGroupBox.TabIndex = 0;
this.settingsGroupBox.TabStop = false;
this.settingsGroupBox.Text = "Settings";
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 3;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.32794F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 73.67206F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
this.tableLayoutPanel2.Controls.Add(this.parametersLabel, 0, 5);
this.tableLayoutPanel2.Controls.Add(this.driveSpeedLabel, 0, 4);
this.tableLayoutPanel2.Controls.Add(this.driveLetterLabel, 0, 3);
this.tableLayoutPanel2.Controls.Add(this.outputDirectoryLabel, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.outputFilenameLabel, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.systemMediaTypeLabel, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.OutputFilenameTextBox, 1, 1);
this.tableLayoutPanel2.Controls.Add(this.SystemTypeComboBox, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.MediaTypeComboBox, 2, 0);
this.tableLayoutPanel2.Controls.Add(this.OutputDirectoryTextBox, 1, 2);
this.tableLayoutPanel2.Controls.Add(this.OutputDirectoryBrowseButton, 2, 2);
this.tableLayoutPanel2.Controls.Add(this.DriveLetterComboBox, 1, 3);
this.tableLayoutPanel2.Controls.Add(this.DriveSpeedComboBox, 1, 4);
this.tableLayoutPanel2.Controls.Add(this.ParametersTextBox, 1, 5);
this.tableLayoutPanel2.Controls.Add(this.EnableParametersCheckBox, 2, 5);
this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 19);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5);
this.tableLayoutPanel2.RowCount = 6;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(553, 234);
this.tableLayoutPanel2.TabIndex = 0;
//
// parametersLabel
//
this.parametersLabel.AutoSize = true;
this.parametersLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.parametersLabel.Location = new System.Drawing.Point(3, 190);
this.parametersLabel.Name = "parametersLabel";
this.parametersLabel.Size = new System.Drawing.Size(101, 39);
this.parametersLabel.TabIndex = 10;
this.parametersLabel.Text = "Parameters";
this.parametersLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// driveSpeedLabel
//
this.driveSpeedLabel.AutoSize = true;
this.driveSpeedLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.driveSpeedLabel.Location = new System.Drawing.Point(3, 153);
this.driveSpeedLabel.Name = "driveSpeedLabel";
this.driveSpeedLabel.Size = new System.Drawing.Size(101, 37);
this.driveSpeedLabel.TabIndex = 8;
this.driveSpeedLabel.Text = "Drive Speed";
this.driveSpeedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// driveLetterLabel
//
this.driveLetterLabel.AutoSize = true;
this.driveLetterLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.driveLetterLabel.Location = new System.Drawing.Point(3, 116);
this.driveLetterLabel.Name = "driveLetterLabel";
this.driveLetterLabel.Size = new System.Drawing.Size(101, 37);
this.driveLetterLabel.TabIndex = 6;
this.driveLetterLabel.Text = "Drive Letter";
this.driveLetterLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// outputDirectoryLabel
//
this.outputDirectoryLabel.AutoSize = true;
this.outputDirectoryLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.outputDirectoryLabel.Location = new System.Drawing.Point(3, 79);
this.outputDirectoryLabel.Name = "outputDirectoryLabel";
this.outputDirectoryLabel.Size = new System.Drawing.Size(101, 37);
this.outputDirectoryLabel.TabIndex = 4;
this.outputDirectoryLabel.Text = "Output Directory";
this.outputDirectoryLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// outputFilenameLabel
//
this.outputFilenameLabel.AutoSize = true;
this.outputFilenameLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.outputFilenameLabel.Location = new System.Drawing.Point(3, 42);
this.outputFilenameLabel.Name = "outputFilenameLabel";
this.outputFilenameLabel.Size = new System.Drawing.Size(101, 37);
this.outputFilenameLabel.TabIndex = 2;
this.outputFilenameLabel.Text = "Output Filename";
this.outputFilenameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// systemMediaTypeLabel
//
this.systemMediaTypeLabel.AutoSize = true;
this.systemMediaTypeLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.systemMediaTypeLabel.Location = new System.Drawing.Point(3, 5);
this.systemMediaTypeLabel.Name = "systemMediaTypeLabel";
this.systemMediaTypeLabel.Size = new System.Drawing.Size(101, 37);
this.systemMediaTypeLabel.TabIndex = 0;
this.systemMediaTypeLabel.Text = "System/Media Type";
this.systemMediaTypeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// OutputFilenameTextBox
//
this.OutputFilenameTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.tableLayoutPanel2.SetColumnSpan(this.OutputFilenameTextBox, 2);
this.OutputFilenameTextBox.Location = new System.Drawing.Point(111, 50);
this.OutputFilenameTextBox.Name = "OutputFilenameTextBox";
this.OutputFilenameTextBox.Size = new System.Drawing.Size(438, 20);
this.OutputFilenameTextBox.TabIndex = 11;
this.OutputFilenameTextBox.TextChanged += new System.EventHandler(this.OutputFilenameTextBoxTextChanged);
//
// SystemTypeComboBox
//
this.SystemTypeComboBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.SystemTypeComboBox.DisplayMember = "Name";
this.SystemTypeComboBox.DropDownWidth = 250;
this.SystemTypeComboBox.FormattingEnabled = true;
this.SystemTypeComboBox.Location = new System.Drawing.Point(110, 13);
this.SystemTypeComboBox.Name = "SystemTypeComboBox";
this.SystemTypeComboBox.Size = new System.Drawing.Size(294, 21);
this.SystemTypeComboBox.TabIndex = 13;
this.SystemTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.SystemTypeComboBoxSelectionChanged);
//
// MediaTypeComboBox
//
this.MediaTypeComboBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.MediaTypeComboBox.DisplayMember = "Name";
this.MediaTypeComboBox.FormattingEnabled = true;
this.MediaTypeComboBox.Location = new System.Drawing.Point(414, 13);
this.MediaTypeComboBox.Name = "MediaTypeComboBox";
this.MediaTypeComboBox.Size = new System.Drawing.Size(131, 21);
this.MediaTypeComboBox.TabIndex = 14;
this.MediaTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.MediaTypeComboBoxSelectionChanged);
//
// OutputDirectoryTextBox
//
this.OutputDirectoryTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.OutputDirectoryTextBox.Location = new System.Drawing.Point(110, 87);
this.OutputDirectoryTextBox.Name = "OutputDirectoryTextBox";
this.OutputDirectoryTextBox.Size = new System.Drawing.Size(294, 20);
this.OutputDirectoryTextBox.TabIndex = 15;
this.OutputDirectoryTextBox.TextChanged += new System.EventHandler(this.OutputDirectoryTextBoxTextChanged);
//
// OutputDirectoryBrowseButton
//
this.OutputDirectoryBrowseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.OutputDirectoryBrowseButton.Location = new System.Drawing.Point(410, 84);
this.OutputDirectoryBrowseButton.Name = "OutputDirectoryBrowseButton";
this.OutputDirectoryBrowseButton.Size = new System.Drawing.Size(140, 26);
this.OutputDirectoryBrowseButton.TabIndex = 16;
this.OutputDirectoryBrowseButton.Text = "Browse";
this.OutputDirectoryBrowseButton.UseVisualStyleBackColor = true;
this.OutputDirectoryBrowseButton.Click += new System.EventHandler(this.OutputDirectoryBrowseButtonClick);
//
// DriveLetterComboBox
//
this.DriveLetterComboBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.DriveLetterComboBox.DisplayMember = "Letter";
this.DriveLetterComboBox.FormattingEnabled = true;
this.DriveLetterComboBox.Location = new System.Drawing.Point(110, 124);
this.DriveLetterComboBox.Name = "DriveLetterComboBox";
this.DriveLetterComboBox.Size = new System.Drawing.Size(121, 21);
this.DriveLetterComboBox.TabIndex = 17;
this.DriveLetterComboBox.SelectedIndexChanged += new System.EventHandler(this.DriveLetterComboBoxSelectionChanged);
//
// DriveSpeedComboBox
//
this.DriveSpeedComboBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.DriveSpeedComboBox.FormattingEnabled = true;
this.DriveSpeedComboBox.Location = new System.Drawing.Point(110, 161);
this.DriveSpeedComboBox.Name = "DriveSpeedComboBox";
this.DriveSpeedComboBox.Size = new System.Drawing.Size(121, 21);
this.DriveSpeedComboBox.TabIndex = 18;
this.DriveSpeedComboBox.SelectedIndexChanged += new System.EventHandler(this.DriveSpeedComboBoxSelectionChanged);
//
// ParametersTextBox
//
this.ParametersTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.ParametersTextBox.Enabled = false;
this.ParametersTextBox.Location = new System.Drawing.Point(110, 199);
this.ParametersTextBox.Name = "ParametersTextBox";
this.ParametersTextBox.ReadOnly = true;
this.ParametersTextBox.Size = new System.Drawing.Size(294, 20);
this.ParametersTextBox.TabIndex = 19;
//
// EnableParametersCheckBox
//
this.EnableParametersCheckBox.AutoSize = true;
this.EnableParametersCheckBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.EnableParametersCheckBox.Location = new System.Drawing.Point(410, 193);
this.EnableParametersCheckBox.Name = "EnableParametersCheckBox";
this.EnableParametersCheckBox.Size = new System.Drawing.Size(140, 33);
this.EnableParametersCheckBox.TabIndex = 20;
this.EnableParametersCheckBox.Text = "Enable Editing";
this.EnableParametersCheckBox.UseVisualStyleBackColor = true;
this.EnableParametersCheckBox.CheckedChanged += new System.EventHandler(this.EnableParametersCheckBoxClick);
//
// controlsGroupBox
//
this.controlsGroupBox.Controls.Add(this.tableLayoutPanel3);
this.controlsGroupBox.Location = new System.Drawing.Point(3, 270);
this.controlsGroupBox.Name = "controlsGroupBox";
this.controlsGroupBox.Size = new System.Drawing.Size(553, 50);
this.controlsGroupBox.TabIndex = 1;
this.controlsGroupBox.TabStop = false;
this.controlsGroupBox.Text = "Controls";
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 4;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel3.Controls.Add(this.StartStopButton, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.DiscScanButton, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.CopyProtectScanButton, 2, 0);
this.tableLayoutPanel3.Controls.Add(this.EjectWhenDoneCheckBox, 3, 0);
this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 20);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 1;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(553, 32);
this.tableLayoutPanel3.TabIndex = 0;
//
// StartStopButton
//
this.StartStopButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.StartStopButton.Enabled = false;
this.StartStopButton.Location = new System.Drawing.Point(3, 3);
this.StartStopButton.Name = "StartStopButton";
this.StartStopButton.Size = new System.Drawing.Size(132, 26);
this.StartStopButton.TabIndex = 0;
this.StartStopButton.Text = "Start Dumping";
this.StartStopButton.UseVisualStyleBackColor = true;
this.StartStopButton.Click += new System.EventHandler(this.StartStopButtonClick);
//
// DiscScanButton
//
this.DiscScanButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.DiscScanButton.Location = new System.Drawing.Point(141, 3);
this.DiscScanButton.Name = "DiscScanButton";
this.DiscScanButton.Size = new System.Drawing.Size(132, 26);
this.DiscScanButton.TabIndex = 1;
this.DiscScanButton.Text = "Scan For Discs";
this.DiscScanButton.UseVisualStyleBackColor = true;
this.DiscScanButton.Click += new System.EventHandler(this.DiscScanButtonClick);
//
// CopyProtectScanButton
//
this.CopyProtectScanButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.CopyProtectScanButton.Location = new System.Drawing.Point(279, 3);
this.CopyProtectScanButton.Name = "CopyProtectScanButton";
this.CopyProtectScanButton.Size = new System.Drawing.Size(132, 26);
this.CopyProtectScanButton.TabIndex = 2;
this.CopyProtectScanButton.Text = "Scan For Protection";
this.CopyProtectScanButton.UseVisualStyleBackColor = true;
this.CopyProtectScanButton.Click += new System.EventHandler(this.CopyProtectScanButtonClick);
//
// EjectWhenDoneCheckBox
//
this.EjectWhenDoneCheckBox.AutoSize = true;
this.EjectWhenDoneCheckBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.EjectWhenDoneCheckBox.Location = new System.Drawing.Point(417, 3);
this.EjectWhenDoneCheckBox.Name = "EjectWhenDoneCheckBox";
this.EjectWhenDoneCheckBox.Size = new System.Drawing.Size(133, 26);
this.EjectWhenDoneCheckBox.TabIndex = 3;
this.EjectWhenDoneCheckBox.Text = "Eject When Done";
this.EjectWhenDoneCheckBox.UseVisualStyleBackColor = true;
//
// statusGroupBox
//
this.statusGroupBox.Controls.Add(this.StatusLabel);
this.statusGroupBox.Location = new System.Drawing.Point(3, 326);
this.statusGroupBox.Name = "statusGroupBox";
this.statusGroupBox.Size = new System.Drawing.Size(553, 42);
this.statusGroupBox.TabIndex = 2;
this.statusGroupBox.TabStop = false;
this.statusGroupBox.Text = "Status";
//
// StatusLabel
//
this.StatusLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.StatusLabel.Enabled = false;
this.StatusLabel.Location = new System.Drawing.Point(3, 16);
this.StatusLabel.Name = "StatusLabel";
this.StatusLabel.ReadOnly = true;
this.StatusLabel.Size = new System.Drawing.Size(547, 20);
this.StatusLabel.TabIndex = 0;
this.StatusLabel.Text = "Waiting for media...";
this.StatusLabel.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X)));
this.exitToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.AppExitClick);
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.O)));
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(209, 22);
this.optionsToolStripMenuItem.Text = "Options";
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.OptionsClick);
//
// showLogWindowToolStripMenuItem
//
this.showLogWindowToolStripMenuItem.Checked = true;
this.showLogWindowToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.showLogWindowToolStripMenuItem.Name = "showLogWindowToolStripMenuItem";
this.showLogWindowToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.L)));
this.showLogWindowToolStripMenuItem.Size = new System.Drawing.Size(209, 22);
this.showLogWindowToolStripMenuItem.Text = "Show Log Window";
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.A)));
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutClick);
//
// MainWindow
//
this.AcceptButton = this.StartStopButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(584, 411);
this.Controls.Add(this.mainWindowLayout);
this.Controls.Add(this.MenuBar);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.MenuBar;
this.Name = "MainWindow";
this.Text = "DiscImageCreator GUI";
this.Activated += new System.EventHandler(this.MainWindowActivated);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainWindowClosing);
this.Load += new System.EventHandler(this.OnContentRendered);
this.LocationChanged += new System.EventHandler(this.MainWindowLocationChanged);
this.MenuBar.ResumeLayout(false);
this.MenuBar.PerformLayout();
this.mainWindowLayout.ResumeLayout(false);
this.settingsGroupBox.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.controlsGroupBox.ResumeLayout(false);
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.statusGroupBox.ResumeLayout(false);
this.statusGroupBox.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip MenuBar;
private System.Windows.Forms.TableLayoutPanel mainWindowLayout;
private System.Windows.Forms.GroupBox settingsGroupBox;
private System.Windows.Forms.GroupBox controlsGroupBox;
private System.Windows.Forms.GroupBox statusGroupBox;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label systemMediaTypeLabel;
private System.Windows.Forms.Label parametersLabel;
private System.Windows.Forms.Label driveSpeedLabel;
private System.Windows.Forms.Label driveLetterLabel;
private System.Windows.Forms.Label outputDirectoryLabel;
private System.Windows.Forms.Label outputFilenameLabel;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.Button StartStopButton;
private System.Windows.Forms.Button DiscScanButton;
private System.Windows.Forms.Button CopyProtectScanButton;
private System.Windows.Forms.CheckBox EjectWhenDoneCheckBox;
private System.Windows.Forms.TextBox OutputFilenameTextBox;
private System.Windows.Forms.ComboBox SystemTypeComboBox;
private System.Windows.Forms.ComboBox MediaTypeComboBox;
private System.Windows.Forms.TextBox OutputDirectoryTextBox;
private System.Windows.Forms.Button OutputDirectoryBrowseButton;
private System.Windows.Forms.ComboBox DriveLetterComboBox;
private System.Windows.Forms.ComboBox DriveSpeedComboBox;
private System.Windows.Forms.TextBox ParametersTextBox;
private System.Windows.Forms.CheckBox EnableParametersCheckBox;
private System.Windows.Forms.TextBox StatusLabel;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
internal System.Windows.Forms.ToolStripMenuItem showLogWindowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
}
}

View File

@@ -1,728 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
using DICUI.Data;
using DICUI.Utilities;
namespace DICUI.Forms.Windows
{
public partial class MainWindow : Form
{
// Private UI-related variables
private List<Drive> _drives;
private MediaType? _currentMediaType;
private List<KnownSystem?> _systems;
private List<MediaType?> _mediaTypes;
private bool _alreadyShown;
private DumpEnvironment _env;
// Option related
private Options _options;
private OptionsWindow _optionsWindow;
private LogWindow _logWindow;
public MainWindow()
{
InitializeComponent();
// Initializes and load Options object
_options = new Options();
_options.Load();
ViewModels.OptionsViewModel = new OptionsViewModel(_options);
_logWindow = new LogWindow(this);
ViewModels.LoggerViewModel.SetWindow(_logWindow);
// Disable buttons until we load fully
StartStopButton.Enabled = false;
DiscScanButton.Enabled = false;
CopyProtectScanButton.Enabled = false;
if (_options.OpenLogWindowAtStartup)
{
this.StartPosition = FormStartPosition.CenterScreen;
double combinedHeight = this.Height + _logWindow.Height + Constants.LogWindowMarginFromMainWindow;
Rectangle bounds = GetScaledCoordinates(Screen.PrimaryScreen.WorkingArea);
this.Left = (int)(bounds.Left + (bounds.Width - this.Width) / 2);
this.Top = (int)(bounds.Top + (bounds.Height - combinedHeight) / 2);
}
}
#region Events
private void OnContentRendered(object sender, EventArgs e)
{
if (_alreadyShown)
return;
_alreadyShown = true;
if (_options.OpenLogWindowAtStartup)
{
//TODO: this should be bound directly to WindowVisible property in two way fashion
// we need to study how to properly do it in XAML
showLogWindowToolStripMenuItem.Checked = true;
ViewModels.LoggerViewModel.WindowVisible = true;
}
// Populate the list of systems
StatusLabel.Text = "Creating system list, please wait!";
PopulateSystems();
// Populate the list of drives
StatusLabel.Text = "Creating drive list, please wait!";
PopulateDrives();
// Set the position of the log window
if (_logWindow.Visible)
{
_logWindow.AdjustPositionToMainWindow();
this.Focus();
}
}
private void StartStopButtonClick(object sender, EventArgs e)
{
// Dump or stop the dump
if (StartStopButton.Text == Constants.StartDumping)
{
StartDumping();
}
else if (StartStopButton.Text == Constants.StopDumping)
{
ViewModels.LoggerViewModel.VerboseLogLn("Canceling dumping process...");
_env.CancelDumping();
CopyProtectScanButton.Enabled = true;
if (EjectWhenDoneCheckBox.Checked == true)
{
ViewModels.LoggerViewModel.VerboseLogLn($"Ejecting disc in drive {_env.Drive.Letter}");
_env.EjectDisc();
}
}
}
private void OutputDirectoryBrowseButtonClick(object sender, EventArgs e)
{
BrowseFolder();
EnsureDiscInformation();
}
private void DiscScanButtonClick(object sender, EventArgs e)
{
PopulateDrives();
}
private void CopyProtectScanButtonClick(object sender, EventArgs e)
{
ScanAndShowProtection();
}
private void SystemTypeComboBoxSelectionChanged(object sender, EventArgs e)
{
// If we're on a separator, go to the next item and return
if ((SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem).IsHeader())
{
SystemTypeComboBox.SelectedIndex++;
return;
}
ViewModels.LoggerViewModel.VerboseLogLn("Changed system to: {0}", (SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem).Name);
PopulateMediaType();
EnsureDiscInformation();
}
private void MediaTypeComboBoxSelectionChanged(object sender, EventArgs e)
{
_currentMediaType = MediaTypeComboBox.SelectedItem as MediaType?;
SetSupportedDriveSpeed();
GetOutputNames();
EnsureDiscInformation();
}
private void DriveLetterComboBoxSelectionChanged(object sender, EventArgs e)
{
CacheCurrentDiscType();
SetCurrentDiscType();
GetOutputNames();
SetSupportedDriveSpeed();
}
private void DriveSpeedComboBoxSelectionChanged(object sender, EventArgs e)
{
EnsureDiscInformation();
}
private void OutputFilenameTextBoxTextChanged(object sender, EventArgs e)
{
EnsureDiscInformation();
}
private void OutputDirectoryTextBoxTextChanged(object sender, EventArgs e)
{
EnsureDiscInformation();
}
private void ProgressUpdated(object sender, Result value)
{
StatusLabel.Text = value.Message;
ViewModels.LoggerViewModel.VerboseLogLn(value.Message);
}
private void MainWindowLocationChanged(object sender, EventArgs e)
{
if (_logWindow.Visible)
_logWindow.AdjustPositionToMainWindow();
}
private void MainWindowActivated(object sender, EventArgs e)
{
if (!_logWindow.Visible)
_logWindow.BringToFront();
this.BringToFront();
}
private void MainWindowClosing(object sender, FormClosingEventArgs e)
{
if (_logWindow.Visible)
_logWindow.Close();
}
private void EnableParametersCheckBoxClick(object sender, EventArgs e)
{
if (EnableParametersCheckBox.Checked)
{
ParametersTextBox.ReadOnly = false;
ParametersTextBox.Enabled = true;
}
else
{
ParametersTextBox.ReadOnly = true;
ParametersTextBox.Enabled = false;
ProcessCustomParameters();
}
}
// Toolbar Events
private void AppExitClick(object sender, EventArgs e)
{
System.Windows.Application.Current.Shutdown();
}
private void AboutClick(object sender, EventArgs e)
{
System.Windows.MessageBox.Show($"ReignStumble - Project Lead / UI Design{Environment.NewLine}" +
$"darksabre76 - Project Co-Lead / Backend Design{Environment.NewLine}" +
$"Jakz - Feature Contributor{Environment.NewLine}" +
$"NHellFire - Feature Contributor{Environment.NewLine}" +
$"Dizzzy - Concept/Ideas/Beta tester{Environment.NewLine}", "About", MessageBoxButton.OK, MessageBoxImage.Information);
}
private void OptionsClick(object sender, EventArgs e)
{
// lazy initialization
if (_optionsWindow == null)
{
_optionsWindow = new OptionsWindow(this, _options);
_optionsWindow.Closed += delegate
{
_optionsWindow = null;
};
}
_optionsWindow.Owner = this;
_optionsWindow.StartPosition = FormStartPosition.CenterParent;
_optionsWindow.RefreshSettings();
_optionsWindow.Show();
}
public void OnOptionsUpdated()
{
GetOutputNames();
SetSupportedDriveSpeed();
EnsureDiscInformation();
}
#endregion
#region Helpers
/// <summary>
/// Populate media type according to system type
/// </summary>
private void PopulateMediaType()
{
KnownSystem? currentSystem = SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem;
if (currentSystem != null)
{
_mediaTypes = Validators.GetValidMediaTypes(currentSystem).ToList();
var comboBoxItems = new List<MediaTypeComboBoxItem>();
foreach (var mediaType in _mediaTypes)
comboBoxItems.Add(new MediaTypeComboBoxItem(mediaType));
MediaTypeComboBox.DataSource = comboBoxItems;
MediaTypeComboBox.Enabled = _mediaTypes.Count > 1;
MediaTypeComboBox.SelectedIndex = (_mediaTypes.IndexOf(_currentMediaType) >= 0 ? _mediaTypes.IndexOf(_currentMediaType) : 0);
}
else
{
MediaTypeComboBox.Enabled = false;
MediaTypeComboBox.DataSource = null;
MediaTypeComboBox.SelectedIndex = -1;
}
}
/// <summary>
/// Get a complete list of supported systems and fill the combo box
/// </summary>
private void PopulateSystems()
{
_systems = Validators.CreateListOfSystems();
ViewModels.LoggerViewModel.VerboseLogLn("Populating systems, {0} systems found.", _systems.Count);
Dictionary<KnownSystemCategory, List<KnownSystem?>> mapping = _systems
.GroupBy(s => s.Category())
.ToDictionary(
k => k.Key,
v => v
.OrderBy(s => s.Name())
.ToList()
);
// Initialize with the NONE system first so it appears on top
List<KnownSystemComboBoxItem> comboBoxItems = new List<KnownSystemComboBoxItem>
{
new KnownSystemComboBoxItem(KnownSystem.NONE)
};
foreach (var group in mapping)
{
comboBoxItems.Add(new KnownSystemComboBoxItem(group.Key));
group.Value.ForEach(system => comboBoxItems.Add(new KnownSystemComboBoxItem(system)));
}
SystemTypeComboBox.DataSource = comboBoxItems;
SystemTypeComboBox.SelectedIndex = 0;
StartStopButton.Enabled = false;
}
/// <summary>
/// Get a complete list of active disc drives and fill the combo box
/// </summary>
/// <remarks>TODO: Find a way for this to periodically run, or have it hook to a "drive change" event</remarks>
private void PopulateDrives()
{
ViewModels.LoggerViewModel.VerboseLogLn("Scanning for drives..");
// Always enable the disk scan
DiscScanButton.Enabled = true;
// Populate the list of drives and add it to the combo box
_drives = Validators.CreateListOfDrives();
DriveLetterComboBox.DataSource = _drives;
if (DriveLetterComboBox.Items.Count > 0)
{
int index = _drives.FindIndex(d => d.MarkedActive);
DriveLetterComboBox.SelectedIndex = (index != -1 ? index : 0);
StatusLabel.Text = "Valid drive found! Choose your Media Type";
StartStopButton.Enabled = true;
CopyProtectScanButton.Enabled = true;
ViewModels.LoggerViewModel.VerboseLogLn("Found {0} drives: {1}", _drives.Count, String.Join(", ", _drives.Select(d => d.Letter)));
}
else
{
DriveLetterComboBox.SelectedIndex = -1;
StatusLabel.Text = "No valid drive found!";
StartStopButton.Enabled = false;
CopyProtectScanButton.Enabled = false;
ViewModels.LoggerViewModel.VerboseLogLn("Found no drives");
}
}
/// <summary>
/// Browse for an output folder
/// </summary>
private void BrowseFolder()
{
FolderBrowserDialog folderDialog = new FolderBrowserDialog { ShowNewFolderButton = false, SelectedPath = System.AppDomain.CurrentDomain.BaseDirectory };
DialogResult result = folderDialog.ShowDialog();
if (result == DialogResult.OK)
{
OutputDirectoryTextBox.Text = folderDialog.SelectedPath;
}
}
/// <summary>
/// Create a DumpEnvironment with all current settings
/// </summary>
/// <returns>Filled DumpEnvironment instance</returns>
private DumpEnvironment DetermineEnvironment()
{
// Populate the new environment
var env = new DumpEnvironment()
{
// Paths to tools
SubdumpPath = _options.SubDumpPath,
DICPath = _options.DICPath,
OutputDirectory = OutputDirectoryTextBox.Text,
OutputFilename = OutputFilenameTextBox.Text,
// Get the currently selected options
Drive = DriveLetterComboBox.SelectedItem as Drive,
DICParameters = new Parameters(ParametersTextBox.Text),
QuietMode = _options.QuietMode,
ParanoidMode = _options.ParanoidMode,
ScanForProtection = _options.ScanForProtection,
RereadAmountC2 = _options.RereadAmountForC2,
System = SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem,
Type = MediaTypeComboBox.SelectedItem as MediaTypeComboBoxItem,
};
// Fix the output paths
env.FixOutputPaths();
// Disable automatic reprocessing of the textboxes until we're done
OutputDirectoryTextBox.TextChanged -= OutputDirectoryTextBoxTextChanged;
OutputFilenameTextBox.TextChanged -= OutputFilenameTextBoxTextChanged;
OutputDirectoryTextBox.Text = env.OutputDirectory;
OutputFilenameTextBox.Text = env.OutputFilename;
OutputDirectoryTextBox.TextChanged += OutputDirectoryTextBoxTextChanged;
OutputFilenameTextBox.TextChanged += OutputFilenameTextBoxTextChanged;
return env;
}
/// <summary>
/// Begin the dumping process using the given inputs
/// </summary>
private async void StartDumping()
{
if (_env == null)
_env = DetermineEnvironment();
// If still in custom parameter mode, check that users meant to continue or not
if (EnableParametersCheckBox.Checked == true)
{
MessageBoxResult result = System.Windows.MessageBox.Show("It looks like you have custom parameters that have not been saved. Would you like to apply those changes before starting to dump?", "Custom Changes", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
EnableParametersCheckBox.Checked = false;
ParametersTextBox.Enabled = false;
ProcessCustomParameters();
}
else if (result == MessageBoxResult.Cancel)
return;
// If "No", then we continue with the current known environment
}
try
{
// Check for the firmware first
// TODO: Remove this (and method) once DIC end-to-end logging becomes a thing
if (!await _env.DriveHasLatestFimrware())
{
System.Windows.MessageBox.Show($"DiscImageCreator has reported that drive {_env.Drive.Letter} is not updated to the most recent firmware. Please update the firmware for your drive and try again.", "Outdated Firmware", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
// Validate that the user explicitly wants an inactive drive to be considered for dumping
if (!_env.Drive.MarkedActive)
{
MessageBoxResult mbresult = System.Windows.MessageBox.Show("The currently selected drive does not appear to contain a disc! Are you sure you want to continue?", "Missing Disc", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
if (mbresult == MessageBoxResult.No || mbresult == MessageBoxResult.Cancel || mbresult == MessageBoxResult.None)
{
ViewModels.LoggerViewModel.VerboseLogLn("Dumping aborted!");
return;
}
}
// If a complete dump already exists
if (_env.FoundAllFiles())
{
MessageBoxResult mbresult = System.Windows.MessageBox.Show("A complete dump already exists! Are you sure you want to overwrite?", "Overwrite?", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
if (mbresult == MessageBoxResult.No || mbresult == MessageBoxResult.Cancel || mbresult == MessageBoxResult.None)
{
ViewModels.LoggerViewModel.VerboseLogLn("Dumping aborted!");
return;
}
}
StartStopButton.Text = Constants.StopDumping;
CopyProtectScanButton.Enabled = false;
StatusLabel.Text = "Beginning dumping process";
ViewModels.LoggerViewModel.VerboseLogLn("Starting dumping process..");
var progress = new Progress<Result>();
progress.ProgressChanged += ProgressUpdated;
Result result = await _env.StartDumping(progress);
StatusLabel.Text = result ? "Dumping complete!" : result.Message;
ViewModels.LoggerViewModel.VerboseLogLn(result ? "Dumping complete!" : result.Message);
}
catch
{
// No-op, we don't care what it was
}
finally
{
StartStopButton.Text = Constants.StartDumping;
CopyProtectScanButton.Enabled = true;
}
if (EjectWhenDoneCheckBox.Checked == true)
{
ViewModels.LoggerViewModel.VerboseLogLn($"Ejecting disc in drive {_env.Drive.Letter}");
_env.EjectDisc();
}
}
/// <summary>
/// Ensure information is consistent with the currently selected disc type
/// </summary>
private void EnsureDiscInformation()
{
// Get the current environment information
_env = DetermineEnvironment();
// Take care of null cases
if (_env.System == null)
_env.System = KnownSystem.NONE;
if (_env.Type == null)
_env.Type = MediaType.NONE;
// Get the status to write out
Result result = Validators.GetSupportStatus(_env.System, _env.Type);
StatusLabel.Text = result.Message;
// Set the index for the current disc type
SetCurrentDiscType();
StartStopButton.Enabled = result && (_drives != null && _drives.Count > 0 ? true : false);
// If we're in a type that doesn't support drive speeds
DriveSpeedComboBox.Enabled = _env.Type.DoesSupportDriveSpeed();
// If input params are not enabled, generate the full parameters from the environment
if (!ParametersTextBox.Enabled)
{
string generated = _env.GetFullParameters((int?)DriveSpeedComboBox.SelectedItem);
if (generated != null)
ParametersTextBox.Text = generated;
}
}
/// <summary>
/// Get the default output directory name from the currently selected drive
/// </summary>
private void GetOutputNames()
{
Drive drive = DriveLetterComboBox.SelectedItem as Drive;
//KnownSystem? systemType = SystemTypeComboBox.SelectedItem as KnownSystemComboBoxItem; // TODO: Add system as part of the output path
MediaType? mediaType = MediaTypeComboBox.SelectedItem as MediaType?;
OutputDirectoryTextBox.Text = Path.Combine(_options.DefaultOutputPath, drive?.VolumeLabel ?? string.Empty);
OutputFilenameTextBox.Text = (drive?.VolumeLabel ?? "disc") + (mediaType.Extension() ?? ".bin");
}
/// <summary>
/// Scan and show copy protection for the current disc
/// </summary>
private async void ScanAndShowProtection()
{
if (_env == null)
_env = DetermineEnvironment();
if (_env.Drive.Letter != default(char))
{
ViewModels.LoggerViewModel.VerboseLogLn("Scanning for copy protection in {0}", _env.Drive.Letter);
var tempContent = StatusLabel.Text;
StatusLabel.Text = "Scanning for copy protection... this might take a while!";
StartStopButton.Enabled = false;
DiscScanButton.Enabled = false;
CopyProtectScanButton.Enabled = false;
string protections = await Validators.RunProtectionScanOnPath(_env.Drive.Letter + ":\\");
if (!ViewModels.LoggerViewModel.WindowVisible)
System.Windows.MessageBox.Show(protections, "Detected Protection", MessageBoxButton.OK, MessageBoxImage.Information);
ViewModels.LoggerViewModel.VerboseLog("Detected the following protections in {0}:\r\n\r\n{1}", _env.Drive.Letter, protections);
StatusLabel.Text = tempContent;
StartStopButton.Enabled = true;
DiscScanButton.Enabled = true;
CopyProtectScanButton.Enabled = true;
}
}
/// <summary>
/// Set the drive speed based on reported maximum and user-defined option
/// </summary>
private void SetSupportedDriveSpeed()
{
// Set the drive speed list that's appropriate
var values = Constants.GetSpeedsForMediaType(_currentMediaType);
DriveSpeedComboBox.DataSource = values;
ViewModels.LoggerViewModel.VerboseLogLn("Supported media speeds: {0}", string.Join(",", values));
// Find the minimum set to compare against
int preferred = 100;
switch (_currentMediaType)
{
case MediaType.CDROM:
case MediaType.GDROM:
preferred = _options.PreferredDumpSpeedCD;
break;
case MediaType.DVD:
case MediaType.HDDVD:
case MediaType.NintendoGameCubeGameDisc:
case MediaType.NintendoWiiOpticalDisc:
preferred = _options.PreferredDumpSpeedDVD;
break;
case MediaType.BluRay:
preferred = _options.PreferredDumpSpeedBD;
break;
default:
preferred = _options.PreferredDumpSpeedCD;
break;
}
// Choose the lower of the two speeds between the allowed speeds and the user-defined one
// TODO: Inform more users about setting preferences in the settings so this comparison doesn't need to happen
int chosenSpeed = Math.Min(
values.Where(s => s <= values[values.Count / 2]).Last(),
preferred
);
// Set the selected speed
ViewModels.LoggerViewModel.VerboseLogLn("Setting drive speed to: {0}", chosenSpeed);
DriveSpeedComboBox.SelectedIndex = values.ToList().IndexOf(chosenSpeed);
}
/// <summary>
/// Cache the current disc type to internal variable
/// </summary>
private void CacheCurrentDiscType()
{
// Get the drive letter from the selected item
if (!(DriveLetterComboBox.SelectedItem is Drive drive) || drive.IsFloppy)
return;
// Get the current optical disc type
if (!_options.SkipMediaTypeDetection)
{
ViewModels.LoggerViewModel.VerboseLog("Trying to detect media type for drive {0}.. ", drive.Letter);
_currentMediaType = Validators.GetDiscType(drive.Letter);
ViewModels.LoggerViewModel.VerboseLogLn(_currentMediaType == null ? "unable to detect." : ("detected " + _currentMediaType.Name() + "."));
}
}
/// <summary>
/// Set the current disc type in the combo box
/// </summary>
private void SetCurrentDiscType()
{
// If we have an invalid current type, we don't care and return
if (_currentMediaType == null || _currentMediaType == MediaType.NONE)
return;
// Now set the selected item, if possible
int index = _mediaTypes.FindIndex(kvp => kvp.Value == _currentMediaType);
if (index != -1)
MediaTypeComboBox.SelectedIndex = index;
else
StatusLabel.Text = $"Disc of type '{Converters.LongName(_currentMediaType)}' found, but the current system does not support it!";
}
/// <summary>
/// Process the current custom parameters back into UI values
/// </summary>
private void ProcessCustomParameters()
{
_env.DICParameters = new Parameters(ParametersTextBox.Text);
int driveIndex = _drives.Select(d => d.Letter).ToList().IndexOf(_env.DICParameters.DriveLetter[0]);
if (driveIndex > -1)
DriveLetterComboBox.SelectedIndex = driveIndex;
int driveSpeed = _env.DICParameters.DriveSpeed ?? -1;
if (driveSpeed > 0)
DriveSpeedComboBox.SelectedIndex = ((IReadOnlyList<int>)(DriveSpeedComboBox.DataSource)).ToList().IndexOf(driveSpeed);
else
_env.DICParameters.DriveSpeed = (int?)DriveSpeedComboBox.SelectedValue;
string trimmedPath = _env.DICParameters.Filename?.Trim('"') ?? string.Empty;
string outputDirectory = Path.GetDirectoryName(trimmedPath);
string outputFilename = Path.GetFileName(trimmedPath);
if (!String.IsNullOrWhiteSpace(outputDirectory))
OutputDirectoryTextBox.Text = outputDirectory;
else
outputDirectory = OutputDirectoryTextBox.Text;
if (!String.IsNullOrWhiteSpace(outputFilename))
OutputFilenameTextBox.Text = outputFilename;
else
outputFilename = OutputFilenameTextBox.Text;
MediaType? mediaType = Converters.BaseCommmandToMediaType(_env.DICParameters.Command);
int mediaTypeIndex = _mediaTypes.IndexOf(mediaType);
if (mediaTypeIndex > -1)
MediaTypeComboBox.SelectedIndex = mediaTypeIndex;
}
#endregion
#region UI Helpers
/// <summary>
/// Get pixel coordinates based on DPI scaling
/// </summary>
/// <param name="bounds">Rectangle representing the bounds to transform</param>
/// <returns>Rectangle representing the scaled bounds</returns>
private Rectangle GetScaledCoordinates(Rectangle bounds)
{
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
{
return new Rectangle(
TransformCoordinate(bounds.Left, g.DpiX),
TransformCoordinate(bounds.Top, g.DpiY),
TransformCoordinate(bounds.Width, g.DpiX),
TransformCoordinate(bounds.Height, g.DpiY));
}
}
/// <summary>
/// Transform an individual coordinate using DPI scaling
/// </summary>
/// <param name="coord">Current integer coordinate</param>
/// <param name="dpi">DPI scaling factor</param>
/// <returns>Scaled integer coordinate</returns>
private int TransformCoordinate(int coord, float dpi)
{
return (int)(coord / ((double)dpi / 96));
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,565 +0,0 @@
namespace DICUI.Forms.Windows
{
partial class OptionsWindow
{
/// <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()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.pathsGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.DefaultOutputPathButton = new System.Windows.Forms.Button();
this.SubDumpPathButton = new System.Windows.Forms.Button();
this.discImageCreatorPathLabel = new System.Windows.Forms.Label();
this.subdumpPathLabel = new System.Windows.Forms.Label();
this.defaultOutputPathLabel = new System.Windows.Forms.Label();
this.DICPathTextBox = new System.Windows.Forms.TextBox();
this.SubDumpPathTextBox = new System.Windows.Forms.TextBox();
this.DefaultOutputPathTextBox = new System.Windows.Forms.TextBox();
this.DICPathButton = new System.Windows.Forms.Button();
this.preferredSpeedGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.DumpSpeedCDLabel = new System.Windows.Forms.Label();
this.DumpSpeedDVDLabel = new System.Windows.Forms.Label();
this.DumpSpeedBDLabel = new System.Windows.Forms.Label();
this.DumpSpeedCDSlider = new System.Windows.Forms.TrackBar();
this.DumpSpeedDVDSlider = new System.Windows.Forms.TrackBar();
this.DumpSpeedBDSlider = new System.Windows.Forms.TrackBar();
this.DumpSpeedCDTextBox = new System.Windows.Forms.TextBox();
this.DumpSpeedDVDTextBox = new System.Windows.Forms.TextBox();
this.DumpSpeedBDTextBox = new System.Windows.Forms.TextBox();
this.optionsGroupBox = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.QuietModeCheckBox = new System.Windows.Forms.CheckBox();
this.AutoScanCheckBox = new System.Windows.Forms.CheckBox();
this.ParanoidModeCheckBox = new System.Windows.Forms.CheckBox();
this.SkipDetectionCheckBox = new System.Windows.Forms.CheckBox();
this.C2RereadTimesTextBox = new System.Windows.Forms.TextBox();
this.C2RereadLabel = new System.Windows.Forms.Label();
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
this.AcceptButton = new System.Windows.Forms.Button();
this.CancelButton = new System.Windows.Forms.Button();
this.tableLayoutPanel1.SuspendLayout();
this.pathsGroupBox.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.preferredSpeedGroupBox.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedCDSlider)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedDVDSlider)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedBDSlider)).BeginInit();
this.optionsGroupBox.SuspendLayout();
this.tableLayoutPanel4.SuspendLayout();
this.tableLayoutPanel5.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.pathsGroupBox, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.preferredSpeedGroupBox, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.optionsGroupBox, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel5, 0, 3);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 12);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 150F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(475, 417);
this.tableLayoutPanel1.TabIndex = 0;
this.tableLayoutPanel1.UseWaitCursor = true;
//
// pathsGroupBox
//
this.pathsGroupBox.Controls.Add(this.tableLayoutPanel2);
this.pathsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.pathsGroupBox.Location = new System.Drawing.Point(3, 3);
this.pathsGroupBox.Name = "pathsGroupBox";
this.pathsGroupBox.Size = new System.Drawing.Size(469, 121);
this.pathsGroupBox.TabIndex = 0;
this.pathsGroupBox.TabStop = false;
this.pathsGroupBox.Text = "Paths";
this.pathsGroupBox.UseWaitCursor = true;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 3;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 29.41176F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.82353F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 11.76471F));
this.tableLayoutPanel2.Controls.Add(this.DefaultOutputPathButton, 2, 2);
this.tableLayoutPanel2.Controls.Add(this.SubDumpPathButton, 2, 1);
this.tableLayoutPanel2.Controls.Add(this.discImageCreatorPathLabel, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.subdumpPathLabel, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.defaultOutputPathLabel, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.DICPathTextBox, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.SubDumpPathTextBox, 1, 1);
this.tableLayoutPanel2.Controls.Add(this.DefaultOutputPathTextBox, 1, 2);
this.tableLayoutPanel2.Controls.Add(this.DICPathButton, 2, 0);
this.tableLayoutPanel2.Location = new System.Drawing.Point(6, 15);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 3;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(457, 100);
this.tableLayoutPanel2.TabIndex = 0;
this.tableLayoutPanel2.UseWaitCursor = true;
//
// DefaultOutputPathButton
//
this.DefaultOutputPathButton.Location = new System.Drawing.Point(405, 69);
this.DefaultOutputPathButton.Name = "DefaultOutputPathButton";
this.DefaultOutputPathButton.Size = new System.Drawing.Size(49, 23);
this.DefaultOutputPathButton.TabIndex = 8;
this.DefaultOutputPathButton.Text = "...";
this.DefaultOutputPathButton.UseVisualStyleBackColor = true;
this.DefaultOutputPathButton.UseWaitCursor = true;
this.DefaultOutputPathButton.Click += new System.EventHandler(this.BrowseForPathClick);
//
// SubDumpPathButton
//
this.SubDumpPathButton.Location = new System.Drawing.Point(405, 36);
this.SubDumpPathButton.Name = "SubDumpPathButton";
this.SubDumpPathButton.Size = new System.Drawing.Size(49, 23);
this.SubDumpPathButton.TabIndex = 7;
this.SubDumpPathButton.Text = "...";
this.SubDumpPathButton.UseVisualStyleBackColor = true;
this.SubDumpPathButton.UseWaitCursor = true;
this.SubDumpPathButton.Click += new System.EventHandler(this.BrowseForPathClick);
//
// discImageCreatorPathLabel
//
this.discImageCreatorPathLabel.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.discImageCreatorPathLabel.AutoSize = true;
this.discImageCreatorPathLabel.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.discImageCreatorPathLabel.Location = new System.Drawing.Point(15, 10);
this.discImageCreatorPathLabel.Name = "discImageCreatorPathLabel";
this.discImageCreatorPathLabel.Size = new System.Drawing.Size(116, 13);
this.discImageCreatorPathLabel.TabIndex = 0;
this.discImageCreatorPathLabel.Text = "DiscImageCreator Path";
//
// subdumpPathLabel
//
this.subdumpPathLabel.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.subdumpPathLabel.AutoSize = true;
this.subdumpPathLabel.Location = new System.Drawing.Point(56, 43);
this.subdumpPathLabel.Name = "subdumpPathLabel";
this.subdumpPathLabel.Size = new System.Drawing.Size(75, 13);
this.subdumpPathLabel.TabIndex = 1;
this.subdumpPathLabel.Text = "subdump Path";
this.subdumpPathLabel.UseWaitCursor = true;
//
// defaultOutputPathLabel
//
this.defaultOutputPathLabel.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.defaultOutputPathLabel.AutoSize = true;
this.defaultOutputPathLabel.Location = new System.Drawing.Point(30, 76);
this.defaultOutputPathLabel.Name = "defaultOutputPathLabel";
this.defaultOutputPathLabel.Size = new System.Drawing.Size(101, 13);
this.defaultOutputPathLabel.TabIndex = 2;
this.defaultOutputPathLabel.Text = "Default Output Path";
this.defaultOutputPathLabel.UseWaitCursor = true;
//
// DICPathTextBox
//
this.DICPathTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.DICPathTextBox.Location = new System.Drawing.Point(138, 6);
this.DICPathTextBox.Name = "DICPathTextBox";
this.DICPathTextBox.Size = new System.Drawing.Size(259, 20);
this.DICPathTextBox.TabIndex = 3;
this.DICPathTextBox.UseWaitCursor = true;
//
// SubDumpPathTextBox
//
this.SubDumpPathTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.SubDumpPathTextBox.Location = new System.Drawing.Point(138, 39);
this.SubDumpPathTextBox.Name = "SubDumpPathTextBox";
this.SubDumpPathTextBox.Size = new System.Drawing.Size(259, 20);
this.SubDumpPathTextBox.TabIndex = 4;
this.SubDumpPathTextBox.UseWaitCursor = true;
//
// DefaultOutputPathTextBox
//
this.DefaultOutputPathTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.DefaultOutputPathTextBox.Location = new System.Drawing.Point(138, 73);
this.DefaultOutputPathTextBox.Name = "DefaultOutputPathTextBox";
this.DefaultOutputPathTextBox.Size = new System.Drawing.Size(259, 20);
this.DefaultOutputPathTextBox.TabIndex = 5;
this.DefaultOutputPathTextBox.UseWaitCursor = true;
//
// DICPathButton
//
this.DICPathButton.Location = new System.Drawing.Point(405, 3);
this.DICPathButton.Name = "DICPathButton";
this.DICPathButton.Size = new System.Drawing.Size(49, 23);
this.DICPathButton.TabIndex = 6;
this.DICPathButton.Text = "...";
this.DICPathButton.UseVisualStyleBackColor = true;
this.DICPathButton.UseWaitCursor = true;
this.DICPathButton.Click += new System.EventHandler(this.BrowseForPathClick);
//
// preferredSpeedGroupBox
//
this.preferredSpeedGroupBox.Controls.Add(this.tableLayoutPanel3);
this.preferredSpeedGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.preferredSpeedGroupBox.Location = new System.Drawing.Point(3, 130);
this.preferredSpeedGroupBox.Name = "preferredSpeedGroupBox";
this.preferredSpeedGroupBox.Size = new System.Drawing.Size(469, 144);
this.preferredSpeedGroupBox.TabIndex = 1;
this.preferredSpeedGroupBox.TabStop = false;
this.preferredSpeedGroupBox.Text = "Preferred Dump Speed";
this.preferredSpeedGroupBox.UseWaitCursor = true;
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 3;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F));
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedCDLabel, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedDVDLabel, 0, 1);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedBDLabel, 0, 2);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedCDSlider, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedDVDSlider, 1, 1);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedBDSlider, 1, 2);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedCDTextBox, 2, 0);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedDVDTextBox, 2, 1);
this.tableLayoutPanel3.Controls.Add(this.DumpSpeedBDTextBox, 2, 2);
this.tableLayoutPanel3.Location = new System.Drawing.Point(6, 19);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 3;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(457, 119);
this.tableLayoutPanel3.TabIndex = 0;
this.tableLayoutPanel3.UseWaitCursor = true;
//
// DumpSpeedCDLabel
//
this.DumpSpeedCDLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.DumpSpeedCDLabel.AutoSize = true;
this.DumpSpeedCDLabel.Location = new System.Drawing.Point(3, 13);
this.DumpSpeedCDLabel.Name = "DumpSpeedCDLabel";
this.DumpSpeedCDLabel.Size = new System.Drawing.Size(50, 13);
this.DumpSpeedCDLabel.TabIndex = 0;
this.DumpSpeedCDLabel.Text = "CD-ROM";
this.DumpSpeedCDLabel.UseWaitCursor = true;
//
// DumpSpeedDVDLabel
//
this.DumpSpeedDVDLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.DumpSpeedDVDLabel.AutoSize = true;
this.DumpSpeedDVDLabel.Location = new System.Drawing.Point(3, 52);
this.DumpSpeedDVDLabel.Name = "DumpSpeedDVDLabel";
this.DumpSpeedDVDLabel.Size = new System.Drawing.Size(58, 13);
this.DumpSpeedDVDLabel.TabIndex = 1;
this.DumpSpeedDVDLabel.Text = "DVD-ROM";
this.DumpSpeedDVDLabel.UseWaitCursor = true;
//
// DumpSpeedBDLabel
//
this.DumpSpeedBDLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.DumpSpeedBDLabel.AutoSize = true;
this.DumpSpeedBDLabel.Location = new System.Drawing.Point(3, 92);
this.DumpSpeedBDLabel.Name = "DumpSpeedBDLabel";
this.DumpSpeedBDLabel.Size = new System.Drawing.Size(50, 13);
this.DumpSpeedBDLabel.TabIndex = 2;
this.DumpSpeedBDLabel.Text = "BD-ROM";
this.DumpSpeedBDLabel.UseWaitCursor = true;
//
// DumpSpeedCDSlider
//
this.DumpSpeedCDSlider.Dock = System.Windows.Forms.DockStyle.Fill;
this.DumpSpeedCDSlider.Location = new System.Drawing.Point(83, 3);
this.DumpSpeedCDSlider.Name = "DumpSpeedCDSlider";
this.DumpSpeedCDSlider.Size = new System.Drawing.Size(331, 33);
this.DumpSpeedCDSlider.TabIndex = 3;
this.DumpSpeedCDSlider.UseWaitCursor = true;
this.DumpSpeedCDSlider.Value = 1;
this.DumpSpeedCDSlider.Scroll += new System.EventHandler(this.SliderChanged);
//
// DumpSpeedDVDSlider
//
this.DumpSpeedDVDSlider.Dock = System.Windows.Forms.DockStyle.Fill;
this.DumpSpeedDVDSlider.Location = new System.Drawing.Point(83, 42);
this.DumpSpeedDVDSlider.Name = "DumpSpeedDVDSlider";
this.DumpSpeedDVDSlider.Size = new System.Drawing.Size(331, 33);
this.DumpSpeedDVDSlider.TabIndex = 4;
this.DumpSpeedDVDSlider.UseWaitCursor = true;
this.DumpSpeedDVDSlider.Value = 1;
this.DumpSpeedDVDSlider.Scroll += new System.EventHandler(this.SliderChanged);
//
// DumpSpeedBDSlider
//
this.DumpSpeedBDSlider.Dock = System.Windows.Forms.DockStyle.Fill;
this.DumpSpeedBDSlider.Location = new System.Drawing.Point(83, 81);
this.DumpSpeedBDSlider.Name = "DumpSpeedBDSlider";
this.DumpSpeedBDSlider.Size = new System.Drawing.Size(331, 35);
this.DumpSpeedBDSlider.TabIndex = 5;
this.DumpSpeedBDSlider.UseWaitCursor = true;
this.DumpSpeedBDSlider.Value = 1;
this.DumpSpeedBDSlider.Scroll += new System.EventHandler(this.SliderChanged);
//
// DumpSpeedCDTextBox
//
this.DumpSpeedCDTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.DumpSpeedCDTextBox.Enabled = false;
this.DumpSpeedCDTextBox.Location = new System.Drawing.Point(420, 9);
this.DumpSpeedCDTextBox.Name = "DumpSpeedCDTextBox";
this.DumpSpeedCDTextBox.ReadOnly = true;
this.DumpSpeedCDTextBox.Size = new System.Drawing.Size(34, 20);
this.DumpSpeedCDTextBox.TabIndex = 6;
this.DumpSpeedCDTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.DumpSpeedCDTextBox.UseWaitCursor = true;
//
// DumpSpeedDVDTextBox
//
this.DumpSpeedDVDTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.DumpSpeedDVDTextBox.Enabled = false;
this.DumpSpeedDVDTextBox.Location = new System.Drawing.Point(420, 48);
this.DumpSpeedDVDTextBox.Name = "DumpSpeedDVDTextBox";
this.DumpSpeedDVDTextBox.ReadOnly = true;
this.DumpSpeedDVDTextBox.Size = new System.Drawing.Size(34, 20);
this.DumpSpeedDVDTextBox.TabIndex = 7;
this.DumpSpeedDVDTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.DumpSpeedDVDTextBox.UseWaitCursor = true;
//
// DumpSpeedBDTextBox
//
this.DumpSpeedBDTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.DumpSpeedBDTextBox.Enabled = false;
this.DumpSpeedBDTextBox.Location = new System.Drawing.Point(420, 88);
this.DumpSpeedBDTextBox.Name = "DumpSpeedBDTextBox";
this.DumpSpeedBDTextBox.ReadOnly = true;
this.DumpSpeedBDTextBox.Size = new System.Drawing.Size(34, 20);
this.DumpSpeedBDTextBox.TabIndex = 8;
this.DumpSpeedBDTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.DumpSpeedBDTextBox.UseWaitCursor = true;
//
// optionsGroupBox
//
this.optionsGroupBox.Controls.Add(this.tableLayoutPanel4);
this.optionsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.optionsGroupBox.Location = new System.Drawing.Point(3, 280);
this.optionsGroupBox.Name = "optionsGroupBox";
this.optionsGroupBox.Size = new System.Drawing.Size(469, 94);
this.optionsGroupBox.TabIndex = 2;
this.optionsGroupBox.TabStop = false;
this.optionsGroupBox.Text = "Options";
//
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 4;
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel4.Controls.Add(this.QuietModeCheckBox, 0, 0);
this.tableLayoutPanel4.Controls.Add(this.AutoScanCheckBox, 0, 1);
this.tableLayoutPanel4.Controls.Add(this.ParanoidModeCheckBox, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.SkipDetectionCheckBox, 2, 1);
this.tableLayoutPanel4.Controls.Add(this.C2RereadTimesTextBox, 3, 0);
this.tableLayoutPanel4.Controls.Add(this.C2RereadLabel, 2, 0);
this.tableLayoutPanel4.Location = new System.Drawing.Point(6, 19);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 2;
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.Size = new System.Drawing.Size(457, 69);
this.tableLayoutPanel4.TabIndex = 0;
//
// QuietModeCheckBox
//
this.QuietModeCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.QuietModeCheckBox.AutoSize = true;
this.QuietModeCheckBox.Location = new System.Drawing.Point(3, 8);
this.QuietModeCheckBox.Name = "QuietModeCheckBox";
this.QuietModeCheckBox.Size = new System.Drawing.Size(81, 17);
this.QuietModeCheckBox.TabIndex = 0;
this.QuietModeCheckBox.Text = "Quiet Mode";
this.QuietModeCheckBox.UseVisualStyleBackColor = true;
//
// AutoScanCheckBox
//
this.AutoScanCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.AutoScanCheckBox.AutoSize = true;
this.tableLayoutPanel4.SetColumnSpan(this.AutoScanCheckBox, 2);
this.AutoScanCheckBox.Location = new System.Drawing.Point(3, 43);
this.AutoScanCheckBox.Name = "AutoScanCheckBox";
this.AutoScanCheckBox.Size = new System.Drawing.Size(182, 17);
this.AutoScanCheckBox.TabIndex = 1;
this.AutoScanCheckBox.Text = "Automatically Scan for Protection";
this.AutoScanCheckBox.UseVisualStyleBackColor = true;
//
// ParanoidModeCheckBox
//
this.ParanoidModeCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.ParanoidModeCheckBox.AutoSize = true;
this.ParanoidModeCheckBox.Location = new System.Drawing.Point(117, 8);
this.ParanoidModeCheckBox.Name = "ParanoidModeCheckBox";
this.ParanoidModeCheckBox.Size = new System.Drawing.Size(98, 17);
this.ParanoidModeCheckBox.TabIndex = 2;
this.ParanoidModeCheckBox.Text = "Paranoid Mode";
this.ParanoidModeCheckBox.UseVisualStyleBackColor = true;
//
// SkipDetectionCheckBox
//
this.SkipDetectionCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.SkipDetectionCheckBox.AutoSize = true;
this.tableLayoutPanel4.SetColumnSpan(this.SkipDetectionCheckBox, 2);
this.SkipDetectionCheckBox.Location = new System.Drawing.Point(231, 43);
this.SkipDetectionCheckBox.Name = "SkipDetectionCheckBox";
this.SkipDetectionCheckBox.Size = new System.Drawing.Size(155, 17);
this.SkipDetectionCheckBox.TabIndex = 3;
this.SkipDetectionCheckBox.Text = "Skip Media Type Detection";
this.SkipDetectionCheckBox.UseVisualStyleBackColor = true;
//
// C2RereadTimesTextBox
//
this.C2RereadTimesTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
this.C2RereadTimesTextBox.Location = new System.Drawing.Point(349, 7);
this.C2RereadTimesTextBox.Name = "C2RereadTimesTextBox";
this.C2RereadTimesTextBox.Size = new System.Drawing.Size(100, 20);
this.C2RereadTimesTextBox.TabIndex = 4;
//
// C2RereadLabel
//
this.C2RereadLabel.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.C2RereadLabel.AutoSize = true;
this.C2RereadLabel.Location = new System.Drawing.Point(250, 10);
this.C2RereadLabel.Name = "C2RereadLabel";
this.C2RereadLabel.Size = new System.Drawing.Size(89, 13);
this.C2RereadLabel.TabIndex = 5;
this.C2RereadLabel.Text = "C2 Reread Times";
//
// tableLayoutPanel5
//
this.tableLayoutPanel5.ColumnCount = 2;
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.Controls.Add(this.AcceptButton, 0, 0);
this.tableLayoutPanel5.Controls.Add(this.CancelButton, 1, 0);
this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 380);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
this.tableLayoutPanel5.RowCount = 1;
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel5.Size = new System.Drawing.Size(469, 34);
this.tableLayoutPanel5.TabIndex = 3;
//
// AcceptButton
//
this.AcceptButton.Anchor = System.Windows.Forms.AnchorStyles.None;
this.AcceptButton.Location = new System.Drawing.Point(79, 5);
this.AcceptButton.Name = "AcceptButton";
this.AcceptButton.Size = new System.Drawing.Size(75, 23);
this.AcceptButton.TabIndex = 0;
this.AcceptButton.Text = "Accept";
this.AcceptButton.UseVisualStyleBackColor = true;
this.AcceptButton.Click += new System.EventHandler(this.OnAcceptClick);
//
// CancelButton
//
this.CancelButton.Anchor = System.Windows.Forms.AnchorStyles.None;
this.CancelButton.Location = new System.Drawing.Point(314, 5);
this.CancelButton.Name = "CancelButton";
this.CancelButton.Size = new System.Drawing.Size(75, 23);
this.CancelButton.TabIndex = 1;
this.CancelButton.Text = "Cancel";
this.CancelButton.UseVisualStyleBackColor = true;
this.CancelButton.Click += new System.EventHandler(this.OnCancelClick);
//
// OptionsWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(499, 441);
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "OptionsWindow";
this.ShowIcon = false;
this.Text = "Options";
this.UseWaitCursor = true;
this.tableLayoutPanel1.ResumeLayout(false);
this.pathsGroupBox.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.preferredSpeedGroupBox.ResumeLayout(false);
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedCDSlider)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedDVDSlider)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.DumpSpeedBDSlider)).EndInit();
this.optionsGroupBox.ResumeLayout(false);
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
this.tableLayoutPanel5.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.GroupBox pathsGroupBox;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label discImageCreatorPathLabel;
private System.Windows.Forms.Label subdumpPathLabel;
private System.Windows.Forms.Label defaultOutputPathLabel;
private System.Windows.Forms.TextBox DICPathTextBox;
private System.Windows.Forms.TextBox SubDumpPathTextBox;
private System.Windows.Forms.TextBox DefaultOutputPathTextBox;
private System.Windows.Forms.Button DICPathButton;
private System.Windows.Forms.Button DefaultOutputPathButton;
private System.Windows.Forms.Button SubDumpPathButton;
private System.Windows.Forms.GroupBox preferredSpeedGroupBox;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.Label DumpSpeedCDLabel;
private System.Windows.Forms.Label DumpSpeedDVDLabel;
private System.Windows.Forms.Label DumpSpeedBDLabel;
private System.Windows.Forms.TrackBar DumpSpeedCDSlider;
private System.Windows.Forms.TrackBar DumpSpeedDVDSlider;
private System.Windows.Forms.TrackBar DumpSpeedBDSlider;
private System.Windows.Forms.TextBox DumpSpeedCDTextBox;
private System.Windows.Forms.TextBox DumpSpeedDVDTextBox;
private System.Windows.Forms.TextBox DumpSpeedBDTextBox;
private System.Windows.Forms.GroupBox optionsGroupBox;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private System.Windows.Forms.CheckBox QuietModeCheckBox;
private System.Windows.Forms.CheckBox AutoScanCheckBox;
private System.Windows.Forms.CheckBox ParanoidModeCheckBox;
private System.Windows.Forms.CheckBox SkipDetectionCheckBox;
private System.Windows.Forms.TextBox C2RereadTimesTextBox;
private System.Windows.Forms.Label C2RereadLabel;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
private System.Windows.Forms.Button AcceptButton;
private System.Windows.Forms.Button CancelButton;
}
}

View File

@@ -1,179 +0,0 @@
using System;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
namespace DICUI.Forms.Windows
{
/// <summary>
/// Interaction logic for OptionsWindow
/// </summary>
public partial class OptionsWindow : Form
{
private readonly MainWindow _mainWindow;
private readonly Options _options;
public OptionsWindow(MainWindow mainWindow, Options options)
{
InitializeComponent();
_mainWindow = mainWindow;
_options = options;
// Create data sets
DumpSpeedCDSlider.Minimum = (int)Constants.SpeedsForCDAsCollection.First();
DumpSpeedCDSlider.Maximum = (int)Constants.SpeedsForCDAsCollection.Last();
DumpSpeedDVDSlider.Minimum = (int)Constants.SpeedsForDVDAsCollection.First();
DumpSpeedDVDSlider.Maximum = (int)Constants.SpeedsForDVDAsCollection.Last();
DumpSpeedBDSlider.Minimum = (int)Constants.SpeedsForBDAsCollection.First();
DumpSpeedBDSlider.Maximum = (int)Constants.SpeedsForBDAsCollection.Last();
// Select the current values
DumpSpeedCDSlider.Value = _options.PreferredDumpSpeedCD;
DumpSpeedDVDSlider.Value = _options.PreferredDumpSpeedDVD;
DumpSpeedBDSlider.Value = _options.PreferredDumpSpeedBD;
// Create textbox outputs
DumpSpeedCDTextBox.Text = DumpSpeedCDSlider.Value.ToString();
DumpSpeedDVDTextBox.Text = DumpSpeedDVDSlider.Value.ToString();
DumpSpeedBDTextBox.Text = DumpSpeedBDSlider.Value.ToString();
// Set options
QuietModeCheckBox.Checked = _options.QuietMode;
ParanoidModeCheckBox.Checked = _options.ParanoidMode;
C2RereadTimesTextBox.Text = _options.RereadAmountForC2.ToString();
AutoScanCheckBox.Checked = _options.ScanForProtection;
SkipDetectionCheckBox.Checked = _options.SkipMediaTypeDetection;
}
private OpenFileDialog CreateOpenFileDialog()
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
dialog.Filter = "Executables (*.exe)|*.exe";
dialog.FilterIndex = 0;
dialog.RestoreDirectory = true;
return dialog;
}
private FolderBrowserDialog CreateFolderBrowserDialog()
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
return dialog;
}
private string[] PathSettings()
{
string[] pathSettings = { "DefaultOutputPath", "DICPath", "SubDumpPath" };
return pathSettings;
}
private TextBox TextBoxForPathSetting(string name)
{
switch (name)
{
case "DICPath":
return DICPathTextBox;
case "SubDumpPath":
return SubDumpPathTextBox;
case "DefaultOutputPath":
return DefaultOutputPathTextBox;
default:
return null;
}
}
private void BrowseForPathClick(object sender, EventArgs e)
{
Button button = sender as Button;
// strips button prefix to obtain the setting name
string pathSettingName = button.Name.Substring(0, button.Name.IndexOf("Button"));
// TODO: hack for now, then we'll see
bool shouldBrowseForPath = pathSettingName == "DefaultOutputPath";
CommonDialog dialog = shouldBrowseForPath ? (CommonDialog)CreateFolderBrowserDialog() : CreateOpenFileDialog();
using (dialog)
{
DialogResult result = dialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
string path;
bool exists;
if (shouldBrowseForPath)
{
path = (dialog as FolderBrowserDialog).SelectedPath;
exists = Directory.Exists(path);
}
else
{
path = (dialog as OpenFileDialog).FileName;
exists = File.Exists(path);
}
if (exists)
TextBoxForPathSetting(pathSettingName).Text = path;
else
{
System.Windows.MessageBox.Show(
"Specified path doesn't exists!",
"Error",
MessageBoxButton.OK,
MessageBoxImage.Error
);
}
}
}
}
public void RefreshSettings()
{
Array.ForEach(PathSettings(), setting => TextBoxForPathSetting(setting).Text = _options.Get(setting));
DumpSpeedCDSlider.Value = _options.PreferredDumpSpeedCD;
DumpSpeedDVDSlider.Value = _options.PreferredDumpSpeedDVD;
DumpSpeedBDSlider.Value = _options.PreferredDumpSpeedBD;
}
#region Event Handlers
private void SliderChanged(object sender, EventArgs e)
{
DumpSpeedCDTextBox.Text = DumpSpeedCDSlider.Value.ToString();
DumpSpeedDVDTextBox.Text = DumpSpeedDVDSlider.Value.ToString();
DumpSpeedBDTextBox.Text = DumpSpeedBDSlider.Value.ToString();
}
private void OnAcceptClick(object sender, EventArgs e)
{
Array.ForEach(PathSettings(), setting => _options.Set(setting, TextBoxForPathSetting(setting).Text));
_options.PreferredDumpSpeedCD = Convert.ToInt32(DumpSpeedCDSlider.Value);
_options.PreferredDumpSpeedDVD = Convert.ToInt32(DumpSpeedDVDSlider.Value);
_options.PreferredDumpSpeedBD = Convert.ToInt32(DumpSpeedBDSlider.Value);
_options.QuietMode = QuietModeCheckBox.Checked;
_options.ParanoidMode = ParanoidModeCheckBox.Checked;
_options.RereadAmountForC2 = Convert.ToInt32(C2RereadTimesTextBox.Text);
_options.ScanForProtection = AutoScanCheckBox.Checked;
_options.SkipMediaTypeDetection = SkipDetectionCheckBox.Checked;
_options.Save();
Hide();
_mainWindow.OnOptionsUpdated();
}
private void OnCancelClick(object sender, EventArgs e)
{
// just hide the window and don't care
Hide();
}
#endregion
}
}

View File

@@ -1,123 +0,0 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2036
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DICUI", "DICUI\DICUI.csproj", "{7B1B75EB-8940-466F-BD51-76471A57F9BE}"
EndProject
@@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DICUI.Test", "DICUI.Test\DI
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DICUI.Library", "DICUI.Library\DICUI.Library.csproj", "{51AB0928-13F9-44BF-A407-B6957A43A056}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DICUI.Forms", "DICUI.Forms\DICUI.Forms.csproj", "{A6719A99-BF0E-4637-9A8E-CB38B1E16971}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DICUI.Check", "DICUI.Check\DICUI.Check.csproj", "{8CFDE289-E171-4D49-A40D-5293265C1253}"
EndProject
Global
@@ -31,10 +29,6 @@ Global
{51AB0928-13F9-44BF-A407-B6957A43A056}.Debug|Any CPU.Build.0 = Debug|Any CPU
{51AB0928-13F9-44BF-A407-B6957A43A056}.Release|Any CPU.ActiveCfg = Release|Any CPU
{51AB0928-13F9-44BF-A407-B6957A43A056}.Release|Any CPU.Build.0 = Release|Any CPU
{A6719A99-BF0E-4637-9A8E-CB38B1E16971}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6719A99-BF0E-4637-9A8E-CB38B1E16971}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A6719A99-BF0E-4637-9A8E-CB38B1E16971}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6719A99-BF0E-4637-9A8E-CB38B1E16971}.Release|Any CPU.Build.0 = Release|Any CPU
{8CFDE289-E171-4D49-A40D-5293265C1253}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CFDE289-E171-4D49-A40D-5293265C1253}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CFDE289-E171-4D49-A40D-5293265C1253}.Release|Any CPU.ActiveCfg = Release|Any CPU

View File

@@ -35,20 +35,14 @@ after_build:
- ps: appveyor DownloadFile https://github.com/saramibreak/DiscImageCreator/files/3008503/DiscImageCreator_20190326.zip
- ps: appveyor DownloadFile http://www.rawdump.net/tools/subdump_fua_0x28.zip
- 7z e DiscImageCreator_20190326.zip -oDICUI\bin\Debug\Programs Release_ANSI\*
- 7z e DiscImageCreator_20190326.zip -oDICUI.Forms\bin\Debug\Programs Release_ANSI\*
- 7z e subdump_fua_0x28.zip -oDICUI\bin\Debug *
- 7z e subdump_fua_0x28.zip -oDICUI.Forms\bin\Debug *
- mv DICUI\bin\Debug\subdump_fua_0x28.exe DICUI\bin\Debug\subdump.exe
- mv DICUI.Forms\bin\Debug\subdump_fua_0x28.exe DICUI.Forms\bin\Debug\subdump.exe
- 7z a DICUI.zip DICUI\bin\Debug\*
- 7z a DICUI-Winforms.zip DICUI.Forms\bin\Debug\*
- 7z a DICUI-Check.zip DICUI.Check\bin\Debug\*
# artifact linking
artifacts:
- path: DICUI.zip
name: DICUI
- path: DICUI-Winforms.zip
name: DICUI Winforms
- path: DICUI-Check.zip
name: DICUI Check