From 15a8e98a456b131e45a26d6a0bbe64107aeff4a8 Mon Sep 17 00:00:00 2001 From: Christian Fillion Date: Tue, 12 Feb 2019 22:44:48 -0500 Subject: [PATCH] Release Unselect hidden tracks (MCP and/or TCP) v1.0 (#156) * Release Unselect hidden tracks (MCP and/or TCP) v1.0 * sort MCP and TCP in alphabetical order --- .../cfillion_Unselect hidden tracks.lua | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Tracks Properties/cfillion_Unselect hidden tracks.lua diff --git a/Tracks Properties/cfillion_Unselect hidden tracks.lua b/Tracks Properties/cfillion_Unselect hidden tracks.lua new file mode 100644 index 000000000..3a55153fe --- /dev/null +++ b/Tracks Properties/cfillion_Unselect hidden tracks.lua @@ -0,0 +1,49 @@ +-- @description Unselect hidden tracks (MCP and/or TCP) +-- @author cfillion +-- @version 1.0 +-- @metapackage +-- @provides +-- [main] . > cfillion_Unselect tracks hidden in MCP.lua +-- [main] . > cfillion_Unselect tracks hidden in TCP.lua +-- [main] . > cfillion_Unselect tracks hidden in MCP and TCP.lua +-- @link cfillion.ca https://cfillion.ca +-- @donation Donate via PayPal https://paypal.me/cfillion +-- @about +-- This script provides three actions to unselect hidden selected tracks: +-- +-- - cfillion_Unselect tracks hidden in MCP.lua +-- - cfillion_Unselect tracks hidden in TCP.lua +-- - cfillion_Unselect tracks hidden in MCP and TCP.lua + +function enumSelectedTracksReverse() + local i = reaper.CountSelectedTracks(0) + return function() + i = i - 1 + return reaper.GetSelectedTrack(0, i) + end +end + +local TCP = 1<<9 +local MCP = 1<<10 + +local modes = { + ['TCP' ] = TCP, + ['MCP' ] = MCP, + ['MCP and TCP'] = TCP|MCP, +} + +local scriptName = ({reaper.get_action_context()})[2]:match("([^/\\_]+)%.lua$") +local mode = modes[scriptName:match("in (.+)$")] +assert(mode, 'Invalid filename, cannot deduce what to do.') + +reaper.Undo_BeginBlock() + +for track in enumSelectedTracksReverse() do + local _, state = reaper.GetTrackState(track) + + if state & mode == mode then + reaper.SetTrackSelected(track, false) + end +end + +reaper.Undo_EndBlock(scriptName, 1)