Rename solution, project, files and namespaces.

This commit is contained in:
2018-02-23 02:14:58 +00:00
commit 189e889df7
21 changed files with 10458 additions and 0 deletions

145
ChangeLog Normal file
View File

@@ -0,0 +1,145 @@
* packages.config:
* osrepodbmgr.Eto.csproj:
Updated nuget packages.
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
* dlgMetadata.xeto.cs:
Corrected progress bars when value is outside of int bounds.
* dlgMetadata.xeto:
* dlgMetadata.xeto.cs:
* dlgOpticalDisc.xeto:
* dlgBlockMedia.xeto.cs:
* dlgOpticalDisc.xeto.cs:
Updated DIC and Metadata code.
2017-05-21 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto.cs:
* dlgOpticalDisc.xeto.cs:
Corrected some NULL exceptions on GUI.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto.cs:
Don't readd delegates every time.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto:
* frmMain.xeto:
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
* packages.config:
* dlgSettings.xeto.cs:
Refactor: Format document.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
Corrected delegate.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto:
* frmMain.xeto:
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
Added status fields.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto.cs:
* dlgBlockMedia.xeto:
* dlgBlockMedia.xeto.cs:
* dlgOpticalDisc.xeto.cs:
Corrected GUI behaviour.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto:
* dlgHelp.xeto:
* frmMain.xeto:
* dlgMetadata.xeto:
* dlgSettings.xeto:
* dlgFilesystem.xeto:
Added window titles.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
Do not color OS tables. Has no sense to be on the opaque
repo.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto:
* frmMain.xeto.cs:
Added code to clean database and repository.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto.cs:
Make sure the OnBtnPopulateFilesClicked() is called.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto:
* frmMain.xeto.cs:
Added an option to scan all pending files with clamd.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
Corrected GUI behaviour.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto.cs:
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto.cs:
Added progress messages to clamd core.
2017-05-19 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto.cs:
* dlgSettings.xeto:
* dlgSettings.xeto.cs:
Added support for VirusTotal.
2017-05-18 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto:
* frmMain.xeto.cs:
* dlgSettings.xeto:
* dlgSettings.xeto.cs:
Added support for clamd scanning.
2017-05-18 Natalia Portillo <claunia@claunia.com>
* dlgAdd.xeto:
* frmMain.xeto:
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
Added support for marking/unmarking/detecting cracks.
2017-05-18 Natalia Portillo <claunia@claunia.com>
* frmMain.xeto:
* dlgAdd.xeto.cs:
* frmMain.xeto.cs:
2017-05-18 Natalia Portillo <claunia@claunia.com>
* dlgSettings.xeto.cs:
If program files folder does not exist do not try to create
an Uri from null.

View File

@@ -0,0 +1,53 @@
//
// Author:
// Natalia Portillo claunia@claunia.com
//
// Copyright (c) 2017, © Claunia.com
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the distribution.
// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
using System.Reflection;
using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("apprepodbmgr.Eto")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Claunia.com")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("© Claunia.com")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.*")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]

163
WrappersForEto.cs Normal file
View File

@@ -0,0 +1,163 @@
//
// Author:
// Natalia Portillo claunia@claunia.com
//
// Copyright (c) 2017, © Claunia.com
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the distribution.
// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
using apprepodbmgr.Core;
using Schemas;
namespace apprepodbmgr.Eto
{
class DBEntryForEto
{
DbEntry _item;
public DBEntryForEto(DbEntry item)
{
_item = item;
}
public long id
{
get { return _item.Id; }
set { }
}
public string developer
{
get { return _item.Developer; }
set { }
}
public string product
{
get { return _item.Product; }
set { }
}
public string version
{
get { return _item.Version; }
set { }
}
public string languages
{
get { return _item.Languages; }
set { }
}
public string architecture
{
get { return _item.Architecture; }
set { }
}
public string machine
{
get { return _item.Machine; }
set { }
}
public string format
{
get { return _item.Format; }
set { }
}
public string description
{
get { return _item.Description; }
set { }
}
public bool oem
{
get { return _item.Oem; }
set { }
}
public bool upgrade
{
get { return _item.Upgrade; }
set { }
}
public bool update
{
get { return _item.Update; }
set { }
}
public bool source
{
get { return _item.Source; }
set { }
}
public bool files
{
get { return _item.Files; }
set { }
}
public bool netinstall
{
get { return _item.Netinstall; }
set { }
}
public byte[] xml
{
get { return _item.Xml; }
set { }
}
public byte[] json
{
get { return _item.Json; }
set { }
}
public string mdid
{
get { return _item.Mdid; }
set { }
}
public DbEntry original
{
get { return _item; }
set { }
}
}
class StringEntry
{
public string str { get; set; }
}
class BarcodeEntry
{
public string code { get; set; }
public BarcodeTypeType type { get; set; }
}
class DiscEntry
{
public string path { get; set; }
public OpticalDiscType disc { get; set; }
}
class DiskEntry
{
public string path { get; set; }
public BlockMediaType disk { get; set; }
}
}

95
apprepodbmgr.Eto.csproj Normal file
View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E805559F-89AE-47B4-926D-5B63A4F3A123}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>apprepodbmgr.Eto</RootNamespace>
<AssemblyName>apprepodbmgr.Eto</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="frmMain.xeto.cs">
<DependentUpon>frmMain.xeto</DependentUpon>
</Compile>
<Compile Include="dlgHelp.xeto.cs">
<DependentUpon>dlgHelp.xeto</DependentUpon>
</Compile>
<Compile Include="dlgSettings.xeto.cs">
<DependentUpon>dlgSettings.xeto</DependentUpon>
</Compile>
<Compile Include="dlgAdd.xeto.cs">
<DependentUpon>dlgAdd.xeto</DependentUpon>
</Compile>
<Compile Include="dlgMetadata.xeto.cs">
<DependentUpon>dlgMetadata.xeto</DependentUpon>
</Compile>
<Compile Include="dlgFilesystem.xeto.cs">
<DependentUpon>dlgFilesystem.xeto</DependentUpon>
</Compile>
<Compile Include="dlgBlockMedia.xeto.cs">
<DependentUpon>dlgBlockMedia.xeto</DependentUpon>
</Compile>
<Compile Include="dlgOpticalDisc.xeto.cs">
<DependentUpon>dlgOpticalDisc.xeto</DependentUpon>
</Compile>
<Compile Include="WrappersForEto.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="Eto">
<HintPath>..\packages\Eto.Forms.2.3.0\lib\net45\Eto.dll</HintPath>
</Reference>
<Reference Include="Eto.Serialization.Xaml">
<HintPath>..\packages\Eto.Serialization.Xaml.2.3.0\lib\net45\Eto.Serialization.Xaml.dll</HintPath>
</Reference>
<Reference Include="Portable.Xaml, Version=0.15.6458.140, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Portable.Xaml.0.17.0\lib\portable-net45+win8+wpa81+wp8\Portable.Xaml.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmMain.xeto" />
<EmbeddedResource Include="dlgHelp.xeto" />
<EmbeddedResource Include="dlgSettings.xeto" />
<EmbeddedResource Include="dlgAdd.xeto" />
<EmbeddedResource Include="dlgMetadata.xeto" />
<EmbeddedResource Include="dlgFilesystem.xeto" />
<EmbeddedResource Include="dlgBlockMedia.xeto" />
<EmbeddedResource Include="dlgOpticalDisc.xeto" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\apprepodbmgr.Core\apprepodbmgr.Core.csproj">
<Project>{076D5C4D-9601-4164-B979-0DABACB56BB8}</Project>
<Name>apprepodbmgr.Core</Name>
</ProjectReference>
<ProjectReference Include="..\DiscImageChef\DiscImageChef.Metadata\DiscImageChef.Metadata.csproj">
<Project>{9F213318-5CB8-4066-A757-074489C9F818}</Project>
<Name>DiscImageChef.Metadata</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

159
dlgAdd.xeto Normal file
View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="544" Width="857" Closing="OnDeleteEvent" Resizable="True" Title="Add operating system">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Developer</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtDeveloper" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Product</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtProduct" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Version</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtVersion" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Languages</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtLanguages" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Architecture</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtArchitecture" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Machine</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtMachine" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Format</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtFormat" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Description</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDescription" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Left">
<CheckBox ID="chkOem">oem</CheckBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Right">
<CheckBox ID="chkUpdate">update</CheckBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Left">
<CheckBox ID="chkUpgrade">upgrade</CheckBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Right">
<CheckBox ID="chkFiles">files</CheckBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Left">
<CheckBox ID="chkSource">source</CheckBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Right">
<CheckBox ID="chkNetinstall">netinstall</CheckBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TabControl>
<TabPage Text="Files">
<GridView ID="treeFiles" SelectionChanged="treeFilesSelectionChanged" />
</TabPage>
<TabPage Text="OSes" ID="tabOSes" Visible="False">
<GridView ID="treeOSes" />
</TabPage>
</TabControl>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblStatus" Visible="False">lblStatus</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgress" Visible="False">Progress</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgress" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgress2" Visible="False">Progress2</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgress2" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnRemoveFile" Click="OnBtnRemoveFileClicked" Visible="False">Remove</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnToggleCrack" Click="OnBtnToggleCrackClicked" Visible="False">Mark as crack</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnMetadata" Click="OnBtnMetadataClicked" Visible="False">Metadata</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnStop" Click="OnBtnStopClicked" Visible="False">Stop</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnFolder" Click="OnBtnFolderClicked">Open folder</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnArchive" Click="OnBtnArchiveClicked">Open archive</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnPack" Click="OnBtnPackClicked" Visible="False">Add to repository...</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnClose" Click="OnBtnCloseClicked" Visible="False">Close</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnExit" Click="OnBtnExitClicked">OK</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

1182
dlgAdd.xeto.cs Normal file

File diff suppressed because it is too large Load Diff

617
dlgBlockMedia.xeto Normal file
View File

@@ -0,0 +1,617 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="605" Resizable="True">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TabControl>
<TabPage Text="General">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Image:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtImage" ReadOnly="True" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Format:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtFormat" />
</StackLayoutItem>
<Label>Offset:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtOffset" ReadOnly="True" />
</StackLayoutItem>
<Label>Size:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtSize" ReadOnly="True" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Manufacturer:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtManufacturer" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Model:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtModel" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Serial:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtSerial" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Firmware:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtFirmware" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Interface:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtInterface" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Copy protection:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtCopyProtection" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Media type:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMediaType" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Media subtype:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMediaSubtype" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left" Expand="True">
<GroupBox Text="Sequence">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center">
<CheckBox ID="chkSequence" CheckedChanged="OnChkSequenceToggled">Sequenced</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblMediaTitle" Visible="False">Media title</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMediaTitle" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblSequence" Visible="False">Sequence:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spSequence" Visible="False" />
</StackLayoutItem>
<Label ID="lblTotalMedia" Visible="False">of</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spTotalMedia" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblSide" Visible="False">Side:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spSide" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblLayer" Visible="False">Layer:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spLayer" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center" Expand="True">
<GroupBox Text="Blocks">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtBlocks" />
</StackLayoutItem>
<Label>blocks</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label>Block size</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label>Physical:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spPhysicalBlockSize" />
</StackLayoutItem>
<Label>Logical:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spLogicalBlockSize" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spCylinders" />
</StackLayoutItem>
<Label>cylinders</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spHeads" />
</StackLayoutItem>
<Label>heads</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spSectors" />
</StackLayoutItem>
<Label>sectors</Label>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right" Expand="True">
<GroupBox Text="Dimensions">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center" Expand="True">
<CheckBox ID="chkDimensions" CheckedChanged="OnChkDimensionsToggled">Known dimensions</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center" Expand="True">
<CheckBox ID="chkRound" CheckedChanged="OnChkRoundToggled" Visible="False">Round?</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkDiameter" Visible="False">
<Label>Diameter</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spDiameter" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkHeight" Visible="False">
<Label>Height</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spHeight" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkWidth" Visible="False">
<Label>Width</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spWidth" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkThickness" Visible="False">
<Label>Thickness</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spThickness" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="ATA">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkATA" Enabled="False">Has ATA IDENTIFY information?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeATA" Enabled="False" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="PCI">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkPCI" Enabled="False">Is PCI?</CheckBox>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblPCIVendor" Visible="False">Vendor ID</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtPCIVendor" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblPCIProduct" Visible="False">Product ID</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtPCIProduct" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Configuration" ID="frmPCIConfiguration" Visible="False">
<GridView ID="treeConfiguration" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Option ROM" ID="frmOptionROM" Visible="False">
<GridView ID="treeOptionROM" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="PCMCIA">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkPCMCIA" CheckedChanged="OnChkPCMCIAToggled">Is PCMCIA?</CheckBox>
<CheckBox ID="chkCIS" Enabled="False" Visible="False">Has CIS?</CheckBox>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeCIS" Visible="False" Enabled="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblPCMCIAManufacturer" Visible="False">Manufacturer name</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtPCMCIAManufacturer" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblMfgCode" Visible="False">Manufacturer code</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMfgCode" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblPCMCIAProductName" Visible="False">Product name</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtPCMCIAProductName" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblCardCode" Visible="False">Card code</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtCardCode" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblCompliance" Visible="False">Compliance</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtCompliance" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Additional information" ID="lblAdditionalInformation" Visible="False">
<GridView ID="treeAdditionalInformation" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Secure Digital">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkSecureDigital" Enabled="False">Is Secure Digital or MMC?</CheckBox>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblCID" Visible="False">CID</Label>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeCID" Enabled="False" Visible="False" />
</StackLayoutItem>
<CheckBox ID="chkCSD" Enabled="False" Visible="False">Has CSD?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeCSD" Enabled="False" Visible="False" />
</StackLayoutItem>
<CheckBox ID="chkECSD" Enabled="False" Visible="False">Has Extended CSD?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeECSD" Enabled="False" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="SCSI">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkSCSI" Enabled="False">Is SCSI?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="INQUIRY" ID="frmInquiry" Visible="False">
<GridView ID="treeInquiry" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="MODE SENSE" ID="frmModeSense" Visible="False">
<GridView ID="treeModeSense" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="MODE SENSE (10)" ID="frmModeSense10" Visible="False">
<GridView ID="treeModeSense10" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="LOG SENSE" ID="frmLogSense" Visible="False">
<GridView ID="treeLogSense" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="EVPDs" ID="frmEVPDs" Visible="False">
<GridView ID="treeEVPDs" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="USB">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkUSB" Enabled="False">Is USB?</CheckBox>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblUSBVendor" Visible="False">Vendor ID</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtUSBVendor" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label ID="lblUSBProduct" Visible="False">Product ID</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtUSBProduct" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Descriptors" ID="frmDescriptors" Visible="False">
<GridView ID="treeDescriptors" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="MAM">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkMAM" Enabled="False">Has MAM?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeMAM" Enabled="False" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Tracks">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkTracks" Enabled="False">Has tracks?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeTracks" Enabled="False" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Partitions">
<GroupBox Text="Partitions">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treePartitions" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancelPartition" Click="OnBtnCancelPartitionClicked" Visible="False">Cancel</Button>
<Button ID="btnRemovePartition" Click="OnBtnRemovePartitionClicked">Remove</Button>
<Button ID="btnEditPartition" Click="OnBtnEditPartitionClicked">Edit</Button>
<Button ID="btnApplyPartition" Click="OnBtnApplyPartitionClicked" Visible="False">Apply</Button>
<Button ID="btnAddPartition" Click="OnBtnAddPartitionClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkPartitionFields1" Visible="False">
<Label>Sequence</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spPartitionSequence" />
</StackLayoutItem>
<Label>Start block</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionStart" />
</StackLayoutItem>
<Label>End block</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionEnd" />
</StackLayoutItem>
<Label>Type</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionType" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkPartitionFields2" Visible="False">
<Label>Name</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionName" />
</StackLayoutItem>
<Label>Description</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionDescription" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox ID="frmFilesystems" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeFilesystems" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnRemoveFilesystem" Click="OnBtnRemoveFilesystemClicked">Remove</Button>
<Button ID="btnEditFilesystem" Click="OnBtnEditFilesystemClicked">Edit</Button>
<Button ID="btnAddFilesystem" Click="OnBtnAddFilesystemClicked">Add</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</TabPage>
<TabPage Text="Dump hardware">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkDumpHardware" CheckedChanged="OnChkDumpHardwareToggled">Known dumping hardware</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeDumpHardware" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancelHardware" Click="OnBtnCancelHardwareClicked" Visible="False">Cancel</Button>
<Button ID="btnRemoveHardware" Click="OnBtnRemoveHardwareClicked" Visible="False">Remove</Button>
<Button ID="btnEditHardware" Click="OnBtnEditHardwareClicked" Visible="False">Edit</Button>
<Button ID="btnApplyHardware" Click="OnBtnApplyHardwareClicked" Visible="False">Apply</Button>
<Button ID="btnAddHardware" Click="OnBtnAddHardwareClicked" Visible="False">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox ID="frmHardware" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Manufacturer</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWManufacturer" />
</StackLayoutItem>
<Label>Model</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWModel" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Revision</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWRevision" />
</StackLayoutItem>
<Label>Firmware</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWFirmware" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Serial number</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWSerial" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Extents">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeExtents" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnRemoveExtent" Click="OnBtnRemoveExtentClicked">Remove</Button>
<Button ID="btnAddExtent" Click="OnBtnAddExtentClicked">Add</Button>
</StackLayout>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Start</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spExtentStart" />
</StackLayoutItem>
<Label>End</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spExtentEnd" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="DumpSoftware">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Name</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpName" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Version</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpVersion" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Operating system</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpOS" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
</TabControl>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancel" Click="OnBtnCancelClicked">Cancel</Button>
<Button ID="btnSave" Click="OnBtnSaveClicked">Save</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

1738
dlgBlockMedia.xeto.cs Normal file

File diff suppressed because it is too large Load Diff

145
dlgFilesystem.xeto Normal file
View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Edit filesystem metadata">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Filesystem type</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtType" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True">
<TextBox ID="txtFiles" />
</StackLayoutItem>
<Label>files</Label>
<CheckBox ID="chkBootable" ThreeState="False">Bootable</CheckBox>
<CheckBox ID="chkDirty" ThreeState="False">Dirty</CheckBox>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<NumericUpDown ID="spClusterSize" MaxValue="1048576" />
<Label>bytes per cluster</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtClusters" />
</StackLayoutItem>
<Label>clusters</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtFreeClusters" />
</StackLayoutItem>
<Label>free clusters</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<CheckBox ID="chkCreationDate" ThreeState="False" CheckedChanged="OnChkCreationDateToggled">Creation date</CheckBox>
<StackLayoutItem Expand="True">
<DateTimePicker ID="cldCreationDate" Mode="DateTime" Enabled="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<CheckBox ID="chkModificationDate" ThreeState="False" CheckedChanged="OnChkModificationDateToggled">Modification date</CheckBox>
<StackLayoutItem Expand="True">
<DateTimePicker ID="cldModificationDate" Mode="DateTime" Enabled="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<CheckBox ID="chkEffectiveDate" ThreeState="False" CheckedChanged="OnChkEffectiveDateToggled">Effective date</CheckBox>
<StackLayoutItem Expand="True">
<DateTimePicker ID="cldEffectiveDate" Mode="DateTime" Enabled="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<CheckBox ID="chkExpirationDate" ThreeState="False" CheckedChanged="OnChkExpirationDateToggled">Expiration date</CheckBox>
<StackLayoutItem Expand="True">
<DateTimePicker ID="cldExpirationDate" Mode="DateTime" Enabled="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<CheckBox ID="chkBackupDate" ThreeState="False" CheckedChanged="OnChkBackupDateToggled">Last backup date</CheckBox>
<StackLayoutItem Expand="True">
<DateTimePicker ID="cldBackupDate" Mode="DateTime" Enabled="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Volume label</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtLabel" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Volume serial</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtSerial" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<GroupBox Text="ISO9660 information">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>System identifier</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtSysId" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Volume identifier</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtVolId" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Publisher identifier</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPubId" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Data preparer identifier</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDataId" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Application identifier</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtAppId" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancel" Click="OnBtnCancelClicked">Cancel</Button>
<Button ID="btnSave" Click="OnBtnSaveClicked">Save</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

245
dlgFilesystem.xeto.cs Normal file
View File

@@ -0,0 +1,245 @@
//
// Author:
// Natalia Portillo claunia@claunia.com
//
// Copyright (c) 2017, © Claunia.com
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the distribution.
// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
using System;
using Eto.Forms;
using Eto.Serialization.Xaml;
using Schemas;
namespace apprepodbmgr.Eto
{
public class dlgFilesystem : Dialog
{
public FileSystemType Metadata;
public bool Modified;
public dlgFilesystem()
{
XamlReader.Load(this);
Modified = false;
}
public void FillFields()
{
if(Metadata == null) return;
if(Metadata.Type != null) txtType.Text = Metadata.Type;
if(Metadata.CreationDateSpecified)
{
chkCreationDate.Checked = true;
cldCreationDate.Enabled = true;
cldCreationDate.Value = Metadata.CreationDate;
}
if(Metadata.ModificationDateSpecified)
{
chkModificationDate.Checked = true;
cldModificationDate.Enabled = true;
cldModificationDate.Value = Metadata.ModificationDate;
}
if(Metadata.BackupDateSpecified)
{
chkBackupDate.Checked = true;
cldBackupDate.Enabled = true;
cldBackupDate.Value = Metadata.BackupDate;
}
spClusterSize.Value = Metadata.ClusterSize;
txtClusters.Text = Metadata.Clusters.ToString();
if(Metadata.FilesSpecified) txtFiles.Text = Metadata.Files.ToString();
chkBootable.Checked = Metadata.Bootable;
if(Metadata.VolumeSerial != null) txtSerial.Text = Metadata.VolumeSerial;
if(Metadata.VolumeName != null) txtLabel.Text = Metadata.VolumeName;
if(Metadata.FreeClustersSpecified) txtFreeClusters.Text = Metadata.FreeClusters.ToString();
chkDirty.Checked = Metadata.Dirty;
if(Metadata.ExpirationDateSpecified)
{
chkExpirationDate.Checked = true;
cldExpirationDate.Enabled = true;
cldExpirationDate.Value = Metadata.ExpirationDate;
}
if(Metadata.EffectiveDateSpecified)
{
chkEffectiveDate.Checked = true;
cldEffectiveDate.Enabled = true;
cldEffectiveDate.Value = Metadata.EffectiveDate;
}
if(Metadata.SystemIdentifier != null) txtSysId.Text = Metadata.SystemIdentifier;
if(Metadata.VolumeSetIdentifier != null) txtVolId.Text = Metadata.VolumeSetIdentifier;
if(Metadata.PublisherIdentifier != null) txtPubId.Text = Metadata.PublisherIdentifier;
if(Metadata.DataPreparerIdentifier != null) txtDataId.Text = Metadata.DataPreparerIdentifier;
if(Metadata.ApplicationIdentifier != null) txtAppId.Text = Metadata.ApplicationIdentifier;
}
protected void OnChkCreationDateToggled(object sender, EventArgs e)
{
cldCreationDate.Enabled = chkCreationDate.Checked.Value;
}
protected void OnChkModificationDateToggled(object sender, EventArgs e)
{
cldModificationDate.Enabled = chkModificationDate.Checked.Value;
}
protected void OnChkEffectiveDateToggled(object sender, EventArgs e)
{
cldEffectiveDate.Enabled = chkEffectiveDate.Checked.Value;
}
protected void OnChkExpirationDateToggled(object sender, EventArgs e)
{
cldExpirationDate.Enabled = chkExpirationDate.Checked.Value;
}
protected void OnChkBackupDateToggled(object sender, EventArgs e)
{
cldBackupDate.Enabled = chkBackupDate.Checked.Value;
}
protected void OnBtnCancelClicked(object sender, EventArgs e)
{
Modified = false;
Close();
}
protected void OnBtnSaveClicked(object sender, EventArgs e)
{
if(string.IsNullOrWhiteSpace(txtType.Text))
MessageBox.Show("Filesystem type cannot be empty", MessageBoxType.Error);
if(spClusterSize.Value < 1) MessageBox.Show("Clusters must be bigger than 0 bytes", MessageBoxType.Error);
if(!long.TryParse(txtClusters.Text, out long temp))
MessageBox.Show("Clusters must be a number", MessageBoxType.Error);
if(temp < 1) MessageBox.Show("Filesystem must have more than 0 clusters", MessageBoxType.Error);
if(!string.IsNullOrWhiteSpace(txtFiles.Text) && !long.TryParse(txtFiles.Text, out temp))
MessageBox.Show("Files must be a number, or empty for unknown", MessageBoxType.Error);
if(!string.IsNullOrWhiteSpace(txtFiles.Text) && temp < 0)
MessageBox.Show("Files must be positive", MessageBoxType.Error);
if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text) && !long.TryParse(txtFreeClusters.Text, out temp))
MessageBox.Show("Free clusters must be a number or empty for unknown", MessageBoxType.Error);
if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text) && temp < 0)
MessageBox.Show("Free clusters must be positive", MessageBoxType.Error);
Metadata = new FileSystemType {Type = txtType.Text};
if(chkCreationDate.Checked.Value)
{
Metadata.CreationDateSpecified = true;
Metadata.CreationDate = cldCreationDate.Value.Value;
}
if(chkModificationDate.Checked.Value)
{
Metadata.ModificationDateSpecified = true;
Metadata.ModificationDate = cldModificationDate.Value.Value;
}
if(chkBackupDate.Checked.Value)
{
Metadata.BackupDateSpecified = true;
Metadata.BackupDate = cldBackupDate.Value.Value;
}
Metadata.ClusterSize = (int)spClusterSize.Value;
Metadata.Clusters = long.Parse(txtClusters.Text);
if(!string.IsNullOrWhiteSpace(txtFiles.Text))
{
Metadata.FilesSpecified = true;
Metadata.Files = long.Parse(txtFiles.Text);
}
Metadata.Bootable = chkBootable.Checked.Value;
if(!string.IsNullOrWhiteSpace(txtSerial.Text)) Metadata.VolumeSerial = txtSerial.Text;
if(!string.IsNullOrWhiteSpace(txtLabel.Text)) Metadata.VolumeName = txtLabel.Text;
if(!string.IsNullOrWhiteSpace(txtFreeClusters.Text))
{
Metadata.FreeClustersSpecified = true;
Metadata.FreeClusters = long.Parse(txtFreeClusters.Text);
}
Metadata.Dirty = chkDirty.Checked.Value;
if(chkExpirationDate.Checked.Value)
{
Metadata.ExpirationDateSpecified = true;
Metadata.ExpirationDate = cldExpirationDate.Value.Value;
}
if(chkEffectiveDate.Checked.Value)
{
Metadata.EffectiveDateSpecified = true;
Metadata.EffectiveDate = cldEffectiveDate.Value.Value;
}
if(!string.IsNullOrWhiteSpace(txtSysId.Text)) Metadata.SystemIdentifier = txtSysId.Text;
if(!string.IsNullOrWhiteSpace(txtVolId.Text)) Metadata.VolumeSetIdentifier = txtVolId.Text;
if(!string.IsNullOrWhiteSpace(txtPubId.Text)) Metadata.PublisherIdentifier = txtPubId.Text;
if(!string.IsNullOrWhiteSpace(txtDataId.Text)) Metadata.DataPreparerIdentifier = txtDataId.Text;
if(!string.IsNullOrWhiteSpace(txtAppId.Text)) Metadata.ApplicationIdentifier = txtAppId.Text;
Modified = true;
Close();
}
#region XAML UI elements
#pragma warning disable 0649
TextBox txtType;
TextBox txtFiles;
CheckBox chkBootable;
CheckBox chkDirty;
NumericUpDown spClusterSize;
TextBox txtClusters;
TextBox txtFreeClusters;
CheckBox chkCreationDate;
DateTimePicker cldCreationDate;
CheckBox chkModificationDate;
DateTimePicker cldModificationDate;
CheckBox chkEffectiveDate;
DateTimePicker cldEffectiveDate;
CheckBox chkExpirationDate;
DateTimePicker cldExpirationDate;
CheckBox chkBackupDate;
DateTimePicker cldBackupDate;
TextBox txtLabel;
TextBox txtSerial;
TextBox txtSysId;
TextBox txtVolId;
TextBox txtPubId;
TextBox txtDataId;
TextBox txtAppId;
#pragma warning restore 0649
#endregion XAML UI elements
}
}

11
dlgHelp.xeto Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="400" Title="Help">
<StackLayout Orientation="Vertical">
<StackLayoutItem VerticalAlignment="Stretch" Expand="True" HorizontalAlignment="Stretch">
<TextArea ReadOnly="True" ID="txtHelp" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Button Click="OnBtnOKClicked">OK</Button>
</StackLayoutItem>
</StackLayout>
</Dialog>

168
dlgHelp.xeto.cs Normal file
View File

@@ -0,0 +1,168 @@
//
// Author:
// Natalia Portillo claunia@claunia.com
//
// Copyright (c) 2017, © Claunia.com
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the distribution.
// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
using System;
using Eto.Forms;
using Eto.Serialization.Xaml;
namespace apprepodbmgr.Eto
{
public class dlgHelp : Dialog
{
#region XAML UI elements
#pragma warning disable 0649
TextArea txtHelp;
#pragma warning restore 0649
#endregion XAML UI elements
public dlgHelp()
{
XamlReader.Load(this);
txtHelp.Text =
"This is the naming scheme and folder organization conventions for the Operating System Repository.\n\n" +
"The basic layout is as follows:\n\n" +
"<Developer>/<Product>/<Version>/<Language>/<Architecture>/oem/for <Machine>/<[format]_update/upgrade/files/source/netinstall/description>.zip\n" +
"All fields should contain only 7-bit ASCII.\n\n" +
"<Developer>\n" + "-----------\n" +
"This is the main developer of the operating system or associated software. e.g. Microsoft\n\n" +
"<Product>\n" +
"---------\n" +
"This is the name of the operating system or associated software. e.g. Windows NT\n\n" +
"<Version>\n" +
"---------\n" +
"This is the version of the operating system or associated software. e.g. 6.00.6000.16386\n" +
"Service pack and release markers should be appended. e.g. 6.10.7601.16385 (RTM)\n" +
"Build can be specified by appending \"build\". e.g. 10.2.7 build 6S80\n" +
"And combined. e.g. 10.5 build 9A581 (Server)\n" +
"Version with same version number but different build date should have it appended. Date format should be YYYYmm[dd]. e.g. 10 201009\n\n" +
"<Language>\n" +
"----------\n" + "This specifies the language localization and translation:\n" +
"xxx: Language variation, e.g. German = deu\n" +
"xxx_yy: Country specific language variation. e.g. Swiss German = deu_ch\n" +
"multi: The only known variation of the product that contains more than a language\n" +
"xxx,xxx,xxx and xxx_yy,xxx_yy,xxx_yy: The variation contains more than a single language\n" +
"Where xxx is the ISO-639-2/T language code and yy is the ISO-3166-1 alpha-2 country code.\n" +
"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n" +
"https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n" +
"If the product has ever been only released in one language variation, being it English (like CP/M) or multilanguage " +
"(like Mac OS X and Linux), this field should be omitted.\n\n" +
"<Architecture>\n" +
"--------------\n" +
"The processor architecture the product is compiled for.\n" +
"Omitted if it has only ever been compiled for a single one, contains all supported ones in same files, " +
"or it is source code containing support for several of them.\n" +
"Exact one depends on the product (that is, the one that the product uses to identify itself, should be used). Examples:\n" +
"* x86, i86, i386, i486, i586, i686, ia32: Intel Architecture 32 aka 8086 aka iAPX86\n" +
"* x64, amd64, x86_64: AMD64 aka x86_64 aka EM64T\n" +
"* ia64: Intel Architecture 64 aka Itanium\n" +
"* sparc: SPARC\n" +
"* sun4u, sun4m, sun1, sun2, sun3: Specific Sun architectures that specify not only the processor architecture but the whole system one.\n" +
"* 68k, ppc, fat: For products that run under Mac OS indicate they require a Macintosh, a Power Macintosh, or can run on both, respectively.\n" +
"* rpi, rpi2, beaglebone, bananapi: Specific whole systems that share a processor architecture but require a completely different variant.\n\n" +
"oem\n" +
"---\n" +
"Present if the variant is OEM. Omitted otherwise.\n\n" + "for <Machine>\n" +
"-------------\n" +
"Present if the variant requires a specific computer to run.\n" +
"Useful for computer restoration variants.\n" +
"e.g. for Power Mac 5200\n" +
"e.g. for Tandy 1000\n\n" +
"<[format]/update/upgrade/files/source/netinstall/description>.zip\n" +
"-----------------------------------------------------------------\n" +
"This is the file containing the product itself.\n" +
"It should be compressed using ZIP with certain parameters (see below).\n" +
"Several of them can be combined separated with underscores.\n" +
"Naming as following:\n" +
"* [format]: If the variation is encoded in a disk image format that's neither a simple dump of sectors (.iso/.dsk/.xdf) " +
"or a BinCue/BinToc (.bin+.cue/.bin+.toc) format should be substituted to a descriptive name for the format. e.g.: [Nero], [CloneCD]\n" +
"* update: Should be used when the product requires and updates a previous point release or build to the new one. " +
"Product version should be the updated, not the required, one. e.g.: 1.3 updates to 1.3.1 or 2.0 updates to 2.5\n" +
"* upgrade: Should be used when the product requires and updates a previous version to the new one. Product version should be the updated, " +
"not the required, one. e.g.: 2.0 updates to 3.0 or MS-DOS updates to Windows 95.\n" +
"* files: Should be used when the contents of the product disks are dumped as is (copied from the media) or it contains already installed " +
"files.\n" +
"* source: Should be used when it contains the source code for the product.\n" +
"* netinstall: Similar to files except that the files are designed to be put in a network share for remote installation of the product.\n" +
"* description: Free form description or product part number if it is known.\n\n" +
"Compression\n" +
"-----------\n" +
"The product should be compressed using ZIP with Deflate algorithm and UTF-8 headers. Zip64 extensions may be used. " +
"UNIX extensions MUST be used for products that require them (e.g. it contains softlinks).\n" +
"In the doubt, use Info-ZIP with following parameters:\n" +
"zip -9ry -dd archive.zip .\n" +
"If the product requires Acorn, BeOS or OS/2 extended attributes it should be compressed using the corresponding Info-ZIP version under " +
"that operating system so the required extension is used.\n" +
"DO NOT recompress archives in an operating system which zip product doesn't support all already present headers.\n" +
"DO NOT use TorrentZip. It discards all headers as well as date stamps.\n" +
"DO NOT use Mac OS headers. For conserving FinderInfo and Resource Fork see below.\n\n" +
"FinderInfo and Resource Fork\n" +
"----------------------------\n" +
"FinderInfo and Resource Fork should be stored as Mac OS X AppleDouble format: file and ._file\n" +
"This format is understand by all Mac OS X versions under any filesystem or a CIFS/SMB network share.\n" +
"Also mkisofs recognizes it and is able to create an HFS partition with them correctly set.\n" +
"Other formats should be converted to this one.\n\n" +
"Metadata\n" + "--------\n" +
"Each archive should be accompanied with a JSON metadata file using the CICM Metadata format. " +
"Name for metadata sidecar should be same as the archive changing the extension to .json.\n" +
"If the archive can be modified (doesn't contain ZIP headers you would lose) the metadata should be put inside the archive as a file " +
"named metadata.json.\n\n" +
"Recovery\n" + "--------\n" +
"Disks fail, bit rot happens, so every archive as well as the metadata file should have a PAR2 recovery set created.\n" +
"Example command line (with 5% redundancy):\n" +
"par2 c -r5 archive.par2 archive.zip archive.json\n\n" +
"Result\n" + "------\n" +
"In the end you get something like this:\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.json\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol000+01.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol001+02.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol003+04.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol007+08.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol015+16.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol031+32.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.vol063+37.par2\n" +
"Apple/Mac OS/9.1/eng/for iMac (Early 2001) v1.1/archive.zip\n" +
"QNX/QNX/20090229/source.json\n" +
"QNX/QNX/20090229/source.par2\n" +
"QNX/QNX/20090229/source.vol000+01.par2\n" +
"QNX/QNX/20090229/source.vol001+02.par2\n" +
"QNX/QNX/20090229/source.vol003+04.par2\n" +
"QNX/QNX/20090229/source.vol007+08.par2\n" +
"QNX/QNX/20090229/source.vol015+16.par2\n" +
"QNX/QNX/20090229/source.vol031+32.par2\n" +
"QNX/QNX/20090229/source.vol063+37.par2\n" +
"QNX/QNX/20090229/source.zip";
}
protected void OnBtnOKClicked(object sender, EventArgs e)
{
Close();
}
}
}

313
dlgMetadata.xeto Normal file
View File

@@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="533" Width="909" Resizable="True" Title="Editing metadata...">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TabControl>
<TabPage Text="General" ID="tabGeneral">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Developer</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDeveloper" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Publisher</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPublisher" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Author</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtAuthor" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Performer</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPerformer" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Name</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtName" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Version</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtVersion" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayout Orientation="Horizontal" ID="stkReleaseType">
<CheckBox ID="chkKnownReleaseType" ThreeState="False" CheckedChanged="OnChkKnownReleaseTypeToggled">Known release type?</CheckBox>
<!-- EnumDropDown<ReleaseType> goes here -->
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label>Release date</Label>
<DateTimePicker ID="cldReleaseDate" Enabled="False" />
<CheckBox ID="chkReleaseDate" ThreeState="False" CheckedChanged="OnChkReleaseDateToggled" Checked="True">Unknown or unreleased</CheckBox>
</StackLayout>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Part number</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartNumber" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Serial number</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtSerialNumber" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Keywords" ID="tabKeywords">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New keyword:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtNewKeyword" />
</StackLayoutItem>
<Button ID="btnAddKeyword" Click="OnBtnAddKeywordClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeKeywords" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearKeywords" Click="OnBtnClearKeywordsClicked">Clear</Button>
<Button ID="btnRemoveKeyword" Click="OnBtnRemoveKeywordClicked">Remove</Button>
</StackLayout>
</StackLayout>
</TabPage>
<TabPage Text="Barcodes" ID="tabBarcodes">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New barcode:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtNewBarcode" />
</StackLayoutItem>
<Label>type</Label>
<ComboBox ID="cmbBarcodes" ReadOnly="True" />
<Button ID="btnAddBarcode" Click="OnBtnAddBarcodeClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeBarcodes" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearBarcodes" Click="OnBtnClearBarcodesClicked">Clear</Button>
<Button ID="btnRemoveBarcode" Click="OnBtnRemoveBarcodeClicked">Remove</Button>
</StackLayout>
</StackLayout>
</TabPage>
<TabPage Text="Categories" ID="tabCategories">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center">
<Label>Categories</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New category:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtNewCategory" />
</StackLayoutItem>
<Button ID="btnAddCategory" Click="OnBtnAddCategoryClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeCategories" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearCategories" Click="OnBtnClearCategoriesClicked">Clear</Button>
<Button ID="btnRemoveCategory" Click="OnBtnRemoveCategoryClicked">Remove</Button>
</StackLayout>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center">
<Label>Subcategories</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New subcategory:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtNewSubcategory" />
</StackLayoutItem>
<Button ID="btnAddSubcategory" Click="OnBtnAddSubcategoryClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeSubcategories" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearSubcategories" Click="OnBtnClearSubcategoriesClicked">Clear</Button>
<Button ID="btnRemoveSubcategory" Click="OnBtnRemoveSubcategoryClicked">Remove</Button>
</StackLayout>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Languages" ID="tabLanguages">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New language:</Label>
<ComboBox ID="cmbLanguages" ReadOnly="True" />
<Button ID="btnAddLanguage" Click="OnBtnAddLanguageClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeLanguages">
</GridView>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearLanguages" Click="OnBtnClearLanguagesClicked">Clear</Button>
<Button ID="btnRemoveLanguage" Click="OnBtnRemoveLanguageClicked">Remove</Button>
</StackLayout>
</StackLayout>
</TabPage>
<TabPage Text="Systems" ID="tabSystems">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New system:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<TextBox ID="txtNewSystem" />
</StackLayoutItem>
<Button ID="btnAddSystem" Click="OnBtnAddSystemClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeSystems">
</GridView>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearSystems" Click="OnBtnClearSystemsClicked">Clear</Button>
<Button ID="btnRemoveSystem" Click="OnBtnRemoveSystemClicked">Remove</Button>
</StackLayout>
</StackLayout>
</TabPage>
<TabPage Text="Architectures" ID="tabArchitectures">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>New architecture:</Label>
<ComboBox ID="cmbArchitectures" ReadOnly="True" />
<Button ID="btnAddArchitecture" Click="OnBtnAddArchitectureClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeArchitectures">
</GridView>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnClearArchitectures" Click="OnBtnClearArchitecturesClicked">Clear</Button>
<Button ID="btnRemoveArchitecture" Click="OnBtnRemoveArchitectureClicked">Remove</Button>
</StackLayout>
</StackLayout>
</TabPage>
<TabPage Text="Optical discs" ID="tabDiscs">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Choose disc to add:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<ComboBox ID="cmbFilesForNewDisc" ReadOnly="True" />
</StackLayoutItem>
<Button ID="btnAddDisc" Click="OnBtnAddDiscClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeDiscs">
</GridView>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnStopAddDisc" Click="OnBtnStopAddDiscClicked" Visible="False">Stop</Button>
<Button ID="btnEditDisc" Click="OnBtnEditDiscClicked">Edit</Button>
<Button ID="btnClearDiscs" Click="OnBtnClearDiscsClicked">Clear</Button>
<Button ID="btnRemoveDisc" Click="OnBtnRemoveDiscClicked">Remove</Button>
</StackLayout>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblAddDisc1" Visible="False">Progress 1</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgAddDisc1" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblAddDisc2" Visible="False">Progress 2</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgAddDisc2" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Block disks" ID="tabDisks">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Choose disc to add:</Label>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<ComboBox ID="cmbFilesForNewDisk" ReadOnly="True" />
</StackLayoutItem>
<Button ID="btnAddDisk" Click="OnBtnAddDiskClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Expand="True">
<GridView ID="treeDisks">
</GridView>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnStopAddDisk" Click="OnBtnStopAddDiskClicked" Visible="False">Stop</Button>
<Button ID="btnEditDisk" Click="OnBtnEditDiskClicked">Edit</Button>
<Button ID="btnClearDisks" Click="OnBtnClearDisksClicked">Clear</Button>
<Button ID="btnRemoveDisk" Click="OnBtnRemoveDiskClicked">Remove</Button>
</StackLayout>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblAddDisk1" Visible="False">Progress 1</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgAddDisk1" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblAddDisk2" Visible="False">Progress 2</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgAddDisk2" Visible="False" />
</StackLayoutItem>
</StackLayout>
</TabPage>
</TabControl>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancel" Click="OnBtnCancelClicked">Cancel</Button>
<Button ID="btnOK" Click="OnBtnOKClicked">OK</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

1097
dlgMetadata.xeto.cs Normal file

File diff suppressed because it is too large Load Diff

696
dlgOpticalDisc.xeto Normal file
View File

@@ -0,0 +1,696 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="605" Resizable="True">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TabControl>
<TabPage Text="General">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Image:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtImage" ReadOnly="True" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Format:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtFormat" />
</StackLayoutItem>
<Label>Offset:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtOffset" ReadOnly="True" />
</StackLayoutItem>
<Label>Size:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtSize" ReadOnly="True" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Write offset:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtWriteOffset" />
</StackLayoutItem>
<Label>bytes</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Tracks:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMediaTracks" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Sessions:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtMediaSessions" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Copy protection:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtCopyProtection" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Disc type:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtDiscType" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Disc subtype:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtDiscSubtype" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left" Expand="True">
<GroupBox Text="Sequence">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center">
<CheckBox ID="chkSequence" CheckedChanged="OnChkSequenceToggled">Sequenced</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblDiscTitle" Visible="False">Disc title</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtDiscTitle" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblSequence" Visible="False">Sequence:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spSequence" Visible="False" />
</StackLayoutItem>
<Label ID="lblTotalMedia" Visible="False">of</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spTotalMedia" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblSide" Visible="False">Side:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spSide" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<Label ID="lblLayer" Visible="False">Layer:</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spLayer" Visible="False" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right" Expand="True">
<GroupBox Text="Dimensions">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Center" Expand="True">
<CheckBox ID="chkDimensions" CheckedChanged="OnChkDimensionsToggled">Known dimensions</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center" Expand="True">
<CheckBox ID="chkRound" CheckedChanged="OnChkRoundToggled" Visible="False">Round?</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkDiameter" Visible="False">
<Label>Diameter</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spDiameter" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkHeight" Visible="False">
<Label>Height</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spHeight" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkWidth" Visible="False">
<Label>Width</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spWidth" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal" ID="stkThickness" Visible="False">
<Label>Thickness</Label>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spThickness" DecimalPlaces="5" />
</StackLayoutItem>
<Label>mm</Label>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Layers">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkLayers" ThreeState="False" CheckedChanged="OnChkLayersToggled">Has layers?</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Layers" ID="frmLayers" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayout Orientation="Horizontal" ID="stkLayers">
<Label>Layering type:</Label>
<!-- EnumDropDown<LayerType> goes here -->
</StackLayout>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeLayers" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spNewLayer" />
<Label>starts at sector</Label>
<TextBox ID="txtLayerSize" />
<Button ID="btnAddLayer" Click="OnBtnAddLayerClicked">Add</Button>
<Button ID="btnRemoveLayer" Click="OnBtnRemoveLayerClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Mastering">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Ring codes">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeRingCodes" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spRingCodeLayer" />
<Label>Code:</Label>
<TextBox ID="txtRingCode" />
<Button ID="btnAddRingCode" Click="OnBtnAddRingCodeClicked">Add</Button>
<Button ID="btnRemoveRingCode" Click="OnBtnRemoveRingCodeClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Mastering SIDs">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeMasteringSIDs" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spMasteringSIDLayer" />
<Label>SID:</Label>
<TextBox ID="txtMasteringSID" />
<Button ID="btnAddMasteringSID" Click="OnBtnAddMasteringSIDClicked">Add</Button>
<Button ID="btnRemoveMasteringSID" Click="OnBtnRemoveMasteringSIDClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Toolstamps">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeToolstamps" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spToolstampLayer" />
<Label>Stamp:</Label>
<TextBox ID="txtToolstamp" />
<Button ID="btnAddToolstamp" Click="OnBtnAddToolstampClicked">Add</Button>
<Button ID="btnRemoveToolstamp" Click="OnBtnRemoveToolstampClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Mould SIDs">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeMouldSIDs" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spMouldSIDLayer" />
<Label>SID:</Label>
<TextBox ID="txtMouldSID" />
<Button ID="btnAddMouldSID" Click="OnBtnAddMouldSIDClicked">Add</Button>
<Button ID="btnRemoveMouldSID" Click="OnBtnRemoveMouldSIDClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Mould texts">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeMouldTexts" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Label>Layer</Label>
<NumericUpDown ID="spMouldTextLayer" />
<Label>Text:</Label>
<TextBox ID="txtMouldText" />
<Button ID="btnAddMouldText" Click="OnBtnAddMouldTextClicked">Add</Button>
<Button ID="btnRemoveMouldText" Click="OnBtnRemoveMouldTextClicked">Remove</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="CD">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="TOC" ID="frmTOC" Visible="False">
<GridView ID="treeTOC" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="CD-Text" ID="frmCDText" Visible="False">
<GridView ID="treeCDText" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="ATIP" ID="frmATIP" Visible="False">
<GridView ID="treeATIP" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="PMA" ID="frmPMA" Visible="False">
<GridView ID="treePMA" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Sessions">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Lead-Ins" ID="frmLeadIns" Visible="False">
<GridView ID="treeLeadIn" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Lead-Outs" ID="frmLeadOuts" Visible="False">
<GridView ID="treeLeadOut" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="DVD">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Physical Format Information" ID="frmPFI" Visible="False">
<GridView ID="treePFI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Disc Manufacturer Information" ID="frmDMI" Visible="False">
<GridView ID="treeDMI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Copyright Management Information" ID="frmCMI" Visible="False">
<GridView ID="treeCMI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Burst Cutting Area" ID="frmBCA" Visible="False">
<GridView ID="treeBCA" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Disc Control Blocks" ID="frmDCB" Visible="False">
<GridView ID="treeDCB" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="DVD-R">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Pre-recorded information" ID="frmPRI" Visible="False">
<GridView ID="treePRI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Media ID" ID="frmMediaID" Visible="False">
<GridView ID="treeMediaID" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Physical Format Information in Lead-In" ID="frmPFIR" Visible="False">
<GridView ID="treePFIR" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Last RMD" ID="frmLastRMD" Visible="False">
<GridView ID="treeLastRMD" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="DVD+R">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="ADIP" ID="frmADIP" Visible="False">
<GridView ID="treeADIP" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="DVD-RAM / BD-RE">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Disc Definition Structure" ID="frmDDS" Visible="False">
<GridView ID="treeDDS" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Spare Area Information" ID="frmSAI" Visible="False">
<GridView ID="treeSAI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Blu-ray">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Disc Information" ID="frmDI" Visible="False">
<GridView ID="treeDI" Enabled="False" />
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="PAC" ID="frmPAC" Visible="False">
<GridView ID="treePAC" Enabled="False" />
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="PlayStation">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="PlayStation 3 Encryption Key" ID="frmPS3">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Key</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPS3Key" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Serial</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPS3Serial" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Tracks">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeTracks" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkTrackFields1" Visible="False">
<Label>Start LBA</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtTrackStart" />
</StackLayoutItem>
<Label>End LBA</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtTrackEnd" />
</StackLayoutItem>
<Label>Start MSF</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtMSFStart" />
</StackLayoutItem>
<Label>End MSF</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtMSFEnd" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkTrackFields2" Visible="False">
<Label>Track</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtTrackSequence" />
</StackLayoutItem>
<Label>Session</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtSessionSequence" />
</StackLayoutItem>
<Label>Track type</Label>
<StackLayoutItem Expand="True">
<ComboBox ID="cmbTrackType" />
</StackLayoutItem>
<StackLayoutItem Expand="True">
<TextBox ID="txtBytesPerSector" />
</StackLayoutItem>
<Label>bytes per sector</Label>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkTrackFields3" Visible="False">
<Label>Acoust ID</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtAcoustID" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<GroupBox Text="Partitions" ID="frmPartitions" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treePartitions" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancelPartition" Click="OnBtnCancelPartitionClicked" Visible="False">Cancel</Button>
<Button ID="btnRemovePartition" Click="OnBtnRemovePartitionClicked">Remove</Button>
<Button ID="btnEditPartition" Click="OnBtnEditPartitionClicked">Edit</Button>
<Button ID="btnApplyPartition" Click="OnBtnApplyPartitionClicked" Visible="False">Apply</Button>
<Button ID="btnAddPartition" Click="OnBtnAddPartitionClicked">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkPartitionFields1" Visible="False">
<Label>Sequence</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spPartitionSequence" />
</StackLayoutItem>
<Label>Start block</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionStart" />
</StackLayoutItem>
<Label>End block</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionEnd" />
</StackLayoutItem>
<Label>Type</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionType" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal" ID="stkPartitionFields2" Visible="False">
<Label>Name</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionName" />
</StackLayoutItem>
<Label>Description</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtPartitionDescription" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox ID="frmFilesystems" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeFilesystems" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnRemoveFilesystem" Click="OnBtnRemoveFilesystemClicked">Remove</Button>
<Button ID="btnEditFilesystem" Click="OnBtnEditFilesystemClicked">Edit</Button>
<Button ID="btnAddFilesystem" Click="OnBtnAddFilesystemClicked">Add</Button>
</StackLayout>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancelTrack" Click="OnBtnCancelTrackClicked" Visible="False">Cancel</Button>
<Button ID="btnApplyTrack" Click="OnBtnApplyTrackClicked" Visible="False">Apply</Button>
<Button ID="btnEditTrack" Click="OnBtnEditTrackClicked">Edit</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Dump hardware">
<StackLayout Orientation="Vertical">
<CheckBox ID="chkDumpHardware" CheckedChanged="OnChkDumpHardwareToggled">Known dumping hardware</CheckBox>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeDumpHardware" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancelHardware" Click="OnBtnCancelHardwareClicked" Visible="False">Cancel</Button>
<Button ID="btnRemoveHardware" Click="OnBtnRemoveHardwareClicked" Visible="False">Remove</Button>
<Button ID="btnEditHardware" Click="OnBtnEditHardwareClicked" Visible="False">Edit</Button>
<Button ID="btnApplyHardware" Click="OnBtnApplyHardwareClicked" Visible="False">Apply</Button>
<Button ID="btnAddHardware" Click="OnBtnAddHardwareClicked" Visible="False">Add</Button>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox ID="frmHardware" Visible="False">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Manufacturer</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWManufacturer" />
</StackLayoutItem>
<Label>Model</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWModel" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Revision</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWRevision" />
</StackLayoutItem>
<Label>Firmware</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWFirmware" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Serial number</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtHWSerial" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="Extents">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GridView ID="treeExtents" />
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<Button ID="btnRemoveExtent" Click="OnBtnRemoveExtentClicked">Remove</Button>
<Button ID="btnAddExtent" Click="OnBtnAddExtentClicked">Add</Button>
</StackLayout>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Start</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spExtentStart" />
</StackLayoutItem>
<Label>End</Label>
<StackLayoutItem Expand="True">
<NumericUpDown ID="spExtentEnd" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<GroupBox Text="DumpSoftware">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Name</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpName" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Version</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpVersion" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<Label>Operating system</Label>
<StackLayoutItem Expand="True">
<TextBox ID="txtDumpOS" />
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</TabPage>
</TabControl>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button ID="btnCancel" Click="OnBtnCancelClicked">Cancel</Button>
<Button ID="btnSave" Click="OnBtnSaveClicked">Save</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

1954
dlgOpticalDisc.xeto.cs Normal file

File diff suppressed because it is too large Load Diff

145
dlgSettings.xeto Normal file
View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dialog xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="650" Height="225" xmlns:e="clr-namespace:apprepodbmgr.Core;assembly=apprepodbmgr.Core" Title="Settings">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Label>Database file</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtDatabase" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<Button ID="btnDatabase" Click="OnBtnDatabaseClicked">Choose...</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Label>Repository folder</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtRepository" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<Button ID="btnRepository" Click="OnBtnRepositoryClicked">Choose...</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Label>Temporary folder</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtTmp" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<Button ID="btnTmp" Click="OnBtnTmpClicked">Choose...</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Label>Path to unar</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtUnar" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<Button ID="btnUnar" Click="OnBtnUnarClicked">Choose...</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblUnarVersion" Visible="False">lblUnarVersion</Label>
</StackLayoutItem>
</StackLayout>
<StackLayout Orientation="Horizontal" ID="StackLayoutForAlgoEnum">
<StackLayoutItem HorizontalAlignment="Left">
<Label>Compression algorithm</Label>
</StackLayoutItem>
</StackLayout>
</StackLayout>
<StackLayout Orientation="Vertical">
<CheckBox ID="chkAntivirus" CheckedChanged="OnChkAntivirusToggled" ThreeState="False">Use antivirus?</CheckBox>
<StackLayoutItem HorizontalAlignment="Stretch">
<GroupBox Text="clamd" ID="frmClamd">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<CheckBox ID="chkClamd" CheckedChanged="OnChkClamdToggled" ThreeState="False">Use clamd?</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<Label>Host</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtClamdHost" Enabled="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<Label>port</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<NumericUpDown ID="spClamdPort" MaxValue="65535" MinValue="1" Value="3310" Enabled="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Button ID="btnClamdTest" Click="OnBtnClamdTestClicked" Enabled="False">Test</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<Label Visible="False" ID="lblClamdVersion" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<CheckBox ID="chkClamdIsLocal" ThreeState="False" Enabled="False">Clamd is local?</CheckBox>
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<GroupBox Text="VirusTotal" ID="frmVirusTotal">
<StackLayout Orientation="Vertical">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<CheckBox ID="chkVirusTotal" CheckedChanged="OnChkVirusTotalToggled" ThreeState="False">Use VirusTotal?</CheckBox>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<Label>API Key</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<TextBox ID="txtVirusTotal" Enabled="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Button ID="btnVirusTotal" Click="OnBtnVirusTotalClicked" Enabled="False">Test</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch" Expand="True">
<Label Visible="False" ID="lblVirusTotal" />
</StackLayoutItem>
</StackLayout>
</GroupBox>
</StackLayoutItem>
</StackLayout>
</StackLayout>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<StackLayoutItem HorizontalAlignment="Left">
<Button ID="btnCancel" Click="OnBtnCancelClicked">Cancel</Button>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Right">
<Button ID="btnApply" Click="OnBtnApplyClicked">Apply</Button>
</StackLayoutItem>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</Dialog>

329
dlgSettings.xeto.cs Normal file
View File

@@ -0,0 +1,329 @@
//
// Author:
// Natalia Portillo claunia@claunia.com
//
// Copyright (c) 2017, © Claunia.com
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the distribution.
// * Neither the name of the [ORGANIZATION] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
using System;
using System.IO;
using System.Threading;
using apprepodbmgr.Core;
using Eto.Forms;
using Eto.Serialization.Xaml;
namespace apprepodbmgr.Eto
{
public class dlgSettings : Dialog
{
string oldUnarPath;
public dlgSettings()
{
XamlReader.Load(this);
txtTmp.Text = Settings.Current.TemporaryFolder;
txtUnar.Text = Settings.Current.UnArchiverPath;
txtDatabase.Text = Settings.Current.DatabasePath;
txtRepository.Text = Settings.Current.RepositoryPath;
if(!string.IsNullOrWhiteSpace(txtUnar.Text)) CheckUnar();
cmbCompAlg = new EnumDropDown<AlgoEnum>();
StackLayoutForAlgoEnum.Items.Add(new StackLayoutItem(cmbCompAlg, HorizontalAlignment.Stretch, true));
cmbCompAlg.SelectedValue = Settings.Current.CompressionAlgorithm;
spClamdPort.Value = 3310;
chkAntivirus.Checked = Settings.Current.UseAntivirus;
frmClamd.Visible = chkAntivirus.Checked.Value;
if(Settings.Current.UseAntivirus && Settings.Current.UseClamd)
{
chkClamd.Checked = Settings.Current.UseClamd;
txtClamdHost.Text = Settings.Current.ClamdHost;
spClamdPort.Value = Settings.Current.ClamdPort;
chkClamdIsLocal.Checked = Settings.Current.ClamdIsLocal;
}
if(!Settings.Current.UseAntivirus || !Settings.Current.UseVirusTotal) return;
chkVirusTotal.Checked = true;
chkVirusTotal.Enabled = true;
txtVirusTotal.Enabled = true;
txtVirusTotal.Text = Settings.Current.VirusTotalKey;
btnVirusTotal.Enabled = true;
}
protected void OnBtnCancelClicked(object sender, EventArgs e)
{
Close();
}
protected void OnBtnApplyClicked(object sender, EventArgs e)
{
// TODO: Check sanity
Settings.Current.TemporaryFolder = txtTmp.Text;
Settings.Current.UnArchiverPath = txtUnar.Text;
Settings.Current.DatabasePath = txtDatabase.Text;
Settings.Current.RepositoryPath = txtRepository.Text;
Settings.Current.CompressionAlgorithm = cmbCompAlg.SelectedValue;
if(!chkClamd.Checked.Value || !chkAntivirus.Checked.Value)
{
Settings.Current.UseClamd = false;
Settings.Current.ClamdHost = null;
Settings.Current.ClamdPort = 3310;
Settings.Current.ClamdIsLocal = false;
}
if(chkVirusTotal.Checked.Value && chkAntivirus.Checked.Value)
{
Settings.Current.UseVirusTotal = true;
Settings.Current.VirusTotalKey = txtVirusTotal.Text;
Workers.InitVirusTotal(Settings.Current.VirusTotalKey);
}
else
{
Settings.Current.UseVirusTotal = false;
Settings.Current.VirusTotalKey = null;
}
Settings.SaveSettings();
Workers.CloseDB();
Workers.InitDB();
Context.ClamdVersion = null;
Workers.InitClamd();
Context.CheckUnar();
Close();
}
protected void OnBtnUnarClicked(object sender, EventArgs e)
{
OpenFileDialog dlgFile = new OpenFileDialog {Title = "Choose UnArchiver executable", MultiSelect = false};
if(!string.IsNullOrWhiteSpace(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)))
dlgFile.Directory = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
if(dlgFile.ShowDialog(this) != DialogResult.Ok) return;
txtUnar.Text = dlgFile.FileName;
lblUnarVersion.Visible = false;
CheckUnar();
}
protected void OnBtnTmpClicked(object sender, EventArgs e)
{
SelectFolderDialog dlgFolder =
new SelectFolderDialog {Title = "Choose temporary folder", Directory = Path.GetTempPath()};
if(dlgFolder.ShowDialog(this) == DialogResult.Ok) txtTmp.Text = dlgFolder.Directory;
}
protected void OnBtnRepositoryClicked(object sender, EventArgs e)
{
SelectFolderDialog dlgFolder =
new SelectFolderDialog {Title = "Choose repository folder", Directory = Path.GetTempPath()};
if(dlgFolder.ShowDialog(this) == DialogResult.Ok) txtRepository.Text = dlgFolder.Directory;
}
protected void OnBtnDatabaseClicked(object sender, EventArgs e)
{
SaveFileDialog dlgFile = new SaveFileDialog
{
Title = "Choose database to open/create",
Directory = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)),
CheckFileExists = false,
FileName = "apprepodbmgr.db"
};
if(dlgFile.ShowDialog(this) != DialogResult.Ok) return;
if(File.Exists(dlgFile.FileName))
{
DbCore dbCore = new SQLite();
bool notDb = false;
try { notDb |= !dbCore.OpenDb(dlgFile.FileName, null, null, null); }
catch { notDb = true; }
if(notDb)
{
MessageBox.Show("Cannot open specified file as a database, please choose another.",
MessageBoxType.Error);
return;
}
dbCore.CloseDb();
}
else
{
DbCore dbCore = new SQLite();
bool notDb = false;
try { notDb |= !dbCore.CreateDb(dlgFile.FileName, null, null, null); }
catch { notDb = true; }
if(notDb)
{
MessageBox.Show("Cannot create a database in the specified file as a database.",
MessageBoxType.Error);
return;
}
dbCore.CloseDb();
}
txtDatabase.Text = dlgFile.FileName;
}
void CheckUnar()
{
Workers.FinishedWithText += CheckUnarFinished;
Workers.Failed += CheckUnarFailed;
oldUnarPath = Settings.Current.UnArchiverPath;
Settings.Current.UnArchiverPath = txtUnar.Text;
Thread thdCheckUnar = new Thread(Workers.CheckUnar);
thdCheckUnar.Start();
}
void CheckUnarFinished(string text)
{
Application.Instance.Invoke(delegate
{
Workers.FinishedWithText -= CheckUnarFinished;
Workers.Failed -= CheckUnarFailed;
lblUnarVersion.Text = text;
lblUnarVersion.Visible = true;
Settings.Current.UnArchiverPath = oldUnarPath;
});
}
void CheckUnarFailed(string text)
{
Application.Instance.Invoke(delegate
{
Workers.FinishedWithText -= CheckUnarFinished;
Workers.Failed -= CheckUnarFailed;
txtUnar.Text = string.IsNullOrWhiteSpace(oldUnarPath) ? "" : oldUnarPath;
Settings.Current.UnArchiverPath = oldUnarPath;
MessageBox.Show(text, MessageBoxType.Error);
});
}
protected void OnChkAntivirusToggled(object sender, EventArgs e)
{
frmClamd.Visible = chkAntivirus.Checked.Value;
frmVirusTotal.Visible = chkAntivirus.Checked.Value;
}
protected void OnChkClamdToggled(object sender, EventArgs e)
{
txtClamdHost.Enabled = chkClamd.Checked.Value;
spClamdPort.Enabled = chkClamd.Checked.Value;
btnClamdTest.Enabled = chkClamd.Checked.Value;
lblClamdVersion.Visible = false;
chkClamdIsLocal.Enabled = chkClamd.Checked.Value;
}
protected void OnBtnClamdTestClicked(object sender, EventArgs e)
{
lblClamdVersion.Visible = false;
if(string.IsNullOrEmpty(txtClamdHost.Text))
{
MessageBox.Show("clamd host cannot be empty", MessageBoxType.Error);
return;
}
string oldVersion = Context.ClamdVersion;
Context.ClamdVersion = null;
string oldHost = Settings.Current.ClamdHost;
ushort oldPort = Settings.Current.ClamdPort;
Settings.Current.ClamdHost = txtClamdHost.Text;
Settings.Current.ClamdPort = (ushort)spClamdPort.Value;
Workers.TestClamd();
Settings.Current.ClamdHost = oldHost;
Settings.Current.ClamdPort = oldPort;
if(string.IsNullOrEmpty(Context.ClamdVersion))
{
MessageBox.Show("Cannot connect to clamd", MessageBoxType.Error);
return;
}
lblClamdVersion.Text = Context.ClamdVersion;
Context.ClamdVersion = oldVersion;
lblClamdVersion.Visible = true;
}
protected void OnChkVirusTotalToggled(object sender, EventArgs e)
{
txtVirusTotal.Enabled = chkVirusTotal.Checked.Value;
btnVirusTotal.Enabled = chkVirusTotal.Checked.Value;
lblVirusTotal.Visible = false;
}
protected void OnBtnVirusTotalClicked(object sender, EventArgs e)
{
Workers.Failed += VirusTotalTestFailed;
if(!Workers.TestVirusTotal(txtVirusTotal.Text)) return;
lblVirusTotal.Visible = true;
lblVirusTotal.Text = "Working!";
}
static void VirusTotalTestFailed(string text)
{
MessageBox.Show(text, MessageBoxType.Error);
}
#region XAML UI elements
#pragma warning disable 0649
TextBox txtTmp;
TextBox txtUnar;
TextBox txtDatabase;
TextBox txtRepository;
Label lblUnarVersion;
EnumDropDown<AlgoEnum> cmbCompAlg;
StackLayout StackLayoutForAlgoEnum;
GroupBox frmClamd;
CheckBox chkAntivirus;
CheckBox chkClamd;
TextBox txtClamdHost;
NumericUpDown spClamdPort;
Button btnClamdTest;
Label lblClamdVersion;
CheckBox chkClamdIsLocal;
GroupBox frmVirusTotal;
CheckBox chkVirusTotal;
TextBox txtVirusTotal;
Button btnVirusTotal;
Label lblVirusTotal;
#pragma warning restore 0649
#endregion XAML UI elements
}
}

86
frmMain.xeto Normal file
View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://schema.picoe.ca/eto.forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="365" Width="612" Title="App Repository DB Manager">
<TabControl>
<TabPage Text="Operating systems" ID="tabOSes">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<GridView ID="treeOSes" Enabled="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblOSStatus" Visible="False">lblOSStatus</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgress">lblProgress</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgress" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgress2" Visible="False">lblProgress2</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgress2" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button x:Name="btnAdd" Click="OnBtnAddClicked" Visible="False">Add</Button>
<Button x:Name="btnRemove" Click="OnBtnRemoveClicked" Visible="False">Remove</Button>
<Button x:Name="btnStop" Click="OnBtnStopClicked" Visible="False">Stop</Button>
<Button x:Name="btnCompress" Click="OnBtnCompressClicked" Visible="False">Compress to</Button>
<Button x:Name="btnSave" Click="OnBtnSaveClicked" Visible="False">Save As</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
<TabPage Text="Files" ID="tabFiles">
<StackLayout Orientation="Vertical">
<StackLayoutItem Expand="True" HorizontalAlignment="Stretch">
<GridView ID="treeFiles" Enabled="False" SelectionChanged="treeFilesSelectionChanged" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<Label ID="lblFileStatus" Visible="False">lblFileStatus</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgressFiles1" Visible="False">lblProgress</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgressFiles1" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<Label ID="lblProgressFiles2" Visible="False">lblProgress2</Label>
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Stretch">
<ProgressBar ID="prgProgressFiles2" Visible="False" />
</StackLayoutItem>
<StackLayoutItem HorizontalAlignment="Center">
<StackLayout Orientation="Horizontal">
<Button x:Name="btnStopFiles" Click="OnBtnStopFilesClicked" Visible="False">Stop</Button>
<Button x:Name="btnCleanFiles" Click="OnBtnCleanFilesClicked" Visible="False">Clean files</Button>
<Button x:Name="btnToggleCrack" Click="OnBtnToggleCrackClicked" Visible="False">Mark as crack</Button>
<Button x:Name="btnScanAllPending" Click="OnBtnScanAllPendingClicked" Visible="False">Scan all with clamd</Button>
<Button x:Name="btnScanWithClamd" Click="OnBtnScanWithClamdClicked" Visible="False">Scan with clamd</Button>
<Button x:Name="btnCheckInVirusTotal" Click="OnBtnCheckInVirusTotalClicked" Visible="False">Check with VirusTotal</Button>
<Button x:Name="btnPopulateFiles" Click="OnBtnPopulateFilesClicked">Populate</Button>
</StackLayout>
</StackLayoutItem>
</StackLayout>
</TabPage>
</TabControl>
<Form.Menu>
<MenuBar>
<ButtonMenuItem Text="&amp;File" ID="mnuFile">
<ButtonMenuItem Text="Add" Click="OnBtnAddClicked" Shortcut="CommonModifier+A" />
<ButtonMenuItem Text="Remove" Click="OnBtnRemoveClicked" Shortcut="CommonModifier+R" />
<ButtonMenuItem Text="Save As" Click="OnBtnSaveClicked" Shortcut="CommonModifier+S" />
<ButtonMenuItem ID="mnuCompress" Text="Compress" Click="OnBtnCompressClicked" Shortcut="CommonModifier+E" />
</ButtonMenuItem>
<ButtonMenuItem Text="Help" ID="btnHelp" Click="OnBtnHelpClicked" />
<MenuBar.ApplicationItems>
<ButtonMenuItem ID="btnSettings" Text="Preferences..." Click="OnBtnSettingsClicked" Shortcut="{On Control+O, Mac=Application+Comma}" />
</MenuBar.ApplicationItems>
<MenuBar.QuitItem>
<ButtonMenuItem ID="btnQuit" Text="Quit" Click="OnBtnQuitClicked" Shortcut="CommonModifier+Q" />
</MenuBar.QuitItem>
</MenuBar>
</Form.Menu>
</Form>

1110
frmMain.xeto.cs Normal file

File diff suppressed because it is too large Load Diff

7
packages.config Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Eto.Forms" version="2.3.0" targetFramework="net45" />
<package id="Eto.Serialization.Xaml" version="2.3.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net45" />
<package id="Portable.Xaml" version="0.17.0" targetFramework="net45" />
</packages>