From 3a70705efcb5bfbabb8119e920c245e8e92e7587 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Fri, 2 Jul 2021 11:49:36 -0400 Subject: [PATCH] Slides can now open custom views --- presentation/slides.fnl | 54 +++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/presentation/slides.fnl b/presentation/slides.fnl index df8ef28..0ffecb3 100644 --- a/presentation/slides.fnl +++ b/presentation/slides.fnl @@ -3,6 +3,12 @@ (local {: parse} (util.require :presentation.engine)) (local core (require :core)) (local style (require :core.style)) +(local TileEditView (require :editor.tileedit)) +(local MapEditView (require :editor.mapedit)) +(local PortraitEditView (require :editor.portraitedit)) +(local FontEditView (require :editor.fontedit)) +(local ScreenEditView (require :editor.screenedit)) + (local h {:style true :font (renderer.font.load "presentation/font/PrintChar21.ttf" (* 64 SCALE)) @@ -26,15 +32,19 @@ node (root:get_node_for_view view)] (when node (node:close_active_view root)))) +(fn split-and-open [f ?split] + (let [focused-view core.active_view + focused-node (core.root_view:get_active_node) + _ (when ?split (focused-node:split ?split)) + view (f) + node (core.root_view:get_active_node)] + (when (= (core.root_view.root_node:get_node_for_view view) nil) (node:add_view view)) + (when ?split (core.set_active_view focused-view)) ; don't switch focus + #(view-cleanup view))) + +(fn openview [f ?split] {:action #(split-and-open f ?split)}) (fn openfile [filename ?split] - {:action (fn [] - (let [focused-view core.active_view - d (core.open_doc filename) - focused-node (core.root_view:get_active_node) - node (when ?split (focused-node:split ?split)) - view (core.root_view:open_doc d)] - (when ?split (core.set_active_view focused-view)) ; don't switch focus - #(view-cleanup view)))}) + (openview #(core.root_view:open_doc (core.open_doc filename)) ?split)) (parse [ [h "" "" "" @@ -74,7 +84,7 @@ " :loop [:bne :loop]" "Lexical scope with nested blocks" " [:block :loop (generate-loop-code) [:bne :loop]]"] -; ;; DEMO before tech dive +; ;; DEMO before tech dive?? [h "Wait WTF Is An Assembler" ** "It's just converting mnemonics to bytes, right?" {:image "presentation/pics/assembly-markup.png" :justify :center :pause-after true} @@ -94,5 +104,29 @@ "\"Immediate words\" can be Fennel functions that generate code!"] [h "Extensible Assembler??" ** "How do you turn code into bytes?" - " [:vm 1 2 :+ :.]"] + " [:vm 1 2 :+ :.]" + "Branching?" + " (vm:if [:do-true-thing] [:do-false-thing])" + "I can even do short-circuiting OR!" + " (vm:if-or [[:dup 1 :=] [:dup 3 :=]] [:do-true-thing] [:do-false-thing])"] + [h "Step 3: Tooling And Workflow" + ** "I want an environment that makes it easy to make graphical tools" + "I'm SO tired of web tech" + "Could LÖVE2D with an imgui work?"] + [h "lite" + ** "A small, highly-extensible text editor written in Lua" + "Backend is SDL" + "Could I rewrite it to run under LÖVE2D?" + " Yes! In a weekend!"] + [h "Custom Editors" + ** "14x16 tile editor" + (openview #(TileEditView)) + "Font editor" + (openview #(FontEditView)) + "Portrait editor" + (openview #(PortraitEditView)) + "Map editor" + (openview #(MapEditView)) + "Screen editor" + (lume.merge (openview #(ScreenEditView :neuttower/title.screen)) {:pause-after true})] ])