using JDSongConverter.Converters; using JD.Core; using Application = TeaBox.ObjectModel.Application; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace JDSongConverter.View { /// /// Interaction logic for MapSelector.xaml /// public partial class MapSelectorControl : UserControl { private readonly CollectionViewSource _collectionViewSource; public MapSelectorControl() { InitializeComponent(); _collectionViewSource = FindResource("cvsSongs") as CollectionViewSource; SongsDirs.Text = DataRoot.ToAbsolutePath("world/MAPS/"); OutputDir.Text = System.IO.Path.GetFullPath(DataRoot.ToAbsolutePath("world/MAPS/")); OutputVersion.ItemsSource = new List { JDSongVersion.JD2016, JDSongVersion.JD2015, JDSongVersion.JD5 }; } private JDSongCollection Songs { get; set; } private void Start_Click(object sender, RoutedEventArgs e) { var songs = DataGrid.SelectedItems.OfType(); if (!songs.Any()) { songs = Songs; } var context = new ConversionContext { Songs = new JDSongCollection(songs), OutputDir = OutputDir.Text, OutputVersion = (JDSongVersion)OutputVersion.SelectedItem }; ConversionMacros.CallConversionMacro(context); } private void Refresh() { string[] songsDirs = SongsDirs.Text.Split(';'); Application.Main.Dispatcher.DoLongOperationAsync(() => { var finder = new JDSongFinder(); var songCollection = new JDSongCollection(finder.FindSongs(songsDirs)); Application.Main.Dispatcher.DispatchAsync(() => { Songs = songCollection; if (_collectionViewSource != null) _collectionViewSource.Source = Songs; }, forceAsync:true); }); } private void SongsDirs_TextChanged(object sender, TextChangedEventArgs e) { Refresh(); } } }