diff --git a/driver.html b/driver.html index 869224422e4ed0ed93984e5c4957c0268b3114b5..77881dcb4f109423f2d06a585cda4177777ba34f 100644 --- a/driver.html +++ b/driver.html @@ -106,10 +106,15 @@ Navigation: <input type="textbox" id='navigation_step' style="width:3em" value="0"/> / <span id="navigation_total"></span> <input type="button" id='button_reset' value="Reset" /> -<input type="button" id='button_prev' value="Prev" /> -<input type="button" id='button_next' value="Next" /> +<input type="button" id='button_backward' value="Backward" />(4) +<input type="button" id='button_forward' value="Forward" />(6) +<span style="width:3em"> </span> +<input type="button" id='button_previous' value="Prev" />(8) +<input type="button" id='button_next' value="Next" />(2) +<input type="button" id='button_finish' value="Finish" />(3) + Reach condition: -<input type="textbox" id='text_condition' style="width:30em" /> +<input type="textbox" id='text_condition' style="width:15em" /> <input type="button" id='button_reach' value="Reach" /> <span id="reach_output"></span> </div> diff --git a/navig-driver.js b/navig-driver.js index 7768e9147e6e2e0038e7416301e9afe6115f9375..ef2eef8bd0d5094eb5edd6de6eb5c28cfb7923d4 100644 --- a/navig-driver.js +++ b/navig-driver.js @@ -178,17 +178,16 @@ $("#button_run").click(function() { var timeoutID = window.setTimeout(function() { $("#run_output").html(""); }, 1000); }); -$("#button_reset").click(function() { - stepTo(0); -}); - -$("#button_prev").click(function() { - stepTo(Math.max(0, tracer_pos-1)); -}); +$("#button_reset").click(function() { reset(); }); + // stepTo(0); +$("#button_backward").click(function() { backward(); }); + // stepTo(Math.max(0, tracer_pos-1)); +$("#button_forward").click(function() { forward() }); + // stepTo(Math.min(tracer_length-1, tracer_pos+1)); -$("#button_next").click(function() { - stepTo(Math.min(tracer_length-1, tracer_pos+1)); -}); +$("#button_previous").click(function() { previous() }); +$("#button_next").click(function() { next() }); +$("#button_finish").click(function() { finish() }); // Assumes tracer_files to be an array of objects with two field: @@ -205,7 +204,7 @@ function shared_step(dir) { i += dir; if (! tracer_valid_pos(i)) return; // not found, we don’t update the tracer position. - tracer_pos = i; + stepTo(i); } // dir is -1 or +1, @@ -222,11 +221,11 @@ function shared_next(dir, target) { } while (true) { if (! tracer_valid_pos(i)) { - tracer_pos = i - dir; // just before out of range + stepTo(i - dir); // just before out of range return; // not found } if (i !== tracer_pos && depth === target) { - tracer_pos = i; + stepTo(i); return; } var ty = tracer_items[i].type; @@ -239,14 +238,16 @@ function shared_next(dir, target) { } } -function restart() { tracer_pos = 0; } -function step() { shared_step(+1); } -function backstep() { shared_step(-1); } -function next() { shared_next(+1, 0); } +function reset() { tracer_pos = 0; updateSelection(); } +function forward() { shared_step(+1); } +function backward() { shared_step(-1); } + function previous() { shared_next(-1, 0); } +function next() { shared_next(+1, 0); } function finish() { shared_next(+1, -1); } + // --------------- Auxiliary ---------------- function get_file_extension(filename) { @@ -477,12 +478,17 @@ interpreter = CodeMirror.fromTextArea(document.getElementById('interpreter_code' lineWrapping: true, readOnly: true, extraKeys: { - 'R': function(cm) { restart(); updateSelection(); }, - 'S': function(cm) { step(); updateSelection(); }, - 'B': function(cm) { backstep(); updateSelection(); }, - 'N': function(cm) { next(); updateSelection(); }, - 'P': function(cm) { previous(); updateSelection(); }, - 'F': function(cm) { finish(); updateSelection(); } + 'R': function(cm) { reset(); }, + 'F': function(cm) { forward();}, + '6': function(cm) { forward();}, + 'B': function(cm) { backward(); }, + '4': function(cm) { backward(); }, + 'P': function(cm) { previous(); }, + '8': function(cm) { previous(); }, + 'N': function(cm) { next(); }, + '2': function(cm) { next(); }, + 'H': function(cm) { finish(); }, + '3': function(cm) { finish(); } }, }); interpreter.setSize(800,400);