private void ParseINI(KFN KFN) { KFN.ResourceFile resource = KFN.Resources.Where(r => r.FileName == "Song.ini").First(); byte[] data = KFN.GetDataFromResource(resource); string iniText = new string(Encoding.UTF8.GetChars(data)); SongINI sINI = new SongINI(iniText); iniBlocksView.ItemsSource = sINI.Blocks; this.AutoSizeColumns(iniBlocksView.View as GridView); }
public ExportWindow(string exportType, KFN KFN) { InitializeComponent(); WindowElement.Title += exportType; this.KFN = KFN; this.exportType = exportType; videoLabel.Visibility = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden; videoSelect.Visibility = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden; playVideoButton.Visibility = (exportType == "EMZ") ? Visibility.Visible : Visibility.Hidden; deleteID3Tags.IsChecked = true; deleteID3Tags.Visibility = (exportType == "MP3+LRC") ? Visibility.Visible : Visibility.Hidden; artistLabel.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; titleLabel.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; artistSelect.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; titleSelect.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; encLabel.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; encSelect.Visibility = (exportType != "EMZ") ? Visibility.Visible : Visibility.Hidden; // TODO playVideoButton.IsEnabled = false; playAudioButton.IsEnabled = false; // AUDIO List <KFN.ResourceFile> audios = KFN.Resources.Where(r => r.FileType == "Audio").ToList(); string audioSource = KFN.GetAudioSourceName(); audioSelect.ItemsSource = audios; audioSelect.DisplayMemberPath = "FileName"; audioSelect.SelectedItem = audios.Where(a => a.FileName == audioSource).FirstOrDefault(); if (audioSelect.SelectedItem == null) { System.Windows.MessageBox.Show("Can`t find audio source!"); return; } if (audios.Count == 1) { audioSelect.IsEnabled = false; } // LYRICS Dictionary <string, string> lyrics = new Dictionary <string, string>(); List <KFN.ResourceFile> texts = KFN.Resources.Where(r => r.FileType == "Text").ToList(); foreach (KFN.ResourceFile resource in texts) { lyrics.Add(resource.FileName, this.GetResourceText(resource)); } KFN.ResourceFile songIni = KFN.Resources.Where(r => r.FileName == "Song.ini").First(); byte[] data = KFN.GetDataFromResource(songIni); string iniText = new string(Encoding.UTF8.GetChars(data)); SongINI sINI = new SongINI(iniText); foreach (SongINI.BlockInfo block in sINI.Blocks.Where(b => b.Id == "1" || b.Id == "2")) { string lyricFromBlock = (exportType == "EMZ") ? KFN.INIToELYR(block.Content) : KFN.INIToExtLRC(block.Content); if (lyricFromBlock != null) { lyrics.Add("Song.ini: " + block.Name, lyricFromBlock); } else { lyrics.Add("Song.ini: " + block.Name, "Can`t convert lyric from Song.ini"); } } lyricSelect.DisplayMemberPath = "Key"; lyricSelect.SelectedIndex = 0; if (lyrics.Count == 1) { lyricSelect.IsEnabled = false; } lyricSelect.ItemsSource = lyrics; lyricPreview.Text = ((KeyValuePair <string, string>)lyricSelect.SelectedItem).Value; // ARTIST-TITLE if (exportType == "MP3+LRC") { List <string> artists = new List <string> { null }; List <string> titles = new List <string> { null }; KeyValuePair <string, string> kfnArtist = KFN.Properties.Where(p => p.Key == "Artist").FirstOrDefault(); if (kfnArtist.Value != null && kfnArtist.Value.Length > 0) { artists.Add(kfnArtist.Value); } KeyValuePair <string, string> kfnTitle = KFN.Properties.Where(p => p.Key == "Title").FirstOrDefault(); if (kfnTitle.Value != null && kfnTitle.Value.Length > 0) { titles.Add(kfnTitle.Value); } foreach (KFN.ResourceFile resource in KFN.Resources.Where(r => r.FileType == "Audio")) { string[] atFromID3 = ID3Class.GetArtistAndTitle(KFN.GetDataFromResource(resource)); if (atFromID3[0] != null) { artists.Add(atFromID3[0]); } if (atFromID3[1] != null) { titles.Add(atFromID3[1]); } } artists = artists.Distinct().ToList(); titles = titles.Distinct().ToList(); artistSelect.ItemsSource = artists; artistSelect.SelectedIndex = 0; titleSelect.ItemsSource = titles; titleSelect.SelectedIndex = 0; encSelect.ItemsSource = this.encodings; encSelect.DisplayMemberPath = "Value"; encSelect.SelectedIndex = 0; } // VIDEO if (exportType == "EMZ") { List <KFN.ResourceFile> videos = KFN.Resources.Where(r => r.FileType == "Video").ToList(); if (videos.Count == 0) { videos.Add(new KFN.ResourceFile("Video", "video not found", 0, 0, 0, false)); videoSelect.IsEnabled = false; } else { videos.Add(new KFN.ResourceFile("Video", "don`t use video", 0, 0, 0, false)); } videoSelect.ItemsSource = videos; videoSelect.DisplayMemberPath = "FileName"; videoSelect.SelectedIndex = 0; } }