summaryrefslogtreecommitdiff
path: root/lua/backstack.lua
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-11-14 13:20:04 +1100
committerjacqueline <me@jacqueline.id.au>2023-11-14 13:20:04 +1100
commit71ed09a6f70901c9097973a44b24d6a6ced2834f (patch)
tree3d02e4e180cd0a5caa1185eba89181607c4bccb9 /lua/backstack.lua
parent8a0a167adbf3d9b6f8b6f16aaf20ca39ad5549de (diff)
downloadtangara-fw-71ed09a6f70901c9097973a44b24d6a6ced2834f.tar.gz
Add two-way databinding for lua, and flesh out the lua statusbar
Diffstat (limited to 'lua/backstack.lua')
-rw-r--r--lua/backstack.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/lua/backstack.lua b/lua/backstack.lua
new file mode 100644
index 00000000..c54fbac4
--- /dev/null
+++ b/lua/backstack.lua
@@ -0,0 +1,37 @@
+local lvgl = require("lvgl")
+
+local backstack = {
+ root = lvgl.Object(nil, {
+ w = lvgl.HOR_RES(),
+ h = lvgl.VER_RES(),
+ }),
+ stack = {},
+}
+
+function backstack:Top()
+ return self.stack[#self.stack]
+end
+
+function backstack:SetTopParent(parent)
+ local top = self:Top()
+ if top and top.root then
+ top.root:set_parent(parent)
+ end
+end
+
+function backstack:Push(screen)
+ self:SetTopParent(nil)
+ table.insert(self.stack, screen)
+ self:SetTopParent(self.root)
+end
+
+function backstack:Pop(num)
+ num = num or 1
+ for _ = 1, num do
+ local removed = table.remove(self.stack)
+ removed.root:delete()
+ end
+ self:SetTopParent(self.root)
+end
+
+return backstack