summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2022-07-21 20:03:39 +0000
committerOmar Rizwan <omar@omar.website>2022-07-22 16:17:29 +0000
commit60e22472eeb1c6ca0e03c5df8cd16b4552b87e81 (patch)
treeac5f0bdfbf3a5a22da628f4dd371859f35121e91 /virtual-programs
parentnext-id.txt (diff)
downloadfolk-60e22472eeb1c6ca0e03c5df8cd16b4552b87e81.tar.gz
folk-60e22472eeb1c6ca0e03c5df8cd16b4552b87e81.zip
more work on print.folk
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/print.folk34
1 files changed, 32 insertions, 2 deletions
diff --git a/virtual-programs/print.folk b/virtual-programs/print.folk
index f620cde6..6af8a032 100644
--- a/virtual-programs/print.folk
+++ b/virtual-programs/print.folk
@@ -72,8 +72,38 @@ $image
}]
}
+proc nextId {} {
+ set fp [open "programs/next-id.txt" r]
+ set id [string trim [read $fp]]
+ close $fp
+
+ set fp [open "programs/next-id.txt" w]
+ puts $fp [expr {$id + 1}]
+ close $fp
+
+ return $id
+}
+
+if {![info exists ::printjobs]} {set ::printjobs [dict create]}
When /someone/ wishes to print /code/ with job id /jobid/ {
- # if the job isn't already sent in ::printjobs
- # convert code to PostScript
+ # if the job was already dispatched
+ if {[dict get $::printjobs $jobid]} {return}
+ dict set ::printjobs $jobid true
+
+ set id [nextId]
+
+ set ps [programToPs $id $code]
+
+ # save code and ps to disk
+ set fp [open "programs/$id.folk" w]
+ puts $fp $code
+ close $fp
+
+ set fp [open "printed-programs/$id.ps" w]
+ puts $fp $ps
+ close $fp
+
# send PostScript to printer
+ # TODO: test on pi
+ exec "lpr printed-programs/$id.ps"
}