22ba0e7fb3
Introduce block device handling object to handle different storage types and multiboot still needs to be tested and docmentation adjusted
79 lines
2.7 KiB
Lua
79 lines
2.7 KiB
Lua
|
|
laptop.register_app("launcher", {
|
|
-- app_name = "Main launcher", -- not in launcher list
|
|
fullscreen = true,
|
|
formspec_func = function(launcher_app, mtos)
|
|
|
|
-- no system found. Error
|
|
if not mtos.sysdata then
|
|
local formspec = "size[10,7]background[10,7;0,0;laptop_launcher_insert_floppy.png;true]"..
|
|
"listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]"..
|
|
"list[nodemeta:"..mtos.pos.x..','..mtos.pos.y..','..mtos.pos.z..";main;2.5,3;1,1;]" ..
|
|
"list[current_player;main;0,6.5;8,1;]" ..
|
|
"listring[nodemeta:"..mtos.pos.x..','..mtos.pos.y..','..mtos.pos.z..";main]" ..
|
|
"listring[current_player;main]"
|
|
|
|
local idata = mtos.bdev:get_removable_disk()
|
|
if idata then
|
|
if idata.os_format == "boot" then
|
|
-- boot "default" launcher
|
|
return laptop.apps.launcher.formspec_func(launcher_app, mtos)
|
|
else
|
|
formspec = formspec .. "label[0,1.7;Disk found but not formatted to boot]"
|
|
end
|
|
end
|
|
return formspec
|
|
end
|
|
|
|
local c_row_count = 4
|
|
|
|
local i = 0
|
|
local out = "size[15,10]"
|
|
if mtos.theme.launcher_bg then
|
|
out = out..'background[15,10;0,0;'..mtos.theme.launcher_bg..';true]'
|
|
end
|
|
local appslist_sorted = {}
|
|
for name, def in pairs(laptop.apps) do
|
|
if def.app_name and not def.view then
|
|
table.insert(appslist_sorted, {name = name, def = def})
|
|
end
|
|
end
|
|
table.sort(appslist_sorted, function(a,b) return a.name < b.name end)
|
|
for i, e in ipairs(appslist_sorted) do
|
|
local x = math.floor((i-1) / c_row_count)*2 + 1
|
|
local y = ((i-1) % c_row_count)*2 + 1
|
|
out = out .. 'image_button['..x..','..y..';1,1;'..mtos.theme.app_button..'^'..(e.def.app_icon or 'logo.png')..';'..e.name..';]'..
|
|
'label['..(x-0.3)..','..(y+1)..';'..e.def.app_name..']'..
|
|
'tooltip['..e.name..';'..(e.def.app_info or e.name)..']' --;<bgcolor>;<fontcolor>]'
|
|
end
|
|
out = out..mtos.theme:get_button("11,9.8;4,0.7", "major", "os_clock", os.date("%c"))
|
|
return out
|
|
end,
|
|
appwindow_formspec_func = function(launcher_app, app, mtos)
|
|
local formspec = 'size[15,10]'
|
|
if mtos.theme.app_bg then
|
|
formspec = formspec..'background[0,0;15,10;'..mtos.theme.app_bg..';true]'
|
|
end
|
|
if #mtos.sysram.stack > 0 then
|
|
formspec = formspec..'image_button[-0.29,-0.31;1.09,0.61;'..mtos.theme.back_button..';os_back;<]'
|
|
end
|
|
if app.app_info then
|
|
if #mtos.sysram.stack > 0 then
|
|
formspec = formspec.."label[0.8,-0.29;"..app.app_info.."]"
|
|
else
|
|
formspec = formspec.."label[-0.1,-0.29;"..app.app_info.."]"
|
|
end
|
|
end
|
|
formspec = formspec..'image_button[14.2,-0.31;1.09,0.61;'..mtos.theme.exit_button..';os_exit;X]'
|
|
return formspec
|
|
end,
|
|
receive_fields_func = function(launcher_app, mtos, sender, fields)
|
|
for name, descr in pairs(fields) do
|
|
if laptop.apps[name] then
|
|
mtos:set_app(name)
|
|
break
|
|
end
|
|
end
|
|
end,
|
|
})
|