stockpiles: implement GUI controls
parent
2e43ea8b38
commit
1cde8cffa4
@ -0,0 +1,84 @@
|
|||||||
|
local _ENV = mkmodule('plugins.stockpiles')
|
||||||
|
|
||||||
|
--[[
|
||||||
|
|
||||||
|
Native functions:
|
||||||
|
|
||||||
|
* stockpiles_list_settings(dir_path), list files in directory
|
||||||
|
* stockpiles_load(file), with full path
|
||||||
|
* stockpiles_save(file), with full path
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local gui = require 'gui'
|
||||||
|
local script = require 'gui.script'
|
||||||
|
local persist = require 'persist-table'
|
||||||
|
|
||||||
|
if persist.GlobalTable.stockpiles == nil then
|
||||||
|
persist.GlobalTable.stockpiles = {}
|
||||||
|
persist.GlobalTable.stockpiles['settings_path'] = './stocksettings'
|
||||||
|
end
|
||||||
|
|
||||||
|
function tablify(iterableObject)
|
||||||
|
t={}
|
||||||
|
for k,v in ipairs(iterableObject) do
|
||||||
|
t[k] = v~=nil and v or 'nil'
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
function load_settings()
|
||||||
|
script.start(function()
|
||||||
|
local path = persist.GlobalTable.stockpiles['settings_path']
|
||||||
|
local list = stockpiles_list_settings(path)
|
||||||
|
local tok,i = script.showListPrompt('Stockpile Settings','Load which stockpile?',COLOR_WHITE,tablify(list))
|
||||||
|
if tok then
|
||||||
|
local filename = list[i];
|
||||||
|
stockpiles_load(path..'/'..filename);
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function save_settings(stockpile)
|
||||||
|
script.start(function()
|
||||||
|
--local sp = dfhack.gui.geSelectedBuilding(true)
|
||||||
|
local suggested = stockpile.name
|
||||||
|
if #suggested == 0 then
|
||||||
|
suggested = 'Stock1'
|
||||||
|
end
|
||||||
|
local path = persist.GlobalTable.stockpiles['settings_path']
|
||||||
|
local sok,filename = script.showInputPrompt('Stockpile Settings', 'Enter stockpile name', COLOR_WHITE, suggested)
|
||||||
|
if sok then
|
||||||
|
stockpiles_save(path..'/'..filename);
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function manage_settings(sp)
|
||||||
|
if not guard() then return false end
|
||||||
|
script.start(function()
|
||||||
|
local list = {'Load', 'Save'}
|
||||||
|
local tok,i = script.showListPrompt('Stockpile Settings','Load or Save Settings?',COLOR_WHITE,tablify(list))
|
||||||
|
if tok then
|
||||||
|
if i == 1 then
|
||||||
|
load_settings()
|
||||||
|
else
|
||||||
|
save_settings(sp)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function guard()
|
||||||
|
if not string.match(dfhack.gui.getCurFocus(), '^dwarfmode/QueryBuilding/Some/Stockpile') then
|
||||||
|
qerror("This script requires a stockpile selected in the 'q' mode")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function set_path(path)
|
||||||
|
persist.GlobalTable.stockpiles['settings_path'] = path
|
||||||
|
end
|
||||||
|
|
||||||
|
return _ENV
|
Loading…
Reference in New Issue