Quick toggle between playlists and waveform view
I wrote this script as a response to a question a member of the DUC had about a new command because Avid chose to put the new "markers" Track View Selector menu item in a new place between the previously often accessed "playlists" and "waveform" views.
I very happily made it myself, mostly borrowing from Kitch and Christian, who gave answers to questions about similar use cases in the past.
const trackViewSelector = sf.ui.proTools.selectedTrack.displaySelectorButton;
const selectedTrackView = sf.ui.proTools.selectedTrack.invalidate().displaySelectorButton.value.value;
function playlistsViewSelect () {
trackViewSelector.popupMenuSelect({ menuPath: ["playlists"],
})};
function waveformViewSelect () {
trackViewSelector.popupMenuSelect({ menuPath: ["waveform"],
})};
function main() {
sf.ui.proTools.appActivateMainWindow();
sf.ui.proTools.mainWindow.invalidate();
if (selectedTrackView === "waveform") {
playlistsViewSelect()
} else {
waveformViewSelect()
}};
main();
- Kitch Membery @Kitch2023-07-28 07:22:19.691Z
Great work, Brenden!
Here is a quick refactor to reduce the code down.
function setTrackView(viewMenuPath) { const selectedTrack = sf.ui.proTools.selectedTrack; const trackViewSelector = selectedTrack.displaySelectorButton; trackViewSelector.popupMenuSelect({ menuPath: viewMenuPath, }); } function main() { sf.ui.proTools.appActivateMainWindow(); sf.ui.proTools.mainWindow.invalidate(); const selectedTrack = sf.ui.proTools.selectedTrack; const selectedTrackView = selectedTrack.displaySelectorButton.value.invalidate().value; if (selectedTrackView === "waveform") { setTrackView(["playlists"]); } else { setTrackView(["waveform"]); } } main();
Brenden @nednednerb
Thanks!
Solely in the spirit of making up a challenge for myself, I reduced the code further, trying to simplify where possible and not double any work. Such as since I called value.invalidate().value only once, I popped that on the end instead of making a constant that added a few characters:
const sUP = sf.ui.proTools; const trackView = sUP.selectedTrack.displaySelectorButton; function setTrackView(viewMenuPath) { trackView.popupMenuSelect({ menuPath: viewMenuPath, }); } function main() { sUP.appActivateMainWindow(); sUP.mainWindow.invalidate(); if (trackView.value.invalidate().value === "waveform") { setTrackView(["playlists"]); } else { setTrackView(["waveform"]); } } main();
No real reason to do so. Easy practice :)