new content menu (WIP)

This commit is contained in:
MihailRis
2024-05-02 04:07:07 +03:00
parent 690e3f54c9
commit 5915b811f2
27 changed files with 340 additions and 202 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
<panel size='400' padding='8' interval='8' color='0'>
<label context='menu'>@Page does not exists</label>
<label context='menu'>@Page not found</label>
<button onclick='menu:back()'>@Back</button>
</panel>
-6
View File
@@ -1,6 +0,0 @@
<panel size='550' color='0' padding='8' interval='5'>
<panel id='packs_panel' size='540,10' color='0,0,0,50' max-length='400'>
<!-- content is generated in script -->
</panel>
<button onclick='menu:back()'>@Back</button>
</panel>
-14
View File
@@ -1,14 +0,0 @@
function add_pack(packid, packinfo)
local callback = string.format('core.add_packs({%q})', packid)
packinfo.id = packid
packinfo.callback = callback
packinfo.icon = "gui/no_icon"
document.packs_panel:add(gui.template("pack", packinfo))
end
function on_open()
local packs = pack.get_available()
for i,id in ipairs(packs) do
add_pack(id, pack.get_info(id))
end
end
+11 -5
View File
@@ -1,7 +1,13 @@
<panel size='550' color='0' padding='8' interval='5'>
<panel id='packs_panel' size='540,10' color='0,0,0,50' max-length='400'>
<container size='767,454' color='#0F1E2DB2' padding='8' interval='5' context='menu'>
<panel id='packs_cur' pos='2' size='380,406' color='0' max-length='406'>
<!-- content is generated in script -->
</panel>
<button onclick='menu.page = "add_packs"'>@Add</button>
<button onclick='menu:back()'>@Back</button>
</panel>
<panel id='packs_add' pos='385,2' size='380,406' color='0' max-length='406'>
<!-- content is generated in script -->
</panel>
<button id='apply_btn' pos='2,410' size='380,40' onclick='apply()'>@Apply</button>
<button pos='385,410' size='338,40' onclick='menu:back()'>@Cancel</button>
<image onclick='refresh()' interactive='true' src='gui/refresh'
size='32' margin='7' gravity='bottom-right'
color='#FFFFFF80' hover-color='#FFFFFF10'/>
</container>
+77 -11
View File
@@ -1,19 +1,85 @@
function add_pack(packid, packinfo)
local remover = ''
if packid ~= "base" then
remover = string.format('core.remove_packs({%q})', packid)
function on_open()
refresh()
end
-- // FIXME: dependency checks
add_packs = {}
rem_packs = {}
function apply()
core.reconfig_packs(add_packs, rem_packs)
end
function refresh_changes()
document.apply_btn.enabled = (#add_packs>0) or (#rem_packs>0)
end
function move_pack(id)
-- cancel pack addition
if table.has(add_packs, id) then
document["pack_"..id]:move_into(document.packs_add)
table.remove_value(add_packs, id)
-- cancel pack removal
elseif table.has(rem_packs, id) then
document["pack_"..id]:move_into(document.packs_cur)
table.remove_value(rem_packs, id)
-- add pack
elseif table.has(packs_installed, id) then
document["pack_"..id]:move_into(document.packs_add)
table.insert(rem_packs, id)
-- remove pack
else
document["pack_"..id]:move_into(document.packs_cur)
table.insert(add_packs, id)
end
refresh_changes()
end
function place_pack(panel, packid, packinfo, callback)
packinfo.id = packid
callback = callback or ""
if packinfo.has_indices then
packid = packid.."*"
end
packinfo.id = packid
packinfo.remover = remover
document.packs_panel:add(gui.template("pack", packinfo))
packinfo.id_verbose = packid
packinfo.callback = callback
panel:add(gui.template("pack", packinfo))
end
function on_open()
local packs = pack.get_installed()
for i,id in ipairs(packs) do
add_pack(id, pack.get_info(id))
function refresh()
packs_installed = pack.get_installed()
packs_available = pack.get_available()
local packs_cur = document.packs_cur
local packs_add = document.packs_add
packs_cur:clear()
packs_add:clear()
refresh_changes()
for i,id in ipairs(packs_installed) do
local packinfo = pack.get_info(id)
packinfo.index = i
callback = id ~= "base" and string.format('move_pack("%s")', id) or nil
place_pack(packs_cur, id, packinfo, callback)
end
for i,id in ipairs(packs_available) do
local packinfo = pack.get_info(id)
packinfo.index = i
callback = string.format('move_pack("%s")', id)
place_pack(packs_add, id, packinfo, callback)
end
-- apply packs movements
for i,id in ipairs(packs_installed) do
if table.has(rem_packs, id) then
document["pack_"..id]:move_into(packs_add)
end
end
for i,id in ipairs(packs_available) do
if table.has(add_packs, id) then
document["pack_"..id]:move_into(packs_cur)
end
end
end
+3 -7
View File
@@ -1,6 +1,6 @@
<container onclick='%{callback}' size='540,80' color='#0F1E2DB2' hover-color='#0F1E2DF0'>
<container id='pack_%{id}' onclick='%{callback}' size='540,80' color='#00000040' hover-color='#00000080' z-index="%{index}">
<label color='#FFFFFF80' size='300,25' align='right' gravity='top-right'>
[%{id}]
[%{id_verbose}]
</label>
<label pos='78,6'>%{title}</label>
<label if='%{creator}' color='#CCFFE5B2' size='300,20' align='right'
@@ -10,9 +10,5 @@
<label pos='80,28' color='#FFFFFFB2'>
%{description}
</label>
<button if='%{remover}' onclick='%{remover}' color='0' hover-color='#FFFFFF2B'
gravity='center-right' margin='10' padding='0'>
<image src='gui/cross' size='32,32' color='#FFFFFF80'/>
</button>
<image pos='8,8' src='%{icon}' size='64'></image>
<image pos='8,8' src='%{icon}' size='64'/>
</container>