summaryrefslogtreecommitdiff
path: root/tslib.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tslib.lua')
-rw-r--r--tslib.lua207
1 files changed, 207 insertions, 0 deletions
diff --git a/tslib.lua b/tslib.lua
new file mode 100644
index 0000000..14196ad
--- /dev/null
+++ b/tslib.lua
@@ -0,0 +1,207 @@
+--TSLib
+--A product of Advanced Mesecons Devices, a Cheapie Systems company
+--This is free and unencumbered software released into the public domain.
+--See http://unlicense.org/ for more information
+
+--Since LuaCs can't dynamically link libraries,
+--you will have to "statically link" it by pasting this file
+--above the code that will use it.
+
+local tslib = {
+ getColorEscapeSequence = function(color)
+ return(string.char(0x1b).."(c@"..color..")")
+ end,
+ colorize = function(color,message)
+ return(string.char(0x1b).."(c@"..color..")"..message..string.char(0x1b).."(c@#FFFFFF)")
+ end,
+ _mt = {
+ setChannel = function(self,channel)
+ self._channel = channel
+ end,
+ getChannel = function(self)
+ return(self._channel)
+ end,
+ draw = function(self)
+ digiline_send(self._channel,self._commands)
+ end,
+ clear = function(self)
+ self._commands = {{command="clear"}}
+ end,
+ setLock = function(self,lock)
+ if lock then
+ table.insert(self._commands,{command="lock"})
+ else
+ table.insert(self._commands,{command="unlock"})
+ end
+ end,
+ addLabel = function(self,x,y,label,vertical)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ if type(label) ~= "string" then
+ label = tostring(label)
+ end
+ local cmd = {
+ command = "addlabel",
+ X = x,
+ Y = y,
+ label = label,
+ }
+ if vertical then cmd.command = "addvertlabel" end
+ table.insert(self._commands,cmd)
+ end,
+ addImage = function(self,x,y,w,h,tex)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if type(tex) ~= "string" then
+ tex = tostring(tex)
+ end
+ local cmd = {
+ command = "addimage",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ texture_name = tex,
+ }
+ table.insert(self._commands,cmd)
+ end,
+ addButton = function(self,x,y,w,h,name,label,exit)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if type(name) ~= "string" then
+ name = tostring(name)
+ end
+ if type(label) ~= "string" then
+ label = tostring(label)
+ end
+ local cmd = {
+ command = "addbutton",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ name = name,
+ label = label,
+ }
+ if exit then cmd.command = "addbutton_exit" end
+ table.insert(self._commands,cmd)
+ end,
+ addImageButton = function(self,x,y,w,h,name,label,tex,exit)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if type(name) ~= "string" then
+ name = tostring(name)
+ end
+ if type(label) ~= "string" then
+ label = tostring(label)
+ end
+ if type(tex) ~= "string" then
+ tex = tostring(tex)
+ end
+ local cmd = {
+ command = "addimage_button",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ name = name,
+ label = label,
+ image = tex,
+ }
+ if exit then cmd.command = "addimage_button_exit" end
+ table.insert(self._commands,cmd)
+ end,
+ addField = function(self,x,y,w,h,name,label,default,password)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if type(name) ~= "string" then
+ name = tostring(name)
+ end
+ if type(label) ~= "string" then
+ label = tostring(label)
+ end
+ if type(default) ~= "string" then
+ default = tostring(default)
+ end
+ local cmd = {
+ command = "addfield",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ name = name,
+ label = label,
+ default = default,
+ }
+ if password then cmd.command = "addpwdfield" end
+ table.insert(self._commands,cmd)
+ end,
+ addTextArea = function(self,x,y,w,h,name,label,default)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if type(name) ~= "string" then
+ name = tostring(name)
+ end
+ if type(label) ~= "string" then
+ label = tostring(label)
+ end
+ if type(default) ~= "string" then
+ default = tostring(default)
+ end
+ local cmd = {
+ command = "addtextarea",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ name = name,
+ label = label,
+ default = default,
+ }
+ table.insert(self._commands,cmd)
+ end,
+ addDropdown = function(self,x,y,w,h,name,choices,selected)
+ assert((type(x))=="number","Invalid X position")
+ assert((type(y))=="number","Invalid Y position")
+ assert((type(w))=="number","Invalid width")
+ assert((type(h))=="number","Invalid height")
+ if not selected then selected = 1 end
+ assert((type(selected))=="number","Invalid selection index")
+ if type(name) ~= "string" then
+ name = tostring(name)
+ end
+ assert((type(choices) == "table" and #choices >= 1),"Invalid choices list")
+ local cmd = {
+ command = "adddropdown",
+ X = x,
+ Y = y,
+ W = w,
+ H = h,
+ name = name,
+ choices = choices,
+ selected_id = selected,
+ }
+ table.insert(self._commands,cmd)
+ end,
+ },
+ new = function(self,channel)
+ local ret = {}
+ for k,v in pairs(self._mt) do
+ ret[k] = v
+ end
+ ret._channel = channel
+ ret._commands = {{command="clear"}}
+ return ret
+ end,
+}
+