Allow restoring state via user interface

This commit is contained in:
copy 2016-07-18 04:22:18 +02:00
parent 25e5a5bafb
commit 4fbd4603a0
3 changed files with 49 additions and 1 deletions

View file

@ -135,7 +135,8 @@
<input type="button" value="Get HDA image" id="get_hda_image">
<input type="button" value="Get HDB image" id="get_hdb_image">
<input type="button" value="Save State" id="save_state">
<input type="button" value="Memory Dump" id="memory_dump">
<input type="button" value="Load State" id="load_state"> <input type="file" style="display: none" id="load_state_input">
<input type="button" value="Memory Dump (raw)" id="memory_dump">
<input type="button" value="Disable mouse" id="toggle_mouse">
<input type="button" value="Lock mouse" id="lock_mouse">
<input type="button" value="Go fullscreen" id="fullscreen">

View file

@ -106,6 +106,7 @@
<input type="button" value="Get HDA image" id="get_hda_image">
<input type="button" value="Get HDB image" id="get_hdb_image">
<input type="button" value="Save State" id="save_state">
<input type="button" value="Load State" id="load_state"> <input type="file" style="display: none" id="load_state_input">
<input type="button" value="Memory Dump" id="memory_dump">
<input type="button" value="Disable mouse" id="toggle_mouse">
<input type="button" value="Lock mouse" id="lock_mouse">

View file

@ -905,6 +905,52 @@
$("save_state").blur();
};
$("load_state").onclick = function()
{
$("load_state_input").click();
$("load_state").blur();
};
$("load_state_input").onchange = function()
{
var file = this.files[0];
if(!file)
{
return;
}
var was_running = emulator.is_running();
if(was_running)
{
emulator.stop();
}
var filereader = new FileReader();
filereader.onload = function(e)
{
try
{
emulator.restore_state(e.target.result);
}
catch(e)
{
alert("Something bad happened while restoring the state:\n" + e + "\n\n" +
"Note that the current configuration must be the same as the original");
throw e;
}
if(was_running)
{
emulator.run();
}
};
filereader.readAsArrayBuffer(file);
this.value = "";
};
$("ctrlaltdel").onclick = function()
{
emulator.keyboard_send_scancodes([