private void ExportAll_Click(object sender, RoutedEventArgs e) { UndertaleSprite sprite = this.DataContext as UndertaleSprite; SaveFileDialog dlg = new SaveFileDialog(); dlg.FileName = sprite.Name.Content + ".png"; dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; TextureWorker worker = new TextureWorker(); if (dlg.ShowDialog() == true) { try { if (sprite.Textures.Count > 1) { string dir = System.IO.Path.GetDirectoryName(dlg.FileName); string name = System.IO.Path.GetFileNameWithoutExtension(dlg.FileName); string path = System.IO.Path.Combine(dir, name); string ext = System.IO.Path.GetExtension(dlg.FileName); Directory.CreateDirectory(path); foreach (var tex in sprite.Textures.Select((tex, id) => new { id, tex })) { try { worker.ExportAsPNG(tex.tex.Texture, System.IO.Path.Combine(path, tex.id + ext)); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } } else if (sprite.Textures.Count == 1) { try { worker.ExportAsPNG(sprite.Textures[0].Texture, dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("No frames to export", "Failed to export sprite", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { MessageBox.Show("Failed to export: " + ex.Message, "Failed to export sprite", MessageBoxButton.OK, MessageBoxImage.Error); } } worker.Cleanup(); }
private void Export_Click(object sender, RoutedEventArgs e) { SaveFileDialog dlg = new SaveFileDialog(); dlg.DefaultExt = ".png"; dlg.Filter = "PNG files (.png)|*.png|All files|*"; if (dlg.ShowDialog() == true) { TextureWorker worker = new TextureWorker(); try { worker.ExportAsPNG((UndertaleTexturePageItem)this.DataContext, dlg.FileName); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } worker.Cleanup(); } }