Browse Source

Basic implementation of BrowseFolderDialog and Win32 Implementation.

pull/427/head
danwalmsley 10 years ago
parent
commit
9a3f08ce9d
  1. 2
      src/Perspex.Controls/Platform/ISystemDialogImpl.cs
  2. 9
      src/Perspex.Controls/SystemDialog.cs
  3. 4
      src/Windows/Perspex.Win32/Perspex.Win32.csproj
  4. 13
      src/Windows/Perspex.Win32/SystemDialogImpl.cs
  5. 1
      src/Windows/Perspex.Win32/packages.config

2
src/Perspex.Controls/Platform/ISystemDialogImpl.cs

@ -18,5 +18,7 @@ namespace Perspex.Controls.Platform
/// <param name="parent">The parent window.</param>
/// <returns>A task returning the selected filenames.</returns>
Task<string[]> ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent);
Task<string> ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent);
}
}

9
src/Perspex.Controls/SystemDialog.cs

@ -12,10 +12,9 @@ namespace Perspex.Controls
public string InitialDirectory { get; set; }
}
public class SaveFileDialog : FileDialog
{
public string DefaultExtension { get; set; }
public string DefaultExtension { get; set; }
public async Task<string> ShowAsync(Window window = null)
=>
@ -31,6 +30,12 @@ namespace Perspex.Controls
=> PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl);
}
public class OpenFolderDialog : SystemDialog
{
public Task<string> ShowAsync(Window window = null)
=> PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFolderDialogAsync(this, window?.PlatformImpl);
}
public abstract class SystemDialog
{
public string Title { get; set; }

4
src/Windows/Perspex.Win32/Perspex.Win32.csproj

@ -38,6 +38,10 @@
<NoWarn>CS1591</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ookii.Dialogs.Wpf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0c15020868fd6249, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Ookii.Dialogs.1.0\lib\net35\Ookii.Dialogs.Wpf.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />

13
src/Windows/Perspex.Win32/SystemDialogImpl.cs

@ -10,6 +10,7 @@ using Perspex.Controls;
using Perspex.Controls.Platform;
using Perspex.Platform;
using Perspex.Win32.Interop;
using Ookii.Dialogs.Wpf;
namespace Perspex.Win32
{
@ -128,5 +129,17 @@ namespace Perspex.Win32
return files.Select(f => Path.Combine(dir, f)).ToArray();
});
}
public Task<string> ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent)
{
VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog();
return Task.Factory.StartNew(() =>
{
fbd.ShowDialog();
return fbd.SelectedPath;
});
}
}
}

1
src/Windows/Perspex.Win32/packages.config

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Ookii.Dialogs" version="1.0" targetFramework="net45" />
<package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" />

Loading…
Cancel
Save