-- Rename various objects via gui. 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