* Add ability to apply settings to multiple selected layers at once.

* Clean up plugin plumbing.
This commit is contained in:
Anna Rose Wiggins 2024-07-30 21:10:43 -04:00
parent 82e1ab7523
commit 128258cd62
5 changed files with 94 additions and 83 deletions

View file

@ -3,91 +3,85 @@ extKey = "annabunches/abase" -- this must come before we require 'abase-commands
local cmd = require "abase-commands"
local listeners = require "abase-listeners"
function IsLayerSelectionMergable()
for _, layer in ipairs(app.range.layers) do
if layer.isGroup then return true end
end
return false
end
function init(plugin)
plugin:newCommand{
id="ABASEExportSpritesheetAdvanced",
title="Export Spritesheet (Advanced)",
group="file_export_1",
onclick=function()
cmd.ExportSpritesheetAdvanced()
end,
onenabled=function()
return app.activeSprite ~= nil
end
}
-- New menu UI elements
plugin:newMenuSeparator{
group="layer_popup_merge"
}
plugin:newMenuSeparator{
group="layer_popup_merge"
}
plugin:newMenuSeparator{
group="layer_merge"
}
plugin:newMenuSeparator{
group="layer_merge"
}
plugin:newMenuGroup{
id="abase_layer_settings",
title="Advanced Export",
group="layer_merge",
}
plugin:newMenuGroup{
id="abase_layer_settings",
title="Advanced Export",
group="layer_merge",
}
plugin:newMenuGroup{
id="abase_layer_settings_popup",
title="Advanced Export",
group="layer_popup_merge",
}
plugin:newMenuGroup{
id="abase_layer_settings_popup",
title="Advanced Export",
group="layer_popup_merge",
}
-- Menu plumbing for export command
plugin:newCommand{
id="ABASEExportSpritesheetAdvanced",
title="Export Spritesheet (Advanced)",
group="file_export_1",
onclick=cmd.ExportSpritesheetAdvanced,
onenabled=function()
return app.activeSprite ~= nil
end,
}
plugin:newCommand{
id="ABASEToggleIgnoreLayer",
title="Toggle Ignore",
group="abase_layer_settings",
onclick=function()
cmd.ToggleIgnore()
end
}
-- Menu plumbing for ToggleIgnore
plugin:newCommand{
id="ABASEToggleIgnoreLayer",
title="Toggle Ignore",
group="abase_layer_settings",
onclick=cmd.ToggleIgnore,
}
plugin:newCommand{
id="ABASEToggleIgnoreLayerPopup",
title="Toggle Ignore",
group="abase_layer_settings_popup",
onclick=function()
cmd.ToggleIgnore()
end
}
plugin:newCommand{
id="ABASEToggleIgnoreLayerPopup",
title="Toggle Ignore",
group="abase_layer_settings_popup",
onclick=cmd.ToggleIgnore,
}
plugin:newCommand{
id="ABASEToggleExportAsSprite",
title="Toggle Merge Group",
group="abase_layer_settings",
onclick=function()
if app.layer.isGroup then
cmd.ToggleExportAsSprite()
end
end,
onenabled=function()
return app.layer.isGroup
end
}
-- Menu plumbing for ToggleExportAsSprite
plugin:newCommand{
id="ABASEToggleExportAsSprite",
title="Toggle Merge Group",
group="abase_layer_settings",
onclick=cmd.ToggleExportAsSprite,
onenabled=IsLayerSelectionMergable,
}
plugin:newCommand{
id="ABASEToggleExportAsSpritePopup",
title="Toggle Merge Group",
group="abase_layer_settings_popup",
onclick=function()
if app.layer.isGroup then
cmd.ToggleExportAsSprite()
end
end,
onenabled=function()
return app.layer.isGroup
end
}
plugin:newCommand{
id="ABASEToggleExportAsSpritePopup",
title="Toggle Merge Group",
group="abase_layer_settings_popup",
onclick=cmd.ToggleExportAsSprite,
onenabled=IsLayerSelectionMergable,
}
app.events:on(
"aftercommand",
function(ev)
if (ev.name == "NewLayer") then
listeners.RecolorLayers()
end
end
)
-- Event hooks
app.events:on(
"aftercommand",
function(ev)
if (ev.name == "NewLayer") then
listeners.RecolorLayers()
end
end
)
end