From 2a4088119cf41175457414dfa59bd4064b8f0562 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Wed, 1 Jan 2020 17:04:37 -0800 Subject: 5852 --- archive/2.vm/edit/008-sandbox-edit.mu | 325 ---------------------------------- 1 file changed, 325 deletions(-) delete mode 100644 archive/2.vm/edit/008-sandbox-edit.mu (limited to 'archive/2.vm/edit/008-sandbox-edit.mu') diff --git a/archive/2.vm/edit/008-sandbox-edit.mu b/archive/2.vm/edit/008-sandbox-edit.mu deleted file mode 100644 index 57cdbc0d..00000000 --- a/archive/2.vm/edit/008-sandbox-edit.mu +++ /dev/null @@ -1,325 +0,0 @@ -## editing sandboxes after they've been created - -scenario clicking-on-sandbox-edit-button-moves-it-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 2, 2] - render-all screen, env, render - # run it - assume-console [ - press F4 - ] - event-loop screen, console, env, resources - screen-should-contain [ - . run (F4) . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] - # click at left edge of 'edit' button - assume-console [ - left-click 3, 55 - ] - run [ - event-loop screen, console, env, resources - ] - # it pops back into editor - screen-should-contain [ - . run (F4) . - . ┊add 2, 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 2, 2 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊ . - ] -] - -scenario clicking-on-sandbox-edit-button-moves-it-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 2, 2] - render-all screen, env, render - # run it - assume-console [ - press F4 - ] - event-loop screen, console, env, resources - screen-should-contain [ - . run (F4) . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] - # click at right edge of 'edit' button (just before 'copy') - assume-console [ - left-click 3, 65 - ] - run [ - event-loop screen, console, env, resources - ] - # it pops back into editor - screen-should-contain [ - . run (F4) . - . ┊add 2, 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 2, 2 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊ . - ] -] - -after [ - # support 'edit' button - { - edit?:bool <- should-attempt-edit? click-row, click-column, env - break-unless edit? - edit?, env <- try-edit-sandbox click-row, env - break-unless edit? - screen <- render-sandbox-side screen, env, render - screen <- update-cursor screen, recipes, current-sandbox, sandbox-in-focus?, env - loop +next-event - } -] - -# some preconditions for attempting to edit a sandbox -def should-attempt-edit? click-row:num, click-column:num, env:&:environment -> result:bool [ - local-scope - load-inputs - # are we below the sandbox editor? - click-sandbox-area?:bool <- click-on-sandbox-area? click-row, click-column, env - return-unless click-sandbox-area?, false - # narrower, is the click in the columns spanning the 'edit' 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 - edit-button-left:num, edit-button-right:num, _ <- sandbox-menu-columns sandbox-left-margin, sandbox-right-margin - edit-button-vertical-area?:bool <- within-range? click-column, edit-button-left, edit-button-right - return-unless edit-button-vertical-area?, false - # finally, is sandbox editor empty? - current-sandbox:&:editor <- get *env, current-sandbox:offset - result <- empty-editor? current-sandbox -] - -def try-edit-sandbox click-row:num, env:&:environment -> clicked-on-edit-button?:bool, env:&:environment [ - local-scope - load-inputs - # identify the sandbox to edit, if the click was actually on the 'edit' button - sandbox:&:sandbox <- find-sandbox env, click-row - return-unless sandbox, false - clicked-on-edit-button? <- copy true - # 'edit' button = 'copy' button + 'delete' button - text:text <- get *sandbox, data:offset - current-sandbox:&:editor <- get *env, current-sandbox:offset - current-sandbox <- insert-text current-sandbox, text - env <- delete-sandbox env, sandbox - # reset scroll - *env <- put *env, render-from:offset, -1 - # position cursor in sandbox editor - *env <- put *env, sandbox-in-focus?:offset, true -] - -scenario sandbox-with-print-can-be-edited [ - local-scope - trace-until 100/app # trace too long - assume-screen 100/width, 20/height - # left editor is empty - assume-resources [ - ] - # right editor contains a print instruction - env:&:environment <- new-programming-environment resources, screen, [print screen, 4] - render-all screen, env, render - # run the sandbox - assume-console [ - press F4 - ] - event-loop screen, console, env, resources - screen-should-contain [ - . run (F4) . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊print screen, 4 . - . ┊screen: . - . ┊ .4 . . - . ┊ . . . - . ┊ . . . - . ┊ . . . - . ┊ . . . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] - # edit the sandbox - assume-console [ - left-click 3, 65 - ] - run [ - event-loop screen, console, env, resources - ] - screen-should-contain [ - . run (F4) . - . ┊print screen, 4 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊ . - . ┊ . - ] -] - -scenario editing-sandbox-after-scrolling-resets-scroll [ - local-scope - trace-until 100/app # trace too long - assume-screen 100/width, 10/height - # initialize environment - assume-resources [ - ] - env:&:environment <- new-programming-environment resources, screen, [] - render-all screen, env, render - # create 2 sandboxes and scroll to second - assume-console [ - press ctrl-n - type [add 2, 2] - press F4 - type [add 1, 1] - press F4 - press page-down - press page-down - ] - event-loop screen, console, env, resources - screen-should-contain [ - . run (F4) . - . ┊─────────────────────────────────────────────────. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] - # edit the second sandbox - assume-console [ - left-click 2, 55 - ] - run [ - event-loop screen, console, env, resources - ] - # second sandbox shows in editor; scroll resets to display first sandbox - screen-should-contain [ - . run (F4) . - . ┊add 2, 2 . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊add 1, 1 . - . ┊2 . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] -] - -scenario editing-sandbox-updates-sandbox-count [ - local-scope - trace-until 100/app # trace too long - assume-screen 100/width, 10/height - # initialize environment - assume-resources [ - ] - env:&:environment <- new-programming-environment resources, screen, [] - render-all screen, env, render - # create 2 sandboxes - assume-console [ - press ctrl-n - type [add 2, 2] - press F4 - type [add 1, 1] - press F4 - ] - event-loop screen, console, env, resources - screen-should-contain [ - . run (F4) . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊add 1, 1 . - . ┊2 . - . ┊─────────────────────────────────────────────────. - . ┊1 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - ] - # edit the second sandbox, then resave - assume-console [ - left-click 3, 60 - press F4 - ] - run [ - event-loop screen, console, env, resources - ] - # no change in contents - screen-should-contain [ - . run (F4) . - . ┊ . - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊─────────────────────────────────────────────────. - . ┊0 edit copy to recipe delete . - . ┊add 1, 1 . - . ┊2 . - . ┊─────────────────────────────────────────────────. - . ┊1 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - ] - # now try to scroll past end - assume-console [ - press page-down - press page-down - press page-down - ] - run [ - event-loop screen, console, env, resources - ] - # screen should show just final sandbox with the right index (1) - screen-should-contain [ - . run (F4) . - . ┊─────────────────────────────────────────────────. - .┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┊1 edit copy to recipe delete . - . ┊add 2, 2 . - . ┊4 . - . ┊─────────────────────────────────────────────────. - . ┊ . - ] -] -- cgit 1.4.1-2-gfad0