refactor(wpf): decouple the view model from the window and localize its output

Introduce IShellView and IFileDialogs so MainWindowVm no longer holds the
concrete window or reaches through MainWindow.Instance, and file pickers are
injectable.

Run Restore off the UI thread like Patch and gate both buttons on IsBusy.
Gate the log commands on a non-empty log.

Move runtime log messages into the locale dictionaries and add the 14 new keys
to all 12 languages.
Track the injected locale dictionary so switching language replaces it instead
of appending a new one each time.

Remove the unused InfoItem control, ToVisibilityInvertedConverter, mw_title and
the popup placeholder title.
This commit is contained in:
kitbyte
2026-08-29 16:56:36 +03:00
parent 572b61ac25
commit e04e313fa3
30 changed files with 467 additions and 330 deletions
@@ -0,0 +1,28 @@
using System.Windows.Forms;
namespace WandEnhancer.View.MainWindow
{
internal sealed class WindowsFileDialogs : IFileDialogs
{
public string PickFolder(string description, string initialPath)
{
using (var dialog = new FolderBrowserDialog
{
SelectedPath = initialPath,
Description = description,
ShowNewFolderButton = false,
})
{
return dialog.ShowDialog() == DialogResult.OK ? dialog.SelectedPath : null;
}
}
public string PickSaveFile(string filter, string suggestedFileName)
{
using (var dialog = new SaveFileDialog { Filter = filter, FileName = suggestedFileName })
{
return dialog.ShowDialog() == DialogResult.OK ? dialog.FileName : null;
}
}
}
}