private void buttonExtract_Click(object sender, RoutedEventArgs e)
        {
            if (cmbTitleSet.SelectedItem == null)
            {
                return;
            }
            pid              = ((CUETools.Codecs.MPEG.MPLS.MPLSStream)cmbAudioTrack.SelectedItem).pid;
            chosenReader     = cmbTitleSet.SelectedItem as CUETools.Codecs.MPEG.MPLS.AudioDecoder;
            metaresult       = cmbMetadata.SelectedItem as CUEMetadataEntry;
            outputFolderPath = Path.Combine(textBoxDestination.Text, metaresult != null ?
                                            metaresult.metadata.Artist + " - " + metaresult.metadata.Year + " - " + metaresult.metadata.Title :
                                            Path.GetFileName(textBoxSource.Text) + "." + chosenReader.FileName + "." + pid.ToString());
            outputAudioPath = Path.Combine(outputFolderPath, metaresult != null ? metaresult.metadata.Artist + " - " + metaresult.metadata.Year + " - " + metaresult.metadata.Title + ".flac" : "image.flac");
            outputCuePath   = Path.ChangeExtension(outputAudioPath, "cue");

            pbStatus.Visibility = Visibility.Visible;
            pbStatus.Value      = 0.0;
            //pbStatus.IsIndeterminate = true;
            stackParams.IsEnabled    = false;
            buttonExtract.IsEnabled  = false;
            buttonExtract.Visibility = Visibility.Hidden;
            buttonStop.Visibility    = Visibility.Visible;
            buttonStop.IsEnabled     = true;

            workerExtract = new BackgroundWorker();
            workerExtract.WorkerSupportsCancellation = true;
            workerExtract.DoWork += workerExtract_DoWork;
            workerExtract.RunWorkerAsync();
        }
Beispiel #2
0
        private void dataGridViewMetadata_KeyDown(object sender, KeyEventArgs e)
        {
            CUEMetadataEntry r = ChosenRelease;

            if (r != null)
            {
                if (e.KeyCode == Keys.Delete && e.Modifiers.HasFlag(Keys.Shift))
                {
                    var ee = new DataGridViewCellEventArgs(1, dataGridViewMetadata.CurrentCellAddress.Y);
                    Clipboard.SetText(dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value as string);
                    dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value = null;
                    dataGridViewMetadata_CellEndEdit(sender, ee);
                }
                else if (e.KeyCode == Keys.Delete)
                {
                    var ee = new DataGridViewCellEventArgs(1, dataGridViewMetadata.CurrentCellAddress.Y);
                    dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value = null;
                    dataGridViewMetadata_CellEndEdit(sender, ee);
                }
                else if (e.KeyCode == Keys.Insert && e.Modifiers.HasFlag(Keys.Shift))
                {
                    var ee = new DataGridViewCellEventArgs(1, dataGridViewMetadata.CurrentCellAddress.Y);
                    dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value = Clipboard.GetText();
                    dataGridViewMetadata_CellEndEdit(sender, ee);
                }
            }
        }
 void workerCtdb_DoWork(object sender, DoWorkEventArgs e)
 {
     //Console.Error.WriteLine("Contacting CTDB...");
     this.Dispatcher.Invoke((Action)(() =>
     {
         pbStatus.Visibility = Visibility.Visible;
         pbStatus.IsIndeterminate = true;
     }));
     //ctdb.UploadHelper.onProgress += worker_ctdbProgress;
     ctdb.ContactDB(null, "CUETools.eac3to 2.2.1", "", false, true, CTDBMetadataSearch.Extensive);
     this.Dispatcher.Invoke((Action)(() =>
     {
         //metaresults.RaiseListChangedEvents = false;
         cmbMetadata.ItemsSource = null;
         metaresults.Clear();
         foreach (var m in ctdb.Metadata)
         {
             var entry = new CUEMetadataEntry(ctdb.TOC, m.source);
             entry.metadata.FillFromCtdb(m, entry.TOC.FirstAudio - 1);
             metaresults.Add(entry);
         }
         //metaresults.RaiseListChangedEvents = true;
         cmbMetadata.ItemsSource = metaresults;
         pbStatus.Visibility = Visibility.Collapsed;
         pbStatus.IsIndeterminate = false;
         cmbMetadata.SelectedIndex = 0;
     }));
 }
Beispiel #4
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Drives.Add(new DriveInfo {
                Name = "aa", Icon = "/CUERipper.WPF;component/musicbrainz.ico"
            });
            Drives.Add(new DriveInfo {
                Name = "cc", Icon = "/CUERipper.WPF;component/freedb16.png"
            });
            Drives.Add(new DriveInfo {
                Name = "ee", Icon = "ff"
            });
            SelectedDrive = Drives[0];

            CDImageLayout toc = new CDImageLayout(2, 2, 1, "0 10000 20000");

            Releases.Add(new CUEMetadataEntry(toc, "/CUERipper.WPF;component/musicbrainz.ico"));
            Releases[0].metadata.Artist           = "Mike Oldfield";
            Releases[0].metadata.Title            = "Amarok";
            Releases[0].metadata.Tracks[0].Artist = "Mike Oldfield";
            Releases[0].metadata.Tracks[0].Title  = "Amarok 01";
            Releases[0].metadata.Tracks[1].Artist = "Mike Oldfield";
            Releases[0].metadata.Tracks[1].Title  = "Amarok 02";
            Releases.Add(new CUEMetadataEntry(toc, "/CUERipper.WPF;component/freedb16.png"));
            SelectedRelease = Releases[0];
        }
Beispiel #5
0
        private void listChoices_SelectedIndexChanged(object sender, EventArgs e)
        {
            object item = ChosenObject;

            if (item != null && item is TagLib.IPicture)
            {
                TagLib.IPicture picture = item as TagLib.IPicture;
                using (MemoryStream imageStream = new MemoryStream(picture.Data.Data, 0, picture.Data.Count))
                    try { pictureBox1.Image = Image.FromStream(imageStream); }
                    catch { }
                textBox1.Hide();
                pictureBox1.Show();
                tableLayoutPanelMeta.Hide();
                tableLayoutPanel1.SetRowSpan(pictureBox1, 2);
            }
            else if (item != null && item is CUEToolsSourceFile)
            {
                textBox1.Text = (item as CUEToolsSourceFile).contents.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n");
            }
            else if (item != null && item is CUEMetadataEntry)
            {
                CUEMetadataEntry r = (item as CUEMetadataEntry);
                dataGridViewTracks.SuspendLayout();
                dataGridViewTracks.Rows.Clear();
                foreach (CUETrackMetadata track in r.metadata.Tracks)
                {
                    int no = dataGridViewTracks.Rows.Count;
                    dataGridViewTracks.Rows.Add(
                        (no + 1).ToString(),
                        track.Title,
                        r.TOC[no + r.TOC.FirstAudio].StartMSF,
                        r.TOC[no + r.TOC.FirstAudio].LengthMSF
                        );
                }
                dataGridViewTracks.ResumeLayout();
                dataGridViewMetadata.Rows.Clear();
                dataGridViewMetadata.Rows.Add("Artist", r.metadata.Artist);
                dataGridViewMetadata.Rows.Add("Album", r.metadata.Title);
                dataGridViewMetadata.Rows.Add("Date", r.metadata.Year);
                dataGridViewMetadata.Rows.Add("Genre", r.metadata.Genre);
                dataGridViewMetadata.Rows.Add("Disc Number", r.metadata.DiscNumber);
                dataGridViewMetadata.Rows.Add("Total Discs", r.metadata.TotalDiscs);
                dataGridViewMetadata.Rows.Add("Disc Name", r.metadata.DiscName);
                dataGridViewMetadata.Rows.Add("Label", r.metadata.Label);
                dataGridViewMetadata.Rows.Add("Label#", r.metadata.LabelNo);
                dataGridViewMetadata.Rows.Add("Country", r.metadata.Country);
                dataGridViewMetadata.Rows.Add("Release Date", r.metadata.ReleaseDate);
                dataGridViewMetadata.Rows.Add("Barcode", r.metadata.Barcode);
                dataGridViewMetadata.Rows.Add("Comment", r.metadata.Comment);
            }
            else
            {
                dataGridViewMetadata.Rows.Clear();
                dataGridViewTracks.Rows.Clear();
                textBox1.Text = "";
            }
        }
Beispiel #6
0
        private void dataGridViewTracks_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            CUEMetadataEntry ri = ChosenRelease;
            var label           = dataGridViewTracks.Rows[e.RowIndex].Cells[e.ColumnIndex].Value as string;

            if (ri != null && label != null)
            {
                ri.metadata.Tracks[e.RowIndex].Title = label;
            }
        }
Beispiel #7
0
        private void dataGridViewMetadata_KeyDown(object sender, KeyEventArgs e)
        {
            CUEMetadataEntry r = ChosenRelease;

            if (e.KeyCode == Keys.Delete && r != null)
            {
                var ee = new DataGridViewCellEventArgs(1, dataGridViewMetadata.CurrentCellAddress.Y);
                dataGridViewMetadata.Rows[ee.RowIndex].Cells[1].Value = "";
                dataGridViewMetadata_CellEndEdit(sender, ee);
            }
        }
Beispiel #8
0
        private void frmChoice_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (backgroundWorker1.IsBusy)
            {
                e.Cancel = true;
                return;
            }
            CUEMetadataEntry ri = ChosenRelease;

            if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK || ri == null || CUE == null)
            {
                return;
            }
            CUE.CopyMetadata(ri.metadata);
        }
Beispiel #9
0
        private void dataGridViewMetadata_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            ListViewItem     item = ChosenItem;
            CUEMetadataEntry r    = ChosenRelease;
            var label             = dataGridViewMetadata.Rows[e.RowIndex].Cells[1].Value as string ?? "";

            if (item != null && r != null)
            {
                switch (e.RowIndex)
                {
                case 0:
                    foreach (CUETrackMetadata track in r.metadata.Tracks)
                    {
                        if (track.Artist == r.metadata.Artist)
                        {
                            track.Artist = label;
                        }
                    }
                    r.metadata.Artist = label;
                    break;

                case 1: r.metadata.Title = label; break;

                case 2: r.metadata.Year = label; break;

                case 3: r.metadata.Genre = label; break;

                case 4: r.metadata.DiscNumber = label; break;

                case 5: r.metadata.TotalDiscs = label; break;

                case 6: r.metadata.DiscName = label; break;

                case 7: r.metadata.Label = label; break;

                case 8: r.metadata.LabelNo = label; break;

                case 9: r.metadata.Country = label; break;

                case 10: r.metadata.ReleaseDate = label; break;

                case 11: r.metadata.Barcode = label; break;

                case 12: r.metadata.Comment = label; break;
                }
                item.Text = r.ToString();
            }
        }
Beispiel #10
0
        private void AddItem(object i)
        {
            if (i is CUEToolsSourceFile)
            {
                CUEToolsSourceFile sf   = i as CUEToolsSourceFile;
                ListViewItem       item = new ListViewItem(sf.path, 0);
                item.Tag = sf;
                listChoices.Items.Add(item);
            }
            else if (i is TagLib.IPicture)
            {
                TagLib.IPicture pic  = i as TagLib.IPicture;
                ListViewItem    item = new ListViewItem(pic.Description, -1);
                item.Tag = pic;
                listChoices.Items.Add(item);
            }
            else if (i is CUEMetadataEntry)
            {
                CUEMetadataEntry entry = i as CUEMetadataEntry;
                ListViewItem     item  = new ListViewItem(entry.ToString(), entry.ImageKey);
                item.Tag = entry;
                listChoices.Items.Add(item);

                if (entry.ImageKey == "freedb")
                {
                    // check if the entry contains non-iso characters,
                    // and add a second one if it does
                    CUEMetadata copy = new CUEMetadata(entry.metadata);
                    if (copy.FreedbToEncoding())
                    {
                        entry    = new CUEMetadataEntry(copy, entry.TOC, entry.ImageKey);
                        item     = new ListViewItem(entry.ToString(), entry.ImageKey);
                        item.Tag = entry;
                        listChoices.Items.Add(item);
                    }
                }
            }
            else
            {
                ListViewItem item = new ListViewItem(i.ToString(), -1);
                item.Tag = i;
                listChoices.Items.Add(item);
            }
        }
Beispiel #11
0
        private void frmChoice_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (backgroundWorker1.IsBusy)
            {
                e.Cancel = true;
                return;
            }

            TagLib.IPicture picture = ChosenObject as TagLib.IPicture;
            if (e.CloseReason == CloseReason.None && DialogResult == DialogResult.OK &&
                pictureBox1.Image != null && picture != null &&
                (cropAlign != CropAlign.None || imageRotation != RotateFlipType.RotateNoneFlipNone || trimEdge != 0))
            {
                using (MemoryStream encoded = new MemoryStream())
                {
                    pictureBox1.Image.Save(encoded, System.Drawing.Imaging.ImageFormat.Jpeg);
                    picture.Data     = new TagLib.ByteVector(encoded.ToArray());
                    picture.MimeType = "image/jpeg";
                }
            }

            CUEMetadataEntry ri = ChosenRelease;

            if (e.CloseReason != CloseReason.None || DialogResult != DialogResult.OK || ri == null || CUE == null)
            {
                return;
            }
            for (int i = 0; i < ri.metadata.Tracks.Count; i++)
            {
                if (ri.metadata.Tracks[i].ISRC == "")
                {
                    ri.metadata.Tracks[i].ISRC = CUE.Metadata.Tracks[i].ISRC;
                }
            }
            CUE.CopyMetadata(ri.metadata);
        }
Beispiel #12
0
        private void listChoices_SelectedIndexChanged(object sender, EventArgs e)
        {
            object item = ChosenObject;

            if (item != null && item is TagLib.IPicture)
            {
                imageRotation = RotateFlipType.RotateNoneFlipNone;
                cropAlign     = CropAlign.None;
                trimEdge      = 0;
                ResetPictureBox();
                textBox1.Hide();
                pictureBox1.Show();
                tableLayoutPanelMeta.Hide();
                tableLayoutPanel1.SetRowSpan(pictureBox1, 2);
            }
            else if (item != null && item is CUEToolsSourceFile)
            {
                textBox1.Text = (item as CUEToolsSourceFile).contents.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n");
            }
            else if (item != null && item is CUEMetadataEntry)
            {
                CUEMetadataEntry r = (item as CUEMetadataEntry);
                dataGridViewTracks.SuspendLayout();
                dataGridViewTracks.Rows.Clear();
                foreach (CUETrackMetadata track in r.metadata.Tracks)
                {
                    int no = dataGridViewTracks.Rows.Count;
                    dataGridViewTracks.Rows.Add(
                        (no + 1).ToString(),
                        track.Title,
                        r.TOC[no + r.TOC.FirstAudio].StartMSF,
                        r.TOC[no + r.TOC.FirstAudio].LengthMSF
                        );
                }
                dataGridViewTracks.ResumeLayout();
                dataGridViewMetadata.Rows.Clear();
                dataGridViewMetadata.Rows.Add("Artist", r.metadata.Artist);
                dataGridViewMetadata.Rows.Add("Album", r.metadata.Title);
                dataGridViewMetadata.Rows.Add("Date", r.metadata.Year);
                dataGridViewMetadata.Rows.Add("Genre", r.metadata.Genre);
                dataGridViewMetadata.Rows.Add("Disc Number", r.metadata.DiscNumber);
                dataGridViewMetadata.Rows.Add("Total Discs", r.metadata.TotalDiscs);
                dataGridViewMetadata.Rows.Add("Disc Name", r.metadata.DiscName);
                dataGridViewMetadata.Rows.Add("Label", r.metadata.Label);
                dataGridViewMetadata.Rows.Add("Label#", r.metadata.LabelNo);
                dataGridViewMetadata.Rows.Add("Country", r.metadata.Country);
                dataGridViewMetadata.Rows.Add("Release Date", r.metadata.ReleaseDate);
                dataGridViewMetadata.Rows.Add("Barcode", r.metadata.Barcode);
                dataGridViewMetadata.Rows.Add("Comment", r.metadata.Comment);
                if (pictureBox1.ImageLocation == null)
                {
                    if (pictureBox1.Image != null)
                    {
                        pictureBox1.Image.Dispose();
                    }
                    pictureBox1.Image = null;
                }
                pictureBox1.ImageLocation = null;
                if (r.metadata.AlbumArt.Count > 0 || r.cover != null)
                {
                    pictureBox1.Show();
                    if (r.cover != null)
                    {
                        using (MemoryStream imageStream = new MemoryStream(r.cover, 0, r.cover.Length))
                            try
                            {
                                pictureBox1.Image = Image.FromStream(imageStream);
                            }
                            catch { }
                    }
                    else if (config.advanced.coversSearch != CUEConfigAdvanced.CTDBCoversSearch.None)
                    {
                        var image = r.metadata.AlbumArt.Find(x => x.primary) ?? r.metadata.AlbumArt[0];
                        pictureBox1.ImageLocation = image.uri150;
                    }
                }
                else
                {
                    pictureBox1.Hide();
                }
            }
            else
            {
                dataGridViewMetadata.Rows.Clear();
                dataGridViewTracks.Rows.Clear();
                textBox1.Text = "";
            }
        }