summaryrefslogtreecommitdiff
path: root/README
blob: 9fe1660fac792841158b3818d68b19ca0f9bede4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
TSLib
=====

This is a library for Luacontrollers to more easily use the touchscreens from digistuff.
Since LuaCs can't dofile() or anything, this library is loaded by pasting the contents
of tslib.lua before the code that will use it.

Available Functions
===================

tslib:new([channel])
	Returns a new screen object, optionally setting the digilines channel in the process.

tslib.getColorEscapeSequence(color)
	Returns the escape sequence to set text to the given color. Identical behavior to minetest.get_color_escape_sequence().
	Valid colors are any 3, 4, 6 or 8-digit hex color (prefaced with #) or CSS L4 color string.

tslib.colorize(color,message)
	Returns the message with the text changed to the given color. Behaves similarly to minetest.colorize().
	
tslib.explode_textlist_event(event)
	Converts a textlist event into a table containing a "type" field ("INV" for no row selected, "CHG" for single-click, or "DCL" for double-click) and an "index" field with the item number clicked.
	Behaves similarly to minetest.explode_textlist_event().

screen:getChannel()
	Returns the current channel set for the screen object.

screen:setChannel()
	Changes the channel for the screen object.

screen:clear()
	Removes all commands from the screen's buffer.

screen:setLock(lockstate)
	Sets whether the screen can only be interacted with by owners of the area (true) or by anyone (false).

screen:addLabel(X,Y,text[,vertical])
	Adds a label (or vertical label) at the given X-Y position with the given text.

screen:addImage(X,Y,width,height,texture)
	Adds an image at the given X-Y position, with the given size and texture. Texture modifications (such as "^[brighten") are supported.

screen:addButton(X,Y,width,height,name,label[,exit])
	Adds a button at the given X-Y position, with the given size, name and label. An exit button will be created instead of a normal one if "exit" is true.
	NOTE: "label" is required and will read "nil" if not supplied! Use an empty string ("") to not have one.

screen:addImageButton(X,Y,width,height,name,label,texture[,exit])
	Adds an image button at the given X-Y position, with the given size, name, label and texture. An exit button will be created instead of a normal one if "exit" is true.
	NOTE: "label" is required and will read "nil" if not supplied! Use an empty string ("") to not have one.

screen:addField(X,Y,width,height,name,label,default[,password])
	Adds a single-line text field at the given X-Y position, with the given size, name, label, and default text. Set "password" to true to hide input (password-style field).
	NOTE: "label" and "default" are required and will read "nil" if not supplied! Use an empty string ("") to not have them.

screen:addTextArea(X,Y,width,height,name,label,default)
	Adds a multi-line text area at the given X-Y position, with the given size, name, label, and default text.
	NOTE: "label" and "default" are required and will read "nil" if not supplied! Use an empty string ("") to not have them.

screen:addDropdown(X,Y,width,height,name,choices[,selected])
	Adds a drop-down menu at the given X-Y position, with the given size, name, and list of choices (which should be a table).
	An item can optionally be pre-selected by adding a "selected" value. It will default to 1 (the first choice) if not supplied.
	
screen:addTextlist(X,Y,width,height,name,choices,selected,transparent)
	Adds a textlist at the given X-Y position, with the given size, name, and list of choices (which should be a table), optionally transparent, but the transparent flag must be given even if false.
	The item specified by the "selected" value will be pre-selected, or none if this is 0.

screen:draw()
	Sends the buffer contents to the screen.
	NOTE: You must call this after adding/changing items on the screen in order for the changes to take effect.

Example Code
============

local screen = tslib:new()
screen:setLock(true)
screen:setChannel("touchscreen")
screen:addLabel(0,0,tslib.colorize("#00FFFF","TSLib Demo"),false)
screen:addLabel(3,0,"Hello, world!",true)
screen:addImage(0,0.5,1,1,"default_dirt.png")
screen:addButton(0,1.5,1.5,1,"button","Button")
screen:addButton(0,2.5,2,1,"button2","Exit Button",true)
screen:addImageButton(0,3.5,1.5,1,"button3","Image Button","default_stone.png")
screen:addImageButton(0,4.5,2,1,"button4","Image Exit Button","default_tree.png",true)
screen:addField(0.3,6,2,1,"field","Field","TSLib")
screen:addField(0.3,7,2,1,"field2","Password Field","",true)
screen:addTextArea(4,3,2,3,"textarea","Text Area","This is a test of TSLib.")
screen:addDropdown(4,2,2,1,"dropdown",{"Apple","Orange","Banana"},2)
screen:draw()