-
Notifications
You must be signed in to change notification settings - Fork 0
/
SelectFile.mjs
57 lines (52 loc) · 1.96 KB
/
SelectFile.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* Advanced scripting prompt test script
*/
var SelectFileDialog = {};
import {DialogUtils} from 'DialogUtils.mjs';
SelectFileDialog.testPromptAction = tiled.registerAction("SelectFileDialog", function (action) {
var dialog = new Dialog();
dialog.addHeading("Select your file please.", true);
var filePicker1 = dialog.addFilePicker("Your file: ");
filePicker1.fileUrlChanged.connect((newUrl) => {
tiled.log(`The new file is ${filePicker1.fileUrl}`);
});
var secondDialog;
var submitButton = dialog.addButton("Submit");
submitButton.clicked.connect(() => {
if (!secondDialog) {
var fileSchemeReplace = tiled.platform == "windows" ? "file:///" : "file://";
var fileUrl = filePicker1.fileUrl.toString().replace(fileSchemeReplace, "");
var text = '';
secondDialog = new Dialog();
secondDialog.addLabel("File Contents (Excerpt)");
secondDialog.addSeparator();
try {
var textFile = new TextFile(fileUrl, TextFile.ReadOnly);
text = textFile.readAll();
// take an excerpt of the file contents to display
text = text.substring(0, Math.min(text.length, 255));
textFile.close();
}
catch (e) {
text = `Couldn't read your file ${fileUrl}:\n${e.message}`;
}
secondDialog.finished.connect(() => {
secondDialog = undefined;
});
secondDialog.addHeading(text, true);
secondDialog.show();
} else {
tiled.log("Second dialog already open.")
}
});
dialog.finished.connect(() => {
if (secondDialog) {
secondDialog.accept();
}
});
dialog.show();
});
SelectFileDialog.testPromptAction.text = "Select File Dialog";
tiled.extendMenu("Edit", [
{ action: "SelectFileDialog", before: "SelectAll" },
{ separator: true }
]);