Skip to content

Commit 8a90b21

Browse files
committed
better open / save dialogs
1 parent 9c020e6 commit 8a90b21

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

haxe/ui/backend/OpenFileDialogImpl.hx

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package haxe.ui.backend;
22

3-
import haxe.ui.containers.dialogs.Dialogs.SelectedFileInfo;
3+
44
#if !js
55
import haxe.io.Bytes;
66
import haxe.ui.containers.dialogs.Dialog.DialogButton;
7+
import haxe.ui.containers.dialogs.Dialogs.FileDialogExtensionInfo;
8+
import haxe.ui.containers.dialogs.Dialogs.SelectedFileInfo;
79
import openfl.events.Event;
810
import openfl.net.FileFilter;
911
import openfl.net.FileReference;
1012
import openfl.net.FileReferenceList;
11-
#end
1213

1314
using StringTools;
15+
#end
16+
1417

1518

1619
@:access(openfl.net.FileReference)
@@ -46,42 +49,42 @@ class OpenFileDialogImpl extends OpenFileDialogBase {
4649
private var _infos:Array<SelectedFileInfo>;
4750

4851
public override function show() {
52+
var extensions = null;
53+
if (options != null) {
54+
extensions = options.extensions;
55+
}
56+
4957
_refToInfo = new Map<FileReference, SelectedFileInfo>();
5058
_infos = [];
5159
_fr = new FileReferenceList();
5260
_fr.addEventListener(Event.SELECT, onSelect, false, 0, true);
5361
_fr.addEventListener(Event.CANCEL, onCancel, false, 0, true);
54-
_fr.browse(buildFileFilters());
62+
_fr.browse(buildFileFilters(extensions));
5563
}
5664

57-
private function buildFileFilters():Array<FileFilter> {
58-
var f = null;
59-
60-
/* DOESNT WORK AS OPENFL DOCS STATE
61-
if (options.extensions != null && options.extensions.length > 0) {
62-
f = [];
63-
for (e in options.extensions) {
64-
var ext = e.extension;
65-
ext = ext.trim();
66-
if (ext.length == 0) {
65+
private function buildFileFilters(extensions:Array<FileDialogExtensionInfo>):Array<FileFilter> {
66+
if (extensions == null) {
67+
return null;
68+
}
69+
70+
var fileFilters:Array<FileFilter> = [];
71+
for (extension in extensions) {
72+
var extensionList = extension.extension.split(",");
73+
var fileFilterExtensions = "";
74+
for (extensionItem in extensionList) {
75+
extensionItem = extensionItem.trim();
76+
if (extensionItem.length == 0) {
6777
continue;
6878
}
69-
var parts = ext.split(",");
70-
var finalParts = [];
71-
for (p in parts) {
72-
p = p.trim();
73-
if (p.length == 0) {
74-
continue;
75-
}
76-
finalParts.push("*." + p);
77-
}
78-
79-
f.push(new FileFilter(e.label, finalParts.join(";")));
79+
80+
fileFilterExtensions += "*." + extensionItem + ";";
81+
}
82+
if (fileFilterExtensions.length != 0) {
83+
fileFilters.push(new FileFilter(extension.label, fileFilterExtensions));
8084
}
85+
8186
}
82-
*/
83-
84-
return f;
87+
return fileFilters;
8588
}
8689

8790
private function onSelect(e:Event) {

haxe/ui/backend/SaveFileDialogImpl.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class SaveFileDialogImpl extends SaveFileDialogBase {
6363
if (data != null) {
6464
_file.save(data, defaultFilename);
6565
} else {
66-
_file.browse(buildFileFilters(extensions));
66+
_file.browseForSave(options.title);
6767
}
6868
}
6969

0 commit comments

Comments
 (0)