Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
StandaloneFileBrowserWindows.cs
Go to the documentation of this file.
1using System;
2using System.IO;
3using System.Runtime.InteropServices;
4using System.Windows.Forms;
5using Ookii.Dialogs;
6
7namespace SFB;
8
10{
11 [DllImport("user32.dll")]
12 private static extern IntPtr GetActiveWindow();
13
14 public string[] OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect)
15 {
16 VistaOpenFileDialog vistaOpenFileDialog = new VistaOpenFileDialog();
17 vistaOpenFileDialog.Title = title;
18 if (extensions != null)
19 {
20 vistaOpenFileDialog.Filter = GetFilterFromFileExtensionList(extensions);
21 vistaOpenFileDialog.FilterIndex = 1;
22 }
23 else
24 {
25 vistaOpenFileDialog.Filter = string.Empty;
26 }
27 vistaOpenFileDialog.Multiselect = multiselect;
28 if (!string.IsNullOrEmpty(directory))
29 {
30 vistaOpenFileDialog.FileName = GetDirectoryPath(directory);
31 }
32 string[] result = ((vistaOpenFileDialog.ShowDialog(new WindowWrapper(GetActiveWindow())) == DialogResult.OK) ? vistaOpenFileDialog.FileNames : new string[0]);
33 vistaOpenFileDialog.Dispose();
34 return result;
35 }
36
37 public void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action<string[]> cb)
38 {
39 cb(OpenFilePanel(title, directory, extensions, multiselect));
40 }
41
42 public string[] OpenFolderPanel(string title, string directory, bool multiselect)
43 {
44 VistaFolderBrowserDialog vistaFolderBrowserDialog = new VistaFolderBrowserDialog();
45 vistaFolderBrowserDialog.Description = title;
46 if (!string.IsNullOrEmpty(directory))
47 {
48 vistaFolderBrowserDialog.SelectedPath = GetDirectoryPath(directory);
49 }
50 string[] result = ((vistaFolderBrowserDialog.ShowDialog(new WindowWrapper(GetActiveWindow())) != DialogResult.OK) ? new string[0] : new string[1] { vistaFolderBrowserDialog.SelectedPath });
51 vistaFolderBrowserDialog.Dispose();
52 return result;
53 }
54
55 public void OpenFolderPanelAsync(string title, string directory, bool multiselect, Action<string[]> cb)
56 {
57 cb(OpenFolderPanel(title, directory, multiselect));
58 }
59
60 public string SaveFilePanel(string title, string directory, string defaultName, ExtensionFilter[] extensions)
61 {
62 VistaSaveFileDialog vistaSaveFileDialog = new VistaSaveFileDialog();
63 vistaSaveFileDialog.Title = title;
64 string text = "";
65 if (!string.IsNullOrEmpty(directory))
66 {
67 text = GetDirectoryPath(directory);
68 }
69 if (!string.IsNullOrEmpty(defaultName))
70 {
71 text += defaultName;
72 }
73 vistaSaveFileDialog.FileName = text;
74 if (extensions != null)
75 {
76 vistaSaveFileDialog.Filter = GetFilterFromFileExtensionList(extensions);
77 vistaSaveFileDialog.FilterIndex = 1;
78 vistaSaveFileDialog.DefaultExt = extensions[0].Extensions[0];
79 vistaSaveFileDialog.AddExtension = true;
80 }
81 else
82 {
83 vistaSaveFileDialog.DefaultExt = string.Empty;
84 vistaSaveFileDialog.Filter = string.Empty;
85 vistaSaveFileDialog.AddExtension = false;
86 }
87 string result = ((vistaSaveFileDialog.ShowDialog(new WindowWrapper(GetActiveWindow())) == DialogResult.OK) ? vistaSaveFileDialog.FileName : "");
88 vistaSaveFileDialog.Dispose();
89 return result;
90 }
91
92 public void SaveFilePanelAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, Action<string> cb)
93 {
94 cb(SaveFilePanel(title, directory, defaultName, extensions));
95 }
96
97 private static string GetFilterFromFileExtensionList(ExtensionFilter[] extensions)
98 {
99 string text = "";
100 for (int i = 0; i < extensions.Length; i++)
101 {
102 ExtensionFilter extensionFilter = extensions[i];
103 text = text + extensionFilter.Name + "(";
104 string[] extensions2 = extensionFilter.Extensions;
105 foreach (string text2 in extensions2)
106 {
107 text = text + "*." + text2 + ",";
108 }
109 text = text.Remove(text.Length - 1);
110 text += ") |";
111 extensions2 = extensionFilter.Extensions;
112 foreach (string text3 in extensions2)
113 {
114 text = text + "*." + text3 + "; ";
115 }
116 text += "|";
117 }
118 return text.Remove(text.Length - 1);
119 }
120
121 private static string GetDirectoryPath(string directory)
122 {
123 string text = Path.GetFullPath(directory);
124 if (!text.EndsWith("\\"))
125 {
126 text += "\\";
127 }
128 if (Path.GetPathRoot(text) == text)
129 {
130 return directory;
131 }
132 string directoryName = Path.GetDirectoryName(text);
133 char directorySeparatorChar = Path.DirectorySeparatorChar;
134 return directoryName + directorySeparatorChar;
135 }
136}
item3. title
Definition: UIBook.cs:616
string[] OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect)
void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action< string[]> cb)
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)