ktxt2 link to lock/unlock blocks

This commit is contained in:
2021-10-22 16:40:09 -04:00
parent 8bfa870146
commit 08be4c7459

View File

@@ -103,12 +103,19 @@
(vscode.postMessage (object type "deleteBlock" start start end end))) (vscode.postMessage (object type "deleteBlock" start start end end)))
(otherwise (throw "element $element is not a block")))) (otherwise (throw "element $element is not a block"))))
(function changeLockStatus [element newStatus]
(case element
((Block (object sourceEnd start outputStart end))
(vscode.postMessage (object type "replace" text (if newStatus KTxt2.lockedStart KTxt2.unlockedStart) start start end end)))
(otherwise (throw "element $element is not a block"))))
(function blockElements [source output locked idx] (function blockElements [source output locked idx]
(let [outerDiv (document.createElement "div") (let [outerDiv (document.createElement "div")
sourceDiv (document.createElement "div") sourceDiv (document.createElement "div")
outputDiv (document.createElement "div") outputDiv (document.createElement "div")
lockDiv (document.createElement "div") lockDiv (document.createElement "div")
xLink (document.createElement "a")] xLink (document.createElement "a")
lockLink (document.createElement "a")]
(outerDiv.setAttribute "class" "container") (outerDiv.setAttribute "class" "container")
(outerDiv.setAttribute "style" "display: flex;") (outerDiv.setAttribute "style" "display: flex;")
(sourceDiv.setAttribute "style" "width: 50%; white-space: pre;") (sourceDiv.setAttribute "style" "width: 50%; white-space: pre;")
@@ -128,16 +135,23 @@
(set lockDiv.innerHTML "!") (set lockDiv.innerHTML "!")
// TODO add a "generate" button and "lock" button // TODO add a "generate" button and "lock" button
) )
// Link that will delete the whole block: // Link that will delete the whole block:
(set xLink.innerHTML "x") (set xLink.innerHTML "x")
(xLink.addEventListener "click" (xLink.addEventListener "click"
->(deleteEntireBlock (nth ktxt2Elements idx))) ->(deleteEntireBlock (nth ktxt2Elements idx)))
(unless locked (unless locked
(outerDiv.appendChild xLink)) (outerDiv.appendChild xLink))
(outerDiv.appendChild sourceDiv) (outerDiv.appendChild sourceDiv)
(outerDiv.appendChild lockDiv) (outerDiv.appendChild lockDiv)
(outerDiv.appendChild outputDiv) (outerDiv.appendChild outputDiv)
(set lockLink.innerHTML (if locked "unlock" "lock"))
(lockLink.addEventListener "click"
->(changeLockStatus (nth ktxt2Elements idx) !locked))
(outerDiv.appendChild lockLink)
(content.appendChild outerDiv))) (content.appendChild outerDiv)))
(function :Void updateContent [text] (function :Void updateContent [text]