3using System.Collections.Generic;
8 public class StandaloneFileBrowserEditor : IStandaloneFileBrowser<ItemWithStream>
10 public IList<ItemWithStream> OpenFilePanel(
string title,
string directory, ExtensionFilter[] extensions,
14 if (extensions ==
null)
15 path = EditorUtility.OpenFilePanel(title, directory,
"");
17 path = EditorUtility.OpenFilePanelWithFilters(title, directory,
18 GetFilterFromFileExtensionList(extensions));
19 var itemWithStream =
new ItemWithStream
24 return new[] {itemWithStream};
27 public void OpenFilePanelAsync(
string title,
string directory, ExtensionFilter[] extensions,
bool multiselect,
28 Action<IList<ItemWithStream>> cb)
30 cb(OpenFilePanel(title, directory, extensions, multiselect));
33 public IList<ItemWithStream> OpenFolderPanel(
string title,
string directory,
bool multiselect)
35 var path = EditorUtility.OpenFolderPanel(title, directory,
"");
36 var itemWithStream =
new ItemWithStream
41 return new[] {itemWithStream};
44 public void OpenFolderPanelAsync(
string title,
string directory,
bool multiselect,
45 Action<IList<ItemWithStream>> cb)
47 cb(OpenFolderPanel(title, directory, multiselect));
50 public ItemWithStream SaveFilePanel(
string title,
string directory,
string defaultName,
51 ExtensionFilter[] extensions)
53 var ext = extensions !=
null ? extensions[0].Extensions[0] :
"";
54 var name =
string.IsNullOrEmpty(ext) ? defaultName : defaultName +
"." + ext;
55 var path = EditorUtility.SaveFilePanel(title, directory, name, ext);
56 var itemWithStream =
new ItemWithStream
61 return itemWithStream;
64 public void SaveFilePanelAsync(
string title,
string directory,
string defaultName, ExtensionFilter[] extensions,
65 Action<ItemWithStream> cb)
67 cb(SaveFilePanel(title, directory, defaultName, extensions));
70 private static string[] GetFilterFromFileExtensionList(ExtensionFilter[] extensions)
72 var filters =
new string[extensions.Length * 2];
73 for (var i = 0; i < extensions.Length; i++)
75 filters[i * 2] = extensions[i].Name;
76 filters[i * 2 + 1] =
string.Join(
",", extensions[i].Extensions);