Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update FileDialog usages to use new implementation #94

Merged
merged 6 commits into from
Apr 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 28 additions & 33 deletions OpenKh.Tools.BarEditor/ViewModels/BarViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ namespace OpenKh.Tools.BarEditor.ViewModels
{
public class BarViewModel : GenericListModel<BarEntryModel>
{
private static readonly List<FileDialogFilter> Filters = FileDialogFilterComposer.Compose().AddAllFiles();

public BarViewModel() : this((IEnumerable<BarEntryModel>)null) { }

public BarViewModel(Stream stream) :
Expand All @@ -41,19 +43,18 @@ public BarViewModel(IEnumerable<BarEntryModel> list) :

OpenCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Open, FileDialog.Type.Any);
if (fd.ShowDialog() == true)
FileDialog.OnOpen(fileName =>
{
using (var stream = File.Open(fd.FileName, FileMode.Open))
using (var stream = File.Open(fileName, FileMode.Open))
{
FileName = fd.FileName;
FileName = fileName;
Items.Clear();
foreach (var item in Bar.Read(stream))
{
Items.Add(new BarEntryModel(item));
}
}
}
}, Filters);
}, x => true);

SaveCommand = new RelayCommand(x =>
Expand All @@ -73,14 +74,13 @@ public BarViewModel(IEnumerable<BarEntryModel> list) :

SaveAsCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save, FileDialog.Type.Any);
if (fd.ShowDialog() == true)
FileDialog.OnSave(fileName =>
{
using (var stream = File.Open(fd.FileName, FileMode.Create))
using (var stream = File.Open(fileName, FileMode.Create))
{
Bar.Write(stream, Items.Select(item => item.Entry));
}
}
}, Filters);
}, x => true);

ExitCommand = new RelayCommand(x =>
Expand Down Expand Up @@ -108,52 +108,47 @@ public BarViewModel(IEnumerable<BarEntryModel> list) :

ExportCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save);
fd.DefaultFileName = $"{SelectedItem.Entry.Name}.bin";
var defaultFileName = $"{SelectedItem.Entry.Name}.bin";

if (fd.ShowDialog() == true)
FileDialog.OnSave(fileName =>
{
using (var fStream = File.OpenWrite(fd.FileName))
using (var fStream = File.OpenWrite(fileName))
{
SelectedItem.Entry.Stream.Position = 0;
SelectedItem.Entry.Stream.CopyTo(fStream);
}
}
}, Filters, defaultFileName);
}, x => IsItemSelected);

ExportAllCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Folder);

if (fd.ShowDialog() == true)
{
var basePath = fd.FileName;
foreach (var item in Items.Select(item => item.Entry))
{
var fileName = $"{item.Name}.bin";
using (var fStream = File.OpenWrite(Path.Combine(basePath, fileName)))
{
item.Stream.Position = 0;
item.Stream.CopyTo(fStream);
}
}
}
FileDialog.OnFolder(folder =>
{
foreach (var item in Items.Select(item => item.Entry))
{
var fileName = $"{item.Name}.bin";
using (var fStream = File.OpenWrite(Path.Combine(folder, fileName)))
{
item.Stream.Position = 0;
item.Stream.CopyTo(fStream);
}
}
});
}, x => true);

ImportCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Open);
if (fd.ShowDialog() == true)
FileDialog.OnOpen(fileName =>
{
using (var fStream = File.OpenRead(fd.FileName))
using (var fStream = File.OpenRead(fileName))
{
var memStream = new MemoryStream((int)fStream.Length);
fStream.CopyTo(memStream);
SelectedItem.Entry.Stream = memStream;
}

OnPropertyChanged(nameof(SelectedItem.Size));
}
}, Filters);
}, x => IsItemSelected);
SearchCommand = new RelayCommand(x => { }, x => false);
}
Expand Down
53 changes: 24 additions & 29 deletions OpenKh.Tools.BbsEventTableEditor/ViewModels/MainViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public class MainViewModel : BaseNotifyPropertyChanged
private string _fileName;
private EventsViewModel _eventsViewModel;

private static readonly List<FileDialogFilter> Filters = FileDialogFilterComposer.Compose().AddExtensions("Event table (EVENT_TE, EVENT_VE, EVENT_AQ)", "*").AddAllFiles();

public string Title => $"{Path.GetFileName(FileName) ?? "untitled"} | {ApplicationName}";

private string FileName
Expand Down Expand Up @@ -56,16 +58,10 @@ public MainViewModel()
{
OpenCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Open, new[]
{
("Event table (EVENT_TE, EVENT_VE, EVENT_AQ)", "*"),
("All files", "*")
});

if (fd.ShowDialog() == true)
FileDialog.OnOpen(fileName =>
{
OpenFile(fd.FileName);
}
OpenFile(fileName);
}, Filters);
}, x => true);

SaveCommand = new RelayCommand(x =>
Expand All @@ -82,12 +78,11 @@ public MainViewModel()

SaveAsCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save);
if (fd.ShowDialog() == true)
FileDialog.OnSave(fileName =>
{
SaveFile(FileName, fd.FileName);
FileName = fd.FileName;
}
SaveFile(FileName, fileName);
FileName = fileName;
}, Filters);
}, x => true);

ExitCommand = new RelayCommand(x =>
Expand All @@ -97,50 +92,50 @@ public MainViewModel()

ExportEventsListCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save);
fd.DefaultFileName = CreateExportFilePath("events_list.txt");
if (fd.ShowDialog() == true)
var defaultFileName = CreateExportFilePath("events_list.txt");

FileDialog.OnSave(fileName =>
{
File.CreateText(fd.FileName).Using(stream =>
File.CreateText(fileName).Using(stream =>
{
foreach (var item in Events)
{
stream.WriteLine($"ID {item.Id:X03} MAP {Constants.Worlds[item.World]}_{item.Room:D02} EVENT {item.EventIndex:D03}");
}
});
}
}, Filters, defaultFileName);
}, x => true);

ExportUsedEventsCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save);
fd.DefaultFileName = CreateExportFilePath("events_used.txt");
if (fd.ShowDialog() == true)
var defaultFileName = CreateExportFilePath("events_used.txt");

FileDialog.OnSave(fileName =>
{
File.CreateText(fd.FileName).Using(stream =>
File.CreateText(fileName).Using(stream =>
{
foreach (var item in Events)
{
stream.WriteLine($"event/{Constants.Worlds[item.World]}/{Constants.Worlds[item.World]}_{item.EventIndex:D03}.exa");
}
});
}
}, Filters, defaultFileName);
}, x => true);

ExportUsedMapsCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save);
fd.DefaultFileName = CreateExportFilePath("maps_used.txt");
if (fd.ShowDialog() == true)
var defaultFileName = CreateExportFilePath("maps_used.txt");

FileDialog.OnSave(fileName =>
{
File.CreateText(fd.FileName).Using(stream =>
File.CreateText(fileName).Using(stream =>
{
foreach (var item in Events)
{
stream.WriteLine($"arc/map/{Constants.Worlds[item.World]}{item.Room:D02}.arc");
}
});
}
}, Filters, defaultFileName);
}, x => true);

AboutCommand = new RelayCommand(x =>
Expand Down
19 changes: 10 additions & 9 deletions OpenKh.Tools.DpdViewer/ViewModels/DpdViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using OpenKh.Kh2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
Expand All @@ -14,22 +15,23 @@ public class DpdViewModel : BaseNotifyPropertyChanged
{
private Dpd dpd;

private static readonly List<FileDialogFilter> Filters = FileDialogFilterComposer.Compose().AddExtensions("DPD effect", "dpd");

public DpdViewModel()
{
OpenCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Open, ("DPD effect", "dpd"));
if (fd.ShowDialog() == true)
FileDialog.OnOpen(fileName =>
{
using (var stream = File.OpenRead(fd.FileName))
using (var stream = File.OpenRead(fileName))
{
FileName = fd.FileName;
FileName = fileName;
Dpd = new Dpd(stream);

OnPropertyChanged(nameof(SaveCommand));
OnPropertyChanged(nameof(SaveAsCommand));
}
}
}, Filters);
}, x => true);

SaveCommand = new RelayCommand(x =>
Expand All @@ -49,14 +51,13 @@ public DpdViewModel()

SaveAsCommand = new RelayCommand(x =>
{
var fd = FileDialog.Factory(Window, FileDialog.Behavior.Save, ("DPD effect", "dpd"));
if (fd.ShowDialog() == true)
FileDialog.OnSave(fileName =>
{
using (var stream = File.Open(fd.FileName, FileMode.Create))
using (var stream = File.Open(fileName, FileMode.Create))
{
throw new NotImplementedException();
}
}
}, Filters);
}, x => true);

ExitCommand = new RelayCommand(x =>
Expand Down
Loading