| 156 | } |
| 157 | |
| 158 | static bool downloadWebBrowserFile(const char* const filename) |
| 159 | { |
| 160 | const char* const nameprefix = DISTRHO_WASM_NAMESPACE(FILE_BROWSER_DIALOG_NAMESPACE); |
| 161 | |
| 162 | return EM_ASM_INT({ |
| 163 | var canvasFileObjName = UTF8ToString($0) + "_file_save"; |
| 164 | var jsfilename = UTF8ToString($1); |
| 165 | |
| 166 | var canvasFileSaveElem = document.getElementById(canvasFileObjName); |
| 167 | if (canvasFileSaveElem) { |
| 168 | // only 1 file save allowed at once |
| 169 | console.warn("One file save operation already in progress, refusing to open another"); |
| 170 | return 0; |
| 171 | } |
| 172 | |
| 173 | canvasFileSaveElem = document.createElement('a'); |
| 174 | canvasFileSaveElem.download = jsfilename; |
| 175 | canvasFileSaveElem.id = canvasFileObjName; |
| 176 | canvasFileSaveElem.style.display = 'none'; |
| 177 | document.body.appendChild(canvasFileSaveElem); |
| 178 | |
| 179 | var content = Module.FS.readFile('/userfiles/' + jsfilename); |
| 180 | canvasFileSaveElem.href = URL.createObjectURL(new Blob([content])); |
| 181 | canvasFileSaveElem.click(); |
| 182 | |
| 183 | setTimeout(function() { |
| 184 | URL.revokeObjectURL(canvasFileSaveElem.href); |
| 185 | document.body.removeChild(canvasFileSaveElem); |
| 186 | }, 2000); |
| 187 | return 1; |
| 188 | }, nameprefix, filename) != 0; |
| 189 | } |
| 190 | #endif |
| 191 | |
| 192 | // -------------------------------------------------------------------------------------------------------------------- |