diff --git a/CICMMetadataEditor/CICMMetadataEditor.Desktop/Program.cs b/CICMMetadataEditor/CICMMetadataEditor.Desktop/Program.cs index 019a795..f4900fd 100644 --- a/CICMMetadataEditor/CICMMetadataEditor.Desktop/Program.cs +++ b/CICMMetadataEditor/CICMMetadataEditor.Desktop/Program.cs @@ -28,9 +28,10 @@ // 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; using Eto.Forms; -using Eto.Drawing; namespace CICMMetadataEditor.Desktop { @@ -39,7 +40,7 @@ namespace CICMMetadataEditor.Desktop [STAThread] static void Main(string[] args) { - new Application(Eto.Platform.Detect).Run(new dlgMetadata()); + new Application(Platform.Detect).Run(new dlgMetadata()); } } } \ No newline at end of file diff --git a/CICMMetadataEditor/CICMMetadataEditor/WrappersForEto.cs b/CICMMetadataEditor/CICMMetadataEditor/WrappersForEto.cs index 1bf86ba..2a9ae67 100644 --- a/CICMMetadataEditor/CICMMetadataEditor/WrappersForEto.cs +++ b/CICMMetadataEditor/CICMMetadataEditor/WrappersForEto.cs @@ -58,7 +58,7 @@ namespace CICMMetadataEditor class TargetOsEntry { - public string name { get; set; } + public string name { get; set; } public string version { get; set; } } } \ No newline at end of file diff --git a/CICMMetadataEditor/CICMMetadataEditor/dlgBlockMedia.xeto.cs b/CICMMetadataEditor/CICMMetadataEditor/dlgBlockMedia.xeto.cs index f2bc208..89c6a0a 100644 --- a/CICMMetadataEditor/CICMMetadataEditor/dlgBlockMedia.xeto.cs +++ b/CICMMetadataEditor/CICMMetadataEditor/dlgBlockMedia.xeto.cs @@ -41,16 +41,13 @@ namespace CICMMetadataEditor { public class dlgBlockMedia : Dialog { - // Non-editable fields - ChecksumType[] checksums; - ChecksumType[] contentChks; - DumpHardwareType dumpHwIter; - bool editingDumpHw; - - bool editingPartition; - FileSystemType filesystemIter; - ObservableCollection lstAdditionalInformation; - + ChecksumType[] checksums; + ChecksumType[] contentChks; + DumpHardwareType dumpHwIter; + bool editingDumpHw; + bool editingPartition; + FileSystemType filesystemIter; + ObservableCollection lstAdditionalInformation; ObservableCollection lstAta; ObservableCollection lstCID; ObservableCollection lstCSD; @@ -70,11 +67,10 @@ namespace CICMMetadataEditor ObservableCollection lstUSBDescriptors; public BlockMediaType Metadata; public bool Modified; - - PartitionType partitionIter; - ScansType scans; - TapePartitionType[] tapeInformation; - BlockSizeType[] variableBlockSize; + PartitionType partitionIter; + ScansType scans; + TapePartitionType[] tapeInformation; + BlockSizeType[] variableBlockSize; public dlgBlockMedia() { @@ -150,9 +146,9 @@ namespace CICMMetadataEditor treeDumpHardware.Columns.Add(new GridColumn { - DataCell = + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Manufacturer)}, - HeaderText = "Manufacturer" + HeaderText = "Manufacturer" }); treeDumpHardware.Columns.Add(new GridColumn { @@ -595,65 +591,66 @@ namespace CICMMetadataEditor treeAdditionalInformation.DataStore = lstAdditionalInformation; treeAdditionalInformation.AllowMultipleSelection = false; - txtImage.ToolTip = "This is the disk image containing this media."; - txtFormat.ToolTip = "This is the format of the disk image."; - txtOffset.ToolTip = "Byte offset where the media dump starts in the disk image."; - txtSize.ToolTip = "Size of the disk dump."; - txtManufacturer.ToolTip = "Disk manufacturer."; - txtModel.ToolTip = "Disk model."; - txtSerial.ToolTip = "Disk serial number."; - txtFirmware.ToolTip = "Disk firmware revision."; - txtInterface.ToolTip = "Disk interface."; + txtImage.ToolTip = "This is the disk image containing this media."; + txtFormat.ToolTip = "This is the format of the disk image."; + txtOffset.ToolTip = "Byte offset where the media dump starts in the disk image."; + txtSize.ToolTip = "Size of the disk dump."; + txtManufacturer.ToolTip = "Disk manufacturer."; + txtModel.ToolTip = "Disk model."; + txtSerial.ToolTip = "Disk serial number."; + txtFirmware.ToolTip = "Disk firmware revision."; + txtInterface.ToolTip = "Disk interface."; txtCopyProtection.ToolTip = "Disk copy protection."; - txtMediaType.ToolTip = "Disk type."; - txtMediaSubtype.ToolTip = "Disk subtype."; - chkSequence.ToolTip = "If checked means this disk is one in a sequence of several."; - txtMediaTitle.ToolTip = "Title of disk."; - spSequence.ToolTip = "Number of this disk in the sequence."; - spTotalMedia.ToolTip = "How many disks make the sequence."; - spSide.ToolTip = "On flippy disks, which side of the disk is represented by this dump."; - spLayer.ToolTip = "On PTP layered disks, which layer of the side of the disk is represented by this dump."; - txtBlocks.ToolTip = "How many individual blocks (sectors) are in this dump."; + txtMediaType.ToolTip = "Disk type."; + txtMediaSubtype.ToolTip = "Disk subtype."; + chkSequence.ToolTip = "If checked means this disk is one in a sequence of several."; + txtMediaTitle.ToolTip = "Title of disk."; + spSequence.ToolTip = "Number of this disk in the sequence."; + spTotalMedia.ToolTip = "How many disks make the sequence."; + spSide.ToolTip = "On flippy disks, which side of the disk is represented by this dump."; + spLayer.ToolTip = + "On PTP layered disks, which layer of the side of the disk is represented by this dump."; + txtBlocks.ToolTip = "How many individual blocks (sectors) are in this dump."; spPhysicalBlockSize.ToolTip = "Size of the biggest physical block in bytes."; - spLogicalBlockSize.ToolTip = "Size of the biggest logical block in bytes."; - spCylinders.ToolTip = "Cylinders of disk."; - spHeads.ToolTip = "Heads of disk."; - spSectors.ToolTip = "Sectors per track of disk."; - chkDimensions.ToolTip = "If checked, physical dimensions of disk are known."; - chkRound.ToolTip = "If checked, disk is physicaly round."; - spDiameter.ToolTip = "Diameter in milimeters of disk."; - spHeight.ToolTip = "Height in milimeters of disk."; - spWidth.ToolTip = "Width in milimeters of disk."; - spThickness.ToolTip = "Thickness in milimeters of disk."; - chkATA.ToolTip = "If checked, disk dump contains ATA(PI) IDENTIFY information."; + spLogicalBlockSize.ToolTip = "Size of the biggest logical block in bytes."; + spCylinders.ToolTip = "Cylinders of disk."; + spHeads.ToolTip = "Heads of disk."; + spSectors.ToolTip = "Sectors per track of disk."; + chkDimensions.ToolTip = "If checked, physical dimensions of disk are known."; + chkRound.ToolTip = "If checked, disk is physicaly round."; + spDiameter.ToolTip = "Diameter in milimeters of disk."; + spHeight.ToolTip = "Height in milimeters of disk."; + spWidth.ToolTip = "Width in milimeters of disk."; + spThickness.ToolTip = "Thickness in milimeters of disk."; + chkATA.ToolTip = "If checked, disk dump contains ATA(PI) IDENTIFY information."; } public void FillFields() { if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; + 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(); - checksums = Metadata.Checksums; - contentChks = Metadata.ContentChecksums; + txtSize.Text = Metadata.Size.ToString(); + checksums = Metadata.Checksums; + contentChks = Metadata.ContentChecksums; if(Metadata.Sequence != null) { - lblMediaTitle.Visible = true; - txtMediaTitle.Visible = true; - lblSequence.Visible = true; - spSequence.Visible = true; - lblTotalMedia.Visible = true; - spTotalMedia.Visible = true; - lblSide.Visible = true; - spSide.Visible = true; - lblLayer.Visible = true; - spLayer.Visible = true; - chkSequence.Checked = true; - txtMediaTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; + lblMediaTitle.Visible = true; + txtMediaTitle.Visible = true; + lblSequence.Visible = true; + spSequence.Visible = true; + lblTotalMedia.Visible = true; + spTotalMedia.Visible = true; + lblSide.Visible = true; + spSide.Visible = true; + lblLayer.Visible = true; + spLayer.Visible = true; + chkSequence.Checked = true; + txtMediaTitle.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) spLayer.Value = Metadata.Sequence.Layer; } @@ -663,12 +660,12 @@ namespace CICMMetadataEditor if(Metadata.Serial != null) txtSerial.Text = Metadata.Serial; if(Metadata.Firmware != null) txtFirmware.Text = Metadata.Firmware; if(Metadata.Interface != null) txtInterface.Text = Metadata.Interface; - spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; - spLogicalBlockSize.Value = Metadata.LogicalBlockSize; - txtBlocks.Text = Metadata.LogicalBlocks.ToString(); - variableBlockSize = Metadata.VariableBlockSize; - tapeInformation = Metadata.TapeInformation; - scans = Metadata.Scans; + spPhysicalBlockSize.Value = Metadata.PhysicalBlockSize; + spLogicalBlockSize.Value = Metadata.LogicalBlockSize; + txtBlocks.Text = Metadata.LogicalBlocks.ToString(); + variableBlockSize = Metadata.VariableBlockSize; + tapeInformation = Metadata.TapeInformation; + scans = Metadata.Scans; if(Metadata.ATA?.Identify != null) { chkATA.Checked = true; @@ -721,14 +718,11 @@ namespace CICMMetadataEditor if(Metadata.PCMCIA.Compliance != null) txtCompliance.Text = Metadata.PCMCIA.Compliance; if(Metadata.PCMCIA.ManufacturerCodeSpecified) - txtMfgCode.Text = - $"0x{Metadata.PCMCIA.ManufacturerCode:X4}"; + txtMfgCode.Text = $"0x{Metadata.PCMCIA.ManufacturerCode:X4}"; if(Metadata.PCMCIA.CardCodeSpecified) txtCardCode.Text = $"0x{Metadata.PCMCIA.CardCode:X4}"; - if(Metadata.PCMCIA.Manufacturer != null) - txtPCMCIAManufacturer.Text = Metadata.PCMCIA.Manufacturer; - if(Metadata.PCMCIA.ProductName != null) - txtPCMCIAProductName.Text = Metadata.PCMCIA.ProductName; + if(Metadata.PCMCIA.Manufacturer != null) txtPCMCIAManufacturer.Text = Metadata.PCMCIA.Manufacturer; + if(Metadata.PCMCIA.ProductName != null) txtPCMCIAProductName.Text = Metadata.PCMCIA.ProductName; if(Metadata.PCMCIA.AdditionalInformation != null) { lblAdditionalInformation.Visible = true; @@ -830,7 +824,7 @@ namespace CICMMetadataEditor } if(Metadata.CopyProtection != null) txtCopyProtection.Text = Metadata.CopyProtection; - if(Metadata.Dimensions != null) + if(Metadata.Dimensions != null) { chkDimensions.Checked = true; if(Metadata.Dimensions.DiameterSpecified) @@ -1045,28 +1039,30 @@ namespace CICMMetadataEditor } protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) - {/* - if(treeFilesystems.SelectedItem == null) return; + { + /* + if(treeFilesystems.SelectedItem == null) return; - filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; + filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; - dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; - _dlgFilesystem.FillFields(); - _dlgFilesystem.ShowModal(this); + dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; + _dlgFilesystem.FillFields(); + _dlgFilesystem.ShowModal(this); - if(!_dlgFilesystem.Modified) return; + if(!_dlgFilesystem.Modified) return; - ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ + ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ } protected void OnBtnAddFilesystemClicked(object sender, EventArgs e) - {/* - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.ShowModal(this); + { + /* + dlgFilesystem _dlgFilesystem = new dlgFilesystem(); + _dlgFilesystem.ShowModal(this); - if(_dlgFilesystem.Modified) - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ + if(_dlgFilesystem.Modified) + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ } protected void OnChkDumpHardwareToggled(object sender, EventArgs e) diff --git a/CICMMetadataEditor/CICMMetadataEditor/dlgMetadata.xeto.cs b/CICMMetadataEditor/CICMMetadataEditor/dlgMetadata.xeto.cs index 8f4cf30..7e2e922 100644 --- a/CICMMetadataEditor/CICMMetadataEditor/dlgMetadata.xeto.cs +++ b/CICMMetadataEditor/CICMMetadataEditor/dlgMetadata.xeto.cs @@ -36,9 +36,10 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Xml; -using Eto.Threading; +using System.Xml.Serialization; using Eto.Forms; using Eto.Serialization.Xaml; +using Eto.Threading; using Schemas; using BorderType = Schemas.BorderType; @@ -46,20 +47,19 @@ namespace CICMMetadataEditor { public class dlgMetadata : Form { - AdvertisementType[] adverts; - AudioMediaType[] audiomedias; - BookType[] books; - LinearMediaType[] linearmedias; - ObservableCollection lstArchitectures; - ObservableCollection lstArchitecturesTypes; - ObservableCollection lstBarcodes; - - ObservableCollection lstBarcodeTypes; - ObservableCollection lstCategories; - ObservableCollection lstDiscs; - ObservableCollection lstDisks; - ObservableCollection lstFilesForMedia; - + AdvertisementType[] adverts; + AudioMediaType[] audiomedias; + BookType[] books; + string currentFile; + LinearMediaType[] linearmedias; + ObservableCollection lstArchitectures; + ObservableCollection lstArchitecturesTypes; + ObservableCollection lstBarcodes; + ObservableCollection lstBarcodeTypes; + ObservableCollection lstCategories; + ObservableCollection lstDiscs; + ObservableCollection lstDisks; + ObservableCollection lstFilesForMedia; ObservableCollection lstKeywords; ObservableCollection lstLanguages; ObservableCollection lstLanguageTypes; @@ -67,17 +67,16 @@ namespace CICMMetadataEditor ObservableCollection lstSubcategories; // TODO: Add the options to edit these fields - MagazineType[] magazines; + MagazineType[] magazines; CICMMetadataType metadata; - bool modified; - PCIType[] pcis; - bool stopped; + bool modified; + PCIType[] pcis; + bool stopped; Thread thdDisc; Thread thdDisk; UserManualType[] usermanuals; - string currentFile; public dlgMetadata() { @@ -86,7 +85,7 @@ namespace CICMMetadataEditor cmbReleaseType = new EnumDropDown(); stkReleaseType.Items.Add(new StackLayoutItem {Control = cmbReleaseType, Expand = true}); - treeKeywords.Columns.Add(new GridColumn + treeKeywords.Columns.Add(new GridColumn { DataCell = new TextBoxCell {Binding = Binding.Property(r => r.str)}, HeaderText = "Keyword" @@ -195,8 +194,8 @@ namespace CICMMetadataEditor protected void OnNewClicked(object sender, EventArgs e) { - metadata = null; - modified = false; + metadata = null; + modified = false; currentFile = null; LoadData(); } @@ -217,9 +216,8 @@ namespace CICMMetadataEditor try { - System.Xml.Serialization.XmlSerializer reader = - new System.Xml.Serialization.XmlSerializer(typeof(CICMMetadataType)); - FileStream fs = new FileStream(dlgOpen.FileName, FileMode.Open, FileAccess.Read); + XmlSerializer reader = new XmlSerializer(typeof(CICMMetadataType)); + FileStream fs = new FileStream(dlgOpen.FileName, FileMode.Open, FileAccess.Read); metadata = (CICMMetadataType)reader.Deserialize(fs); fs.Dispose(); LoadData(); @@ -239,11 +237,7 @@ namespace CICMMetadataEditor protected void OnSaveAsClicked(object sender, EventArgs e) { - SaveFileDialog dlgSave = new SaveFileDialog - { - CheckFileExists = true, - Title = "Choose new metadata file" - }; + SaveFileDialog dlgSave = new SaveFileDialog {CheckFileExists = true, Title = "Choose new metadata file"}; dlgSave.Filters.Add(new FileFilter("Metadata files", ".xml")); DialogResult result = dlgSave.ShowDialog(this); @@ -254,20 +248,17 @@ namespace CICMMetadataEditor void Save(string destination) { - try { - System.Xml.Serialization.XmlSerializer writer = - new System.Xml.Serialization.XmlSerializer(typeof(CICMMetadataType)); - FileStream fs = new FileStream(destination, FileMode.Create, FileAccess.Write); + XmlSerializer writer = new XmlSerializer(typeof(CICMMetadataType)); + FileStream fs = new FileStream(destination, FileMode.Create, FileAccess.Write); writer.Serialize(fs, metadata); fs.Dispose(); currentFile = destination; } catch(Exception) { - if(Debugger.IsAttached) - throw; + if(Debugger.IsAttached) throw; MessageBox.Show("Could not save metadata.", MessageBoxType.Error); } @@ -287,7 +278,6 @@ namespace CICMMetadataEditor lstDiscs = new ObservableCollection(); lstDisks = new ObservableCollection(); - treeKeywords.DataStore = lstKeywords; treeBarcodes.DataStore = lstBarcodes; treeCategories.DataStore = lstCategories; @@ -345,435 +335,435 @@ namespace CICMMetadataEditor /* TODO foreach(KeyValuePair files in Context.Hashes) lstFilesForMedia.Add(files.Key); */ - } - - void FillFields() - { - if(metadata == null) return; - - if(metadata.Developer != null) - foreach(string developer in metadata.Developer) - { - if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; - txtDeveloper.Text += developer; - } - - if(metadata.Publisher != null) - foreach(string publisher in metadata.Publisher) - { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; - txtPublisher.Text += publisher; - } - - if(metadata.Author != null) - foreach(string author in metadata.Author) - { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; - txtPublisher.Text += author; - } - - if(metadata.Performer != null) - foreach(string performer in metadata.Performer) - { - if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; - txtPublisher.Text += performer; - } - - txtName.Text = metadata.Name; - txtVersion.Text = metadata.Version; - txtPartNumber.Text = metadata.PartNumber; - txtSerialNumber.Text = metadata.SerialNumber; - - if(metadata.ReleaseTypeSpecified) - { - chkKnownReleaseType.Checked = true; - cmbReleaseType.Enabled = true; - cmbReleaseType.SelectedValue = metadata.ReleaseType; } - if(metadata.ReleaseDateSpecified) + void FillFields() { - chkReleaseDate.Checked = false; - cldReleaseDate.Enabled = true; - cldReleaseDate.Value = metadata.ReleaseDate; + if(metadata == null) return; + + if(metadata.Developer != null) + foreach(string developer in metadata.Developer) + { + if(!string.IsNullOrWhiteSpace(txtDeveloper.Text)) txtDeveloper.Text += ","; + txtDeveloper.Text += developer; + } + + if(metadata.Publisher != null) + foreach(string publisher in metadata.Publisher) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += publisher; + } + + if(metadata.Author != null) + foreach(string author in metadata.Author) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += author; + } + + if(metadata.Performer != null) + foreach(string performer in metadata.Performer) + { + if(!string.IsNullOrWhiteSpace(txtPublisher.Text)) txtPublisher.Text += ","; + txtPublisher.Text += performer; + } + + txtName.Text = metadata.Name; + txtVersion.Text = metadata.Version; + txtPartNumber.Text = metadata.PartNumber; + txtSerialNumber.Text = metadata.SerialNumber; + + if(metadata.ReleaseTypeSpecified) + { + chkKnownReleaseType.Checked = true; + cmbReleaseType.Enabled = true; + cmbReleaseType.SelectedValue = metadata.ReleaseType; + } + + if(metadata.ReleaseDateSpecified) + { + chkReleaseDate.Checked = false; + cldReleaseDate.Enabled = true; + cldReleaseDate.Value = metadata.ReleaseDate; + } + + if(metadata.Keywords != null) + foreach(string keyword in metadata.Keywords) + lstKeywords.Add(new StringEntry {str = keyword}); + if(metadata.Categories != null) + foreach(string category in metadata.Categories) + lstCategories.Add(new StringEntry {str = category}); + if(metadata.Subcategories != null) + foreach(string subcategory in metadata.Subcategories) + lstSubcategories.Add(new StringEntry {str = subcategory}); + + if(metadata.Languages != null) + foreach(LanguagesTypeLanguage language in metadata.Languages) + { + lstLanguages.Add(new StringEntry {str = language.ToString()}); + lstLanguageTypes.Remove(language.ToString()); + } + + if(metadata.RequiredOperatingSystems != null) + foreach(RequiredOperatingSystemType reqos in metadata.RequiredOperatingSystems) + foreach(string reqver in reqos.Version) + lstOses.Add(new TargetOsEntry {name = reqos.Name, version = reqver}); + + if(metadata.Architectures != null) + foreach(ArchitecturesTypeArchitecture architecture in metadata.Architectures) + { + lstArchitectures.Add(new StringEntry {str = architecture.ToString()}); + lstArchitecturesTypes.Remove(architecture.ToString()); + } + + if(metadata.OpticalDisc != null) + foreach(OpticalDiscType disc in metadata.OpticalDisc) + { + lstDiscs.Add(new DiscEntry {path = disc.Image.Value, disc = disc}); + List files = new List {disc.Image.Value}; + if(disc.ADIP != null) files.Add(disc.ADIP.Image); + if(disc.ATIP != null) files.Add(disc.ATIP.Image); + if(disc.BCA != null) files.Add(disc.BCA.Image); + if(disc.CMI != null) files.Add(disc.CMI.Image); + if(disc.DCB != null) files.Add(disc.DCB.Image); + if(disc.DDS != null) files.Add(disc.DDS.Image); + if(disc.DMI != null) files.Add(disc.DMI.Image); + if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); + if(disc.LeadIn != null) + foreach(BorderType border in disc.LeadIn) + files.Add(border.Image); + if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); + if(disc.LeadOut != null) + foreach(BorderType border in disc.LeadOut) + files.Add(border.Image); + if(disc.MediaID != null) files.Add(disc.MediaID.Image); + if(disc.PAC != null) files.Add(disc.PAC.Image); + if(disc.PFI != null) files.Add(disc.PFI.Image); + if(disc.PFIR != null) files.Add(disc.PFIR.Image); + if(disc.PMA != null) files.Add(disc.PMA.Image); + if(disc.PRI != null) files.Add(disc.PRI.Image); + if(disc.SAI != null) files.Add(disc.SAI.Image); + if(disc.TOC != null) files.Add(disc.TOC.Image); + if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); + + foreach(string file in files) + if(lstFilesForMedia.Contains(file)) + lstFilesForMedia.Remove(file); + } + + if(metadata.BlockMedia != null) + foreach(BlockMediaType disk in metadata.BlockMedia) + { + lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk}); + List files = new List {disk.Image.Value}; + if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image); + if(disk.MAM != null) files.Add(disk.MAM.Image); + if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); + if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image); + if(disk.SCSI != null) + { + if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); + if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); + if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); + if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); + if(disk.SCSI.EVPD != null) files.AddRange(disk.SCSI.EVPD.Select(evpd => evpd.Image)); + } + + if(disk.SecureDigital != null) + { + if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); + if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); + if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); + } + + if(disk.TapeInformation != null) + files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); + if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); + if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); + + foreach(string file in files) + if(lstFilesForMedia.Contains(file)) + lstFilesForMedia.Remove(file); + } + + magazines = metadata.Magazine; + books = metadata.Book; + usermanuals = metadata.UserManual; + adverts = metadata.Advertisement; + linearmedias = metadata.LinearMedia; + pcis = metadata.PCICard; + audiomedias = metadata.AudioMedia; } - if(metadata.Keywords != null) - foreach(string keyword in metadata.Keywords) - lstKeywords.Add(new StringEntry {str = keyword}); - if(metadata.Categories != null) - foreach(string category in metadata.Categories) - lstCategories.Add(new StringEntry {str = category}); - if(metadata.Subcategories != null) - foreach(string subcategory in metadata.Subcategories) - lstSubcategories.Add(new StringEntry {str = subcategory}); - - if(metadata.Languages != null) - foreach(LanguagesTypeLanguage language in metadata.Languages) - { - lstLanguages.Add(new StringEntry {str = language.ToString()}); - lstLanguageTypes.Remove(language.ToString()); - } - - if(metadata.RequiredOperatingSystems != null) - foreach(RequiredOperatingSystemType reqos in metadata.RequiredOperatingSystems) - foreach(string reqver in reqos.Version) - lstOses.Add(new TargetOsEntry {name = reqos.Name, version = reqver}); - - if(metadata.Architectures != null) - foreach(ArchitecturesTypeArchitecture architecture in metadata.Architectures) - { - lstArchitectures.Add(new StringEntry {str = architecture.ToString()}); - lstArchitecturesTypes.Remove(architecture.ToString()); - } - - if(metadata.OpticalDisc != null) - foreach(OpticalDiscType disc in metadata.OpticalDisc) - { - lstDiscs.Add(new DiscEntry {path = disc.Image.Value, disc = disc}); - List files = new List {disc.Image.Value}; - if(disc.ADIP != null) files.Add(disc.ADIP.Image); - if(disc.ATIP != null) files.Add(disc.ATIP.Image); - if(disc.BCA != null) files.Add(disc.BCA.Image); - if(disc.CMI != null) files.Add(disc.CMI.Image); - if(disc.DCB != null) files.Add(disc.DCB.Image); - if(disc.DDS != null) files.Add(disc.DDS.Image); - if(disc.DMI != null) files.Add(disc.DMI.Image); - if(disc.LastRMD != null) files.Add(disc.LastRMD.Image); - if(disc.LeadIn != null) - foreach(BorderType border in disc.LeadIn) - files.Add(border.Image); - if(disc.LeadInCdText != null) files.Add(disc.LeadInCdText.Image); - if(disc.LeadOut != null) - foreach(BorderType border in disc.LeadOut) - files.Add(border.Image); - if(disc.MediaID != null) files.Add(disc.MediaID.Image); - if(disc.PAC != null) files.Add(disc.PAC.Image); - if(disc.PFI != null) files.Add(disc.PFI.Image); - if(disc.PFIR != null) files.Add(disc.PFIR.Image); - if(disc.PMA != null) files.Add(disc.PMA.Image); - if(disc.PRI != null) files.Add(disc.PRI.Image); - if(disc.SAI != null) files.Add(disc.SAI.Image); - if(disc.TOC != null) files.Add(disc.TOC.Image); - if(disc.Track != null) files.AddRange(disc.Track.Select(track => track.Image.Value)); - - foreach(string file in files) - if(lstFilesForMedia.Contains(file)) - lstFilesForMedia.Remove(file); - } - - if(metadata.BlockMedia != null) - foreach(BlockMediaType disk in metadata.BlockMedia) - { - lstDisks.Add(new DiskEntry {path = disk.Image.Value, disk = disk}); - List files = new List {disk.Image.Value}; - if(disk.ATA?.Identify != null) files.Add(disk.ATA.Identify.Image); - if(disk.MAM != null) files.Add(disk.MAM.Image); - if(disk.PCI?.ExpansionROM != null) files.Add(disk.PCI.ExpansionROM.Image.Value); - if(disk.PCMCIA?.CIS != null) files.Add(disk.PCMCIA.CIS.Image); - if(disk.SCSI != null) - { - if(disk.SCSI.Inquiry != null) files.Add(disk.SCSI.Inquiry.Image); - if(disk.SCSI.LogSense != null) files.Add(disk.SCSI.LogSense.Image); - if(disk.SCSI.ModeSense != null) files.Add(disk.SCSI.ModeSense.Image); - if(disk.SCSI.ModeSense10 != null) files.Add(disk.SCSI.ModeSense10.Image); - if(disk.SCSI.EVPD != null) files.AddRange(disk.SCSI.EVPD.Select(evpd => evpd.Image)); - } - - if(disk.SecureDigital != null) - { - if(disk.SecureDigital.CID != null) files.Add(disk.SecureDigital.CID.Image); - if(disk.SecureDigital.CSD != null) files.Add(disk.SecureDigital.CSD.Image); - if(disk.MultiMediaCard.ExtendedCSD != null) files.Add(disk.MultiMediaCard.ExtendedCSD.Image); - } - - if(disk.TapeInformation != null) - files.AddRange(disk.TapeInformation.Select(tapePart => tapePart.Image.Value)); - if(disk.Track != null) files.AddRange(disk.Track.Select(track => track.Image.Value)); - if(disk.USB?.Descriptors != null) files.Add(disk.USB.Descriptors.Image); - - foreach(string file in files) - if(lstFilesForMedia.Contains(file)) - lstFilesForMedia.Remove(file); - } - - magazines = metadata.Magazine; - books = metadata.Book; - usermanuals = metadata.UserManual; - adverts = metadata.Advertisement; - linearmedias = metadata.LinearMedia; - pcis = metadata.PCICard; - audiomedias = metadata.AudioMedia; - } - - protected void OnChkKnownReleaseTypeToggled(object sender, EventArgs e) - { - cmbReleaseType.Enabled = chkKnownReleaseType.Checked.Value; - } - - protected void OnChkReleaseDateToggled(object sender, EventArgs e) - { - cldReleaseDate.Enabled = !chkReleaseDate.Checked.Value; - } - - protected void OnBtnAddKeywordClicked(object sender, EventArgs e) - { - lstKeywords.Add(new StringEntry {str = txtNewKeyword.Text}); - txtNewKeyword.Text = ""; - } - - protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e) - { - if(treeKeywords.SelectedItem != null) lstKeywords.Remove((StringEntry)treeKeywords.SelectedItem); - } - - protected void OnBtnClearKeywordsClicked(object sender, EventArgs e) - { - lstKeywords.Clear(); - } - - protected void OnBtnAddBarcodeClicked(object sender, EventArgs e) - { - if(string.IsNullOrEmpty(cmbBarcodes.Text)) return; - - lstBarcodes.Add(new BarcodeEntry + protected void OnChkKnownReleaseTypeToggled(object sender, EventArgs e) { - code = txtNewBarcode.Text, - type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), cmbBarcodes.Text) - }); - txtNewBarcode.Text = ""; - } - - protected void OnBtnClearBarcodesClicked(object sender, EventArgs e) - { - lstBarcodes.Clear(); - } - - protected void OnBtnRemoveBarcodeClicked(object sender, EventArgs e) - { - if(treeBarcodes.SelectedItem != null) lstBarcodes.Remove((BarcodeEntry)treeBarcodes.SelectedItem); - } - - protected void OnBtnAddCategoryClicked(object sender, EventArgs e) - { - lstCategories.Add(new StringEntry {str = txtNewCategory.Text}); - txtNewCategory.Text = ""; - } - - protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e) - { - lstSubcategories.Add(new StringEntry {str = txtNewSubcategory.Text}); - txtNewSubcategory.Text = ""; - } - - protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e) - { - if(treeSubcategories.SelectedItem != null) - lstSubcategories.Remove((StringEntry)treeSubcategories.SelectedItem); - } - - protected void OnBtnClearSubcategoriesClicked(object sender, EventArgs e) - { - lstSubcategories.Clear(); - } - - protected void OnBtnRemoveCategoryClicked(object sender, EventArgs e) - { - if(treeCategories.SelectedItem != null) lstCategories.Remove((StringEntry)treeCategories.SelectedItem); - } - - protected void OnBtnClearCategoriesClicked(object sender, EventArgs e) - { - lstCategories.Clear(); - } - - protected void OnBtnAddLanguageClicked(object sender, EventArgs e) - { - if(string.IsNullOrWhiteSpace(cmbLanguages.Text)) return; - - lstLanguages.Add(new StringEntry {str = cmbLanguages.Text}); - lstLanguageTypes.Remove(cmbLanguages.Text); - } - - protected void OnBtnRemoveLanguageClicked(object sender, EventArgs e) - { - if(treeLanguages.SelectedItem == null) return; - - lstLanguageTypes.Add(((StringEntry)treeLanguages.SelectedItem).str); - lstLanguages.Remove((StringEntry)treeLanguages.SelectedItem); - } - - protected void OnBtnClearLanguagesClicked(object sender, EventArgs e) - { - lstLanguages.Clear(); - FillLanguagesCombo(); - } - - protected void OnBtnAddNewOsClicked(object sender, EventArgs e) - { - if(string.IsNullOrWhiteSpace(txtNewOsName.Text)) - { - MessageBox.Show("Operating system name cannot be empty.", MessageBoxType.Error); - return; + cmbReleaseType.Enabled = chkKnownReleaseType.Checked.Value; } - if(string.IsNullOrWhiteSpace(txtNewOsVersion.Text)) + protected void OnChkReleaseDateToggled(object sender, EventArgs e) { - MessageBox.Show("Operating system version cannot be empty.", MessageBoxType.Error); - return; + cldReleaseDate.Enabled = !chkReleaseDate.Checked.Value; } - lstOses.Add(new TargetOsEntry {name = txtNewOsName.Text, version = txtNewOsVersion.Text}); - txtNewOsName.Text = ""; - txtNewOsVersion.Text = ""; - } - - protected void OnBtnClearOsesClicked(object sender, EventArgs e) - { - lstOses.Clear(); - } - - protected void OnBtnRemoveOsClicked(object sender, EventArgs e) - { - if(treeOses.SelectedItem != null) lstOses.Remove((TargetOsEntry)treeOses.SelectedItem); - } - - protected void OnBtnAddArchitectureClicked(object sender, EventArgs e) - { - if(string.IsNullOrWhiteSpace(cmbArchitectures.Text)) return; - - lstArchitectures.Add(new StringEntry {str = cmbArchitectures.Text}); - lstArchitecturesTypes.Remove(cmbArchitectures.Text); - } - - protected void OnBtnClearArchitecturesClicked(object sender, EventArgs e) - { - lstArchitectures.Clear(); - FillArchitecturesCombo(); - } - - protected void OnBtnRemoveArchitectureClicked(object sender, EventArgs e) - { - if(treeArchitectures.SelectedItem == null) return; - - lstArchitecturesTypes.Add(((StringEntry)treeArchitectures.SelectedItem).str); - lstArchitectures.Remove((StringEntry)treeArchitectures.SelectedItem); - } - - protected void OnBtnAddDiscClicked(object sender, EventArgs e) - { - /* TODO - Context.SelectedFile = cmbFilesForNewDisc.Text; - */ - tabGeneral.Visible = false; - tabKeywords.Visible = false; - tabBarcodes.Visible = false; - tabCategories.Visible = false; - tabLanguages.Visible = false; - tabTargetOs.Visible = false; - tabArchitectures.Visible = false; - tabDisks.Visible = false; - prgAddDisc1.Visible = true; - prgAddDisc2.Visible = true; - lblAddDisc1.Visible = true; - lblAddDisc2.Visible = true; - btnCancel.Visible = false; - btnOK.Visible = false; - btnEditDisc.Visible = false; - btnClearDiscs.Visible = false; - /* TODO - Workers.Failed += OnDiscAddFailed; - Workers.Finished += OnDiscAddFinished; - Workers.UpdateProgress += UpdateDiscProgress1; - Workers.UpdateProgress2 += UpdateDiscProgress2; - Context.WorkingDisc = null; - */ - btnStopAddDisc.Visible = true; - btnAddDisc.Visible = false; - btnRemoveDisc.Visible = false; - /* TODO - thdDisc = new Thread(Workers.AddMedia); - thdDisc.Start(); - */ - } - - protected void OnBtnStopAddDiscClicked(object sender, EventArgs e) - { - thdDisc?.Abort(); - stopped = true; - OnDiscAddFailed(null); - } - - void UpdateDiscProgress1(string text, string inner, long current, long maximum) - { - Application.Instance.Invoke(delegate + protected void OnBtnAddKeywordClicked(object sender, EventArgs e) { - lblAddDisc1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; - if(maximum > 0) + lstKeywords.Add(new StringEntry {str = txtNewKeyword.Text}); + txtNewKeyword.Text = ""; + } + + protected void OnBtnRemoveKeywordClicked(object sender, EventArgs e) + { + if(treeKeywords.SelectedItem != null) lstKeywords.Remove((StringEntry)treeKeywords.SelectedItem); + } + + protected void OnBtnClearKeywordsClicked(object sender, EventArgs e) + { + lstKeywords.Clear(); + } + + protected void OnBtnAddBarcodeClicked(object sender, EventArgs e) + { + if(string.IsNullOrEmpty(cmbBarcodes.Text)) return; + + lstBarcodes.Add(new BarcodeEntry { - if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || - maximum > int.MaxValue) - { - current /= 100; - maximum /= 100; - } + code = txtNewBarcode.Text, + type = (BarcodeTypeType)Enum.Parse(typeof(BarcodeTypeType), cmbBarcodes.Text) + }); + txtNewBarcode.Text = ""; + } - prgAddDisc1.Indeterminate = false; - prgAddDisc1.MinValue = 0; - prgAddDisc1.MaxValue = (int)maximum; - prgAddDisc1.Value = (int)current; - } - else prgAddDisc1.Indeterminate = true; - }); - } - - void UpdateDiscProgress2(string text, string inner, long current, long maximum) - { - Application.Instance.Invoke(delegate + protected void OnBtnClearBarcodesClicked(object sender, EventArgs e) { - lblAddDisc2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; - if(maximum > 0) + lstBarcodes.Clear(); + } + + protected void OnBtnRemoveBarcodeClicked(object sender, EventArgs e) + { + if(treeBarcodes.SelectedItem != null) lstBarcodes.Remove((BarcodeEntry)treeBarcodes.SelectedItem); + } + + protected void OnBtnAddCategoryClicked(object sender, EventArgs e) + { + lstCategories.Add(new StringEntry {str = txtNewCategory.Text}); + txtNewCategory.Text = ""; + } + + protected void OnBtnAddSubcategoryClicked(object sender, EventArgs e) + { + lstSubcategories.Add(new StringEntry {str = txtNewSubcategory.Text}); + txtNewSubcategory.Text = ""; + } + + protected void OnBtnRemoveSubcategoryClicked(object sender, EventArgs e) + { + if(treeSubcategories.SelectedItem != null) + lstSubcategories.Remove((StringEntry)treeSubcategories.SelectedItem); + } + + protected void OnBtnClearSubcategoriesClicked(object sender, EventArgs e) + { + lstSubcategories.Clear(); + } + + protected void OnBtnRemoveCategoryClicked(object sender, EventArgs e) + { + if(treeCategories.SelectedItem != null) lstCategories.Remove((StringEntry)treeCategories.SelectedItem); + } + + protected void OnBtnClearCategoriesClicked(object sender, EventArgs e) + { + lstCategories.Clear(); + } + + protected void OnBtnAddLanguageClicked(object sender, EventArgs e) + { + if(string.IsNullOrWhiteSpace(cmbLanguages.Text)) return; + + lstLanguages.Add(new StringEntry {str = cmbLanguages.Text}); + lstLanguageTypes.Remove(cmbLanguages.Text); + } + + protected void OnBtnRemoveLanguageClicked(object sender, EventArgs e) + { + if(treeLanguages.SelectedItem == null) return; + + lstLanguageTypes.Add(((StringEntry)treeLanguages.SelectedItem).str); + lstLanguages.Remove((StringEntry)treeLanguages.SelectedItem); + } + + protected void OnBtnClearLanguagesClicked(object sender, EventArgs e) + { + lstLanguages.Clear(); + FillLanguagesCombo(); + } + + protected void OnBtnAddNewOsClicked(object sender, EventArgs e) + { + if(string.IsNullOrWhiteSpace(txtNewOsName.Text)) { - if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || - maximum > int.MaxValue) - { - current /= 100; - maximum /= 100; - } - - prgAddDisc2.Indeterminate = false; - prgAddDisc2.MinValue = 0; - prgAddDisc2.MaxValue = (int)maximum; - prgAddDisc2.Value = (int)current; + MessageBox.Show("Operating system name cannot be empty.", MessageBoxType.Error); + return; } - else prgAddDisc2.Indeterminate = true; - }); - } - void OnDiscAddFailed(string text) - { - Application.Instance.Invoke(delegate + if(string.IsNullOrWhiteSpace(txtNewOsVersion.Text)) + { + MessageBox.Show("Operating system version cannot be empty.", MessageBoxType.Error); + return; + } + + lstOses.Add(new TargetOsEntry {name = txtNewOsName.Text, version = txtNewOsVersion.Text}); + txtNewOsName.Text = ""; + txtNewOsVersion.Text = ""; + } + + protected void OnBtnClearOsesClicked(object sender, EventArgs e) + { + lstOses.Clear(); + } + + protected void OnBtnRemoveOsClicked(object sender, EventArgs e) + { + if(treeOses.SelectedItem != null) lstOses.Remove((TargetOsEntry)treeOses.SelectedItem); + } + + protected void OnBtnAddArchitectureClicked(object sender, EventArgs e) + { + if(string.IsNullOrWhiteSpace(cmbArchitectures.Text)) return; + + lstArchitectures.Add(new StringEntry {str = cmbArchitectures.Text}); + lstArchitecturesTypes.Remove(cmbArchitectures.Text); + } + + protected void OnBtnClearArchitecturesClicked(object sender, EventArgs e) + { + lstArchitectures.Clear(); + FillArchitecturesCombo(); + } + + protected void OnBtnRemoveArchitectureClicked(object sender, EventArgs e) + { + if(treeArchitectures.SelectedItem == null) return; + + lstArchitecturesTypes.Add(((StringEntry)treeArchitectures.SelectedItem).str); + lstArchitectures.Remove((StringEntry)treeArchitectures.SelectedItem); + } + + protected void OnBtnAddDiscClicked(object sender, EventArgs e) { - if(!stopped) MessageBox.Show(text, MessageBoxType.Error); /* TODO - Context.SelectedFile = ""; - */ - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabTargetOs.Visible = true; - tabArchitectures.Visible = true; - tabDisks.Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - lblAddDisc1.Visible = false; - lblAddDisc2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; + Context.SelectedFile = cmbFilesForNewDisc.Text; + */ + tabGeneral.Visible = false; + tabKeywords.Visible = false; + tabBarcodes.Visible = false; + tabCategories.Visible = false; + tabLanguages.Visible = false; + tabTargetOs.Visible = false; + tabArchitectures.Visible = false; + tabDisks.Visible = false; + prgAddDisc1.Visible = true; + prgAddDisc2.Visible = true; + lblAddDisc1.Visible = true; + lblAddDisc2.Visible = true; + btnCancel.Visible = false; + btnOK.Visible = false; + btnEditDisc.Visible = false; + btnClearDiscs.Visible = false; + /* TODO + Workers.Failed += OnDiscAddFailed; + Workers.Finished += OnDiscAddFinished; + Workers.UpdateProgress += UpdateDiscProgress1; + Workers.UpdateProgress2 += UpdateDiscProgress2; + Context.WorkingDisc = null; + */ + btnStopAddDisc.Visible = true; + btnAddDisc.Visible = false; + btnRemoveDisc.Visible = false; + /* TODO + thdDisc = new Thread(Workers.AddMedia); + thdDisc.Start(); + */ + } + + protected void OnBtnStopAddDiscClicked(object sender, EventArgs e) + { + thdDisc?.Abort(); + stopped = true; + OnDiscAddFailed(null); + } + + void UpdateDiscProgress1(string text, string inner, long current, long maximum) + { + Application.Instance.Invoke(delegate + { + lblAddDisc1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; + if(maximum > 0) + { + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) + { + current /= 100; + maximum /= 100; + } + + prgAddDisc1.Indeterminate = false; + prgAddDisc1.MinValue = 0; + prgAddDisc1.MaxValue = (int)maximum; + prgAddDisc1.Value = (int)current; + } + else prgAddDisc1.Indeterminate = true; + }); + } + + void UpdateDiscProgress2(string text, string inner, long current, long maximum) + { + Application.Instance.Invoke(delegate + { + lblAddDisc2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; + if(maximum > 0) + { + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) + { + current /= 100; + maximum /= 100; + } + + prgAddDisc2.Indeterminate = false; + prgAddDisc2.MinValue = 0; + prgAddDisc2.MaxValue = (int)maximum; + prgAddDisc2.Value = (int)current; + } + else prgAddDisc2.Indeterminate = true; + }); + } + + void OnDiscAddFailed(string text) + { + Application.Instance.Invoke(delegate + { + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + /* TODO + Context.SelectedFile = ""; + */ + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabTargetOs.Visible = true; + tabArchitectures.Visible = true; + tabDisks.Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + lblAddDisc1.Visible = false; + lblAddDisc2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; /* TODO Workers.Failed -= OnDiscAddFailed; Workers.Finished -= OnDiscAddFinished; @@ -781,10 +771,10 @@ namespace CICMMetadataEditor Workers.UpdateProgress2 -= UpdateDiscProgress2; Context.WorkingDisc = null; */ - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDisc.Visible = true; - thdDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDisc.Visible = true; + thdDisc = null; }); } @@ -825,22 +815,22 @@ namespace CICMMetadataEditor /* TODO Context.SelectedFile = ""; */ - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabTargetOs.Visible = true; - tabArchitectures.Visible = true; - tabDisks.Visible = true; - prgAddDisc1.Visible = false; - prgAddDisc2.Visible = false; - lblAddDisc1.Visible = false; - lblAddDisc2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisc.Visible = true; - btnClearDiscs.Visible = true; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabTargetOs.Visible = true; + tabArchitectures.Visible = true; + tabDisks.Visible = true; + prgAddDisc1.Visible = false; + prgAddDisc2.Visible = false; + lblAddDisc1.Visible = false; + lblAddDisc2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisc.Visible = true; + btnClearDiscs.Visible = true; /* TODO Workers.Failed -= OnDiscAddFailed; Workers.Finished -= OnDiscAddFinished; @@ -848,10 +838,10 @@ namespace CICMMetadataEditor Workers.UpdateProgress2 -= UpdateDiscProgress2; Context.WorkingDisc = null; */ - btnStopAddDisc.Visible = false; - btnAddDisc.Visible = true; - btnRemoveDisc.Visible = true; - thdDisc = null; + btnStopAddDisc.Visible = false; + btnAddDisc.Visible = true; + btnRemoveDisc.Visible = true; + thdDisc = null; }); } @@ -875,116 +865,116 @@ namespace CICMMetadataEditor /* TODO Context.SelectedFile = cmbFilesForNewDisk.Text; */ - tabGeneral.Visible = false; - tabKeywords.Visible = false; - tabBarcodes.Visible = false; - tabCategories.Visible = false; - tabLanguages.Visible = false; - tabTargetOs.Visible = false; - tabArchitectures.Visible = false; - tabDiscs.Visible = false; - prgAddDisk1.Visible = true; - prgAddDisk2.Visible = true; - lblAddDisk1.Visible = true; - lblAddDisk2.Visible = true; - btnCancel.Visible = false; - btnOK.Visible = false; - btnEditDisk.Visible = false; - btnClearDisks.Visible = false; - /* TODO - Workers.Failed += OnDiskAddFailed; - Workers.Finished += OnDiskAddFinished; - Workers.UpdateProgress += UpdateDiskProgress1; - Workers.UpdateProgress2 += UpdateDiskProgress2; - Context.WorkingDisk = null; - */ - btnStopAddDisk.Visible = true; - btnAddDisk.Visible = false; - btnRemoveDisk.Visible = false; + tabGeneral.Visible = false; + tabKeywords.Visible = false; + tabBarcodes.Visible = false; + tabCategories.Visible = false; + tabLanguages.Visible = false; + tabTargetOs.Visible = false; + tabArchitectures.Visible = false; + tabDiscs.Visible = false; + prgAddDisk1.Visible = true; + prgAddDisk2.Visible = true; + lblAddDisk1.Visible = true; + lblAddDisk2.Visible = true; + btnCancel.Visible = false; + btnOK.Visible = false; + btnEditDisk.Visible = false; + btnClearDisks.Visible = false; + /* TODO + Workers.Failed += OnDiskAddFailed; + Workers.Finished += OnDiskAddFinished; + Workers.UpdateProgress += UpdateDiskProgress1; + Workers.UpdateProgress2 += UpdateDiskProgress2; + Context.WorkingDisk = null; + */ + btnStopAddDisk.Visible = true; + btnAddDisk.Visible = false; + btnRemoveDisk.Visible = false; /* TODO thdDisk = new Thread(Workers.AddMedia); thdDisk.Start(); */ -} + } -protected void OnBtnStopAddDiskClicked(object sender, EventArgs e) -{ -thdDisk?.Abort(); -stopped = true; -OnDiskAddFailed(null); -} + protected void OnBtnStopAddDiskClicked(object sender, EventArgs e) + { + thdDisk?.Abort(); + stopped = true; + OnDiskAddFailed(null); + } -void UpdateDiskProgress1(string text, string inner, long current, long maximum) -{ -Application.Instance.Invoke(delegate -{ -lblAddDisk1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; -if(maximum > 0) -{ -if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || - maximum > int.MaxValue) -{ - current /= 100; - maximum /= 100; -} + void UpdateDiskProgress1(string text, string inner, long current, long maximum) + { + Application.Instance.Invoke(delegate + { + lblAddDisk1.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; + if(maximum > 0) + { + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) + { + current /= 100; + maximum /= 100; + } -prgAddDisk1.Indeterminate = false; -prgAddDisk1.MinValue = 0; -prgAddDisk1.MaxValue = (int)maximum; -prgAddDisk1.Value = (int)current; -} -else prgAddDisk1.Indeterminate = true; -}); -} + prgAddDisk1.Indeterminate = false; + prgAddDisk1.MinValue = 0; + prgAddDisk1.MaxValue = (int)maximum; + prgAddDisk1.Value = (int)current; + } + else prgAddDisk1.Indeterminate = true; + }); + } -void UpdateDiskProgress2(string text, string inner, long current, long maximum) -{ -Application.Instance.Invoke(delegate -{ -lblAddDisk2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; -if(maximum > 0) -{ -if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || - maximum > int.MaxValue) -{ - current /= 100; - maximum /= 100; -} + void UpdateDiskProgress2(string text, string inner, long current, long maximum) + { + Application.Instance.Invoke(delegate + { + lblAddDisk2.Text = !string.IsNullOrWhiteSpace(inner) ? inner : text; + if(maximum > 0) + { + if(current < int.MinValue || current > int.MaxValue || maximum < int.MinValue || + maximum > int.MaxValue) + { + current /= 100; + maximum /= 100; + } -prgAddDisk2.Indeterminate = false; -prgAddDisk2.MinValue = 0; -prgAddDisk2.MaxValue = (int)maximum; -prgAddDisk2.Value = (int)current; -} -else prgAddDisk2.Indeterminate = true; -}); -} + prgAddDisk2.Indeterminate = false; + prgAddDisk2.MinValue = 0; + prgAddDisk2.MaxValue = (int)maximum; + prgAddDisk2.Value = (int)current; + } + else prgAddDisk2.Indeterminate = true; + }); + } -void OnDiskAddFailed(string text) -{ -Application.Instance.Invoke(delegate -{ -if(!stopped) MessageBox.Show(text, MessageBoxType.Error); -/* TODO -Context.SelectedFile = ""; -*/ - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabTargetOs.Visible = true; - tabArchitectures.Visible = true; - tabDiscs.Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - lblAddDisk1.Visible = false; - lblAddDisk2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; + void OnDiskAddFailed(string text) + { + Application.Instance.Invoke(delegate + { + if(!stopped) MessageBox.Show(text, MessageBoxType.Error); + /* TODO + Context.SelectedFile = ""; + */ + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabTargetOs.Visible = true; + tabArchitectures.Visible = true; + tabDiscs.Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + lblAddDisk1.Visible = false; + lblAddDisk2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; /* TODO Workers.Failed -= OnDiskAddFailed; Workers.Finished -= OnDiskAddFinished; @@ -992,10 +982,10 @@ Context.SelectedFile = ""; Workers.UpdateProgress2 -= UpdateDiskProgress2; Context.WorkingDisk = null; */ - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } @@ -1041,32 +1031,32 @@ Context.SelectedFile = ""; /* TODO Context.SelectedFile = ""; */ - tabGeneral.Visible = true; - tabKeywords.Visible = true; - tabBarcodes.Visible = true; - tabCategories.Visible = true; - tabLanguages.Visible = true; - tabTargetOs.Visible = true; - tabArchitectures.Visible = true; - tabDiscs.Visible = true; - prgAddDisk1.Visible = false; - prgAddDisk2.Visible = false; - lblAddDisk1.Visible = false; - lblAddDisk2.Visible = false; - btnCancel.Visible = true; - btnOK.Visible = true; - btnEditDisk.Visible = true; - btnClearDisks.Visible = true; + tabGeneral.Visible = true; + tabKeywords.Visible = true; + tabBarcodes.Visible = true; + tabCategories.Visible = true; + tabLanguages.Visible = true; + tabTargetOs.Visible = true; + tabArchitectures.Visible = true; + tabDiscs.Visible = true; + prgAddDisk1.Visible = false; + prgAddDisk2.Visible = false; + lblAddDisk1.Visible = false; + lblAddDisk2.Visible = false; + btnCancel.Visible = true; + btnOK.Visible = true; + btnEditDisk.Visible = true; + btnClearDisks.Visible = true; /* TODO Workers.Failed -= OnDiskAddFailed; Workers.Finished -= OnDiskAddFinished; Workers.UpdateProgress -= UpdateDiskProgress1; Workers.UpdateProgress2 -= UpdateDiskProgress2; Context.WorkingDisk = null;*/ - btnStopAddDisk.Visible = false; - btnAddDisk.Visible = true; - btnRemoveDisk.Visible = true; - thdDisk = null; + btnStopAddDisk.Visible = false; + btnAddDisk.Visible = true; + btnRemoveDisk.Visible = true; + thdDisk = null; }); } diff --git a/CICMMetadataEditor/CICMMetadataEditor/dlgOpticalDisc.xeto.cs b/CICMMetadataEditor/CICMMetadataEditor/dlgOpticalDisc.xeto.cs index 342537c..a1936ac 100644 --- a/CICMMetadataEditor/CICMMetadataEditor/dlgOpticalDisc.xeto.cs +++ b/CICMMetadataEditor/CICMMetadataEditor/dlgOpticalDisc.xeto.cs @@ -41,23 +41,20 @@ namespace CICMMetadataEditor { public class dlgOpticalDisc : Dialog { - // Non-editable fields - ChecksumType[] checksums; - DumpHardwareType dumpHwIter; - bool editingDumpHw; - - bool editingPartition; - FileSystemType filesystemIter; - ObservableCollection lstADIP; - ObservableCollection lstATIP; - ObservableCollection lstBCA; - ObservableCollection lstCDText; - ObservableCollection lstCMI; - ObservableCollection lstDCB; - ObservableCollection lstDDS; - ObservableCollection lstDI; - ObservableCollection lstDMI; - + ChecksumType[] checksums; + DumpHardwareType dumpHwIter; + bool editingDumpHw; + bool editingPartition; + FileSystemType filesystemIter; + ObservableCollection lstADIP; + ObservableCollection lstATIP; + ObservableCollection lstBCA; + ObservableCollection lstCDText; + ObservableCollection lstCMI; + ObservableCollection lstDCB; + ObservableCollection lstDDS; + ObservableCollection lstDI; + ObservableCollection lstDMI; ObservableCollection lstDumpHw; ObservableCollection lstLastRMD; ObservableCollection lstLayers; @@ -82,9 +79,8 @@ namespace CICMMetadataEditor public bool Modified; PartitionType partitionIter; ScansType scans; - - TrackType trackIter; - XboxType xbox; + TrackType trackIter; + XboxType xbox; public dlgOpticalDisc() { @@ -156,9 +152,9 @@ namespace CICMMetadataEditor treeDumpHardware.Columns.Add(new GridColumn { - DataCell = + DataCell = new TextBoxCell {Binding = Binding.Property(r => r.Manufacturer)}, - HeaderText = "Manufacturer" + HeaderText = "Manufacturer" }); treeDumpHardware.Columns.Add(new GridColumn { @@ -643,7 +639,7 @@ namespace CICMMetadataEditor #endregion Set mould text table #region Set layer type combo box - cmbLayerType = new EnumDropDown(); + cmbLayerType = new EnumDropDown(); stkLayers.Items.Add(new StackLayoutItem {Control = cmbLayerType}); #endregion Set layer type combo box @@ -841,39 +837,40 @@ namespace CICMMetadataEditor spSequence.ToolTip = "Number of this disc in the sequence."; spTotalMedia.ToolTip = "How many diskc make the sequence."; spSide.ToolTip = "On double sided discs, which side of the disc is represented by this dump."; - spLayer.ToolTip = "On PTP layered discs, which layer of the side of the disc is represented by this dump."; - chkDimensions.ToolTip = "If checked, physical dimensions of disk are known."; - chkRound.ToolTip = "If checked, disk is physicaly round."; - spDiameter.ToolTip = "Diameter in milimeters of disk."; - spHeight.ToolTip = "Height in milimeters of disk."; - spWidth.ToolTip = "Width in milimeters of disk."; - spThickness.ToolTip = "Thickness in milimeters of disk."; + spLayer.ToolTip = + "On PTP layered discs, which layer of the side of the disc is represented by this dump."; + chkDimensions.ToolTip = "If checked, physical dimensions of disk are known."; + chkRound.ToolTip = "If checked, disk is physicaly round."; + spDiameter.ToolTip = "Diameter in milimeters of disk."; + spHeight.ToolTip = "Height in milimeters of disk."; + spWidth.ToolTip = "Width in milimeters of disk."; + spThickness.ToolTip = "Thickness in milimeters of disk."; } public void FillFields() { if(Metadata == null) return; - txtImage.Text = Metadata.Image.Value; - txtFormat.Text = Metadata.Image.format; + 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(); + 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; - spLayer.Visible = true; - chkSequence.Checked = true; - txtDiscTitle.Text = Metadata.Sequence.MediaTitle; - spSequence.Value = Metadata.Sequence.MediaSequence; - spTotalMedia.Value = Metadata.Sequence.TotalMedia; + 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; + spLayer.Visible = true; + chkSequence.Checked = 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) spLayer.Value = Metadata.Sequence.Layer; } @@ -921,11 +918,11 @@ namespace CICMMetadataEditor treeMouldTexts.DataStore = lstMouldTexts; } - 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.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) @@ -1182,9 +1179,9 @@ namespace CICMMetadataEditor txtPartitionType.Text = partitionIter.Type; txtPartitionName.Text = partitionIter.Name; txtPartitionDescription.Text = partitionIter.Description; - treeFilesystems.DataStore = partitionIter.FileSystems != null - ? new ObservableCollection(partitionIter.FileSystems) - : new ObservableCollection(); + treeFilesystems.DataStore = partitionIter.FileSystems != null + ? new ObservableCollection(partitionIter.FileSystems) + : new ObservableCollection(); btnCancelPartition.Visible = true; btnApplyPartition.Visible = true; btnRemovePartition.Visible = false; @@ -1271,28 +1268,30 @@ namespace CICMMetadataEditor } protected void OnBtnEditFilesystemClicked(object sender, EventArgs e) - {/* - if(treeFilesystems.SelectedItem == null) return; + { + /* + if(treeFilesystems.SelectedItem == null) return; - filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; + filesystemIter = (FileSystemType)treeFilesystems.SelectedItem; - dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; - _dlgFilesystem.FillFields(); - _dlgFilesystem.ShowModal(this); + dlgFilesystem _dlgFilesystem = new dlgFilesystem {Metadata = filesystemIter}; + _dlgFilesystem.FillFields(); + _dlgFilesystem.ShowModal(this); - if(!_dlgFilesystem.Modified) return; + if(!_dlgFilesystem.Modified) return; - ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ + ((ObservableCollection)treeFilesystems.DataStore).Remove(filesystemIter); + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ } protected void OnBtnAddFilesystemClicked(object sender, EventArgs e) - {/* - dlgFilesystem _dlgFilesystem = new dlgFilesystem(); - _dlgFilesystem.ShowModal(this); + { + /* + dlgFilesystem _dlgFilesystem = new dlgFilesystem(); + _dlgFilesystem.ShowModal(this); - if(_dlgFilesystem.Modified) - ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ + if(_dlgFilesystem.Modified) + ((ObservableCollection)treeFilesystems.DataStore).Add(_dlgFilesystem.Metadata);*/ } protected void OnBtnCancelTrackClicked(object sender, EventArgs e) @@ -1309,27 +1308,27 @@ namespace CICMMetadataEditor protected void OnBtnApplyTrackClicked(object sender, EventArgs e) { - string file = trackIter.Image.Value; - long filesize = trackIter.Size; - string fileformat = trackIter.Image.format; - long fileoffset = trackIter.Image.offset; - ChecksumType[] checksums = trackIter.Checksums; - SubChannelType subchannel = trackIter.SubChannel; - TrackTypeTrackType trackType = + string file = trackIter.Image.Value; + long filesize = trackIter.Size; + string fileformat = trackIter.Image.format; + long fileoffset = trackIter.Image.offset; + ChecksumType[] checksums = trackIter.Checksums; + SubChannelType subchannel = trackIter.SubChannel; + TrackTypeTrackType trackType = (TrackTypeTrackType)Enum.Parse(typeof(TrackTypeTrackType), cmbTrackType.Text); lstTracks.Remove(trackIter); trackIter = new TrackType { - AccoustID = txtAcoustID.Text, - BytesPerSector = int.Parse(txtBytesPerSector.Text), - Checksums = checksums, - EndMSF = txtMSFEnd.Text, - EndSector = long.Parse(txtTrackEnd.Text), - Image = + AccoustID = txtAcoustID.Text, + BytesPerSector = int.Parse(txtBytesPerSector.Text), + Checksums = checksums, + EndMSF = txtMSFEnd.Text, + EndSector = long.Parse(txtTrackEnd.Text), + Image = new ImageType {format = fileformat, offset = fileoffset, offsetSpecified = true, Value = file}, - Sequence = + Sequence = new TrackSequenceType { Session = int.Parse(txtSessionSequence.Text),