1
2
3 scenario clicking-on-sandbox-edit-button-moves-it-to-editor [
4 local-scope
5 trace-until 100/app
6 assume-screen 100/width, 10/height
7
8 assume-resources [
9 ]
10 env:&:environment <- new-programming-environment resources, screen, [add 2, 2]
11 render-all screen, env, render
12
13 assume-console [
14 ¦ press F4
15 ]
16 event-loop screen, console, env, resources
17 screen-should-contain [
18 ¦ . run (F4) .
19 ¦ . ╎ .
20 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
21 ¦ . ╎0 edit copy to recipe delete .
22 ¦ . ╎add 2, 2 .
23 ¦ . ╎4 .
24 ¦ . ╎─────────────────────────────────────────────────.
25 ¦ . ╎ .
26 ]
27
28 assume-console [
29 ¦ left-click 3, 55
30 ]
31 run [
32 ¦ event-loop screen, console, env, resources
33 ]
34
35 screen-should-contain [
36 ¦ . run (F4) .
37 ¦ . ╎add 2, 2 .
38 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
39 ¦ . ╎ .
40 ]
41
42 assume-console [
43 ¦ type [0]
44 ]
45 run [
46 ¦ event-loop screen, console, env, resources
47 ]
48 screen-should-contain [
49 ¦ . run (F4) .
50 ¦ . ╎0add 2, 2 .
51 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
52 ¦ . ╎ .
53 ]
54 ]
55
56 scenario clicking-on-sandbox-edit-button-moves-it-to-editor-2 [
57 local-scope
58 trace-until 100/app
59 assume-screen 100/width, 10/height
60
61 assume-resources [
62 ]
63 env:&:environment <- new-programming-environment resources, screen, [add 2, 2]
64 render-all screen, env, render
65
66 assume-console [
67 ¦ press F4
68 ]
69 event-loop screen, console, env, resources
70 screen-should-contain [
71 ¦ . run (F4) .
72 ¦ . ╎ .
73 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
74 ¦ . ╎0 edit copy to recipe delete .
75 ¦ . ╎add 2, 2 .
76 ¦ . ╎4 .
77 ¦ . ╎─────────────────────────────────────────────────.
78 ¦ . ╎ .
79 ]
80
81 assume-console [
82 ¦ left-click 3, 65
83 ]
84 run [
85 ¦ event-loop screen, console, env, resources
86 ]
87
88 screen-should-contain [
89 ¦ . run (F4) .
90 ¦ . ╎add 2, 2 .
91 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
92 ¦ . ╎ .
93 ]
94
95 assume-console [
96 ¦ type [0]
97 ]
98 run [
99 ¦ event-loop screen, console, env, resources
100 ]
101 screen-should-contain [
102 ¦ . run (F4) .
103 ¦ . ╎0add 2, 2 .
104 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
105 ¦ . ╎ .
106 ]
107 ]
108
109 after <global-touch> [
110
111 {
112 ¦ edit?:bool <- should-attempt-edit? click-row, click-column, env
113 ¦ break-unless edit?
114 ¦ edit?, env <- try-edit-sandbox click-row, env
115 ¦ break-unless edit?
116 ¦ screen <- render-sandbox-side screen, env, render
117 ¦ screen <- update-cursor screen, recipes, current-sandbox, sandbox-in-focus?, env
118 ¦ loop +next-event
119 }
120 ]
121
122
123 def should-attempt-edit? click-row:num, click-column:num, env:&:environment -> result:bool [
124 local-scope
125 load-ingredients
126
127 click-sandbox-area?:bool <- click-on-sandbox-area? click-row, click-column, env
128 return-unless click-sandbox-area?, 0/false
129
130 first-sandbox:&:editor <- get *env, current-sandbox:offset
131 assert first-sandbox, [!!]
132 sandbox-left-margin:num <- get *first-sandbox, left:offset
133 sandbox-right-margin:num <- get *first-sandbox, right:offset
134 edit-button-left:num, edit-button-right:num, _ <- sandbox-menu-columns sandbox-left-margin, sandbox-right-margin
135 edit-button-vertical-area?:bool <- within-range? click-column, edit-button-left, edit-button-right
136 return-unless edit-button-vertical-area?, 0/false
137
138 current-sandbox:&:editor <- get *env, current-sandbox:offset
139 result <- empty-editor? current-sandbox
140 ]
141
142 def try-edit-sandbox click-row:num, env:&:environment -> clicked-on-edit-button?:bool, env:&:environment [
143 local-scope
144 load-ingredients
145
146 sandbox:&:sandbox <- find-sandbox env, click-row
147 return-unless sandbox, 0/false
148 clicked-on-edit-button? <- copy 1/true
149
150 text:text <- get *sandbox, data:offset
151 current-sandbox:&:editor <- get *env, current-sandbox:offset
152 current-sandbox <- insert-text current-sandbox, text
153 env <- delete-sandbox env, sandbox
154
155 *env <- put *env, render-from:offset, -1
156
157 *env <- put *env, sandbox-in-focus?:offset, 1/true
158 ]
159
160 scenario sandbox-with-print-can-be-edited [
161 local-scope
162 trace-until 100/app
163 assume-screen 100/width, 20/height
164
165 assume-resources [
166 ]
167
168 env:&:environment <- new-programming-environment resources, screen, [print screen, 4]
169 render-all screen, env, render
170
171 assume-console [
172 ¦ press F4
173 ]
174 event-loop screen, console, env, resources
175 screen-should-contain [
176 ¦ . run (F4) .
177 ¦ . ╎ .
178 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
179 ¦ . ╎0 edit copy to recipe delete .
180 ¦ . ╎print screen, 4 .
181 ¦ . ╎screen: .
182 ¦ . ╎ .4 . .
183 ¦ . ╎ . . .
184 ¦ . ╎ . . .
185 ¦ . ╎ . . .
186 ¦ . ╎ . . .
187 ¦ . ╎─────────────────────────────────────────────────.
188 ¦ . ╎ .
189 ]
190
191 assume-console [
192 ¦ left-click 3, 65
193 ]
194 run [
195 ¦ event-loop screen, console, env, resources
196 ]
197 screen-should-contain [
198 ¦ . run (F4) .
199 ¦ . ╎print screen, 4 .
200 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
201 ¦ . ╎ .
202 ¦ . ╎ .
203 ]
204 ]
205
206 scenario editing-sandbox-after-scrolling-resets-scroll [
207 local-scope
208 trace-until 100/app
209 assume-screen 100/width, 10/height
210
211 assume-resources [
212 ]
213 env:&:environment <- new-programming-environment resources, screen, []
214 render-all screen, env, render
215
216 assume-console [
217 ¦ press ctrl-n
218 ¦ type [add 2, 2]
219 ¦ press F4
220 ¦ type [add 1, 1]
221 ¦ press F4
222 ¦ press page-down
223 ¦ press page-down
224 ]
225 event-loop screen, console, env, resources
226 screen-should-contain [
227 ¦ . run (F4) .
228 ¦ . ╎─────────────────────────────────────────────────.
229 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎1 edit copy to recipe delete .
230 ¦ . ╎add 2, 2 .
231 ¦ . ╎4 .
232 ¦ . ╎─────────────────────────────────────────────────.
233 ¦ . ╎ .
234 ]
235
236 assume-console [
237 ¦ left-click 2, 55
238 ]
239 run [
240 ¦ event-loop screen, console, env, resources
241 ]
242
243 screen-should-contain [
244 ¦ . run (F4) .
245 ¦ . ╎add 2, 2 .
246 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
247 ¦ . ╎0 edit copy to recipe delete .
248 ¦ . ╎add 1, 1 .
249 ¦ . ╎2 .
250 ¦ . ╎─────────────────────────────────────────────────.
251 ¦ . ╎ .
252 ]
253 ]
254
255 scenario editing-sandbox-updates-sandbox-count [
256 local-scope
257 trace-until 100/app
258 assume-screen 100/width, 10/height
259
260 assume-resources [
261 ]
262 env:&:environment <- new-programming-environment resources, screen, []
263 render-all screen, env, render
264
265 assume-console [
266 ¦ press ctrl-n
267 ¦ type [add 2, 2]
268 ¦ press F4
269 ¦ type [add 1, 1]
270 ¦ press F4
271 ]
272 event-loop screen, console, env, resources
273 screen-should-contain [
274 ¦ . run (F4) .
275 ¦ . ╎ .
276 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
277 ¦ . ╎0 edit copy to recipe delete .
278 ¦ . ╎add 1, 1 .
279 ¦ . ╎2 .
280 ¦ . ╎─────────────────────────────────────────────────.
281 ¦ . ╎1 edit copy to recipe delete .
282 ¦ . ╎add 2, 2 .
283 ¦ . ╎4 .
284 ]
285
286 assume-console [
287 ¦ left-click 3, 60
288 ¦ press F4
289 ]
290 run [
291 ¦ event-loop screen, console, env, resources
292 ]
293
294 screen-should-contain [
295 ¦ . run (F4) .
296 ¦ . ╎ .
297 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎─────────────────────────────────────────────────.
298 ¦ . ╎0 edit copy to recipe delete .
299 ¦ . ╎add 1, 1 .
300 ¦ . ╎2 .
301 ¦ . ╎─────────────────────────────────────────────────.
302 ¦ . ╎1 edit copy to recipe delete .
303 ¦ . ╎add 2, 2 .
304 ¦ . ╎4 .
305 ]
306
307 assume-console [
308 ¦ press page-down
309 ¦ press page-down
310 ¦ press page-down
311 ]
312 run [
313 ¦ event-loop screen, console, env, resources
314 ]
315
316 screen-should-contain [
317 ¦ . run (F4) .
318 ¦ . ╎─────────────────────────────────────────────────.
319 ¦ .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎1 edit copy to recipe delete .
320 ¦ . ╎add 2, 2 .
321 ¦ . ╎4 .
322 ¦ . ╎─────────────────────────────────────────────────.
323 ¦ . ╎ .
324 ]
325 ]