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