mirror of
https://github.com/claunia/apprepodbmgr.git
synced 2025-12-16 19:24:42 +00:00
Removed dead code. * osrepodbmgr/DBOps.cs: Check null exceptions. Don't fill console with debug lines. * osrepodbmgr/DicCore.cs: Reduced buffer size for better UI responsiveness. * osrepodbmgr/MainWindow.cs: Corrected some GUI nuisances. Check null exceptions. * osrepodbmgr/dlgMetadata.cs: * osrepodbmgr/frmSettings.cs: * osrepodbmgr/dlgOpticalDisc.cs: * osrepodbmgr/gtk-gui/gui.stetic: * osrepodbmgr/gtk-gui/osrepodbmgr.dlgMetadata.cs: Corrected some GUI nuisances. * osrepodbmgr/DetectImageFormat.cs: Don't fill console with debug lines.
2052 lines
89 KiB
C#
2052 lines
89 KiB
C#
//
|
|
// 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.Collections.Generic;
|
|
using Gtk;
|
|
using Schemas;
|
|
|
|
namespace osrepodbmgr
|
|
{
|
|
public partial class dlgOpticalDisc : Dialog
|
|
{
|
|
public OpticalDiscType Metadata;
|
|
|
|
TreeIter trackIter;
|
|
TreeIter partitionIter;
|
|
TreeIter filesystemIter;
|
|
TreeIter dumpHwIter;
|
|
|
|
ListStore lstDumpHw;
|
|
ListStore lstTOC;
|
|
ListStore lstCDText;
|
|
ListStore lstATIP;
|
|
ListStore lstPMA;
|
|
ListStore lstPFI;
|
|
ListStore lstDMI;
|
|
ListStore lstCMI;
|
|
ListStore lstBCA;
|
|
ListStore lstDCB;
|
|
ListStore lstPRI;
|
|
ListStore lstMediaID;
|
|
ListStore lstPFIR;
|
|
ListStore lstLastRMD;
|
|
ListStore lstADIP;
|
|
ListStore lstDDS;
|
|
ListStore lstSAI;
|
|
ListStore lstDI;
|
|
ListStore lstPAC;
|
|
ListStore lstRingCodes;
|
|
ListStore lstMasteringSIDs;
|
|
ListStore lstToolstamps;
|
|
ListStore lstMouldSIDs;
|
|
ListStore lstMouldTexts;
|
|
ListStore lstLayerTypes;
|
|
ListStore lstLayers;
|
|
ListStore lstLeadIns;
|
|
ListStore lstLeadOuts;
|
|
ListStore lstXboxSS;
|
|
ListStore lstTracks;
|
|
ListStore lstTrackTypes;
|
|
|
|
bool editingPartition;
|
|
bool editingDumpHw;
|
|
|
|
// Non-editable fields
|
|
ChecksumType[] checksums;
|
|
CaseType mediaCase;
|
|
ScansType scans;
|
|
|
|
public dlgOpticalDisc()
|
|
{
|
|
Build();
|
|
|
|
#region Set partitions table
|
|
CellRendererText partSequenceCell = new CellRendererText();
|
|
CellRendererText partStartCell = new CellRendererText();
|
|
CellRendererText partEndCell = new CellRendererText();
|
|
CellRendererText partTypeCell = new CellRendererText();
|
|
CellRendererText partNameCell = new CellRendererText();
|
|
CellRendererText partDescriptionCell = new CellRendererText();
|
|
|
|
TreeViewColumn partSequenceColumn = new TreeViewColumn("Sequence", partSequenceCell, "text", 0);
|
|
TreeViewColumn partStartColumn = new TreeViewColumn("Start", partStartCell, "text", 1);
|
|
TreeViewColumn partEndColumn = new TreeViewColumn("End", partEndCell, "text", 2);
|
|
TreeViewColumn partTypeColumn = new TreeViewColumn("Type", partTypeCell, "text", 3);
|
|
TreeViewColumn partNameColumn = new TreeViewColumn("Name", partNameCell, "text", 4);
|
|
TreeViewColumn partDescriptionColumn = new TreeViewColumn("Description", partDescriptionCell, "text", 5);
|
|
|
|
|
|
treePartitions.AppendColumn(partSequenceColumn);
|
|
treePartitions.AppendColumn(partStartColumn);
|
|
treePartitions.AppendColumn(partEndColumn);
|
|
treePartitions.AppendColumn(partTypeColumn);
|
|
treePartitions.AppendColumn(partNameColumn);
|
|
treePartitions.AppendColumn(partDescriptionColumn);
|
|
|
|
treePartitions.Selection.Mode = SelectionMode.Single;
|
|
#endregion Set partitions table
|
|
|
|
#region Set filesystems table
|
|
CellRendererText fsTypeCell = new CellRendererText();
|
|
CellRendererText fsNameCell = new CellRendererText();
|
|
TreeViewColumn fsTypeColumn = new TreeViewColumn("Type", fsTypeCell, "text", 0);
|
|
TreeViewColumn fsNameColumn = new TreeViewColumn("Name", fsNameCell, "text", 1);
|
|
treeFilesystems.AppendColumn(fsTypeColumn);
|
|
treeFilesystems.AppendColumn(fsNameColumn);
|
|
treeFilesystems.Selection.Mode = SelectionMode.Single;
|
|
#endregion Set filesystems table
|
|
|
|
#region Set dump hardware table
|
|
lstDumpHw = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(ListStore));
|
|
|
|
CellRendererText hwManufacturerCell = new CellRendererText();
|
|
CellRendererText hwModelCell = new CellRendererText();
|
|
CellRendererText hwRevisionCell = new CellRendererText();
|
|
CellRendererText hwFirmwareCell = new CellRendererText();
|
|
CellRendererText hwSerialCell = new CellRendererText();
|
|
CellRendererText swNameCell = new CellRendererText();
|
|
CellRendererText swVersionCell = new CellRendererText();
|
|
CellRendererText swOSCell = new CellRendererText();
|
|
|
|
TreeViewColumn hwManufacturerColumn = new TreeViewColumn("Manufacturer", hwManufacturerCell, "text", 0);
|
|
TreeViewColumn hwModelColumn = new TreeViewColumn("Model", hwModelCell, "text", 1);
|
|
TreeViewColumn hwRevisionColumn = new TreeViewColumn("Revision", hwRevisionCell, "text", 2);
|
|
TreeViewColumn hwFirmwareColumn = new TreeViewColumn("Firmware", hwFirmwareCell, "text", 3);
|
|
TreeViewColumn hwSerialColumn = new TreeViewColumn("Serial", hwSerialCell, "text", 4);
|
|
TreeViewColumn swNameColumn = new TreeViewColumn("Software", swNameCell, "text", 5);
|
|
TreeViewColumn swVersionColumn = new TreeViewColumn("Version", swVersionCell, "text", 6);
|
|
TreeViewColumn swOSColumn = new TreeViewColumn("Operating system", swOSCell, "text", 7);
|
|
|
|
treeDumpHardware.Model = lstDumpHw;
|
|
|
|
treeDumpHardware.AppendColumn(hwManufacturerColumn);
|
|
treeDumpHardware.AppendColumn(hwModelColumn);
|
|
treeDumpHardware.AppendColumn(hwRevisionColumn);
|
|
treeDumpHardware.AppendColumn(hwFirmwareColumn);
|
|
treeDumpHardware.AppendColumn(hwSerialColumn);
|
|
treeDumpHardware.AppendColumn(swNameColumn);
|
|
treeDumpHardware.AppendColumn(swVersionColumn);
|
|
treeDumpHardware.AppendColumn(swOSColumn);
|
|
|
|
treeDumpHardware.Selection.Mode = SelectionMode.Single;
|
|
|
|
CellRendererText extentStartCell = new CellRendererText();
|
|
CellRendererText extentEndCell = new CellRendererText();
|
|
TreeViewColumn extentStartColumn = new TreeViewColumn("Start", extentStartCell, "text", 0);
|
|
TreeViewColumn extentEndColumn = new TreeViewColumn("End", extentEndCell, "text", 1);
|
|
treeExtents.AppendColumn(extentStartColumn);
|
|
treeExtents.AppendColumn(extentEndColumn);
|
|
treeExtents.Selection.Mode = SelectionMode.Single;
|
|
#endregion Set dump hardware table
|
|
|
|
CellRendererText fileCell = new CellRendererText();
|
|
CellRendererText sizeCell = new CellRendererText();
|
|
TreeViewColumn fileColumn = new TreeViewColumn("File", fileCell, "text", 0);
|
|
TreeViewColumn sizeColumn = new TreeViewColumn("Size", sizeCell, "text", 1);
|
|
|
|
#region Set TOC table
|
|
lstTOC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeTOC.Model = lstTOC;
|
|
treeTOC.AppendColumn(fileColumn);
|
|
treeTOC.AppendColumn(sizeColumn);
|
|
#endregion Set TOC table
|
|
|
|
#region Set CD-Text table
|
|
lstCDText = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeCDText.Model = lstCDText;
|
|
treeCDText.AppendColumn(fileColumn);
|
|
treeCDText.AppendColumn(sizeColumn);
|
|
#endregion Set CD-Text table
|
|
|
|
#region Set ATIP table
|
|
lstATIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeATIP.Model = lstATIP;
|
|
treeATIP.AppendColumn(fileColumn);
|
|
treeATIP.AppendColumn(sizeColumn);
|
|
#endregion Set ATIP table
|
|
|
|
#region Set PMA table
|
|
lstPMA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treePMA.Model = lstPMA;
|
|
treePMA.AppendColumn(fileColumn);
|
|
treePMA.AppendColumn(sizeColumn);
|
|
#endregion Set PMA table
|
|
|
|
#region Set PFI table
|
|
lstPFI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treePFI.Model = lstPFI;
|
|
treePFI.AppendColumn(fileColumn);
|
|
treePFI.AppendColumn(sizeColumn);
|
|
#endregion Set PFI table
|
|
|
|
#region Set DMI table
|
|
lstDMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeDMI.Model = lstDMI;
|
|
treeDMI.AppendColumn(fileColumn);
|
|
treeDMI.AppendColumn(sizeColumn);
|
|
#endregion Set DMI table
|
|
|
|
#region Set CMI table
|
|
lstCMI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeCMI.Model = lstCMI;
|
|
treeCMI.AppendColumn(fileColumn);
|
|
treeCMI.AppendColumn(sizeColumn);
|
|
#endregion Set CMI table
|
|
|
|
#region Set BCA table
|
|
lstBCA = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeBCA.Model = lstBCA;
|
|
treeBCA.AppendColumn(fileColumn);
|
|
treeBCA.AppendColumn(sizeColumn);
|
|
#endregion Set BCA table
|
|
|
|
#region Set DCB table
|
|
lstDCB = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeDCB.Model = lstDCB;
|
|
treeDCB.AppendColumn(fileColumn);
|
|
treeDCB.AppendColumn(sizeColumn);
|
|
#endregion Set DCB table
|
|
|
|
#region Set PRI table
|
|
lstPRI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treePRI.Model = lstPRI;
|
|
treePRI.AppendColumn(fileColumn);
|
|
treePRI.AppendColumn(sizeColumn);
|
|
#endregion Set PRI table
|
|
|
|
#region Set MediaID table
|
|
lstMediaID = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeMediaID.Model = lstMediaID;
|
|
treeMediaID.AppendColumn(fileColumn);
|
|
treeMediaID.AppendColumn(sizeColumn);
|
|
#endregion Set MediaID table
|
|
|
|
#region Set PFIR table
|
|
lstPFIR = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treePFIR.Model = lstPFIR;
|
|
treePFIR.AppendColumn(fileColumn);
|
|
treePFIR.AppendColumn(sizeColumn);
|
|
#endregion Set PFIR table
|
|
|
|
#region Set LastRMD table
|
|
lstLastRMD = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeLastRMD.Model = lstLastRMD;
|
|
treeLastRMD.AppendColumn(fileColumn);
|
|
treeLastRMD.AppendColumn(sizeColumn);
|
|
#endregion Set LastRMD table
|
|
|
|
#region Set ADIP table
|
|
lstADIP = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeADIP.Model = lstADIP;
|
|
treeADIP.AppendColumn(fileColumn);
|
|
treeADIP.AppendColumn(sizeColumn);
|
|
#endregion Set ADIP table
|
|
|
|
#region Set DDS table
|
|
lstDDS = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeDDS.Model = lstDDS;
|
|
treeDDS.AppendColumn(fileColumn);
|
|
treeDDS.AppendColumn(sizeColumn);
|
|
#endregion Set DDS table
|
|
|
|
#region Set SAI table
|
|
lstSAI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeSAI.Model = lstSAI;
|
|
treeSAI.AppendColumn(fileColumn);
|
|
treeSAI.AppendColumn(sizeColumn);
|
|
#endregion Set SAI table
|
|
|
|
#region Set DI table
|
|
lstDI = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treeDI.Model = lstDI;
|
|
treeDI.AppendColumn(fileColumn);
|
|
treeDI.AppendColumn(sizeColumn);
|
|
#endregion Set DI table
|
|
|
|
#region Set PAC table
|
|
lstPAC = new ListStore(typeof(string), typeof(int), typeof(ChecksumType[]));
|
|
treePAC.Model = lstPAC;
|
|
treePAC.AppendColumn(fileColumn);
|
|
treePAC.AppendColumn(sizeColumn);
|
|
#endregion Set PAC table
|
|
|
|
CellRendererText layerCell = new CellRendererText();
|
|
CellRendererText codeCell = new CellRendererText();
|
|
TreeViewColumn layerColumn = new TreeViewColumn("Layer", layerCell, "text", 0);
|
|
TreeViewColumn codeColumn = new TreeViewColumn("Code", codeCell, "text", 1);
|
|
|
|
#region Set ring code table
|
|
lstRingCodes = new ListStore(typeof(int), typeof(string));
|
|
treeRingCodes.Model = lstRingCodes;
|
|
treeRingCodes.AppendColumn(layerColumn);
|
|
treeRingCodes.AppendColumn(codeColumn);
|
|
#endregion Set ring code table
|
|
|
|
#region Set mastering sid table
|
|
lstMasteringSIDs = new ListStore(typeof(int), typeof(string));
|
|
treeMasteringSIDs.Model = lstMasteringSIDs;
|
|
treeMasteringSIDs.AppendColumn(layerColumn);
|
|
treeMasteringSIDs.AppendColumn(codeColumn);
|
|
#endregion Set mastering sid table
|
|
|
|
#region Set toolstamp table
|
|
lstToolstamps = new ListStore(typeof(int), typeof(string));
|
|
treeToolstamps.Model = lstToolstamps;
|
|
treeToolstamps.AppendColumn(layerColumn);
|
|
treeToolstamps.AppendColumn(codeColumn);
|
|
#endregion Set toolstamp table
|
|
|
|
#region Set mould sid table
|
|
lstMouldSIDs = new ListStore(typeof(int), typeof(string));
|
|
treeMouldSIDs.Model = lstMouldSIDs;
|
|
treeMouldSIDs.AppendColumn(layerColumn);
|
|
treeMouldSIDs.AppendColumn(codeColumn);
|
|
#endregion Set mould sid table
|
|
|
|
#region Set mould text table
|
|
lstMouldTexts = new ListStore(typeof(int), typeof(string));
|
|
treeMouldTexts.Model = lstMouldTexts;
|
|
treeMouldTexts.AppendColumn(layerColumn);
|
|
treeMouldTexts.AppendColumn(codeColumn);
|
|
#endregion Set mould text table
|
|
|
|
#region Set layer type combo box
|
|
CellRendererText cmbCell = new CellRendererText();
|
|
cmbLayerType.Clear();
|
|
lstLayerTypes = new ListStore(typeof(string));
|
|
cmbLayerType.PackStart(cmbCell, true);
|
|
cmbLayerType.AddAttribute(cmbCell, "text", 0);
|
|
cmbLayerType.Model = lstLayerTypes;
|
|
foreach(LayersTypeType type in Enum.GetValues(typeof(LayersTypeType)))
|
|
lstLayerTypes.AppendValues(type.ToString());
|
|
#endregion Set layer type combo box
|
|
|
|
#region Set layers table
|
|
CellRendererText layerSizeCell = new CellRendererText();
|
|
TreeViewColumn layerSizeColumn = new TreeViewColumn("Sectors", layerSizeCell, "text", 1);
|
|
lstLayers = new ListStore(typeof(int), typeof(long));
|
|
treeLayers.Model = lstLayers;
|
|
treeLayers.AppendColumn(layerColumn);
|
|
treeLayers.AppendColumn(layerSizeColumn);
|
|
#endregion Set layers table
|
|
|
|
CellRendererText sessionCell = new CellRendererText();
|
|
TreeViewColumn sessionColumn = new TreeViewColumn("Session", sessionCell, "text", 2);
|
|
|
|
#region Set Lead-In table
|
|
lstLeadIns = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[]));
|
|
treeLeadIn.Model = lstLeadIns;
|
|
treeLeadIn.AppendColumn(fileColumn);
|
|
treeLeadIn.AppendColumn(sizeColumn);
|
|
treeLeadIn.AppendColumn(sessionColumn);
|
|
#endregion Set Lead-In table
|
|
|
|
#region Set Lead-Out table
|
|
lstLeadOuts = new ListStore(typeof(string), typeof(int), typeof(int), typeof(ChecksumType[]));
|
|
treeLeadOut.Model = lstLeadOuts;
|
|
treeLeadOut.AppendColumn(fileColumn);
|
|
treeLeadOut.AppendColumn(sizeColumn);
|
|
treeLeadOut.AppendColumn(sessionColumn);
|
|
#endregion Set Lead-Out table
|
|
|
|
#region Set Xbox security sectors table
|
|
CellRendererText ssStartCell = new CellRendererText();
|
|
CellRendererText ssEndCell = new CellRendererText();
|
|
TreeViewColumn ssStartColumn = new TreeViewColumn("Start", ssStartCell, "text", 0);
|
|
TreeViewColumn ssEndColumn = new TreeViewColumn("End", ssEndCell, "text", 1);
|
|
lstXboxSS = new ListStore(typeof(int), typeof(int));
|
|
treeXboxSS.Model = lstXboxSS;
|
|
treeXboxSS.AppendColumn(ssStartColumn);
|
|
treeXboxSS.AppendColumn(ssEndColumn);
|
|
#endregion Set Xbox security sectors table
|
|
|
|
#region Set tracks table
|
|
lstTracks = new ListStore(typeof(int), typeof(int), typeof(string), typeof(long), typeof(string), typeof(long), typeof(string), typeof(string),
|
|
typeof(long), typeof(long), typeof(string), typeof(int), typeof(string), typeof(ChecksumType[]), typeof(SubChannelType),
|
|
typeof(ListStore));
|
|
CellRendererText trackSequenceCell = new CellRendererText();
|
|
CellRendererText sessionSequenceCell = new CellRendererText();
|
|
CellRendererText trackFileCell = new CellRendererText();
|
|
CellRendererText trackFileSizeCell = new CellRendererText();
|
|
CellRendererText trackFileFormatCell = new CellRendererText();
|
|
CellRendererText trackFileOffsetCell = new CellRendererText();
|
|
CellRendererText trackMSFStartCell = new CellRendererText();
|
|
CellRendererText trackMSFEndCell = new CellRendererText();
|
|
CellRendererText trackStartCell = new CellRendererText();
|
|
CellRendererText trackEndCell = new CellRendererText();
|
|
CellRendererText trackTypeCell = new CellRendererText();
|
|
CellRendererText trackBpsCell = new CellRendererText();
|
|
CellRendererText trackAccoustCell = new CellRendererText();
|
|
TreeViewColumn trackSequenceColumn = new TreeViewColumn("Track", trackSequenceCell, "text", 0);
|
|
TreeViewColumn sessionSequenceColumn = new TreeViewColumn("Session", sessionSequenceCell, "text", 1);
|
|
TreeViewColumn trackFileColumn = new TreeViewColumn("File", trackFileCell, "text", 2);
|
|
TreeViewColumn trackFileSizeColumn = new TreeViewColumn("Size", trackFileSizeCell, "text", 3);
|
|
TreeViewColumn trackFileFormatColumn = new TreeViewColumn("Format", trackFileFormatCell, "text", 4);
|
|
TreeViewColumn trackFileOffsetColumn = new TreeViewColumn("Offset", trackFileOffsetCell, "text", 5);
|
|
TreeViewColumn trackMSFStartColumn = new TreeViewColumn("MSF Start", trackMSFStartCell, "text", 6);
|
|
TreeViewColumn trackMSFEndColumn = new TreeViewColumn("MSF End", trackMSFEndCell, "text", 7);
|
|
TreeViewColumn trackStartColumn = new TreeViewColumn("LBA Start", trackStartCell, "text", 8);
|
|
TreeViewColumn trackEndColumn = new TreeViewColumn("LBA End", trackEndCell, "text", 9);
|
|
TreeViewColumn trackTypeColumn = new TreeViewColumn("Type", trackTypeCell, "text", 10);
|
|
TreeViewColumn trackBpsColumn = new TreeViewColumn("Bytes per sector", trackBpsCell, "text", 11);
|
|
TreeViewColumn trackAccoustColumn = new TreeViewColumn("Accoust ID", trackAccoustCell, "text", 12);
|
|
treeTracks.Model = lstTracks;
|
|
treeTracks.AppendColumn(trackSequenceColumn);
|
|
treeTracks.AppendColumn(sessionSequenceColumn);
|
|
treeTracks.AppendColumn(trackFileColumn);
|
|
treeTracks.AppendColumn(trackFileSizeColumn);
|
|
treeTracks.AppendColumn(trackFileFormatColumn);
|
|
treeTracks.AppendColumn(trackFileOffsetColumn);
|
|
treeTracks.AppendColumn(trackMSFStartColumn);
|
|
treeTracks.AppendColumn(trackMSFEndColumn);
|
|
treeTracks.AppendColumn(trackStartColumn);
|
|
treeTracks.AppendColumn(trackEndColumn);
|
|
treeTracks.AppendColumn(trackTypeColumn);
|
|
treeTracks.AppendColumn(trackBpsColumn);
|
|
treeTracks.AppendColumn(trackAccoustColumn);
|
|
#endregion Set tracks table
|
|
|
|
#region Set track type combo box
|
|
cmbTrackType.Clear();
|
|
lstTrackTypes = new ListStore(typeof(string));
|
|
cmbTrackType.PackStart(cmbCell, true);
|
|
cmbTrackType.AddAttribute(cmbCell, "text", 0);
|
|
cmbTrackType.Model = lstTrackTypes;
|
|
foreach(TrackTypeTrackType type in Enum.GetValues(typeof(TrackTypeTrackType)))
|
|
lstTrackTypes.AppendValues(type.ToString());
|
|
#endregion Set track type combo box
|
|
|
|
spExtentStart.Adjustment.Upper = double.MaxValue;
|
|
spExtentEnd.Adjustment.Upper = double.MaxValue;
|
|
}
|
|
|
|
public void FillFields()
|
|
{
|
|
if(Metadata == null)
|
|
return;
|
|
|
|
txtImage.Text = Metadata.Image.Value;
|
|
txtFormat.Text = Metadata.Image.format;
|
|
if(Metadata.Image.offsetSpecified)
|
|
txtOffset.Text = Metadata.Image.offset.ToString();
|
|
txtSize.Text = Metadata.Size.ToString();
|
|
if(Metadata.Sequence != null)
|
|
{
|
|
lblDiscTitle.Visible = true;
|
|
lblDiscTitle.Visible = true;
|
|
lblSequence.Visible = true;
|
|
spSequence.Visible = true;
|
|
lblTotalMedia.Visible = true;
|
|
spTotalMedia.Visible = true;
|
|
lblSide.Visible = true;
|
|
spSide.Visible = true;
|
|
lblLayer.Visible = true;
|
|
spLayer1.Visible = true;
|
|
chkSequence.Active = true;
|
|
txtDiscTitle.Text = Metadata.Sequence.MediaTitle;
|
|
spSequence.Value = Metadata.Sequence.MediaSequence;
|
|
spTotalMedia.Value = Metadata.Sequence.TotalMedia;
|
|
if(Metadata.Sequence.SideSpecified)
|
|
spSide.Value = Metadata.Sequence.Side;
|
|
if(Metadata.Sequence.LayerSpecified)
|
|
spLayer1.Value = Metadata.Sequence.Layer;
|
|
}
|
|
|
|
if(Metadata.Layers != null)
|
|
{
|
|
chkLayers.Active = true;
|
|
frmLayers.Visible = true;
|
|
|
|
TreeIter layerIter;
|
|
cmbLayerType.Model.GetIterFirst(out layerIter);
|
|
do
|
|
{
|
|
if((string)cmbLayerType.Model.GetValue(layerIter, 0) == Metadata.Layers.type.ToString())
|
|
{
|
|
cmbLayerType.SetActiveIter(layerIter);
|
|
break;
|
|
}
|
|
}
|
|
while(cmbLayerType.Model.IterNext(ref layerIter));
|
|
|
|
foreach(SectorsType layer in Metadata.Layers.Sectors)
|
|
lstLayers.AppendValues(layer.layer, layer.Value);
|
|
}
|
|
|
|
checksums = Metadata.Checksums;
|
|
|
|
if(Metadata.RingCode != null)
|
|
{
|
|
foreach(LayeredTextType ringcode in Metadata.RingCode)
|
|
lstRingCodes.AppendValues(ringcode.layer, ringcode.Value);
|
|
}
|
|
|
|
if(Metadata.MasteringSID != null)
|
|
{
|
|
foreach(LayeredTextType masteringsid in Metadata.MasteringSID)
|
|
lstMasteringSIDs.AppendValues(masteringsid.layer, masteringsid.Value);
|
|
}
|
|
|
|
if(Metadata.Toolstamp != null)
|
|
{
|
|
foreach(LayeredTextType toolstamp in Metadata.Toolstamp)
|
|
lstToolstamps.AppendValues(toolstamp.layer, toolstamp.Value);
|
|
}
|
|
|
|
if(Metadata.MouldSID != null)
|
|
{
|
|
foreach(LayeredTextType mouldsid in Metadata.MouldSID)
|
|
lstMouldSIDs.AppendValues(mouldsid.layer, mouldsid.Value);
|
|
}
|
|
|
|
if(Metadata.MouldText != null)
|
|
{
|
|
foreach(LayeredTextType mouldtext in Metadata.MouldText)
|
|
lstMouldTexts.AppendValues(mouldtext.layer, mouldtext.Value);
|
|
}
|
|
|
|
if(Metadata.DiscType != null)
|
|
txtDiscType.Text = Metadata.DiscType;
|
|
if(Metadata.DiscSubType != null)
|
|
txtDiscSubType.Text = Metadata.DiscSubType;
|
|
if(Metadata.OffsetSpecified)
|
|
txtWriteOffset.Text = Metadata.Offset.ToString();
|
|
txtMediaTracks.Text = Metadata.Tracks[0].ToString();
|
|
txtMediaSessions.Text = Metadata.Sessions.ToString();
|
|
if(Metadata.CopyProtection != null)
|
|
txtCopyProtection.Text = Metadata.CopyProtection;
|
|
|
|
if(Metadata.Dimensions != null)
|
|
{
|
|
chkDimensions.Active = true;
|
|
if(Metadata.Dimensions.DiameterSpecified)
|
|
{
|
|
chkRound.Active = true;
|
|
lblDiameter.Visible = true;
|
|
spDiameter.Visible = true;
|
|
lblDiameterUnits.Visible = true;
|
|
spDiameter.Value = Metadata.Dimensions.Diameter;
|
|
}
|
|
else
|
|
{
|
|
lblHeight.Visible = true;
|
|
spHeight.Visible = true;
|
|
lblHeightUnits.Visible = true;
|
|
spHeight.Value = Metadata.Dimensions.Height;
|
|
lblWidth.Visible = true;
|
|
spWidth.Visible = true;
|
|
lblWidthUnits.Visible = true;
|
|
spWidth.Value = Metadata.Dimensions.Width;
|
|
}
|
|
lblThickness.Visible = true;
|
|
spThickness.Visible = true;
|
|
lblThicknessUnits.Visible = true;
|
|
spThickness.Value = Metadata.Dimensions.Thickness;
|
|
}
|
|
|
|
mediaCase = Metadata.Case;
|
|
scans = Metadata.Scans;
|
|
|
|
if(Metadata.PFI != null)
|
|
{
|
|
frmPFI.Visible = true;
|
|
lstPFI.AppendValues(Metadata.PFI.Image, Metadata.PFI.Size, Metadata.PFI.Checksums);
|
|
}
|
|
if(Metadata.DMI != null)
|
|
{
|
|
frmDMI.Visible = true;
|
|
lstDMI.AppendValues(Metadata.DMI.Image, Metadata.DMI.Size, Metadata.DMI.Checksums);
|
|
}
|
|
if(Metadata.CMI != null)
|
|
{
|
|
frmCMI.Visible = true;
|
|
lstCMI.AppendValues(Metadata.CMI.Image, Metadata.CMI.Size, Metadata.CMI.Checksums);
|
|
}
|
|
if(Metadata.BCA != null)
|
|
{
|
|
frmBCA.Visible = true;
|
|
lstBCA.AppendValues(Metadata.BCA.Image, Metadata.BCA.Size, Metadata.BCA.Checksums);
|
|
}
|
|
if(Metadata.ATIP != null)
|
|
{
|
|
frmATIP.Visible = true;
|
|
lstATIP.AppendValues(Metadata.ATIP.Image, Metadata.ATIP.Size, Metadata.ATIP.Checksums);
|
|
}
|
|
if(Metadata.ADIP != null)
|
|
{
|
|
frmADIP.Visible = true;
|
|
lstADIP.AppendValues(Metadata.ADIP.Image, Metadata.ADIP.Size, Metadata.ADIP.Checksums);
|
|
}
|
|
if(Metadata.PMA != null)
|
|
{
|
|
frmPMA.Visible = true;
|
|
lstPMA.AppendValues(Metadata.PMA.Image, Metadata.PMA.Size, Metadata.PMA.Checksums);
|
|
}
|
|
if(Metadata.DDS != null)
|
|
{
|
|
frmDDS.Visible = true;
|
|
lstDDS.AppendValues(Metadata.DDS.Image, Metadata.DDS.Size, Metadata.DDS.Checksums);
|
|
}
|
|
if(Metadata.SAI != null)
|
|
{
|
|
frmSAI.Visible = true;
|
|
lstSAI.AppendValues(Metadata.SAI.Image, Metadata.SAI.Size, Metadata.SAI.Checksums);
|
|
}
|
|
if(Metadata.LastRMD != null)
|
|
{
|
|
frmLastRMD.Visible = true;
|
|
lstLastRMD.AppendValues(Metadata.LastRMD.Image, Metadata.LastRMD.Size, Metadata.LastRMD.Checksums);
|
|
}
|
|
if(Metadata.PRI != null)
|
|
{
|
|
frmPRI.Visible = true;
|
|
lstPRI.AppendValues(Metadata.PRI.Image, Metadata.PRI.Size, Metadata.PRI.Checksums);
|
|
}
|
|
if(Metadata.MediaID != null)
|
|
{
|
|
frmMediaID.Visible = true;
|
|
lstMediaID.AppendValues(Metadata.MediaID.Image, Metadata.MediaID.Size, Metadata.MediaID.Checksums);
|
|
}
|
|
if(Metadata.PFIR != null)
|
|
{
|
|
frmPFIR.Visible = true;
|
|
lstPFIR.AppendValues(Metadata.PFIR.Image, Metadata.PFIR.Size, Metadata.PFIR.Checksums);
|
|
}
|
|
if(Metadata.DCB != null)
|
|
{
|
|
frmDCB.Visible = true;
|
|
lstDCB.AppendValues(Metadata.DCB.Image, Metadata.DCB.Size, Metadata.DCB.Checksums);
|
|
}
|
|
if(Metadata.DI != null)
|
|
{
|
|
frmDI.Visible = true;
|
|
lstDI.AppendValues(Metadata.DI.Image, Metadata.DI.Size, Metadata.DI.Checksums);
|
|
}
|
|
if(Metadata.PAC != null)
|
|
{
|
|
frmPAC.Visible = true;
|
|
lstPAC.AppendValues(Metadata.PAC.Image, Metadata.PAC.Size, Metadata.PAC.Checksums);
|
|
}
|
|
if(Metadata.TOC != null)
|
|
{
|
|
frmTOC.Visible = true;
|
|
lstTOC.AppendValues(Metadata.TOC.Image, Metadata.TOC.Size, Metadata.TOC.Checksums);
|
|
}
|
|
if(Metadata.LeadInCdText != null)
|
|
{
|
|
frmCDText.Visible = true;
|
|
lstCDText.AppendValues(Metadata.LeadInCdText.Image, Metadata.LeadInCdText.Size, Metadata.LeadInCdText.Checksums);
|
|
}
|
|
|
|
if(Metadata.LeadIn != null)
|
|
{
|
|
frmLeadIns.Visible = true;
|
|
foreach(BorderType leadin in Metadata.LeadIn)
|
|
lstLeadIns.AppendValues(leadin.Image, leadin.Size, leadin.session, leadin.Checksums);
|
|
}
|
|
if(Metadata.LeadOut != null)
|
|
{
|
|
frmLeadOuts.Visible = true;
|
|
foreach(BorderType leadout in Metadata.LeadOut)
|
|
lstLeadOuts.AppendValues(leadout.Image, leadout.Size, leadout.session, leadout.Checksums);
|
|
}
|
|
|
|
if(Metadata.XboxSecuritySectors != null)
|
|
{
|
|
foreach(SecuritySectorsType ss in Metadata.XboxSecuritySectors)
|
|
lstXboxSS.AppendValues(ss.Start, ss.End);
|
|
}
|
|
|
|
if(Metadata.PS3Encryption != null)
|
|
{
|
|
txtPS3Key.Text = Metadata.PS3Encryption.Key;
|
|
txtPS3Serial.Text = Metadata.PS3Encryption.Serial;
|
|
}
|
|
|
|
foreach(TrackType track in Metadata.Track)
|
|
{
|
|
ListStore lstPartitions = new ListStore(typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), typeof(string), typeof(ListStore));
|
|
|
|
if(track.FileSystemInformation != null)
|
|
{
|
|
foreach(PartitionType partition in track.FileSystemInformation)
|
|
{
|
|
ListStore lstFilesystems = new ListStore(typeof(string), typeof(string), typeof(FileSystemType));
|
|
if(partition.FileSystems != null)
|
|
{
|
|
foreach(FileSystemType fs in partition.FileSystems)
|
|
lstFilesystems.AppendValues(fs.Type, fs.VolumeName, fs);
|
|
}
|
|
lstPartitions.AppendValues(partition.Sequence, partition.StartSector, partition.EndSector, partition.Type, partition.Name, partition.Description, lstFilesystems);
|
|
}
|
|
}
|
|
|
|
lstTracks.AppendValues(track.Sequence.TrackNumber, track.Sequence.Session, track.Image.Value, track.Size, track.Image.format, track.Image.offset,
|
|
track.StartMSF, track.EndMSF, track.StartSector, track.EndSector, track.TrackType1.ToString(), track.BytesPerSector, track.AccoustID,
|
|
track.Checksums, track.SubChannel, lstPartitions);
|
|
|
|
}
|
|
|
|
if(Metadata.DumpHardwareArray != null)
|
|
{
|
|
chkDumpHardware.Active = true;
|
|
treeDumpHardware.Visible = true;
|
|
btnAddHardware.Visible = true;
|
|
btnRemoveHardware.Visible = true;
|
|
|
|
foreach(DumpHardwareType hw in Metadata.DumpHardwareArray)
|
|
{
|
|
if(hw.Extents != null)
|
|
{
|
|
ListStore lstExtents = new ListStore(typeof(int), typeof(int));
|
|
foreach(ExtentType extent in hw.Extents)
|
|
lstExtents.AppendValues(extent.Start, extent.End);
|
|
if(hw.Software != null)
|
|
lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, hw.Software.Name, hw.Software.Version, hw.Software.OperatingSystem, lstExtents);
|
|
else
|
|
lstDumpHw.AppendValues(hw.Manufacturer, hw.Model, hw.Revision, hw.Firmware, hw.Serial, null, null, null, lstExtents);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
protected void OnChkSequencedToggled(object sender, EventArgs e)
|
|
{
|
|
lblDiscTitle.Visible = chkSequence.Active;
|
|
txtDiscTitle.Visible = chkSequence.Active;
|
|
lblSequence.Visible = chkSequence.Active;
|
|
spSequence.Visible = chkSequence.Active;
|
|
lblTotalMedia.Visible = chkSequence.Active;
|
|
spTotalMedia.Visible = chkSequence.Active;
|
|
lblSide.Visible = chkSequence.Active;
|
|
spSide.Visible = chkSequence.Active;
|
|
lblLayer.Visible = chkSequence.Active;
|
|
spLayer1.Visible = chkSequence.Active;
|
|
}
|
|
|
|
protected void OnChkDimensionsToggled(object sender, EventArgs e)
|
|
{
|
|
chkRound.Visible = chkDimensions.Active;
|
|
lblThickness.Visible = chkDimensions.Active;
|
|
spThickness.Visible = chkDimensions.Active;
|
|
lblThicknessUnits.Visible = chkDimensions.Active;
|
|
if(chkDimensions.Active)
|
|
OnChkRoundToggled(sender, e);
|
|
else
|
|
{
|
|
lblDiameter.Visible = false;
|
|
spDiameter.Visible = false;
|
|
lblDiameterUnits.Visible = false;
|
|
lblHeight.Visible = false;
|
|
spHeight.Visible = false;
|
|
lblHeightUnits.Visible = false;
|
|
lblWidth.Visible = false;
|
|
spWidth.Visible = false;
|
|
lblWidthUnits.Visible = false;
|
|
}
|
|
}
|
|
|
|
protected void OnChkRoundToggled(object sender, EventArgs e)
|
|
{
|
|
lblDiameter.Visible = chkRound.Active;
|
|
spDiameter.Visible = chkRound.Active;
|
|
lblDiameterUnits.Visible = chkRound.Active;
|
|
lblHeight.Visible = !chkRound.Active;
|
|
spHeight.Visible = !chkRound.Active;
|
|
lblHeightUnits.Visible = !chkRound.Active;
|
|
lblWidth.Visible = !chkRound.Active;
|
|
spWidth.Visible = !chkRound.Active;
|
|
lblWidthUnits.Visible = !chkRound.Active;
|
|
}
|
|
|
|
protected void OnChkLayersToggled(object sender, EventArgs e)
|
|
{
|
|
frmLayers.Visible = chkLayers.Active;
|
|
}
|
|
|
|
protected void OnBtnAddLayerClicked(object sender, EventArgs e)
|
|
{
|
|
MessageDialog dlgMsg;
|
|
long ltmp;
|
|
|
|
if(string.IsNullOrWhiteSpace(txtLayerSize.Text))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must not be empty");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
}
|
|
|
|
if(!long.TryParse(txtLayerSize.Text, out ltmp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
}
|
|
|
|
if(ltmp < 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be a positive");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
}
|
|
|
|
if(ltmp == 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Layer size must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
}
|
|
|
|
lstLayers.AppendValues(spLayer1.ValueAsInt, long.Parse(txtLayerSize.Text));
|
|
}
|
|
|
|
protected void OnBtnRemoveLayerClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeLayers.Selection.GetSelected(out outIter))
|
|
lstLayers.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnRemoveSSClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeXboxSS.Selection.GetSelected(out outIter))
|
|
lstXboxSS.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnAddSSClicked(object sender, EventArgs e)
|
|
{
|
|
MessageDialog dlgMsg;
|
|
int temp, temp2;
|
|
|
|
if(!int.TryParse(txtSSStart.Text, out temp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector start must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(!int.TryParse(txtSSEnd.Text, out temp2))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector end must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(temp2 <= temp)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Xbox Security Sector must end after start, and be bigger than 1 sector");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
lstXboxSS.AppendValues(int.Parse(txtSSStart.Text), int.Parse(txtSSEnd.Text));
|
|
}
|
|
|
|
protected void OnBtnRemovePartitionClicked(object sender, EventArgs e)
|
|
{
|
|
if(treePartitions.Selection.GetSelected(out partitionIter))
|
|
((ListStore)treePartitions.Model).Remove(ref partitionIter);
|
|
}
|
|
|
|
protected void OnBtnEditPartitionClicked(object sender, EventArgs e)
|
|
{
|
|
if(!treePartitions.Selection.GetSelected(out partitionIter))
|
|
return;
|
|
|
|
spPartitionSequence.Value = (int)((ListStore)treePartitions.Model).GetValue(partitionIter, 0);
|
|
txtPartitionStart.Text = ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 1)).ToString();
|
|
txtPartitionEnd.Text = ((int)((ListStore)treePartitions.Model).GetValue(partitionIter, 2)).ToString();
|
|
txtPartitionType.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 3);
|
|
txtPartitionName.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 4);
|
|
txtPartitionDescription.Text = (string)((ListStore)treePartitions.Model).GetValue(partitionIter, 5);
|
|
treeFilesystems.Model = (ListStore)((ListStore)treePartitions.Model).GetValue(partitionIter, 6);
|
|
|
|
btnCancelPartition.Visible = true;
|
|
btnApplyPartition.Visible = true;
|
|
btnRemovePartition.Visible = false;
|
|
btnEditPartition.Visible = false;
|
|
btnAddPartition.Visible = false;
|
|
lblPartitionSequence.Visible = true;
|
|
spPartitionSequence.Visible = true;
|
|
lblPartitionStart.Visible = true;
|
|
txtPartitionStart.Visible = true;
|
|
lblPartitionEnd.Visible = true;
|
|
txtPartitionEnd.Visible = true;
|
|
lblPartitionType.Visible = true;
|
|
txtPartitionType.Visible = true;
|
|
lblPartitionName.Visible = true;
|
|
txtPartitionName.Visible = true;
|
|
lblPartitionDescription.Visible = true;
|
|
txtPartitionDescription.Visible = true;
|
|
frmFilesystems.Visible = true;
|
|
|
|
editingPartition = true;
|
|
}
|
|
|
|
protected void OnBtnApplyPartitionClicked(object sender, EventArgs e)
|
|
{
|
|
MessageDialog dlgMsg;
|
|
int temp, temp2;
|
|
|
|
if(spPartitionSequence.Value < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition sequence must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(!int.TryParse(txtPartitionStart.Text, out temp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition start must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(!int.TryParse(txtPartitionEnd.Text, out temp2))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition end must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(temp2 <= temp)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Partition must end after start, and be bigger than 1 sector");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(editingPartition)
|
|
((ListStore)treePartitions.Model).Remove(ref partitionIter);
|
|
|
|
((ListStore)treePartitions.Model).AppendValues(spPartitionSequence.ValueAsInt, int.Parse(txtPartitionStart.Text), int.Parse(txtPartitionEnd.Text), txtPartitionType.Text,
|
|
txtPartitionName.Text, txtPartitionDescription.Text, (ListStore)treeFilesystems.Model);
|
|
|
|
btnCancelPartition.Visible = false;
|
|
btnApplyPartition.Visible = false;
|
|
btnRemovePartition.Visible = true;
|
|
btnEditPartition.Visible = true;
|
|
btnAddPartition.Visible = true;
|
|
lblPartitionSequence.Visible = false;
|
|
spPartitionSequence.Visible = false;
|
|
lblPartitionStart.Visible = false;
|
|
txtPartitionStart.Visible = false;
|
|
lblPartitionEnd.Visible = false;
|
|
txtPartitionEnd.Visible = false;
|
|
lblPartitionType.Visible = false;
|
|
txtPartitionType.Visible = false;
|
|
lblPartitionName.Visible = false;
|
|
txtPartitionName.Visible = false;
|
|
lblPartitionDescription.Visible = false;
|
|
txtPartitionDescription.Visible = false;
|
|
frmFilesystems.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnAddPartitionClicked(object sender, EventArgs e)
|
|
{
|
|
spPartitionSequence.Value = 0;
|
|
txtPartitionStart.Text = "";
|
|
txtPartitionEnd.Text = "";
|
|
txtPartitionType.Text = "";
|
|
txtPartitionName.Text = "";
|
|
txtPartitionDescription.Text = "";
|
|
treeFilesystems.Model = new ListStore(typeof(string), typeof(string), typeof(FileSystemType));
|
|
|
|
btnCancelPartition.Visible = true;
|
|
btnApplyPartition.Visible = true;
|
|
btnRemovePartition.Visible = false;
|
|
btnEditPartition.Visible = false;
|
|
btnAddPartition.Visible = false;
|
|
lblPartitionSequence.Visible = true;
|
|
spPartitionSequence.Visible = true;
|
|
lblPartitionStart.Visible = true;
|
|
txtPartitionStart.Visible = true;
|
|
lblPartitionEnd.Visible = true;
|
|
txtPartitionEnd.Visible = true;
|
|
lblPartitionType.Visible = true;
|
|
txtPartitionType.Visible = true;
|
|
lblPartitionName.Visible = true;
|
|
txtPartitionName.Visible = true;
|
|
lblPartitionDescription.Visible = true;
|
|
txtPartitionDescription.Visible = true;
|
|
frmFilesystems.Visible = true;
|
|
|
|
editingPartition = false;
|
|
}
|
|
|
|
protected void OnBtnRemoveFilesystemClicked(object sender, EventArgs e)
|
|
{
|
|
if(treeFilesystems.Selection.GetSelected(out filesystemIter))
|
|
((ListStore)treeFilesystems.Model).Remove(ref filesystemIter);
|
|
}
|
|
|
|
protected void OnBtnEditFilesystemClicked(object sender, EventArgs e)
|
|
{
|
|
if(!treeFilesystems.Selection.GetSelected(out filesystemIter))
|
|
return;
|
|
|
|
dlgFilesystem _dlgFilesystem = new dlgFilesystem();
|
|
_dlgFilesystem.Metadata = (FileSystemType)((ListStore)treeFilesystems.Model).GetValue(filesystemIter, 2);
|
|
_dlgFilesystem.FillFields();
|
|
|
|
if(_dlgFilesystem.Run() == (int)ResponseType.Ok)
|
|
{
|
|
((ListStore)treeFilesystems.Model).Remove(ref filesystemIter);
|
|
((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata);
|
|
}
|
|
|
|
_dlgFilesystem.Destroy();
|
|
}
|
|
|
|
protected void OnBtnAddFilesystemClicked(object sender, EventArgs e)
|
|
{
|
|
dlgFilesystem _dlgFilesystem = new dlgFilesystem();
|
|
|
|
if(_dlgFilesystem.Run() == (int)ResponseType.Ok)
|
|
((ListStore)treeFilesystems.Model).AppendValues(_dlgFilesystem.Metadata.Type, _dlgFilesystem.Metadata.VolumeName, _dlgFilesystem.Metadata);
|
|
|
|
_dlgFilesystem.Destroy();
|
|
}
|
|
|
|
protected void OnBtnCancelTrackClicked(object sender, EventArgs e)
|
|
{
|
|
btnEditTrack.Visible = true;
|
|
btnApplyTrack.Visible = false;
|
|
btnCancelTrack.Visible = false;
|
|
frmPartitions.Visible = false;
|
|
lblTrackStart.Visible = false;
|
|
txtTrackStart.Visible = false;
|
|
lblTrackEnd.Visible = false;
|
|
txtTrackEnd.Visible = false;
|
|
lblMSFStart.Visible = false;
|
|
txtMSFStart.Visible = false;
|
|
lblMSFEnd.Visible = false;
|
|
txtMSFEnd.Visible = false;
|
|
lblTrackSequence.Visible = false;
|
|
txtTrackSequence.Visible = false;
|
|
lblSessionSequence.Visible = false;
|
|
txtSessionSequence.Visible = false;
|
|
lblTrackType.Visible = false;
|
|
cmbTrackType.Visible = false;
|
|
txtBytesPerSector.Visible = false;
|
|
lblBytesPerSector.Visible = false;
|
|
lblAcoustID.Visible = false;
|
|
txtAcoustID.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnApplyTrackClicked(object sender, EventArgs e)
|
|
{
|
|
string file = (string)lstTracks.GetValue(trackIter, 2);
|
|
long filesize = (long)lstTracks.GetValue(trackIter, 3);
|
|
string fileformat = (string)lstTracks.GetValue(trackIter, 4);
|
|
long fileoffset = (long)lstTracks.GetValue(trackIter, 5);
|
|
ChecksumType[] checksums = (ChecksumType[])lstTracks.GetValue(trackIter, 13);
|
|
SubChannelType subchannel = (SubChannelType)lstTracks.GetValue(trackIter, 14);
|
|
|
|
TreeIter typeIter;
|
|
string trackType;
|
|
if(cmbTrackType.GetActiveIter(out typeIter))
|
|
trackType = ((string)cmbTrackType.Model.GetValue(typeIter, 0));
|
|
else
|
|
trackType = TrackTypeTrackType.mode1.ToString();
|
|
|
|
lstTracks.Remove(ref trackIter);
|
|
lstTracks.AppendValues(int.Parse(txtTrackSequence.Text), int.Parse(txtSessionSequence.Text), file, filesize, fileformat, fileoffset,
|
|
txtMSFStart.Text, txtMSFEnd.Text, long.Parse(txtTrackStart.Text), long.Parse(txtTrackEnd.Text), trackType,
|
|
int.Parse(txtBytesPerSector.Text), txtAcoustID.Text, checksums, subchannel, (ListStore)treePartitions.Model);
|
|
|
|
btnEditTrack.Visible = true;
|
|
btnApplyTrack.Visible = false;
|
|
btnCancelTrack.Visible = false;
|
|
frmPartitions.Visible = false;
|
|
lblTrackStart.Visible = false;
|
|
txtTrackStart.Visible = false;
|
|
lblTrackEnd.Visible = false;
|
|
txtTrackEnd.Visible = false;
|
|
lblMSFStart.Visible = false;
|
|
txtMSFStart.Visible = false;
|
|
lblMSFEnd.Visible = false;
|
|
txtMSFEnd.Visible = false;
|
|
lblTrackSequence.Visible = false;
|
|
txtTrackSequence.Visible = false;
|
|
lblSessionSequence.Visible = false;
|
|
txtSessionSequence.Visible = false;
|
|
lblTrackType.Visible = false;
|
|
cmbTrackType.Visible = false;
|
|
txtBytesPerSector.Visible = false;
|
|
lblBytesPerSector.Visible = false;
|
|
lblAcoustID.Visible = false;
|
|
txtAcoustID.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnEditTrackClicked(object sender, EventArgs e)
|
|
{
|
|
if(!treeTracks.Selection.GetSelected(out trackIter))
|
|
return;
|
|
|
|
txtTrackSequence.Text = ((int)lstTracks.GetValue(trackIter, 0)).ToString();
|
|
txtSessionSequence.Text = ((int)lstTracks.GetValue(trackIter, 1)).ToString();
|
|
txtMSFStart.Text = (string)lstTracks.GetValue(trackIter, 6);
|
|
txtMSFEnd.Text = (string)lstTracks.GetValue(trackIter, 7);
|
|
txtTrackStart.Text = ((long)lstTracks.GetValue(trackIter, 8)).ToString();
|
|
txtTrackEnd.Text = ((long)lstTracks.GetValue(trackIter, 9)).ToString();
|
|
string tracktype = (string)lstTracks.GetValue(trackIter, 10);
|
|
txtBytesPerSector.Text = ((int)lstTracks.GetValue(trackIter, 11)).ToString();
|
|
txtAcoustID.Text = (string)lstTracks.GetValue(trackIter, 12);
|
|
treePartitions.Model = (ListStore)lstTracks.GetValue(trackIter, 15);
|
|
|
|
TreeIter typeIter;
|
|
cmbTrackType.Model.GetIterFirst(out typeIter);
|
|
do
|
|
{
|
|
if((string)cmbTrackType.Model.GetValue(typeIter, 0) == tracktype)
|
|
{
|
|
cmbTrackType.SetActiveIter(typeIter);
|
|
break;
|
|
}
|
|
}
|
|
while(cmbTrackType.Model.IterNext(ref typeIter));
|
|
|
|
btnEditTrack.Visible = false;
|
|
btnApplyTrack.Visible = true;
|
|
btnCancelTrack.Visible = true;
|
|
frmPartitions.Visible = true;
|
|
lblTrackStart.Visible = true;
|
|
txtTrackStart.Visible = true;
|
|
lblTrackEnd.Visible = true;
|
|
txtTrackEnd.Visible = true;
|
|
lblMSFStart.Visible = true;
|
|
txtMSFStart.Visible = true;
|
|
lblMSFEnd.Visible = true;
|
|
txtMSFEnd.Visible = true;
|
|
lblTrackSequence.Visible = true;
|
|
txtTrackSequence.Visible = true;
|
|
lblSessionSequence.Visible = true;
|
|
txtSessionSequence.Visible = true;
|
|
lblTrackType.Visible = true;
|
|
cmbTrackType.Visible = true;
|
|
txtBytesPerSector.Visible = true;
|
|
lblBytesPerSector.Visible = true;
|
|
lblAcoustID.Visible = true;
|
|
txtAcoustID.Visible = true;
|
|
}
|
|
|
|
protected void OnChkKnownDumpHWToggled(object sender, EventArgs e)
|
|
{
|
|
treeDumpHardware.Visible = chkDumpHardware.Active;
|
|
btnAddHardware.Visible = chkDumpHardware.Active;
|
|
btnRemoveHardware.Visible = chkDumpHardware.Active;
|
|
|
|
btnCancelHardware.Visible = false;
|
|
btnEditHardware.Visible = false;
|
|
btnApplyHardware.Visible = false;
|
|
lblHWManufacturer.Visible = false;
|
|
txtHWManufacturer.Visible = false;
|
|
lblHWModel.Visible = false;
|
|
txtHWModel.Visible = false;
|
|
lblHWRevision.Visible = false;
|
|
txtHWRevision.Visible = false;
|
|
lblHWFirmware.Visible = false;
|
|
txtHWFirmware.Visible = false;
|
|
lblHWSerial.Visible = false;
|
|
txtHWSerial.Visible = false;
|
|
frmExtents.Visible = false;
|
|
frmDumpSoftware.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnCancelDumpHWClicked(object sender, EventArgs e)
|
|
{
|
|
btnAddHardware.Visible = true;
|
|
btnRemoveHardware.Visible = true;
|
|
btnCancelHardware.Visible = false;
|
|
btnEditHardware.Visible = false;
|
|
btnApplyHardware.Visible = false;
|
|
lblHWManufacturer.Visible = false;
|
|
txtHWManufacturer.Visible = false;
|
|
lblHWModel.Visible = false;
|
|
txtHWModel.Visible = false;
|
|
lblHWRevision.Visible = false;
|
|
txtHWRevision.Visible = false;
|
|
lblHWFirmware.Visible = false;
|
|
txtHWFirmware.Visible = false;
|
|
lblHWSerial.Visible = false;
|
|
txtHWSerial.Visible = false;
|
|
frmExtents.Visible = false;
|
|
frmDumpSoftware.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnRemoveDumpHWClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter dumphwIter;
|
|
if(treeDumpHardware.Selection.GetSelected(out dumphwIter))
|
|
lstDumpHw.Remove(ref dumphwIter);
|
|
}
|
|
|
|
protected void OnBtnApplyDumpHWClicked(object sender, EventArgs e)
|
|
{
|
|
if(editingDumpHw)
|
|
lstDumpHw.Remove(ref dumpHwIter);
|
|
|
|
lstDumpHw.AppendValues(txtHWManufacturer.Text, txtHWModel.Text, txtHWRevision.Text, txtHWFirmware.Text, txtHWSerial.Text, txtSoftwareName.Text,
|
|
txtSoftwareVersion.Text, txtSoftwareOS.Text, (ListStore)treeExtents.Model);
|
|
|
|
btnAddHardware.Visible = true;
|
|
btnRemoveHardware.Visible = true;
|
|
btnCancelHardware.Visible = false;
|
|
btnEditHardware.Visible = true;
|
|
btnApplyHardware.Visible = false;
|
|
lblHWManufacturer.Visible = false;
|
|
txtHWManufacturer.Visible = false;
|
|
lblHWModel.Visible = false;
|
|
txtHWModel.Visible = false;
|
|
lblHWRevision.Visible = false;
|
|
txtHWRevision.Visible = false;
|
|
lblHWFirmware.Visible = false;
|
|
txtHWFirmware.Visible = false;
|
|
lblHWSerial.Visible = false;
|
|
txtHWSerial.Visible = false;
|
|
frmExtents.Visible = false;
|
|
frmDumpSoftware.Visible = false;
|
|
}
|
|
|
|
protected void OnBtnAddDumpHWClicked(object sender, EventArgs e)
|
|
{
|
|
txtHWManufacturer.Text = "";
|
|
txtHWModel.Text = "";
|
|
txtHWRevision.Text = "";
|
|
txtHWFirmware.Text = "";
|
|
txtHWSerial.Text = "";
|
|
txtSoftwareName.Text = "";
|
|
txtSoftwareVersion.Text = "";
|
|
txtSoftwareOS.Text = "";
|
|
treeExtents.Model = new ListStore(typeof(int), typeof(int));
|
|
|
|
btnAddHardware.Visible = false;
|
|
btnRemoveHardware.Visible = false;
|
|
btnCancelHardware.Visible = true;
|
|
btnEditHardware.Visible = false;
|
|
btnApplyHardware.Visible = true;
|
|
lblHWManufacturer.Visible = true;
|
|
txtHWManufacturer.Visible = true;
|
|
lblHWModel.Visible = true;
|
|
txtHWModel.Visible = true;
|
|
lblHWRevision.Visible = true;
|
|
txtHWRevision.Visible = true;
|
|
lblHWFirmware.Visible = true;
|
|
txtHWFirmware.Visible = true;
|
|
lblHWSerial.Visible = true;
|
|
txtHWSerial.Visible = true;
|
|
frmExtents.Visible = true;
|
|
frmDumpSoftware.Visible = true;
|
|
|
|
editingDumpHw = false;
|
|
}
|
|
|
|
protected void OnBtnRemoveExtentClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter extentIter;
|
|
if(treeExtents.Selection.GetSelected(out extentIter))
|
|
((ListStore)treeExtents.Model).Remove(ref extentIter);
|
|
}
|
|
|
|
protected void OnBtnEditDumpHWClicked(object sender, EventArgs e)
|
|
{
|
|
if(!treeDumpHardware.Selection.GetSelected(out dumpHwIter))
|
|
return;
|
|
|
|
txtHWManufacturer.Text = (string)lstDumpHw.GetValue(dumpHwIter, 0);
|
|
txtHWModel.Text = (string)lstDumpHw.GetValue(dumpHwIter, 1);
|
|
txtHWRevision.Text = (string)lstDumpHw.GetValue(dumpHwIter, 2);
|
|
txtHWFirmware.Text = (string)lstDumpHw.GetValue(dumpHwIter, 3);
|
|
txtHWSerial.Text = (string)lstDumpHw.GetValue(dumpHwIter, 4);
|
|
txtSoftwareName.Text = (string)lstDumpHw.GetValue(dumpHwIter, 5);
|
|
txtSoftwareVersion.Text = (string)lstDumpHw.GetValue(dumpHwIter, 6);
|
|
txtSoftwareOS.Text = (string)lstDumpHw.GetValue(dumpHwIter, 7);
|
|
treeExtents.Model = (ListStore)lstDumpHw.GetValue(dumpHwIter, 8);
|
|
|
|
btnAddHardware.Visible = false;
|
|
btnRemoveHardware.Visible = false;
|
|
btnCancelHardware.Visible = true;
|
|
btnEditHardware.Visible = false;
|
|
btnApplyHardware.Visible = true;
|
|
lblHWManufacturer.Visible = true;
|
|
txtHWManufacturer.Visible = true;
|
|
lblHWModel.Visible = true;
|
|
txtHWModel.Visible = true;
|
|
lblHWRevision.Visible = true;
|
|
txtHWRevision.Visible = true;
|
|
lblHWFirmware.Visible = true;
|
|
txtHWFirmware.Visible = true;
|
|
lblHWSerial.Visible = true;
|
|
txtHWSerial.Visible = true;
|
|
frmExtents.Visible = true;
|
|
frmDumpSoftware.Visible = true;
|
|
|
|
editingDumpHw = true;
|
|
}
|
|
|
|
protected void OnBtnAddExtentClicked(object sender, EventArgs e)
|
|
{
|
|
((ListStore)treeExtents.Model).AppendValues(spExtentStart.ValueAsInt, spExtentEnd.ValueAsInt);
|
|
}
|
|
|
|
protected void OnBtnAddRingCodeClicked(object sender, EventArgs e)
|
|
{
|
|
lstRingCodes.AppendValues(spRingCodeLayer.ValueAsInt, txtRingCode.Text);
|
|
}
|
|
|
|
protected void OnBtnRemoveRingCodeClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeRingCodes.Selection.GetSelected(out outIter))
|
|
lstRingCodes.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnAddMasteringSIDClicked(object sender, EventArgs e)
|
|
{
|
|
lstMasteringSIDs.AppendValues(spMasteringSIDLayer.ValueAsInt, txtMasteringSID.Text);
|
|
}
|
|
|
|
protected void OnBtnRemoveMasteringSIDClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeMasteringSIDs.Selection.GetSelected(out outIter))
|
|
lstMasteringSIDs.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnAddToolstampClicked(object sender, EventArgs e)
|
|
{
|
|
lstToolstamps.AppendValues(spToolstampLayer.ValueAsInt, txtToolstamp.Text);
|
|
}
|
|
|
|
protected void OnBtnRemoveToolstampClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeToolstamps.Selection.GetSelected(out outIter))
|
|
lstToolstamps.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnAddMouldSIDClicked(object sender, EventArgs e)
|
|
{
|
|
lstMouldSIDs.AppendValues(spMouldSIDLayer.ValueAsInt, txtMouldSID.Text);
|
|
}
|
|
|
|
protected void OnBtnRemoveMouldSIDClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeMouldSIDs.Selection.GetSelected(out outIter))
|
|
lstMouldSIDs.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnBtnAddMouldTextClicked(object sender, EventArgs e)
|
|
{
|
|
lstMouldTexts.AppendValues(spMouldTextLayer.ValueAsInt, txtMouldText.Text);
|
|
}
|
|
|
|
protected void OnBtnRemoveMouldTextClicked(object sender, EventArgs e)
|
|
{
|
|
TreeIter outIter;
|
|
if(treeMouldTexts.Selection.GetSelected(out outIter))
|
|
lstMouldTexts.Remove(ref outIter);
|
|
}
|
|
|
|
protected void OnButtonOkClicked(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
protected void OnBtnSaveClicked(object sender, EventArgs e)
|
|
{
|
|
MessageDialog dlgMsg;
|
|
long ltmp;
|
|
|
|
#region Sanity checks
|
|
if(string.IsNullOrEmpty(txtFormat.Text))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Image format cannot be null");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(chkSequence.Active)
|
|
{
|
|
if(spSequence.Value < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(spTotalMedia.Value < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Total medias must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(spSequence.Value > spTotalMedia.Value)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Media sequence cannot be bigger than total medias");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(!string.IsNullOrEmpty(txtWriteOffset.Text) && !long.TryParse(txtWriteOffset.Text, out ltmp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Write offset must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(string.IsNullOrEmpty(txtMediaTracks.Text) || !long.TryParse(txtMediaTracks.Text, out ltmp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Tracks must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(ltmp < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Tracks must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(string.IsNullOrEmpty(txtMediaSessions.Text) || !long.TryParse(txtMediaSessions.Text, out ltmp))
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Sessions must be a number");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(ltmp < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Sessions must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
|
|
if(chkDimensions.Active)
|
|
{
|
|
if(chkRound.Active)
|
|
{
|
|
if(spDiameter.ValueAsInt <= 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Diameter must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(spHeight.ValueAsInt <= 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Height must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
if(spWidth.ValueAsInt <= 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Width must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
}
|
|
if(spThickness.ValueAsInt <= 0)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Thickness must be bigger than 0");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(chkDumpHardware.Active)
|
|
{
|
|
if(lstDumpHw.IterNChildren() < 1)
|
|
{
|
|
dlgMsg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "If dump hardware is known at least an entry must be created");
|
|
dlgMsg.Run();
|
|
dlgMsg.Destroy();
|
|
return;
|
|
}
|
|
}
|
|
#endregion Sanity checks
|
|
|
|
TreeIter outIter;
|
|
Metadata = new OpticalDiscType();
|
|
|
|
Metadata.Image = new Schemas.ImageType();
|
|
Metadata.Image.Value = txtImage.Text;
|
|
Metadata.Image.format = txtFormat.Text;
|
|
if(!string.IsNullOrWhiteSpace(txtOffset.Text) && long.TryParse(txtOffset.Text, out ltmp))
|
|
{
|
|
Metadata.Image.offsetSpecified = true;
|
|
Metadata.Image.offset = long.Parse(txtOffset.Text);
|
|
}
|
|
Metadata.Size = long.Parse(txtSize.Text);
|
|
|
|
if(chkSequence.Active)
|
|
{
|
|
Metadata.Sequence = new SequenceType();
|
|
Metadata.Sequence.MediaTitle = txtDiscTitle.Text;
|
|
Metadata.Sequence.MediaSequence = spSequence.ValueAsInt;
|
|
Metadata.Sequence.TotalMedia = spTotalMedia.ValueAsInt;
|
|
if(spSide.ValueAsInt > 0)
|
|
{
|
|
Metadata.Sequence.SideSpecified = true;
|
|
Metadata.Sequence.Side = spSide.ValueAsInt;
|
|
}
|
|
if(spLayer1.ValueAsInt > 0)
|
|
{
|
|
Metadata.Sequence.LayerSpecified = true;
|
|
Metadata.Sequence.Layer = spLayer1.ValueAsInt;
|
|
}
|
|
}
|
|
|
|
if(lstLayers.IterNChildren() > 0)
|
|
{
|
|
Metadata.Layers = new LayersType();
|
|
if(cmbLayerType.GetActiveIter(out outIter))
|
|
{
|
|
Metadata.Layers.type = (LayersTypeType)Enum.Parse(typeof(LayersTypeType), (string)lstLayerTypes.GetValue(outIter, 0));
|
|
Metadata.Layers.typeSpecified = true;
|
|
}
|
|
|
|
if(lstLayers.GetIterFirst(out outIter))
|
|
{
|
|
List<SectorsType> sectors = new List<SectorsType>();
|
|
do
|
|
{
|
|
SectorsType sector = new SectorsType();
|
|
sector.layer = (int)lstLayers.GetValue(outIter, 0);
|
|
sector.Value = (long)lstLayers.GetValue(outIter, 1);
|
|
|
|
if(sector.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
sector.layerSpecified = true;
|
|
|
|
sectors.Add(sector);
|
|
}
|
|
while(lstLayers.IterNext(ref outIter));
|
|
Metadata.Layers.Sectors = sectors.ToArray();
|
|
}
|
|
}
|
|
|
|
Metadata.Checksums = checksums;
|
|
|
|
if(lstRingCodes.GetIterFirst(out outIter))
|
|
{
|
|
List<LayeredTextType> codes = new List<LayeredTextType>();
|
|
do
|
|
{
|
|
LayeredTextType code = new LayeredTextType();
|
|
code.layer = (int)lstRingCodes.GetValue(outIter, 0);
|
|
code.Value = (string)lstRingCodes.GetValue(outIter, 1);
|
|
|
|
if(code.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
code.layerSpecified = true;
|
|
|
|
codes.Add(code);
|
|
}
|
|
while(lstRingCodes.IterNext(ref outIter));
|
|
Metadata.RingCode = codes.ToArray();
|
|
}
|
|
|
|
if(lstMasteringSIDs.GetIterFirst(out outIter))
|
|
{
|
|
List<LayeredTextType> codes = new List<LayeredTextType>();
|
|
do
|
|
{
|
|
LayeredTextType code = new LayeredTextType();
|
|
code.layer = (int)lstMasteringSIDs.GetValue(outIter, 0);
|
|
code.Value = (string)lstMasteringSIDs.GetValue(outIter, 1);
|
|
|
|
if(code.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
code.layerSpecified = true;
|
|
|
|
codes.Add(code);
|
|
}
|
|
while(lstMasteringSIDs.IterNext(ref outIter));
|
|
Metadata.MasteringSID = codes.ToArray();
|
|
}
|
|
|
|
if(lstToolstamps.GetIterFirst(out outIter))
|
|
{
|
|
List<LayeredTextType> codes = new List<LayeredTextType>();
|
|
do
|
|
{
|
|
LayeredTextType code = new LayeredTextType();
|
|
code.layer = (int)lstToolstamps.GetValue(outIter, 0);
|
|
code.Value = (string)lstToolstamps.GetValue(outIter, 1);
|
|
|
|
if(code.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
code.layerSpecified = true;
|
|
|
|
codes.Add(code);
|
|
}
|
|
while(lstToolstamps.IterNext(ref outIter));
|
|
Metadata.Toolstamp = codes.ToArray();
|
|
}
|
|
|
|
if(lstMouldSIDs.GetIterFirst(out outIter))
|
|
{
|
|
List<LayeredTextType> codes = new List<LayeredTextType>();
|
|
do
|
|
{
|
|
LayeredTextType code = new LayeredTextType();
|
|
code.layer = (int)lstMouldSIDs.GetValue(outIter, 0);
|
|
code.Value = (string)lstMouldSIDs.GetValue(outIter, 1);
|
|
|
|
if(code.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
code.layerSpecified = true;
|
|
|
|
codes.Add(code);
|
|
}
|
|
while(lstMouldSIDs.IterNext(ref outIter));
|
|
Metadata.MouldSID = codes.ToArray();
|
|
}
|
|
|
|
if(lstMouldTexts.GetIterFirst(out outIter))
|
|
{
|
|
List<LayeredTextType> codes = new List<LayeredTextType>();
|
|
do
|
|
{
|
|
LayeredTextType code = new LayeredTextType();
|
|
code.layer = (int)lstMouldTexts.GetValue(outIter, 0);
|
|
code.Value = (string)lstMouldTexts.GetValue(outIter, 1);
|
|
|
|
if(code.layer > 0 || lstLayers.IterNChildren() > 1)
|
|
code.layerSpecified = true;
|
|
|
|
codes.Add(code);
|
|
}
|
|
while(lstMouldTexts.IterNext(ref outIter));
|
|
Metadata.MouldText = codes.ToArray();
|
|
}
|
|
|
|
if(!string.IsNullOrWhiteSpace(txtDiscType.Text))
|
|
Metadata.DiscType = txtDiscType.Text;
|
|
if(!string.IsNullOrWhiteSpace(txtDiscSubType.Text))
|
|
Metadata.DiscSubType = txtDiscSubType.Text;
|
|
if(!string.IsNullOrWhiteSpace(txtWriteOffset.Text))
|
|
{
|
|
Metadata.Offset = int.Parse(txtWriteOffset.Text);
|
|
Metadata.OffsetSpecified = true;
|
|
}
|
|
|
|
if(!string.IsNullOrWhiteSpace(txtMediaTracks.Text))
|
|
Metadata.Tracks = new int[] { int.Parse(txtMediaTracks.Text) };
|
|
else
|
|
Metadata.Tracks = new int[] { 1 };
|
|
|
|
if(!string.IsNullOrWhiteSpace(txtMediaSessions.Text))
|
|
Metadata.Sessions = int.Parse(txtMediaSessions.Text);
|
|
else
|
|
Metadata.Sessions = 1;
|
|
|
|
if(!string.IsNullOrWhiteSpace(txtCopyProtection.Text))
|
|
Metadata.CopyProtection = txtCopyProtection.Text;
|
|
|
|
if(chkDimensions.Active)
|
|
{
|
|
Metadata.Dimensions = new DimensionsType();
|
|
if(chkRound.Active)
|
|
{
|
|
Metadata.Dimensions.DiameterSpecified = true;
|
|
Metadata.Dimensions.Diameter = spDiameter.Value;
|
|
}
|
|
else
|
|
{
|
|
Metadata.Dimensions.HeightSpecified = true;
|
|
Metadata.Dimensions.WidthSpecified = true;
|
|
Metadata.Dimensions.Height = spHeight.Value;
|
|
Metadata.Dimensions.Width = spWidth.Value;
|
|
}
|
|
Metadata.Dimensions.Thickness = spThickness.Value;
|
|
}
|
|
|
|
Metadata.Case = mediaCase;
|
|
Metadata.Scans = scans;
|
|
|
|
if(lstPFI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.PFI = new DumpType();
|
|
Metadata.PFI.Image = (string)lstPFI.GetValue(outIter, 0);
|
|
Metadata.PFI.Size = (int)lstPFI.GetValue(outIter, 1);
|
|
Metadata.PFI.Checksums = (ChecksumType[])lstPFI.GetValue(outIter, 2);
|
|
}
|
|
if(lstDMI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.DMI = new DumpType();
|
|
Metadata.DMI.Image = (string)lstDMI.GetValue(outIter, 0);
|
|
Metadata.DMI.Size = (int)lstDMI.GetValue(outIter, 1);
|
|
Metadata.DMI.Checksums = (ChecksumType[])lstDMI.GetValue(outIter, 2);
|
|
}
|
|
if(lstCMI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.CMI = new DumpType();
|
|
Metadata.CMI.Image = (string)lstCMI.GetValue(outIter, 0);
|
|
Metadata.CMI.Size = (int)lstCMI.GetValue(outIter, 1);
|
|
Metadata.CMI.Checksums = (ChecksumType[])lstCMI.GetValue(outIter, 2);
|
|
}
|
|
if(lstBCA.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.BCA = new DumpType();
|
|
Metadata.BCA.Image = (string)lstBCA.GetValue(outIter, 0);
|
|
Metadata.BCA.Size = (int)lstBCA.GetValue(outIter, 1);
|
|
Metadata.BCA.Checksums = (ChecksumType[])lstBCA.GetValue(outIter, 2);
|
|
}
|
|
if(lstATIP.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.ATIP = new DumpType();
|
|
Metadata.ATIP.Image = (string)lstATIP.GetValue(outIter, 0);
|
|
Metadata.ATIP.Size = (int)lstATIP.GetValue(outIter, 1);
|
|
Metadata.ATIP.Checksums = (ChecksumType[])lstATIP.GetValue(outIter, 2);
|
|
}
|
|
if(lstADIP.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.ADIP = new DumpType();
|
|
Metadata.ADIP.Image = (string)lstADIP.GetValue(outIter, 0);
|
|
Metadata.ADIP.Size = (int)lstADIP.GetValue(outIter, 1);
|
|
Metadata.ADIP.Checksums = (ChecksumType[])lstADIP.GetValue(outIter, 2);
|
|
}
|
|
if(lstPMA.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.PMA = new DumpType();
|
|
Metadata.PMA.Image = (string)lstPMA.GetValue(outIter, 0);
|
|
Metadata.PMA.Size = (int)lstPMA.GetValue(outIter, 1);
|
|
Metadata.PMA.Checksums = (ChecksumType[])lstPMA.GetValue(outIter, 2);
|
|
}
|
|
if(lstDDS.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.DDS = new DumpType();
|
|
Metadata.DDS.Image = (string)lstDDS.GetValue(outIter, 0);
|
|
Metadata.DDS.Size = (int)lstDDS.GetValue(outIter, 1);
|
|
Metadata.DDS.Checksums = (ChecksumType[])lstDDS.GetValue(outIter, 2);
|
|
}
|
|
if(lstSAI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.SAI = new DumpType();
|
|
Metadata.SAI.Image = (string)lstSAI.GetValue(outIter, 0);
|
|
Metadata.SAI.Size = (int)lstSAI.GetValue(outIter, 1);
|
|
Metadata.SAI.Checksums = (ChecksumType[])lstSAI.GetValue(outIter, 2);
|
|
}
|
|
if(lstLastRMD.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.LastRMD = new DumpType();
|
|
Metadata.LastRMD.Image = (string)lstLastRMD.GetValue(outIter, 0);
|
|
Metadata.LastRMD.Size = (int)lstLastRMD.GetValue(outIter, 1);
|
|
Metadata.LastRMD.Checksums = (ChecksumType[])lstLastRMD.GetValue(outIter, 2);
|
|
}
|
|
if(lstPRI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.PRI = new DumpType();
|
|
Metadata.PRI.Image = (string)lstPRI.GetValue(outIter, 0);
|
|
Metadata.PRI.Size = (int)lstPRI.GetValue(outIter, 1);
|
|
Metadata.PRI.Checksums = (ChecksumType[])lstPRI.GetValue(outIter, 2);
|
|
}
|
|
if(lstMediaID.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.MediaID = new DumpType();
|
|
Metadata.MediaID.Image = (string)lstMediaID.GetValue(outIter, 0);
|
|
Metadata.MediaID.Size = (int)lstMediaID.GetValue(outIter, 1);
|
|
Metadata.MediaID.Checksums = (ChecksumType[])lstMediaID.GetValue(outIter, 2);
|
|
}
|
|
if(lstPFIR.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.PFIR = new DumpType();
|
|
Metadata.PFIR.Image = (string)lstPFIR.GetValue(outIter, 0);
|
|
Metadata.PFIR.Size = (int)lstPFIR.GetValue(outIter, 1);
|
|
Metadata.PFIR.Checksums = (ChecksumType[])lstPFIR.GetValue(outIter, 2);
|
|
}
|
|
if(lstDCB.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.DCB = new DumpType();
|
|
Metadata.DCB.Image = (string)lstDCB.GetValue(outIter, 0);
|
|
Metadata.DCB.Size = (int)lstDCB.GetValue(outIter, 1);
|
|
Metadata.DCB.Checksums = (ChecksumType[])lstDCB.GetValue(outIter, 2);
|
|
}
|
|
if(lstDI.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.DI = new DumpType();
|
|
Metadata.DI.Image = (string)lstDI.GetValue(outIter, 0);
|
|
Metadata.DI.Size = (int)lstDI.GetValue(outIter, 1);
|
|
Metadata.DI.Checksums = (ChecksumType[])lstDI.GetValue(outIter, 2);
|
|
}
|
|
if(lstPAC.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.PAC = new DumpType();
|
|
Metadata.PAC.Image = (string)lstPAC.GetValue(outIter, 0);
|
|
Metadata.PAC.Size = (int)lstPAC.GetValue(outIter, 1);
|
|
Metadata.PAC.Checksums = (ChecksumType[])lstPAC.GetValue(outIter, 2);
|
|
}
|
|
if(lstTOC.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.TOC = new DumpType();
|
|
Metadata.TOC.Image = (string)lstTOC.GetValue(outIter, 0);
|
|
Metadata.TOC.Size = (int)lstTOC.GetValue(outIter, 1);
|
|
Metadata.TOC.Checksums = (ChecksumType[])lstTOC.GetValue(outIter, 2);
|
|
}
|
|
if(lstCDText.GetIterFirst(out outIter))
|
|
{
|
|
Metadata.LeadInCdText = new DumpType();
|
|
Metadata.LeadInCdText.Image = (string)lstCDText.GetValue(outIter, 0);
|
|
Metadata.LeadInCdText.Size = (int)lstCDText.GetValue(outIter, 1);
|
|
Metadata.LeadInCdText.Checksums = (ChecksumType[])lstCDText.GetValue(outIter, 2);
|
|
}
|
|
|
|
if(lstLeadIns.GetIterFirst(out outIter))
|
|
{
|
|
List<BorderType> leadins = new List<BorderType>();
|
|
do
|
|
{
|
|
BorderType leadin = new BorderType();
|
|
leadin.Image = (string)lstLeadIns.GetValue(outIter, 0);
|
|
leadin.Size = (long)lstLeadIns.GetValue(outIter, 1);
|
|
leadin.session = (int)lstLeadIns.GetValue(outIter, 2);
|
|
leadin.Checksums = (ChecksumType[])lstLeadIns.GetValue(outIter, 3);
|
|
|
|
if(leadin.session > Metadata.Sessions)
|
|
Metadata.Sessions = leadin.session;
|
|
if(leadin.session > 0 || Metadata.Sessions > 0)
|
|
leadin.sessionSpecified = true;
|
|
|
|
leadins.Add(leadin);
|
|
}
|
|
while(lstLeadIns.IterNext(ref outIter));
|
|
Metadata.LeadIn = leadins.ToArray();
|
|
}
|
|
|
|
if(lstLeadOuts.GetIterFirst(out outIter))
|
|
{
|
|
List<BorderType> leadouts = new List<BorderType>();
|
|
do
|
|
{
|
|
BorderType leadout = new BorderType();
|
|
leadout.Image = (string)lstLeadOuts.GetValue(outIter, 0);
|
|
leadout.Size = (long)lstLeadOuts.GetValue(outIter, 1);
|
|
leadout.session = (int)lstLeadOuts.GetValue(outIter, 2);
|
|
leadout.Checksums = (ChecksumType[])lstLeadOuts.GetValue(outIter, 3);
|
|
|
|
if(leadout.session > Metadata.Sessions)
|
|
Metadata.Sessions = leadout.session;
|
|
if(leadout.session > 0 || Metadata.Sessions > 0)
|
|
leadout.sessionSpecified = true;
|
|
|
|
leadouts.Add(leadout);
|
|
}
|
|
while(lstLeadOuts.IterNext(ref outIter));
|
|
Metadata.LeadOut = leadouts.ToArray();
|
|
}
|
|
|
|
if(lstXboxSS.GetIterFirst(out outIter))
|
|
{
|
|
List<SecuritySectorsType> xboxss = new List<SecuritySectorsType>();
|
|
do
|
|
{
|
|
SecuritySectorsType ss = new SecuritySectorsType();
|
|
ss.Start = (long)lstXboxSS.GetValue(outIter, 0);
|
|
ss.End = (long)lstXboxSS.GetValue(outIter, 1);
|
|
xboxss.Add(ss);
|
|
}
|
|
while(lstXboxSS.IterNext(ref outIter));
|
|
Metadata.XboxSecuritySectors = xboxss.ToArray();
|
|
}
|
|
|
|
if(!string.IsNullOrWhiteSpace(txtPS3Key.Text) && !string.IsNullOrWhiteSpace(txtPS3Serial.Text))
|
|
{
|
|
Metadata.PS3Encryption = new PS3EncryptionType();
|
|
Metadata.PS3Encryption.Key = txtPS3Key.Text;
|
|
Metadata.PS3Encryption.Serial = txtPS3Serial.Text;
|
|
}
|
|
|
|
if(lstTracks.GetIterFirst(out outIter))
|
|
{
|
|
List<TrackType> tracks = new List<TrackType>();
|
|
|
|
do
|
|
{
|
|
TreeIter partIter;
|
|
ListStore lstPartitions;
|
|
TrackType track = new TrackType();
|
|
track.Sequence = new TrackSequenceType();
|
|
track.Image = new Schemas.ImageType();
|
|
|
|
track.Sequence.TrackNumber = (int)lstTracks.GetValue(outIter, 0);
|
|
track.Sequence.Session = (int)lstTracks.GetValue(outIter, 1);
|
|
track.Image.Value = (string)lstTracks.GetValue(outIter, 2);
|
|
track.Size = (long)lstTracks.GetValue(outIter, 3);
|
|
track.Image.format = (string)lstTracks.GetValue(outIter, 4);
|
|
track.Image.offset = (long)lstTracks.GetValue(outIter, 5);
|
|
if(track.Image.offset > 0)
|
|
track.Image.offsetSpecified = true;
|
|
track.StartMSF = (string)lstTracks.GetValue(outIter, 6);
|
|
track.EndMSF = (string)lstTracks.GetValue(outIter, 7);
|
|
track.StartSector = (long)lstTracks.GetValue(outIter, 8);
|
|
track.EndSector = (long)lstTracks.GetValue(outIter, 9);
|
|
track.TrackType1 = (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), (string)lstTracks.GetValue(outIter, 10));
|
|
track.BytesPerSector = (int)lstTracks.GetValue(outIter, 11);
|
|
track.AccoustID = (string)lstTracks.GetValue(outIter, 12);
|
|
track.Checksums = (ChecksumType[])lstTracks.GetValue(outIter, 13);
|
|
track.SubChannel = (SubChannelType)lstTracks.GetValue(outIter, 14);
|
|
lstPartitions = (ListStore)lstTracks.GetValue(outIter, 15);
|
|
|
|
if(lstPartitions.GetIterFirst(out partIter))
|
|
{
|
|
List<PartitionType> partitions = new List<PartitionType>();
|
|
do
|
|
{
|
|
PartitionType partition = new PartitionType();
|
|
partition.Sequence = (int)lstPartitions.GetValue(partIter, 0);
|
|
partition.StartSector = (int)lstPartitions.GetValue(partIter, 1);
|
|
partition.EndSector = (int)lstPartitions.GetValue(partIter, 2);
|
|
partition.Type = (string)lstPartitions.GetValue(partIter, 3);
|
|
partition.Name = (string)lstPartitions.GetValue(partIter, 4);
|
|
partition.Description = (string)lstPartitions.GetValue(partIter, 5);
|
|
ListStore lstFilesystems = (ListStore)lstPartitions.GetValue(partIter, 6);
|
|
TreeIter fsIter;
|
|
|
|
if(lstFilesystems.GetIterFirst(out fsIter))
|
|
{
|
|
List<FileSystemType> fss = new List<FileSystemType>();
|
|
do
|
|
{
|
|
FileSystemType fs = (FileSystemType)lstFilesystems.GetValue(fsIter, 2);
|
|
fss.Add(fs);
|
|
}
|
|
while(lstFilesystems.IterNext(ref fsIter));
|
|
partition.FileSystems = fss.ToArray();
|
|
}
|
|
|
|
partitions.Add(partition);
|
|
}
|
|
while(lstPartitions.IterNext(ref partIter));
|
|
track.FileSystemInformation = partitions.ToArray();
|
|
}
|
|
|
|
tracks.Add(track);
|
|
}
|
|
while(lstTracks.IterNext(ref outIter));
|
|
|
|
Metadata.Track = tracks.ToArray();
|
|
}
|
|
|
|
if(chkDumpHardware.Active && lstDumpHw.GetIterFirst(out outIter))
|
|
{
|
|
List<DumpHardwareType> dumps = new List<DumpHardwareType>();
|
|
do
|
|
{
|
|
DumpHardwareType dump = new DumpHardwareType();
|
|
dump.Software = new SoftwareType();
|
|
ListStore lstExtents;
|
|
TreeIter extIter;
|
|
|
|
dump.Manufacturer = (string)lstDumpHw.GetValue(outIter, 0);
|
|
dump.Model = (string)lstDumpHw.GetValue(outIter, 1);
|
|
dump.Revision = (string)lstDumpHw.GetValue(outIter, 2);
|
|
dump.Firmware = (string)lstDumpHw.GetValue(outIter, 3);
|
|
dump.Serial = (string)lstDumpHw.GetValue(outIter, 4);
|
|
dump.Software.Name = (string)lstDumpHw.GetValue(outIter, 5);
|
|
dump.Software.Version = (string)lstDumpHw.GetValue(outIter, 6);
|
|
dump.Software.OperatingSystem = (string)lstDumpHw.GetValue(outIter, 7);
|
|
lstExtents = (ListStore)lstDumpHw.GetValue(outIter, 8);
|
|
|
|
if(lstExtents.GetIterFirst(out extIter))
|
|
{
|
|
List<ExtentType> extents = new List<ExtentType>();
|
|
do
|
|
{
|
|
ExtentType extent = new ExtentType();
|
|
extent.Start = (int)lstExtents.GetValue(extIter, 0);
|
|
extent.End = (int)lstExtents.GetValue(extIter, 1);
|
|
extents.Add(extent);
|
|
}
|
|
while(lstExtents.IterNext(ref extIter));
|
|
dump.Extents = extents.ToArray();
|
|
}
|
|
|
|
dumps.Add(dump);
|
|
}
|
|
while(lstDumpHw.IterNext(ref outIter));
|
|
Metadata.DumpHardwareArray = dumps.ToArray();
|
|
}
|
|
|
|
buttonOk.Click();
|
|
}
|
|
|
|
protected void OnBtnCancelClicked(object sender, EventArgs e)
|
|
{
|
|
buttonCancel.Click();
|
|
}
|
|
|
|
protected void OnBtnCancelPartitionClicked(object sender, EventArgs e)
|
|
{
|
|
btnCancelPartition.Visible = false;
|
|
btnApplyPartition.Visible = false;
|
|
btnRemovePartition.Visible = true;
|
|
btnEditPartition.Visible = true;
|
|
btnAddPartition.Visible = true;
|
|
lblPartitionSequence.Visible = false;
|
|
spPartitionSequence.Visible = false;
|
|
lblPartitionStart.Visible = false;
|
|
txtPartitionStart.Visible = false;
|
|
lblPartitionEnd.Visible = false;
|
|
txtPartitionEnd.Visible = false;
|
|
lblPartitionType.Visible = false;
|
|
txtPartitionType.Visible = false;
|
|
lblPartitionName.Visible = false;
|
|
txtPartitionName.Visible = false;
|
|
lblPartitionDescription.Visible = false;
|
|
txtPartitionDescription.Visible = false;
|
|
frmFilesystems.Visible = false;
|
|
}
|
|
}
|
|
}
|