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
|
mesecon.lc_docs = {}
--Other mods can place their own examples in here.
--The table key will be used as the name.
mesecon.lc_docs.examples = {}
minetest.register_on_mods_loaded(function()
--Build a list of example names so that the order will stay the same when the formspecs are redrawn
mesecon.lc_docs.example_order = {}
for k in pairs(mesecon.lc_docs.examples) do
table.insert(mesecon.lc_docs.example_order,k)
end
table.sort(mesecon.lc_docs.example_order)
end)
function mesecon.lc_docs.generate_example_formspec(sel_index)
sel_index = math.max(sel_index,1)
sel_index = math.min(sel_index,#mesecon.lc_docs.example_order)
local selected_text = mesecon.lc_docs.examples[mesecon.lc_docs.example_order[sel_index]]
local fs = "textlist[0.25,0.6;3,9.05;example_list;"
for _,i in ipairs(mesecon.lc_docs.example_order) do
fs = fs..minetest.formspec_escape(i)..","
end
fs = string.sub(fs,1,-2)..";"..sel_index..";false]"
.."textarea[3.25,0.6;11.5,8.05;;;"..minetest.formspec_escape(selected_text).."]"
return fs
end
local included_examples = {
["R/S Latch"] = "rslatch.lua",
["Clock"] = "clock.lua",
["LCD Counter"] = "counter.lua",
}
for k,v in pairs(included_examples) do
local f = io.open(minetest.get_modpath("mesecons_luacontroller")..DIR_DELIM.."examples"..DIR_DELIM..v,"r")
mesecon.lc_docs.examples[k] = f:read("*all")
f:close()
end
--Other mods can provide their own help pages too, but the order of these must be specified and is not automatically sorted.
--In this table, the key is a number representing the position in the list, and the value is the description.
mesecon.lc_docs.help_order = {}
--In this table, the key is the description and the value in the content.
mesecon.lc_docs.help_pages = {}
function mesecon.lc_docs.generate_help_formspec(sel_index)
sel_index = math.max(sel_index,1)
sel_index = math.min(sel_index,#mesecon.lc_docs.help_order)
local selected_text = mesecon.lc_docs.help_pages[mesecon.lc_docs.help_order[sel_index]]
local fs = "textlist[0.25,0.6;3,9.05;help_list;"
for _,i in ipairs(mesecon.lc_docs.help_order) do
fs = fs..minetest.formspec_escape(i)..","
end
fs = string.sub(fs,1,-2)..";"..sel_index..";false]"
.."textarea[3.25,0.6;11.5,9.05;;;"..minetest.formspec_escape(selected_text).."]"
return fs
end
local included_help_order = {
"Introduction",
"Events",
"Lua Functions",
"Mesecons I/O",
"Terminal I/O",
"Digilines I/O",
"Interrupts",
}
local included_help_content = {
["Introduction"] = "introduction.txt",
["Events"] = "events.txt",
["Lua Functions"] = "luafunctions.txt",
["Mesecons I/O"] = "mesecons.txt",
["Terminal I/O"] = "terminal.txt",
["Digilines I/O"] = "digilines.txt",
["Interrupts"] = "interrupts.txt",
}
for _,v in ipairs(included_help_order) do
local filename = included_help_content[v]
local f = io.open(minetest.get_modpath("mesecons_luacontroller")..DIR_DELIM.."help"..DIR_DELIM..filename,"r")
table.insert(mesecon.lc_docs.help_order,v)
mesecon.lc_docs.help_pages[v] = f:read("*all")
f:close()
end
|