about summary refs log tree commit diff stats
path: root/edit/006-sandbox-copy.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2017-02-04 22:01:02 -0800
committerKartik K. Agaram <vc@akkartik.com>2017-02-04 22:01:02 -0800
commit74e327d14728443310324e03a61455418a2ee1b5 (patch)
tree195328149dbe3faab56ed8fe217c8b33620b9b27 /edit/006-sandbox-copy.mu
parent3ebc41870128148b862c128f4c91639c9eb23c24 (diff)
downloadmu-74e327d14728443310324e03a61455418a2ee1b5.tar.gz
3738 - start on new edit/ layer: minimizing prints
Diffstat (limited to 'edit/006-sandbox-copy.mu')
-rw-r--r--edit/006-sandbox-copy.mu279
1 files changed, 0 insertions, 279 deletions
diff --git a/edit/006-sandbox-copy.mu b/edit/006-sandbox-copy.mu
deleted file mode 100644
index 9df5e625..00000000
--- a/edit/006-sandbox-copy.mu
+++ /dev/null
@@ -1,279 +0,0 @@
-## the 'copy' button makes it easy to duplicate a sandbox, and thence to
-## see code operate in multiple situations
-
-scenario copy-a-sandbox-to-editor [
-  local-scope
-  trace-until 100/app  # trace too long
-  assume-screen 100/width, 10/height
-  # empty recipes
-  assume-resources [
-  ]
-  env:&:environment <- new-programming-environment resources, screen, [add 1, 1]  # contents of sandbox editor
-  # run it
-  assume-console [
-    press F4
-  ]
-  event-loop screen, console, env, resources
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊                                                 .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # click at left edge of 'copy' button
-  assume-console [
-    left-click 3, 69
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  # it copies into editor
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊add 1, 1                                         .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # cursor should be in the right place
-  assume-console [
-    type [0]
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊0add 1, 1                                        .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-]
-
-scenario copy-a-sandbox-to-editor-2 [
-  local-scope
-  trace-until 100/app  # trace too long
-  assume-screen 100/width, 10/height
-  # empty recipes
-  assume-resources [
-  ]
-  env:&:environment <- new-programming-environment resources, screen, [add 1, 1]  # contents of sandbox editor
-  # run it
-  assume-console [
-    press F4
-  ]
-  event-loop screen, console, env, resources
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊                                                 .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # click at right edge of 'copy' button (just before 'delete')
-  assume-console [
-    left-click 3, 84
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  # it copies into editor
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊add 1, 1                                         .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # cursor should be in the right place
-  assume-console [
-    type [0]
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊0add 1, 1                                        .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-]
-
-after <global-touch> [
-  # support 'copy' button
-  {
-    copy?:bool <- should-attempt-copy? click-row, click-column, env
-    break-unless copy?
-    copy?, env <- try-copy-sandbox click-row, env
-    break-unless copy?
-    hide-screen screen
-    screen <- render-sandbox-side screen, env, render
-    screen <- update-cursor screen, recipes, current-sandbox, sandbox-in-focus?, env
-    show-screen screen
-    loop +next-event
-  }
-]
-
-# some preconditions for attempting to copy a sandbox
-def should-attempt-copy? click-row:num, click-column:num, env:&:environment -> result:bool [
-  local-scope
-  load-ingredients
-  # are we below the sandbox editor?
-  click-sandbox-area?:bool <- click-on-sandbox-area? click-row, click-column, env
-  return-unless click-sandbox-area?, 0/false
-  # narrower, is the click in the columns spanning the 'copy' button?
-  first-sandbox:&:editor <- get *env, current-sandbox:offset
-  assert first-sandbox, [!!]
-  sandbox-left-margin:num <- get *first-sandbox, left:offset
-  sandbox-right-margin:num <- get *first-sandbox, right:offset
-  _, _, copy-button-left:num, copy-button-right:num, _ <- sandbox-menu-columns sandbox-left-margin, sandbox-right-margin
-  copy-button-vertical-area?:bool <- within-range? click-column, copy-button-left, copy-button-right
-  return-unless copy-button-vertical-area?, 0/false
-  # finally, is sandbox editor empty?
-  current-sandbox:&:editor <- get *env, current-sandbox:offset
-  result <- empty-editor? current-sandbox
-]
-
-def try-copy-sandbox click-row:num, env:&:environment -> clicked-on-copy-button?:bool, env:&:environment [
-  local-scope
-  load-ingredients
-  # identify the sandbox to copy, if the click was actually on the 'copy' button
-  sandbox:&:sandbox <- find-sandbox env, click-row
-  return-unless sandbox, 0/false
-  clicked-on-copy-button? <- copy 1/true
-  text:text <- get *sandbox, data:offset
-  current-sandbox:&:editor <- get *env, current-sandbox:offset
-  current-sandbox <- insert-text current-sandbox, text
-  # reset scroll
-  *env <- put *env, render-from:offset, -1
-  # position cursor in sandbox editor
-  *env <- put *env, sandbox-in-focus?:offset, 1/true
-]
-
-def find-sandbox env:&:environment, click-row:num -> result:&:sandbox [
-  local-scope
-  load-ingredients
-  curr-sandbox:&:sandbox <- get *env, sandbox:offset
-  {
-    break-unless curr-sandbox
-    start:num <- get *curr-sandbox, starting-row-on-screen:offset
-    found?:bool <- equal click-row, start
-    return-if found?, curr-sandbox
-    curr-sandbox <- get *curr-sandbox, next-sandbox:offset
-    loop
-  }
-  return 0/not-found
-]
-
-def click-on-sandbox-area? click-row:num, click-column:num, env:&:environment -> result:bool [
-  local-scope
-  load-ingredients
-  current-sandbox:&:editor <- get *env, current-sandbox:offset
-  sandbox-left-margin:num <- get *current-sandbox, left:offset
-  on-sandbox-side?:bool <- greater-or-equal click-column, sandbox-left-margin
-  return-unless on-sandbox-side?, 0/false
-  first-sandbox:&:sandbox <- get *env, sandbox:offset
-  return-unless first-sandbox, 0/false
-  first-sandbox-begins:num <- get *first-sandbox, starting-row-on-screen:offset
-  result <- greater-or-equal click-row, first-sandbox-begins
-]
-
-def empty-editor? editor:&:editor -> result:bool [
-  local-scope
-  load-ingredients
-  head:&:duplex-list:char <- get *editor, data:offset
-  first:&:duplex-list:char <- next head
-  result <- not first
-]
-
-def within-range? x:num, low:num, high:num -> result:bool [
-  local-scope
-  load-ingredients
-  not-too-far-left?:bool <- greater-or-equal x, low
-  not-too-far-right?:bool <- lesser-or-equal x, high
-  result <- and not-too-far-left? not-too-far-right?
-]
-
-scenario copy-fails-if-sandbox-editor-not-empty [
-  local-scope
-  trace-until 100/app  # trace too long
-  assume-screen 100/width, 10/height
-  # empty recipes
-  assume-resources [
-  ]
-  env:&:environment <- new-programming-environment resources, screen, [add 1, 1]  # contents of sandbox editor
-  # run it
-  assume-console [
-    press F4
-  ]
-  event-loop screen, console, env, resources
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊                                                 .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # type something into the sandbox editor, then click on the 'copy' button
-  assume-console [
-    left-click 2, 70  # put cursor in sandbox editor
-    type [0]  # type something
-    left-click 3, 70  # click 'copy' button
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  # copy doesn't happen
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊0                                                .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-  # cursor should be in the right place
-  assume-console [
-    type [1]
-  ]
-  run [
-    event-loop screen, console, env, resources
-  ]
-  screen-should-contain [
-    .                                                                                 run (F4)           .
-    .                                                  ┊01                                               .
-    .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────.
-    .                                                  ┊0   edit          copy            delete         .
-    .                                                  ┊add 1, 1                                         .
-    .                                                  ┊2                                                .
-    .                                                  ┊─────────────────────────────────────────────────.
-    .                                                  ┊                                                 .
-  ]
-]