94 lines
2.7 KiB
Lua
94 lines
2.7 KiB
Lua
-- Rename various objects via gui.
|
|
--[[=begin
|
|
|
|
gui/rename
|
|
==========
|
|
Backed by `rename`, this script allows entering the desired name
|
|
via a simple dialog in the game ui.
|
|
|
|
* ``gui/rename [building]`` in :kbd:`q` mode changes the name of a building.
|
|
|
|
.. image:: /docs/images/rename-bld.png
|
|
|
|
The selected building must be one of stockpile, workshop, furnace, trap, or siege engine.
|
|
It is also possible to rename zones from the :kbd:`i` menu.
|
|
|
|
* ``gui/rename [unit]`` with a unit selected changes the nickname.
|
|
|
|
Unlike the built-in interface, this works even on enemies and animals.
|
|
|
|
* ``gui/rename unit-profession`` changes the selected unit's custom profession name.
|
|
|
|
.. image:: /docs/images/rename-prof.png
|
|
|
|
Likewise, this can be applied to any unit, and when used on animals it overrides
|
|
their species string.
|
|
|
|
The ``building`` or ``unit`` options are automatically assumed when in relevant UI state.
|
|
|
|
The example config binds building/unit rename to :kbd:`Ctrl`:kbd:`Shift`:kbd:`N`, and
|
|
unit profession change to :kbd:`Ctrl`:kbd:`Shift`:kbd:`T`.
|
|
|
|
=end]]
|
|
local gui = require 'gui'
|
|
local dlg = require 'gui.dialogs'
|
|
local plugin = require 'plugins.rename'
|
|
|
|
local mode = ...
|
|
local focus = dfhack.gui.getCurFocus()
|
|
|
|
local function verify_mode(expected)
|
|
if mode ~= nil and mode ~= expected then
|
|
qerror('Invalid UI state for mode '..mode)
|
|
end
|
|
end
|
|
|
|
local unit = dfhack.gui.getSelectedUnit(true)
|
|
local building = dfhack.gui.getSelectedBuilding(true)
|
|
|
|
if building and (not unit or mode == 'building') then
|
|
verify_mode('building')
|
|
|
|
if plugin.canRenameBuilding(building) then
|
|
dlg.showInputPrompt(
|
|
'Rename Building',
|
|
'Enter a new name for the building:', COLOR_GREEN,
|
|
building.name,
|
|
curry(plugin.renameBuilding, building)
|
|
)
|
|
else
|
|
dlg.showMessage(
|
|
'Rename Building',
|
|
'Cannot rename this type of building.', COLOR_LIGHTRED
|
|
)
|
|
end
|
|
elseif unit then
|
|
if mode == 'unit-profession' then
|
|
dlg.showInputPrompt(
|
|
'Rename Unit',
|
|
'Enter a new profession for the unit:', COLOR_GREEN,
|
|
unit.custom_profession,
|
|
function(newval)
|
|
unit.custom_profession = newval
|
|
end
|
|
)
|
|
else
|
|
verify_mode('unit')
|
|
|
|
local vname = dfhack.units.getVisibleName(unit)
|
|
local vnick = ''
|
|
if vname and vname.has_name then
|
|
vnick = vname.nickname
|
|
end
|
|
|
|
dlg.showInputPrompt(
|
|
'Rename Unit',
|
|
'Enter a new nickname for the unit:', COLOR_GREEN,
|
|
vnick,
|
|
curry(dfhack.units.setNickname, unit)
|
|
)
|
|
end
|
|
elseif mode then
|
|
verify_mode(nil)
|
|
end
|