So far I have editors working for code/input/output and display for all 4 panels. Data is going to be more work. But first we need to bolt in the BF interpreter.
GOJ2S3WQ6JYJDM3LTBJI4OPDOW7GJRH2YPONP5UWHSDEMDVB5ADQC local code = '[->+<]' -- addlocal code = '++>++++[<+>-] # now print result\n ++++ ++++ [<+++ +++ > -] < .' -- add 2 to 5local code = '++>++++[<+>-]<.'local cp = 1local data = {}local dp = 1function rfind(s, pat, i)if i == nil then i = #s endwhile i > 0 doif s:sub(i,i) == pat thenreturn iendi = i-1endreturn nilendwhile cp <= #code dolocal inst = code:sub(cp,cp)if inst == '<' thendp = dp-1elseif inst == '>' thendp = dp+1elseif inst == '+' thenif data[dp] == nil then data[dp] = 0 enddata[dp] = data[dp]+1elseif inst == '-' thenif data[dp] == nil then data[dp] = 0 enddata[dp] = data[dp]-1elseif inst == '[' thenif data[dp] == 0 thencp = code:find(']', cp)endelseif inst == ']' thenif data[dp] ~= 0 thencp = rfind(code, '[', cp)endelseif inst == '.' then--? print(string.char(data[dp]))print(data[dp])elseif inst == ',' thendata[dp] = string.byte(io.read(1))elseif inst == '#' thencp = code:find('\n', cp)endcp = cp+1endprint('---')for i,n in ipairs(data) doprint(i,n)end
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)In = create_editor(1, 1)Code = create_editor(2, 1)Data = {}for i=1,10 dotable.insert(Data, 0)endOut = create_editor(3, 1)end
{"on.keychord_press":65,"on.text_input":66,"fw_app":"bf","Num_panels_horizontal":23,"Data":46,"on.initialize":68,"draw_data":63,"Margin":27,"Font_size":28,"Cursor":38,"on.mouse_press":67,"create_editor":62,"on.draw":49,"Code":31,"on":1,"In":32,"Num_panels_vertical":24,"Out":33,"fw_parent":67}
on.mouse_press = function(x,y, mouse_button)if x < In.right thenCursor = Inedit.mouse_press(Cursor, x,y, mouse_button)elseif x < Code.right thenif y < App.screen.height/2 thenCursor = Codeedit.mouse_press(Cursor, x,y, mouse_button)elseCursor = DataendelseCursor = Outedit.mouse_press(Cursor, x,y, mouse_button)endend
{"create_editor":62,"Code":31,"In":32,"on.text_input":66,"Out":33,"on":1,"Cursor":38,"fw_app":"bf","Num_panels_horizontal":23,"Num_panels_vertical":24,"on.keychord_press":65,"on.initialize":56,"draw_data":63,"fw_parent":66,"Margin":27,"Data":46,"Font_size":28,"on.draw":49,"on.mouse_press":67}
on.text_input = function(t)if Cursor thenedit.text_input(Cursor, t)endend
{"create_editor":62,"Code":31,"In":32,"on.text_input":66,"Out":33,"on":1,"Cursor":38,"fw_app":"bf","Num_panels_horizontal":23,"Num_panels_vertical":24,"on.keychord_press":65,"on.initialize":56,"draw_data":63,"fw_parent":65,"Margin":27,"Data":46,"Font_size":28,"on.draw":49,"on.mouse_press":64}
on.keychord_press = function(chord, key)if Cursor thenedit.keychord_press(Cursor, chord, key)endend
{"create_editor":62,"Code":31,"In":32,"Out":33,"on":1,"Cursor":38,"fw_app":"bf","Num_panels_horizontal":23,"Num_panels_vertical":24,"on.keychord_press":65,"on.initialize":56,"draw_data":63,"fw_parent":64,"Margin":27,"Data":46,"Font_size":28,"on.draw":49,"on.mouse_press":64}
on.mouse_press = function(x,y, mouse_button)if x < In.right thenCursor = Inelseif x < Code.right thenif y < App.screen.height/2 thenCursor = CodeelseCursor = DataendelseCursor = Outendedit.mouse_press(Cursor, x,y, mouse_button)end
{"create_editor":62,"Code":31,"In":32,"Out":33,"on":1,"Cursor":38,"fw_app":"bf","Num_panels_horizontal":23,"Num_panels_vertical":24,"on.initialize":56,"draw_data":63,"fw_parent":63,"Margin":27,"Data":46,"Font_size":28,"on.draw":49,"on.mouse_press":64}
{"create_editor":62,"Code":31,"In":32,"Out":33,"on":1,"Cursor":38,"fw_app":"bf","Num_panels_horizontal":23,"Num_panels_vertical":24,"on.initialize":56,"draw_data":63,"fw_parent":62,"Margin":27,"Data":46,"Font_size":28,"on.draw":49,"on.mouse_press":48}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Margin + 20local y = Margin + panel_height + Margin + 20for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x+2,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Margin + 20endendend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":61,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":62,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":61}
create_editor = function(col, row)local panel_width = (App.screen.width - Margin * (Num_panels_horizontal + 1)) / Num_panels_horizontallocal left = (col - 1) * (Margin + panel_width) + Marginlocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[col]+1)) / Num_panels_vertical[col]local top = (row - 1) * (Margin + panel_height) + Marginlocal result = edit.initialize_state(top+5, left+5, left+panel_width-5, Font_size, math.floor(Font_size*1.3))Text.redraw_all(result)return resultend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":61,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":60}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Margin + 20local y = Margin + panel_height + Margin + 20print(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x+2,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Margin + 20endendend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":60,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":59}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Margin + 20local y = Margin + panel_height + Margin + 20print(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Margin + 20endendend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":59,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":58}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Margin + 5local y = Margin + panel_height + Margin + 5print(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Margin + 5endendend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":58,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":56}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginprint(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Marginendendend
{"Cursor":38,"Num_panels_horizontal":23,"on.mouse_press":48,"on.initialize":56,"draw_data":57,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Data":46,"In":32,"Out":33,"fw_app":"bf","Num_panels_vertical":24,"on":1,"fw_parent":56}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginprint(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80if i%5 == 0 theny = y + 40x = Margin + panel_width + Marginendend
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)In = create_editor(1, 1)Code = create_editor(2, 1)print(Code)Data = {}print('data')for i=1,10 dotable.insert(Data, 0)endOut = create_editor(3, 1)end
{"Num_panels_vertical":24,"on.mouse_press":48,"on.initialize":56,"draw_data":55,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Cursor":38,"Out":33,"Data":46,"In":32,"Num_panels_horizontal":23,"fw_parent":55,"on":1,"fw_app":"bf"}
{"Num_panels_vertical":24,"on.mouse_press":48,"on.initialize":47,"draw_data":55,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Cursor":38,"Out":33,"Data":46,"In":32,"Num_panels_horizontal":23,"fw_parent":54,"on":1,"fw_app":"bf"}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginprint(x,y, App.screen.width, App.screen.height, #data)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80endend
{"Num_panels_vertical":24,"on.mouse_press":48,"on.initialize":47,"draw_data":54,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Cursor":38,"Out":33,"Data":46,"In":32,"Num_panels_horizontal":23,"fw_parent":53,"on":1,"fw_app":"bf"}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginprint(x,y, App.screen.width, App.screen.height)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80endend
{"Num_panels_vertical":24,"on.mouse_press":48,"on.initialize":47,"draw_data":53,"Margin":27,"Font_size":28,"on.draw":49,"create_editor":37,"Code":31,"Cursor":38,"Out":33,"Data":46,"In":32,"Num_panels_horizontal":23,"fw_parent":52,"on":1,"fw_app":"bf"}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginprint(x,y)for i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80endend
{"Code":31,"Cursor":38,"on":1,"on.mouse_press":48,"Data":46,"fw_app":"bf","on.draw":49,"Num_panels_horizontal":23,"Num_panels_vertical":24,"on.initialize":47,"Margin":27,"fw_parent":51,"Font_size":28,"draw_data":52,"Out":33,"create_editor":37,"In":32}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginfor i,d in ipairs(data) doApp.color{r=0.5,g=0.5,b=0.5}love.graphics.rectangle('line', x,y, 60, 30, 2,2)App.color{r=0,g=0,b=0}love.graphics.print(d, x,y)x = x+80endend
{"Code":31,"Cursor":38,"on":1,"on.mouse_press":48,"Data":46,"fw_app":"bf","on.draw":49,"Num_panels_horizontal":23,"Num_panels_vertical":24,"on.initialize":47,"Margin":27,"fw_parent":50,"Font_size":28,"draw_data":51,"Out":33,"create_editor":37,"In":32}
draw_data = function(data)-- assumes data is in middle column, bottom halflocal panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal panel_height = (App.screen.height - Margin*3) / 2local x = Margin + panel_width + Marginlocal y = Margin + panel_height + Marginfor i,d in ipairs(data) doendend
{"Code":31,"Cursor":38,"on":1,"on.mouse_press":48,"Data":46,"fw_app":"bf","on.draw":49,"Num_panels_horizontal":23,"Num_panels_vertical":24,"on.initialize":47,"Margin":27,"fw_parent":49,"Font_size":28,"draw_data":50,"Out":33,"create_editor":37,"In":32}
draw_data = function(data)end
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+Margin, y+Margin, panel_width, panel_height, 5,5)y = y + Margin + panel_heightendx = x + Margin + panel_widthendedit.draw(In, Text_color, Cursor ~= In)edit.draw(Code, Text_color, Cursor ~= Code)edit.draw(Out, Text_color, Cursor ~= Out)draw_data(Data)end
{"Code":31,"create_editor":37,"Num_panels_horizontal":23,"on.initialize":47,"Num_panels_vertical":24,"Font_size":28,"on":1,"Cursor":38,"on.mouse_press":48,"Data":46,"In":32,"fw_app":"bf","on.draw":49,"Margin":27,"Out":33,"fw_parent":48}
on.mouse_press = function(x,y, mouse_button)if x < In.right thenCursor = Inelseif x < Code.right thenif y < App.screen.height/2 thenCursor = CodeelseCursor = DataendelseCursor = Outendend
{"Code":31,"create_editor":37,"Num_panels_horizontal":23,"on.initialize":47,"Num_panels_vertical":24,"Font_size":28,"on":1,"Cursor":38,"on.mouse_press":48,"Data":46,"In":32,"fw_app":"bf","on.draw":45,"Margin":27,"Out":33,"fw_parent":47}
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)In = create_editor(1, 1)Code = create_editor(2, 1)print(Code)Data = create_editor(2, 2)Out = create_editor(3, 1)end
{"Code":31,"Num_panels_horizontal":23,"on.initialize":47,"Num_panels_vertical":24,"Font_size":28,"on":1,"Cursor":38,"create_editor":37,"Data":46,"In":32,"fw_app":"bf","on.draw":45,"Margin":27,"Out":33,"fw_parent":46}
{"Out":33,"Data":46,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":45,"on":1,"fw_app":"bf","create_editor":37,"on.draw":45,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
Data = nil -- editor for data
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+Margin, y+Margin, panel_width, panel_height, 5,5)y = y + Margin + panel_heightendx = x + Margin + panel_widthendedit.draw(In, Text_color, Cursor ~= In)edit.draw(Code, Text_color, Cursor ~= Code)edit.draw(Data, Text_color, Cursor ~= Data)edit.draw(Out, Text_color, Cursor ~= Out)end
{"Out":33,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":44,"on":1,"fw_app":"bf","create_editor":37,"on.draw":45,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+Margin, y+Margin, panel_width, panel_height, 5,5)y = y + Margin + panel_heightendx = x + Margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"Out":33,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":43,"on":1,"fw_app":"bf","create_editor":37,"on.draw":44,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+Margin, y+margin, panel_width, panel_height, 5,5)y = y + Margin + panel_heightendx = x + Margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"Out":33,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":42,"on":1,"fw_app":"bf","create_editor":37,"on.draw":43,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+Margin, y+margin, panel_width, panel_height, 5,5)y = y + Margin + panel_heightendx = x + Margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"Out":33,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":41,"on":1,"fw_app":"bf","create_editor":37,"on.draw":42,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,Num_panels_horizontal dolocal panel_height = (App.screen.height - margin * (Num_panels_vertical[i]+1)) / Num_panels_vertical[i]local y = 0for j = 1,Num_panels_vertical[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"Out":33,"In":32,"Num_panels_horizontal":23,"Margin":27,"Cursor":38,"fw_parent":40,"on":1,"fw_app":"bf","create_editor":37,"on.draw":41,"Code":31,"Font_size":28,"Num_panels_vertical":24,"on.initialize":36}
on.draw = function()assert(#Num_panels_vertical == Num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"Out":33,"on.initialize":36,"Num_panels_vertical":24,"Margin":27,"fw_app":"bf","Font_size":28,"Cursor":38,"fw_parent":39,"create_editor":37,"on.draw":40,"Code":31,"In":32,"Num_panels_horizontal":23,"on":1}
on.draw = function()assert(#Num_panels_vertical == num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendedit.draw(In, Text_color, Cursor == In)edit.draw(Code, Text_color, Cursor == Code)edit.draw(Data, Text_color, Cursor == Data)edit.draw(Out, Text_color, Cursor == Out)end
{"In":32,"on":1,"Out":33,"on.initialize":36,"Cursor":38,"Num_panels_vertical":24,"Margin":27,"Num_panels_horizontal":23,"Font_size":28,"on.draw":39,"fw_parent":38,"create_editor":37,"fw_app":"bf","Code":31}
{"In":32,"on":1,"Out":33,"on.initialize":36,"Cursor":38,"Num_panels_vertical":24,"Margin":27,"Num_panels_horizontal":23,"Font_size":28,"on.draw":35,"fw_parent":37,"create_editor":37,"fw_app":"bf","Code":31}
Cursor = nil -- editor that has focus
{"on.initialize":36,"on":1,"Margin":27,"Font_size":28,"on.draw":35,"fw_app":"bf","create_editor":37,"Code":31,"fw_parent":36,"In":32,"Num_panels_horizontal":23,"Num_panels_vertical":24,"Out":33}
create_editor = function(col, row)local panel_width = (App.screen.width - Margin * (Num_panels_horizontal + 1)) / Num_panels_horizontallocal left = (col - 1) * (Margin + panel_width) + Marginlocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[col]+1)) / Num_panels_vertical[col]local top = (row - 1) * (Margin + panel_height) + Marginlocal result = edit.initialize_state(top, left, left+panel_width, Font_size, math.floor(Font_size*1.3))Text.redraw_all(result)return resultend
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)In = create_editor(1, 1)Code = create_editor(2, 1)print(Code)Data = create_editor(2, 2)Out = create_editor(3, 1)end
{"create_editor":30,"on.initialize":36,"on.draw":35,"Num_panels_vertical":24,"Font_size":28,"fw_app":"bf","In":32,"Margin":27,"Code":31,"Out":33,"Num_panels_horizontal":23,"fw_parent":35,"on":1}
on.draw = function()edit.draw(In)edit.draw(Code)edit.draw(Data)edit.draw(Out)assert(#Num_panels_vertical == num_panels_horizontal)App.color{r=0.5,g=0.5,b=0.5}local panel_width = (App.screen.width - Margin * (Num_panels_horizontal+1)) / Num_panels_horizontallocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"create_editor":30,"on.initialize":34,"on.draw":35,"Num_panels_vertical":24,"Font_size":28,"fw_app":"bf","In":32,"Margin":27,"Code":31,"Out":33,"Num_panels_horizontal":23,"fw_parent":34,"on":1}
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)In = create_editor(1, 1)Code = create_editor(2, 1)Data = create_editor(2, 2)Out = create_editor(3, 1)end
{"create_editor":30,"on.initialize":34,"on.draw":22,"Num_panels_vertical":24,"Font_size":28,"fw_app":"bf","In":32,"Margin":27,"Code":31,"Out":33,"Num_panels_horizontal":23,"fw_parent":33,"on":1}
{"create_editor":30,"on.initialize":29,"on.draw":22,"Num_panels_vertical":24,"Font_size":28,"fw_app":"bf","In":32,"Margin":27,"Code":31,"Out":33,"Num_panels_horizontal":23,"fw_parent":32,"on":1}
Out = nil -- right column
{"create_editor":30,"on.initialize":29,"on.draw":22,"Num_panels_vertical":24,"fw_app":"bf","In":32,"Margin":27,"Code":31,"Font_size":28,"Num_panels_horizontal":23,"fw_parent":31,"on":1}
In = nil -- left column
{"create_editor":30,"on.initialize":29,"on.draw":22,"Num_panels_vertical":24,"fw_app":"bf","Margin":27,"Code":31,"Font_size":28,"Num_panels_horizontal":23,"fw_parent":30,"on":1}
Code = nil -- editor for code editor in middle column, top half
{"create_editor":30,"on.initialize":29,"on.draw":22,"Num_panels_vertical":24,"fw_app":"bf","Margin":27,"Font_size":28,"Num_panels_horizontal":23,"fw_parent":29,"on":1}
create_editor = function(col, row)local panel_width = (App.screen.width - Margin * (Num_panels_horizontal + 1)) / Num_panels_horizontallocal left = (col - 1) * (Margin + panel_width) + Marginlocal panel_height = (App.screen.height - Margin * (Num_panels_vertical[col]+1)) / Num_panels_vertical[col]local top = (row - 1) * (Margin + panel_height) + Marginreturn edit.initialize_state(top, left, left+panel_width, Font_size, math.floor(Font_size*1.3))end
on.initialize = function()local font = love.graphics.newFont(Font_size)love.graphics.setFont(font)end
{"on.initialize":29,"on.draw":22,"Num_panels_vertical":24,"fw_app":"bf","Margin":27,"Font_size":28,"Num_panels_horizontal":23,"fw_parent":28,"on":1}
{"on.initialize":26,"on.draw":22,"Num_panels_vertical":24,"fw_app":"bf","Margin":27,"Font_size":28,"Num_panels_horizontal":23,"fw_parent":27,"on":1}
Font_size = 20
{"fw_app":"bf","Margin":27,"on":1,"on.initialize":26,"on.draw":22,"Num_panels_vertical":24,"fw_parent":26,"Num_panels_horizontal":23}
Margin = 15
on.initialize = function()love.graphics.setFont(love.graphics.newFont(20))end
{"fw_app":"bf","on":1,"on.initialize":26,"on.draw":22,"Num_panels_vertical":24,"fw_parent":25,"Num_panels_horizontal":23}
on.initialize = function()love.graphics.setFont(20)end
{"fw_app":"bf","on":1,"on.initialize":25,"on.draw":22,"Num_panels_vertical":24,"fw_parent":24,"Num_panels_horizontal":23}
{"fw_app":"bf","on":1,"on.draw":22,"Num_panels_vertical":24,"fw_parent":23,"Num_panels_horizontal":23}
Num_panels_vertical = {1,2,1}
{"fw_app":"bf","on":1,"on.draw":22,"fw_parent":22,"Num_panels_horizontal":23}
Num_panels_horizontal = 3
on.draw = function()-- draw a grid of equally-sized columns, each containing some number of equally-sized panelslocal num_panels_hor = 3local num_panels_ver = {1,2,1} -- number of vertical panels by columnassert(#num_panels_ver == num_panels_hor)App.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":22,"fw_parent":21,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized columns, each containing some number of equally-sized panelslocal num_panels_hor = 3local num_panels_ver = {3,4,1} -- number of vertical panels by columnassert(#num_panels_ver == num_panels_hor)App.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":21,"fw_parent":20,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor = 3local num_panels_ver = {3,4,1} -- number of vertical panels by columnassert(#num_panels_ver == num_panels_hor)App.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":20,"fw_parent":19,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor = 3local num_panels_ver = {1,2,1} -- number of vertical panels by columnassert(#num_panels_ver == num_panels_hor)App.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver[i] dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":19,"fw_parent":18,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor = 3local num_panels_ver = {1,2,1} -- number of vertical panels by columnassert(#num_panels_ver == num_panels_hor)App.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal x = 0for i = 1,num_panels_hor dolocal panel_height = (App.screen.height - margin * (num_panels_ver[i]+1)) / num_panels_ver[i]local y = 0for j = 1,num_panels_ver dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":18,"fw_parent":17,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 3, 1 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_hor doy = 0for j = 1,num_panels_ver dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":17,"fw_parent":16,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 3, 6 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_hor doy = 0for j = 1,num_panels_ver dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":16,"fw_parent":15,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 3, 1 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_hor doy = 0for j = 1,num_panels_ver dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)y = y + margin + panel_heightendx = x + margin + panel_widthendend
{"on.draw":15,"fw_parent":14,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 3, 1 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_ver dox = 0for j = 1,num_panels_hor dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)x = x + margin + panel_widthendy = y + margin + panel_heightendend
{"on.draw":14,"fw_parent":13,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 5, 2 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_ver dox = 0for j = 1,num_panels_hor dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)x = x + margin + panel_widthendy = y + margin + panel_heightendend
{"on.draw":13,"fw_parent":12,"fw_app":"bf","on":1}
on.draw = function()-- draw a grid of equally-sized panelslocal num_panels_hor, num_panels_ver = 3, 2 -- vary thisApp.color{r=0.5,g=0.5,b=0.5}local margin=15local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_ver dox = 0for j = 1,num_panels_hor dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)x = x + margin + panel_widthendy = y + margin + panel_heightendend
{"on.draw":12,"fw_parent":11,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15local num_panels_hor, num_panels_ver = 3, 1local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i = 1,num_panels_ver dox = 0for j = 1,num_panels_hor dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)x = x + margin + panel_widthendy = y + margin + panel_heightendend
{"on.draw":11,"fw_parent":10,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15local num_panels_hor, num_panels_ver = 3, 1local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlocal x,y = 0, 0for i in 1,num_panels_ver dox = 0for j in 1,num_panels_hor dolove.graphics.rectangle('line', x+margin, y+margin, panel_width, panel_height, 5,5)x = x + margin + panel_widthendy = y + margin + panel_heightendend
{"on.draw":10,"fw_parent":9,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15local num_panels_hor, num_panels_ver = 3, 1local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlocal panel_height = (App.screen.height - margin * (num_panels_ver+1)) / num_panels_verlove.graphics.rectangle('line', margin, margin, panel_width, panel_height, 5,5)end
{"on.draw":9,"fw_parent":8,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15local num_panels_hor, num_panels_ver = 3, 1local panel_width = (App.screen.width - margin * (num_panels_hor+1)) / num_panels_horlove.graphics.rectangle('line', margin, margin, panel_width, App.screen.height-margin*2, 5,5)end
{"on.draw":8,"fw_parent":7,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15local num_panels = 3local panel_width = (App.screen.width - margin * (num_panels+1)) / num_panelslove.graphics.rectangle('line', margin, margin, (App.screen.width-margin*4)/3, App.screen.height-margin*2, 5,5)end
{"on.draw":7,"fw_parent":6,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15love.graphics.rectangle('line', margin, margin, (App.screen.width-margin*4)/3, App.screen.height-margin*2, 5,5)end
{"on.draw":6,"fw_parent":5,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15love.graphics.rectangle('line', margin, margin, App.screen.width-margin*2, App.screen.height-margin*2, 5,5)end
{"on.draw":5,"fw_parent":4,"fw_app":"bf","on":1}
on.draw = function()App.color{r=0.5,g=0.5,b=0.5}local margin=15love.graphics.rectangle('line', margin, margin, App.screen.width-margin*2, App.screen.height-margin*2)end
{"on.draw":4,"fw_parent":3,"fw_app":"bf","on":1}
on.draw = function()local margin=15love.graphics.rectangle('line', margin, margin, App.screen.width-margin*2, App.screen.height-margin*2)end
{"on.draw":3,"fw_parent":2,"fw_app":"bf","on":1}
on.draw = function()local margin=15love.graphics.rectangle(margin, margin, App.screen.width-margin*2, App.screen.height-margin*2)end
{"on.draw":2,"fw_parent":1,"fw_app":"bf","on":1}