diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-09-05 11:50:49 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-09-05 11:51:10 -0700 |
commit | a90faae99043042ec5e2d0de21b7dbe0eba29e3a (patch) | |
tree | 2138b6fe60aaf3d3bc47ae05fb955a78135b6eaa /edit/007-sandbox-delete.mu | |
parent | 9f78ec2d5e2a74ec24cc20cd3b1d60c3bdb9d605 (diff) | |
download | mu-a90faae99043042ec5e2d0de21b7dbe0eba29e3a.tar.gz |
2156 - split edit.mu into multiple files
Now you can bring up the programming environment by saying: $ mu edit The files under edit aren't yet *layers*, though, they have a few dependencies that we need to clean up.
Diffstat (limited to 'edit/007-sandbox-delete.mu')
-rw-r--r-- | edit/007-sandbox-delete.mu | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/edit/007-sandbox-delete.mu b/edit/007-sandbox-delete.mu new file mode 100644 index 00000000..b4b317e0 --- /dev/null +++ b/edit/007-sandbox-delete.mu @@ -0,0 +1,111 @@ +## deleting sandboxes + +scenario deleting-sandboxes [ + $close-trace # trace too long + assume-screen 100/width, 15/height + 1:address:array:character <- new [] + 2:address:array:character <- new [] + 3:address:programming-environment-data <- new-programming-environment screen:address, 1:address:array:character, 2:address:array:character + # run a few commands + assume-console [ + left-click 1, 80 + type [divide-with-remainder 11, 3] + press F4 + type [add 2, 2] + press F4 + ] + run [ + event-loop screen:address, console:address, 3:address:programming-environment-data + ] + screen-should-contain [ + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ x. + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ x. + . ┊divide-with-remainder 11, 3 . + . ┊3 . + . ┊2 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . + ] + # delete second sandbox + assume-console [ + left-click 7, 99 + ] + run [ + event-loop screen:address, console:address, 3:address:programming-environment-data + ] + screen-should-contain [ + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ x. + . ┊add 2, 2 . + . ┊4 . + . ┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . + . ┊ . + ] + # delete first sandbox + assume-console [ + left-click 3, 99 + ] + run [ + event-loop screen:address, console:address, 3:address:programming-environment-data + ] + screen-should-contain [ + . run (F4) . + . ┊ . + .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━. + . ┊ . + . ┊ . + ] +] + +after <global-touch> [ + # on a sandbox delete icon? process delete + { + was-delete?:boolean <- delete-sandbox *t, env + break-unless was-delete? + hide-screen screen + screen <- render-sandbox-side screen, env + screen <- update-cursor screen, recipes, current-sandbox, *sandbox-in-focus? + show-screen screen + loop +next-event:label + } +] + +# was-deleted?:boolean <- delete-sandbox t:touch-event, env:address:programming-environment-data +recipe delete-sandbox [ + local-scope + t:touch-event <- next-ingredient + env:address:programming-environment-data <- next-ingredient + click-column:number <- get t, column:offset + current-sandbox:address:editor-data <- get *env, current-sandbox:offset + right:number <- get *current-sandbox, right:offset + at-right?:boolean <- equal click-column, right + reply-unless at-right?, 0/false + click-row:number <- get t, row:offset + prev:address:address:sandbox-data <- get-address *env, sandbox:offset + curr:address:sandbox-data <- get *env, sandbox:offset + { + break-unless curr + # more sandboxes to check + { + target-row:number <- get *curr, starting-row-on-screen:offset + delete-curr?:boolean <- equal target-row, click-row + break-unless delete-curr? + # delete this sandbox, rerender and stop + *prev <- get *curr, next-sandbox:offset + reply 1/true + } + prev <- get-address *curr, next-sandbox:offset + curr <- get *curr, next-sandbox:offset + loop + } + reply 0/false +] |