6371e3d442437826b25852e1445f3144302e498d
[oweals/minetest.git] / games / minimal / mods / test / formspec.lua
1 local clip_fs = [[\r
2         style_type[label;noclip=%c]\r
3         style_type[button;noclip=%c]\r
4         style_type[image_button;noclip=%c]\r
5         style_type[item_image_button;noclip=%c]\r
6         style_type[tabheader;noclip=%c]\r
7         style_type[field;noclip=%c]\r
8         style_type[textarea;noclip=%c]\r
9         style_type[checkbox;noclip=%c]\r
10         style_type[dropdown;noclip=%c]\r
11         style_type[scrollbar;noclip=%c]\r
12         style_type[table;noclip=%c]\r
13 \r
14         label[0,0;A clipping test]\r
15         button[0,1;3,0.8;x;A clipping test]\r
16         image_button[0,2;3,0.8;bubble.png;x2;A clipping test]\r
17         item_image_button[0,3;3,0.8;default:sword_steel;x3;A clipping test]\r
18         tabheader[0,4.7;3,0.63;x4;Clip,Test,Text,Tabs;1;false;false]\r
19         field[0,5;3,0.8;x5;Title;]\r
20         textarea[0,6;3,1;x6;Title;]\r
21         checkbox[0,7.5;x7;This is a test;true]\r
22         dropdown[0,8;3,0.8;x8;Select An Item,One,Two,Three,Four,Five;1]\r
23         scrollbar[0,9;3,0.8;horizontal;x9;3]\r
24         tablecolumns[text;text]\r
25         table[0,10;3,1;x10;one,two,three,four;1]\r
26 ]]\r
27 \r
28 \r
29 local style_fs = [[\r
30         style[one_btn1;bgcolor=red;textcolor=yellow;bgcolor_hovered=orange;\r
31                 bgcolor_pressed=purple]\r
32         button[0,0;2.5,0.8;one_btn1;Button]\r
33 \r
34         style[one_btn2;border=false;textcolor=cyan]\r
35         button[0,1.05;2.5,0.8;one_btn2;Text Button]\r
36 \r
37         style[one_btn3;bgimg=bubble.png;bgimg_hovered=default_apple.png;\r
38                 bgimg_pressed=heart.png]\r
39         button[0,2.1;1,1;one_btn3;Bor]\r
40 \r
41         style[one_btn4;bgimg=bubble.png;bgimg_hovered=default_apple.png;\r
42                 bgimg_pressed=heart.png;border=false]\r
43         button[1.25,2.1;1,1;one_btn4;Bub]\r
44 \r
45         style[one_btn5;bgimg=bubble.png;bgimg_hovered=default_apple.png;\r
46                 bgimg_pressed=heart.png;border=false;alpha=false]\r
47         button[0,3.35;1,1;one_btn5;Alph]\r
48 \r
49         style[one_btn6;border=true]\r
50         image_button[0,4.6;1,1;bubble.png;one_btn6;Border]\r
51 \r
52         style[one_btn7;border=false]\r
53         image_button[1.25,4.6;1,1;bubble.png;one_btn7;NoBor]\r
54 \r
55         style[one_btn8;border=false]\r
56         image_button[0,5.85;1,1;bubble.png;one_btn8;Border;false;true;heart.png]\r
57 \r
58         style[one_btn9;border=true]\r
59         image_button[1.25,5.85;1,1;bubble.png;one_btn9;NoBor;false;false;heart.png]\r
60 \r
61         style[one_btn10;alpha=false]\r
62         image_button[0,7.1;1,1;bubble.png;one_btn10;NoAlpha]\r
63 \r
64         style[one_btn11;alpha=true]\r
65         image_button[1.25,7.1;1,1;bubble.png;one_btn11;Alpha]\r
66 \r
67         style[one_btn12;border=true]\r
68         item_image_button[0,8.35;1,1;default:sword_steel;one_btn12;Border]\r
69 \r
70         style[one_btn13;border=false]\r
71         item_image_button[1.25,8.35;1,1;default:sword_steel;one_btn13;NoBor]\r
72 \r
73 \r
74         container[2.75,0]\r
75 \r
76         style[one_tb1;textcolor=Yellow]\r
77         tabheader[0,3;2.5,0.63;one_tb1;Yellow,Text,Tabs;1;false;false]\r
78 \r
79         style[one_f1;textcolor=yellow]\r
80         field[0,4.25;2.5,0.8;one_f1;Field One;Yellow Text]\r
81 \r
82         style[one_f2;border=false;textcolor=cyan]\r
83         field[0,5.75;2.5,0.8;one_f2;Field Two;Borderless Cyan Text]\r
84 \r
85         style[one_f3;textcolor=yellow]\r
86         textarea[0,7.025;2.5,0.8;one_f3;Label;]] ..\r
87                 minetest.formspec_escape("Yellow Text\nLine two") .. [[ ]\r
88 \r
89         style[one_f4;border=false;textcolor=cyan]\r
90         textarea[0,8.324999999999999;2.5,0.8;one_f4;Label;]] ..\r
91                 minetest.formspec_escape("Borderless Cyan Text\nLine two") .. [[ ]\r
92 \r
93         container_end[]\r
94 ]]\r
95 \r
96 --style_type[label;textcolor=green]\r
97 --label[0,0;Green]\r
98 --style_type[label;textcolor=blue]\r
99 --label[0,1;Blue]\r
100 --style_type[label;textcolor=;border=true]\r
101 --label[1.2,0;Border]\r
102 --style_type[label;border=true;bgcolor=red]\r
103 --label[1.2,1;Background]\r
104 --style_type[label;border=;bgcolor=]\r
105 --label[0.75,2;Reset]\r
106 \r
107 \r
108 local pages = {\r
109         [[\r
110                 size[12,12]\r
111                 real_coordinates[true]\r
112                 image_button[0,0;1,1;logo.png;;1x1]\r
113                 image_button[1,0;2,2;logo.png;;2x2]\r
114                 button[0,2;1,1;;1x1]\r
115                 button[1,2;2,2;;2x2]\r
116                 item_image[0,4;1,1;air]\r
117                 item_image[1,4;2,2;air]\r
118                 item_image_button[0,6;1,1;test:node;;1x1]\r
119                 item_image_button[1,6;2,2;test:node;;2x2]\r
120                 field[3,.5;3,.5;name;Field;text]\r
121                 pwdfield[6,.5;3,1;name;Password Field]\r
122                 field[3,1;3,1;;Read-Only Field;text]\r
123                 textarea[3,2;3,.5;name;Textarea;text]\r
124                 textarea[6,2;3,2;name;Textarea;text\nmore text]\r
125                 textarea[3,3;3,1;;Read-Only Textarea;text\nmore text]\r
126                 textlist[3,4;3,2;name;Textlist,Perfect Coordinates;1;false]\r
127                 tableoptions[highlight=#ABCDEF75;background=#00000055;border=false]\r
128                 table[6,4;3,2;name;Table,Cool Stuff,Foo,Bar;2]\r
129                 dropdown[3,6;3,1;name;This,is,a,dropdown;1]\r
130                 dropdown[6,6;3,2;name;I,am,a,bigger,dropdown;5]\r
131                 image[0,8;3,2;ignore.png]\r
132                 box[3,7;3,1;#00A3FF]\r
133                 checkbox[3,8;name;Check me!;false]\r
134                 checkbox[3,9;name;Uncheck me now!;true]\r
135                 scrollbar[0,11.5;11.5,.5;horizontal;name;500]\r
136                 scrollbar[11.5,0;.5,11.5;vertical;name;0]\r
137                 list[current_player;main;6,8;3,2;1]\r
138                 button[9,0;2.5,1;name;]\r
139                 button[9,1;2.5,1;name;]\r
140                 button[9,2;2.5,1;name;]\r
141                 label[9,0;This is a label.\nLine\nLine\nLine\nEnd]\r
142                 button[9,3;1,1;name;]\r
143                 vertlabel[9,4;VERT]\r
144                 label[10,3;HORIZ]\r
145                 tabheader[6.5,0;6,0.65;name;Tab 1,Tab 2,Tab 3,Secrets;1;false;false]\r
146         ]],\r
147 \r
148                 "size[12,12]real_coordinates[true]" ..\r
149                 "label[0.375,0.375;Styled]" ..\r
150                 "label[6.375,0.375;Unstyled]" ..\r
151                 "box[0,0.75;12,0.1;#999]" ..\r
152                 "box[6,0.85;0.1,11.15;#999]" ..\r
153                 "container[0.375,1.225]" ..\r
154                 style_fs ..\r
155                 "container_end[]container[6.375,1.225]" ..\r
156                 style_fs:gsub("one_", "two_"):gsub("style%[[^%]]+%]", ""):gsub("style_type%[[^%]]+%]", "") ..\r
157                 "container_end[]",\r
158 \r
159                 "size[12,12]real_coordinates[true]" ..\r
160                 "label[0.1,0.5;Clip]" ..\r
161                 "container[-2.5,1]" .. clip_fs:gsub("%%c", "false") .. "container_end[]" ..\r
162                 "label[11,0.5;Noclip]" ..\r
163                 "container[11.5,1]" .. clip_fs:gsub("%%c", "true") .. "container_end[]",\r
164 }\r
165 \r
166 local function show_test_formspec(pname, page_id)\r
167         page_id = page_id or 2\r
168 \r
169         local fs = pages[page_id] .. "tabheader[0,0;6,0.65;maintabs;Real Coord,Styles,Noclip;" .. page_id .. ";false;false]"\r
170 \r
171         minetest.show_formspec(pname, "test:formspec", fs)\r
172 end\r
173 \r
174 minetest.register_on_player_receive_fields(function(player, formname, fields)\r
175         if formname ~= "test:formspec" then\r
176                 return false\r
177         end\r
178 \r
179         if fields.maintabs then\r
180                 show_test_formspec(player:get_player_name(), tonumber(fields.maintabs))\r
181                 return true\r
182         end\r
183 \r
184 end)\r
185 \r
186 minetest.register_node("test:node", {\r
187         tiles = { "air.png" }\r
188 })\r
189 \r
190 minetest.register_chatcommand("formspec", {\r
191         func = function(name)\r
192                 if not minetest.get_player_by_name(name) then\r
193                         return false, "You need to be online!"\r
194                 end\r
195 \r
196                 show_test_formspec(name)\r
197                 return true, "Opened formspec"\r
198         end,\r
199 })\r