mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
add uiutils
This commit is contained in:
parent
4f92b2ffa9
commit
daeaeb5c66
67
Wabbajack/UIUtils.cs
Normal file
67
Wabbajack/UIUtils.cs
Normal file
@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Threading;
|
||||
using Microsoft.WindowsAPICodePack.Dialogs;
|
||||
using Wabbajack.Common;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
public static class UIUtils
|
||||
{
|
||||
|
||||
public static string ShowFolderSelectionDialog(string prompt)
|
||||
{
|
||||
if (Dispatcher.Thread != Thread.CurrentThread)
|
||||
{
|
||||
var task = new TaskCompletionSource<string>();
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
task.SetResult(ShowFolderSelectionDialog(prompt));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
task.SetException(ex);
|
||||
}
|
||||
});
|
||||
task.Task.Wait();
|
||||
if (task.Task.IsFaulted)
|
||||
throw task.Task.Exception;
|
||||
return task.Task.Result;
|
||||
}
|
||||
|
||||
|
||||
var dlg = new CommonOpenFileDialog();
|
||||
dlg.Title = prompt;
|
||||
dlg.IsFolderPicker = true;
|
||||
dlg.InitialDirectory = Assembly.GetEntryAssembly().Location;
|
||||
|
||||
dlg.AddToMostRecentlyUsedList = false;
|
||||
dlg.AllowNonFileSystemItems = false;
|
||||
dlg.DefaultDirectory = Assembly.GetEntryAssembly().Location;
|
||||
dlg.EnsureFileExists = true;
|
||||
dlg.EnsurePathExists = true;
|
||||
dlg.EnsureReadOnly = false;
|
||||
dlg.EnsureValidNames = true;
|
||||
dlg.Multiselect = false;
|
||||
dlg.ShowPlacesList = true;
|
||||
|
||||
if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
|
||||
{
|
||||
return dlg.FileName;
|
||||
// Do something with selected folder string
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Dispatcher Dispatcher { get; set; }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user