Skip to content

Commit 024e5da

Browse files
committed
replace image upload button
1 parent b5c502b commit 024e5da

1 file changed

Lines changed: 49 additions & 3 deletions

File tree

view/app/artifactjsdos.tmpl

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*/ -}}
1313
{{- define "artifactjsdos" -}}
1414
{{- if eq (index . "jsdos6") true}}
15+
{{- $unlocked := index . "editor"}}
1516
{{- $download := index . "download"}}
1617
{{- $filename := index . "filename"}}
1718
{{- $lead := index . "lead"}}
@@ -34,16 +35,19 @@
3435
{{- if eq true (index . "modEmulateBroken")}}<span class="badge bg-danger ms-2">⚠️ Incompatible</span>{{end}}
3536
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
3637
</div>
37-
<div class="modal-body">
38+
<div class="modal-body">
3839
{{- if eq "covox" (index . "modEmulateAudio")}}<p class="text-info-emphasis">If asked for a sound device option, choose "LPT1" for Covox, Disney, Soundplayer or Soundthing</p>{{end}}
3940
{{- if eq "gus" (index . "modEmulateAudio")}}<p class="text-info-emphasis">If asked for the Gravis Ultrasound config, choose IRQ <var>5</var>, DMA <var>1</var>, Base address <var>240h</var> or Port <var>240</var></p>{{end}}
4041
{{- if eq "sb1" (index . "modEmulateAudio")}}<p class="text-info-emphasis">If asked for the Sound Blaster config, choose IRQ <var>7</var>, DMA <var>1</var>, Base address <var>220h</var> or Port <var>220</var></p>{{end}}
4142
{{- if eq "sb16" (index . "modEmulateAudio")}}<p class="text-info-emphasis">If asked for the Sound Blaster 16 config, choose IRQ <var>7</var>, DMA <var>1</var>, HDMA <var>5</var>, Base address <var>220h</var> or Port <var>220</var></p>{{end}}
42-
<canvas id="jsdos6"></canvas>
43+
<canvas id="jsdos6"></canvas>
4344
</div>
4445
<div class="modal-footer">
4546
<button id="jsdosFullscreen" class="btn btn-outline-info">&#x2922; Full Screen</button>
4647
<button id="jsdosScreenshot" class="btn btn-outline-info">&#x26F6; Screenshot</button>
48+
{{- if $unlocked }}
49+
<button id="jsdosReplaceImage" class="btn btn-outline-warning">&#x26ED; Replace Image</button>
50+
{{- end }}
4751
<button id="jsdosStop" class="btn btn-danger">&#x25A0; Stop</button>
4852
<button type="button" id="jsdosCloser" class="btn btn-secondary" data-bs-dismiss="modal">✕ Close</button>
4953
</div>
@@ -88,6 +92,48 @@
8892
document
8993
.getElementById(`jsdosScreenshot`)
9094
.addEventListener("click", screenshot);
95+
{{- if $unlocked }}
96+
const replaceImageButton = document.getElementById('jsdosReplaceImage');
97+
replaceImageButton.addEventListener('click', function() {
98+
try {
99+
replaceImageButton.disabled = true;
100+
console.log("replacement image: for canvas of {{$filename}}");
101+
let dataURL = canvas.toDataURL("image/png");
102+
let a = document.createElement('a');
103+
a.href = dataURL;
104+
a.download = "{{$filename}}-replace-image.png";
105+
document.body.appendChild(a);
106+
a.click();
107+
document.body.removeChild(a);
108+
// stop JS-DOS emulation
109+
if (window.ci) {
110+
ci.exit();
111+
stopButton.disabled = true;
112+
const runAppButton = document.getElementById('js-dos-run-app');
113+
if (runAppButton) {
114+
runAppButton.textContent = 'Refresh page to rerun';
115+
runAppButton.style.pointerEvents = 'none';
116+
}
117+
}
118+
const jsdosModal = bootstrap.Modal.getInstance(document.getElementById('js-dos-modal'));
119+
jsdosModal.hide();
120+
// store screenshot for potential use
121+
window.lastJSDOSScreenshot = dataURL;
122+
// open asset editor modal
123+
const assetModal = new bootstrap.Modal(document.getElementById('asset-editor-modal'));
124+
assetModal.show();
125+
// open replacement image file dialog
126+
document.getElementById('asset-editor-modal').addEventListener('shown.bs.modal', function() {
127+
const replacementInput = document.querySelector('input[name="artifact-editor-replace-preview"]');
128+
if (replacementInput) {
129+
replacementInput.click();
130+
}
131+
});
132+
} catch (error) {
133+
console.log("Replace image error: ", error);
134+
}
135+
});
136+
{{- end }}
91137
function screenshot() {
92138
console.log("screenshot: for canvas of {{$filename}}");
93139
let dataURL = canvas.toDataURL("image/png");
@@ -149,6 +195,6 @@
149195
const jsQuit = document.getElementById("jsdosCloser");
150196
jsQuit.addEventListener("click", () => {
151197
location.reload();
152-
});
198+
});
153199
</script>
154200
{{- end}}{{ end }}

0 commit comments

Comments
 (0)