3using System.Runtime.InteropServices;
4using System.Windows.Forms;
11 [DllImport(
"user32.dll")]
16 VistaOpenFileDialog vistaOpenFileDialog =
new VistaOpenFileDialog();
17 vistaOpenFileDialog.Title =
title;
18 if (extensions !=
null)
21 vistaOpenFileDialog.FilterIndex = 1;
25 vistaOpenFileDialog.Filter =
string.Empty;
27 vistaOpenFileDialog.Multiselect = multiselect;
28 if (!
string.IsNullOrEmpty(directory))
32 string[] result = ((vistaOpenFileDialog.ShowDialog(
new WindowWrapper(
GetActiveWindow())) == DialogResult.OK) ? vistaOpenFileDialog.FileNames :
new string[0]);
33 vistaOpenFileDialog.Dispose();
44 VistaFolderBrowserDialog vistaFolderBrowserDialog =
new VistaFolderBrowserDialog();
45 vistaFolderBrowserDialog.Description =
title;
46 if (!
string.IsNullOrEmpty(directory))
50 string[] result = ((vistaFolderBrowserDialog.ShowDialog(
new WindowWrapper(
GetActiveWindow())) != DialogResult.OK) ?
new string[0] :
new string[1] { vistaFolderBrowserDialog.SelectedPath });
51 vistaFolderBrowserDialog.Dispose();
62 VistaSaveFileDialog vistaSaveFileDialog =
new VistaSaveFileDialog();
63 vistaSaveFileDialog.Title =
title;
65 if (!
string.IsNullOrEmpty(directory))
69 if (!
string.IsNullOrEmpty(defaultName))
73 vistaSaveFileDialog.FileName = text;
74 if (extensions !=
null)
77 vistaSaveFileDialog.FilterIndex = 1;
78 vistaSaveFileDialog.DefaultExt = extensions[0].
Extensions[0];
79 vistaSaveFileDialog.AddExtension =
true;
83 vistaSaveFileDialog.DefaultExt =
string.Empty;
84 vistaSaveFileDialog.Filter =
string.Empty;
85 vistaSaveFileDialog.AddExtension =
false;
87 string result = ((vistaSaveFileDialog.ShowDialog(
new WindowWrapper(
GetActiveWindow())) == DialogResult.OK) ? vistaSaveFileDialog.FileName :
"");
88 vistaSaveFileDialog.Dispose();
100 for (
int i = 0; i < extensions.Length; i++)
103 text = text + extensionFilter.Name +
"(";
104 string[] extensions2 = extensionFilter.
Extensions;
105 foreach (
string text2
in extensions2)
107 text = text +
"*." + text2 +
",";
109 text = text.Remove(text.Length - 1);
111 extensions2 = extensionFilter.Extensions;
112 foreach (
string text3
in extensions2)
114 text = text +
"*." + text3 +
"; ";
118 return text.Remove(text.Length - 1);
123 string text = Path.GetFullPath(directory);
124 if (!text.EndsWith(
"\\"))
128 if (Path.GetPathRoot(text) == text)
132 string directoryName = Path.GetDirectoryName(text);
133 char directorySeparatorChar = Path.DirectorySeparatorChar;
134 return directoryName + directorySeparatorChar;
string[] OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect)
void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action< string[]> cb)
static IntPtr GetActiveWindow()
string SaveFilePanel(string title, string directory, string defaultName, ExtensionFilter[] extensions)
static string GetFilterFromFileExtensionList(ExtensionFilter[] extensions)
void OpenFolderPanelAsync(string title, string directory, bool multiselect, Action< string[]> cb)
static string GetDirectoryPath(string directory)
void SaveFilePanelAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, Action< string > cb)
string[] OpenFolderPanel(string title, string directory, bool multiselect)