From 12ec479cf01243a24f70a220ffef8f771ccba2fe Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Tue, 1 Jan 2019 20:00:58 +0100 Subject: [PATCH] Re-added inventory widget --- nofs_demo/init.lua | 43 ++++++++++++++++++++++++----- nofs_lib/doc/Widgets.ods | Bin 20914 -> 20937 bytes nofs_lib/formspec.lua | 46 ++++++++++++++++---------------- nofs_lib/widgets_basic.lua | 25 ++++++++++------- nofs_lib/widgets_containers.lua | 2 +- 5 files changed, 76 insertions(+), 40 deletions(-) diff --git a/nofs_demo/init.lua b/nofs_demo/init.lua index 14b98d6..0d7ab2a 100644 --- a/nofs_demo/init.lua +++ b/nofs_demo/init.lua @@ -50,8 +50,7 @@ local inspector_form = { id = 'test_form', spacing = 0.1, margin = 0.7, - { type = 'label', label = 'TITRE', width = 3 }, - { type = 'tab', label = 'node', orientation = 'vetical', + { type = 'tab', label = 'node', orientation = 'vertical', data = function(form) local pos = form:get_context().pos local node = minetest.get_node(pos) @@ -67,7 +66,7 @@ local inspector_form = { { type = 'label', height = 1, width = 6, init = function(item) item:get_context().label = item.parent:get_context().data.param1 end }, { type = 'label', height = 1, width = 6, init = function(item) item:get_context().label = item.parent:get_context().data.param2 end }, }, - { type = 'tab', label = 'meta', orientation = 'vetical', + { type = 'tab', label = 'meta', orientation = 'vertical', { type = 'label', height = 1, width = 6, label = "Metadata:" }, { type = 'vbox', max_items = 3, @@ -86,12 +85,12 @@ local inspector_form = { end return data end, - { type = 'label', width = 2, height = nofs.fs_field_height, + { type = 'label', width = 2, init = function(item) item:get_context().label = item.parent:get_context().data.key end, }, - { type = 'field', width = 4, height = nofs.fs_field_height, + { type = 'field', width = 4, init = function(item) item:get_context().value = item.parent:get_context().data.value end, @@ -100,7 +99,7 @@ local inspector_form = { meta:set_string(item.parent:get_context().data.key, item:get_context().value) end, }, - { type = 'button', width = 1, height = nofs.fs_field_height, label="...", + { type = 'button', width = 1, label="...", on_clicked = function(item) local data = item.parent:get_context().data nofs.show_form(item.form.player_name, @@ -124,12 +123,42 @@ local inspector_form = { }, }, }, + { type = 'tab', label = 'inventory', orientation = 'vertical', + max_items = 1, id = 'inventory', + { type = 'vbox', + data = function(form) + local data = {} + local pos = form:get_context().pos + if pos then + local inv = minetest.get_meta(pos):get_inventory() + for key, _ in pairs(inv:get_lists()) do + data[#data+1] = { list = key } + end + end + return data + end, + { type = 'hbox', + { type = 'label', width = 4, + init = function(item) item:get_context().label = 'Inventory: '.. + item.parent.parent:get_context().data.list end }, + { type = 'pager', connected_to = 'inventory' }, + }, + { type = 'inventory', height = 5, width = 8, + init = function(item) + local pos = item.form:get_context().pos + local context = item:get_context() + context.location = string.format('nodemeta:%g,%g,%g', + pos.x, pos.y, pos.z) + context.list = item.parent:get_context().data.list + end + } + }, + }, { type = 'hbox', { type = 'button', width = 2, label= 'Cancel', exit = true, }, { type = 'button', width = 2, label = 'Save', exit = true, on_clicked = nofs.event.save }, }, - { type = 'pager' }, } minetest.register_tool("nofs_demo:node_inspector", { diff --git a/nofs_lib/doc/Widgets.ods b/nofs_lib/doc/Widgets.ods index 32c0d81fb7a971fca6e94b7d351b769bfa7ad526..577ed799c6af15a87188484025fa7b8d6f9a49a2 100644 GIT binary patch delta 10576 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 S|3`YCnxH}YPDpNccJD+_Ua`Z~fD2 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