Browse Source

removed dependency from ookii dialogs and implemented using Windows Code pack.

pull/427/head
danwalmsley 10 years ago
parent
commit
90f4672be0
  1. 10
      src/Perspex.Controls/SystemDialog.cs
  2. 12
      src/Windows/Perspex.Win32/Perspex.Win32.csproj
  3. 31
      src/Windows/Perspex.Win32/SystemDialogImpl.cs
  4. 3
      src/Windows/Perspex.Win32/packages.config

10
src/Perspex.Controls/SystemDialog.cs

@ -5,10 +5,14 @@ using Perspex.Controls.Platform;
namespace Perspex.Controls
{
public abstract class FileDialog : SystemDialog
public abstract class FileDialog : FileSystemDialog
{
public List<FileDialogFilter> Filters { get; set; } = new List<FileDialogFilter>();
public string InitialFileName { get; set; }
public string InitialFileName { get; set; }
}
public abstract class FileSystemDialog : SystemDialog
{
public string InitialDirectory { get; set; }
}
@ -30,7 +34,7 @@ namespace Perspex.Controls
=> PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFileDialogAsync(this, window?.PlatformImpl);
}
public class OpenFolderDialog : SystemDialog
public class OpenFolderDialog : FileSystemDialog
{
public Task<string> ShowAsync(Window window = null)
=> PerspexLocator.Current.GetService<ISystemDialogImpl>().ShowFolderDialogAsync(this, window?.PlatformImpl);

12
src/Windows/Perspex.Win32/Perspex.Win32.csproj

@ -38,8 +38,16 @@
<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>
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.WindowsAPICodePack-Core.1.1.0.2\lib\Microsoft.WindowsAPICodePack.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.WindowsAPICodePack.ShellExtensions, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />

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

@ -10,7 +10,7 @@ using Perspex.Controls;
using Perspex.Controls.Platform;
using Perspex.Platform;
using Perspex.Win32.Interop;
using Ookii.Dialogs.Wpf;
using Microsoft.WindowsAPICodePack.Dialogs;
namespace Perspex.Win32
{
@ -131,14 +131,33 @@ namespace Perspex.Win32
}
public Task<string> ShowFolderDialogAsync(OpenFolderDialog dialog, IWindowImpl parent)
{
VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog();
{
return Task.Factory.StartNew(() =>
{
fbd.ShowDialog();
var dlg = new CommonOpenFileDialog();
dlg.Title = dialog.Title;
dlg.IsFolderPicker = true;
dlg.InitialDirectory = dialog.InitialDirectory;
dlg.AddToMostRecentlyUsedList = false;
dlg.AllowNonFileSystemItems = false;
dlg.EnsureFileExists = true;
dlg.EnsurePathExists = true;
dlg.EnsureReadOnly = false;
dlg.EnsureValidNames = true;
dlg.Multiselect = false;
dlg.ShowPlacesList = true;
dlg.DefaultFileName = "";
string result = string.Empty;
if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
{
result = dlg.FileName;
}
return fbd.SelectedPath;
return result;
});
}
}

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

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Ookii.Dialogs" version="1.0" targetFramework="net45" />
<package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.2" targetFramework="net45" />
<package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.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