diff --git a/.hgignore b/.hgignore index af30f1f..64c1c54 100644 --- a/.hgignore +++ b/.hgignore @@ -1,8 +1,4 @@ syntax: glob -bin/Debug -bin/Release/ -bin/win32/ -bin/x64/ CUETools.AVX/Release CUETools.CLParity *.vcxproj.user @@ -18,5 +14,5 @@ ttalib-1.1/x64 CUETools.AVX/Win32 CUETools.AVX/x64 CUETools/TestResults/ -bin/CUETools_2.1.4 *.csproj.user +bin/ diff --git a/CUERipper/CUERipper.csproj b/CUERipper/CUERipper.csproj index 87c4651..aa3f592 100644 --- a/CUERipper/CUERipper.csproj +++ b/CUERipper/CUERipper.csproj @@ -249,6 +249,7 @@ + diff --git a/CUERipper/Properties/Resources.Designer.cs b/CUERipper/Properties/Resources.Designer.cs index be9b95a..900841a 100644 --- a/CUERipper/Properties/Resources.Designer.cs +++ b/CUERipper/Properties/Resources.Designer.cs @@ -100,6 +100,16 @@ namespace CUERipper.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cd_eject { + get { + object obj = ResourceManager.GetObject("cd_eject", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/CUERipper/Properties/Resources.resx b/CUERipper/Properties/Resources.resx index 1195acc..a29f02b 100644 --- a/CUERipper/Properties/Resources.resx +++ b/CUERipper/Properties/Resources.resx @@ -124,15 +124,12 @@ Rip probably contains errors - - ..\Resources\accuraterip_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\freedb16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Detecting drives - - Exception - ..\Resources\wv.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,6 +142,12 @@ ..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\tta.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + retry + ..\Resources\wave.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -163,12 +166,12 @@ ..\freedb.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\tta.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - You can try to repair it using CUETools + + ..\Resources\cog.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + No CD drives found @@ -187,35 +190,35 @@ ..\Resources\ogg.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\freedb16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\accuraterip_16.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Exception + + + ..\Resources\wma.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\users--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\mp3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\ipod_sound.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - retry + + ..\Resources\mp3.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Paused - - ..\Resources\cdrepair.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\cog.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\cog.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\cdrepair.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\wma.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\cd_eject.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/CUERipper/Resources/cd_eject.png b/CUERipper/Resources/cd_eject.png new file mode 100644 index 0000000..762932f Binary files /dev/null and b/CUERipper/Resources/cd_eject.png differ diff --git a/CUERipper/frmCUERipper.Designer.cs b/CUERipper/frmCUERipper.Designer.cs index 0da2382..8eb749d 100644 --- a/CUERipper/frmCUERipper.Designer.cs +++ b/CUERipper/frmCUERipper.Designer.cs @@ -93,7 +93,6 @@ namespace CUERipper this.listMetadata = new System.Windows.Forms.ListView(); this.columnHeaderValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeaderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.buttonTrackMetadata = new System.Windows.Forms.Button(); this.buttonMetadata = new System.Windows.Forms.Button(); this.buttonVA = new System.Windows.Forms.Button(); this.buttonReload = new System.Windows.Forms.Button(); @@ -107,6 +106,7 @@ namespace CUERipper this.panel2 = new System.Windows.Forms.Panel(); this.panel7 = new System.Windows.Forms.Panel(); this.panel3 = new System.Windows.Forms.Panel(); + this.buttonEjectDisk = new System.Windows.Forms.Button(); this.panel4 = new System.Windows.Forms.Panel(); this.panel5 = new System.Windows.Forms.Panel(); this.panel6 = new System.Windows.Forms.Panel(); @@ -639,18 +639,6 @@ namespace CUERipper // resources.ApplyResources(this.columnHeaderName, "columnHeaderName"); // - // buttonTrackMetadata - // - this.buttonTrackMetadata.BackColor = System.Drawing.Color.Transparent; - this.buttonTrackMetadata.FlatAppearance.BorderSize = 0; - this.buttonTrackMetadata.FlatAppearance.MouseDownBackColor = System.Drawing.SystemColors.Control; - this.buttonTrackMetadata.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; - resources.ApplyResources(this.buttonTrackMetadata, "buttonTrackMetadata"); - this.buttonTrackMetadata.ForeColor = System.Drawing.SystemColors.ControlText; - this.buttonTrackMetadata.ImageList = this.imageListChecked; - this.buttonTrackMetadata.Name = "buttonTrackMetadata"; - this.buttonTrackMetadata.UseVisualStyleBackColor = false; - // // buttonMetadata // this.buttonMetadata.Image = global::CUERipper.Properties.Resources.tag_label; @@ -752,12 +740,12 @@ namespace CUERipper // // panel3 // + this.panel3.Controls.Add(this.buttonEjectDisk); this.panel3.Controls.Add(this.bnComboBoxDrives); this.panel3.Controls.Add(this.bnComboBoxRelease); this.panel3.Controls.Add(this.buttonSettings); this.panel3.Controls.Add(this.buttonVA); this.panel3.Controls.Add(this.buttonFreedbSubmit); - this.panel3.Controls.Add(this.buttonTrackMetadata); this.panel3.Controls.Add(this.buttonTracks); this.panel3.Controls.Add(this.buttonReload); this.panel3.Controls.Add(this.buttonEncoding); @@ -765,6 +753,14 @@ namespace CUERipper resources.ApplyResources(this.panel3, "panel3"); this.panel3.Name = "panel3"; // + // buttonEjectDisk + // + this.buttonEjectDisk.Image = global::CUERipper.Properties.Resources.cd_eject; + resources.ApplyResources(this.buttonEjectDisk, "buttonEjectDisk"); + this.buttonEjectDisk.Name = "buttonEjectDisk"; + this.buttonEjectDisk.UseVisualStyleBackColor = true; + this.buttonEjectDisk.Click += new System.EventHandler(this.buttonEjectDisk_Click); + // // panel4 // this.panel4.Controls.Add(this.listTracks); @@ -882,8 +878,7 @@ namespace CUERipper private System.Windows.Forms.ImageList imageListChecked; private System.Windows.Forms.ListView listMetadata; private System.Windows.Forms.ColumnHeader columnHeaderName; - private System.Windows.Forms.ColumnHeader columnHeaderValue; - private System.Windows.Forms.Button buttonTrackMetadata; + private System.Windows.Forms.ColumnHeader columnHeaderValue; private System.Windows.Forms.Button buttonMetadata; private System.Windows.Forms.Button buttonVA; private System.Windows.Forms.Button buttonReload; @@ -903,6 +898,7 @@ namespace CUERipper private System.Windows.Forms.Panel panel6; private System.Windows.Forms.Panel panel7; private System.Windows.Forms.Button buttonEncoderSettings; + private System.Windows.Forms.Button buttonEjectDisk; } } diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs index d86192a..7cf5837 100644 --- a/CUERipper/frmCUERipper.cs +++ b/CUERipper/frmCUERipper.cs @@ -327,6 +327,7 @@ namespace CUERipper buttonEncoding.Enabled = data.selectedRelease != null && !running && data.selectedRelease.ImageKey == "freedb" && (new CUEMetadata(data.selectedRelease.metadata)).FreedbToEncoding(); buttonReload.Enabled = data.selectedRelease != null && !running; + buttonEjectDisk.Enabled = selectedDriveInfo !=null && !running; buttonSettings.Enabled = !running; } @@ -1649,6 +1650,12 @@ namespace CUERipper { toolStripStatusLabel1.Text = null; } + + private void buttonEjectDisk_Click(object sender, EventArgs e) + { + if (selectedDriveInfo != null) + selectedDriveInfo.drive.EjectDisk(); + } } internal class BackgroundWorkerArtworkArgs diff --git a/CUERipper/frmCUERipper.resx b/CUERipper/frmCUERipper.resx index 356af4a..fb45f6f 100644 --- a/CUERipper/frmCUERipper.resx +++ b/CUERipper/frmCUERipper.resx @@ -816,7 +816,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABy - CQAAAk1TRnQBSQFMAgEBBAEAAawBAgGsAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBBAEAAcQBAgHEAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -966,7 +966,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAY - EgAAAk1TRnQBSQFMAgEBCwEAAawBAgGsAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + EgAAAk1TRnQBSQFMAgEBCwEAAcQBAgHEAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -1071,7 +1071,7 @@ panel3 - 1 + 2 Top, Left, Right @@ -1101,7 +1101,7 @@ panel3 - 0 + 1 Fill @@ -1178,39 +1178,6 @@ 1 - - Flat - - - 0 - - - NoControl - - - 594, 61 - - - 19, 17 - - - 40 - - - False - - - buttonTrackMetadata - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 5 - 6, 57 @@ -1242,10 +1209,10 @@ NoControl - 182, 57 + 270, 57 - 80, 23 + 80, 24 5 @@ -1266,7 +1233,7 @@ panel3 - 3 + 4 NoControl @@ -1275,7 +1242,7 @@ 94, 57 - 80, 23 + 80, 24 4 @@ -1302,10 +1269,10 @@ NoControl - 270, 57 + 358, 57 - 80, 23 + 80, 24 6 @@ -1335,7 +1302,7 @@ 6, 57 - 80, 23 + 80, 24 3 @@ -1365,10 +1332,10 @@ NoControl - 356, 57 + 446, 57 - 80, 23 + 80, 24 41 @@ -1389,7 +1356,7 @@ panel3 - 4 + 5 Right @@ -1452,10 +1419,10 @@ NoControl - 442, 57 + 534, 57 - 80, 23 + 80, 24 44 @@ -1476,7 +1443,7 @@ panel3 - 2 + 3 Fill @@ -1529,6 +1496,36 @@ 2 + + NoControl + + + 182, 57 + + + 80, 24 + + + 45 + + + Eject + + + ImageBeforeText + + + buttonEjectDisk + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 0 + Top diff --git a/CUETools.Ripper.SCSI/SCSIDrive.cs b/CUETools.Ripper.SCSI/SCSIDrive.cs index f63520a..305a9d8 100644 --- a/CUETools.Ripper.SCSI/SCSIDrive.cs +++ b/CUETools.Ripper.SCSI/SCSIDrive.cs @@ -584,6 +584,36 @@ namespace CUETools.Ripper.SCSI } } + public unsafe void EjectDisk() + { + if (m_device != null) + { + m_device.StartStopUnit(true, Device.PowerControl.NoChange, Device.StartState.EjectDisk); + } + else + { + try + { + m_device = new Device(m_logger); + if (m_device.Open(m_device_letter)) + { + try + { + m_device.StartStopUnit(true, Device.PowerControl.NoChange, Device.StartState.LoadDisk); + } + finally + { + m_device.Close(); + } + } + } + finally + { + m_device = null; + } + } + } + bool gapsDetected = false; public unsafe bool DetectGaps() diff --git a/CUETools.Ripper/Ripper.cs b/CUETools.Ripper/Ripper.cs index 75202a5..96a09ac 100644 --- a/CUETools.Ripper/Ripper.cs +++ b/CUETools.Ripper/Ripper.cs @@ -11,6 +11,7 @@ namespace CUETools.Ripper public interface ICDRipper : IAudioSource, IDisposable { bool Open(char Drive); + void EjectDisk(); bool DetectGaps(); bool GapsDetected { get; } CDImageLayout TOC { get; } diff --git a/CUETools/Resources/cd_eject.png b/CUETools/Resources/cd_eject.png new file mode 100644 index 0000000..762932f Binary files /dev/null and b/CUETools/Resources/cd_eject.png differ