Skip to content

Commit 2205623

Browse files
Made it possible to dry run folders in OSARA's loudness menu (#1333)
1 parent 3489fe1 commit 2205623

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/reaper_osara.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,17 @@ bool doesAnySelectedTrackHaveItems () {
656656
return false;
657657
}
658658

659+
bool isAnySelectedTrackAFolder() {
660+
int selCount = CountSelectedTracks2(nullptr, true);
661+
for (int i = 0; i < selCount; ++i) {
662+
MediaTrack* track = GetSelectedTrack2(nullptr, i, false);
663+
if (!track) continue;
664+
if (GetMediaTrackInfo_Value(track, "I_FOLDERDEPTH") == 1)
665+
return true;
666+
}
667+
return false;
668+
}
669+
659670
const char* automationModeAsString(int mode) {
660671
// this works for track automation mode and global automation override.
661672
switch (mode) {
@@ -5660,12 +5671,13 @@ static HMENU addSubMenu(HMENU parent, int position, const char* label, bool enab
56605671

56615672
void cmdShowPeakAndLoudnessMenu(Command* command) {
56625673
double startTS, endTS;
5663-
GetSet_LoopTimeRange(false, false, &startTS, &endTS, false);
5674+
GetSet_LoopTimeRange(false, false, &startTS, &endTS, false);
56645675
int countTracks = CountTracks(nullptr);
56655676
int selTracks = CountSelectedTracks2(nullptr, true);
56665677
int itemCount = CountMediaItems(nullptr);
56675678
int selItems = CountSelectedMediaItems(nullptr);
56685679
const bool selTracksHaveItems = doesAnySelectedTrackHaveItems();
5680+
const bool selTracksIncludeFolder = isAnySelectedTrackAFolder();
56695681
HMENU menu = CreatePopupMenu();
56705682
// Master submenu
56715683
const bool nothingToDryRun = (startTS == endTS) && (countTracks == 0 || itemCount == 0);
@@ -5679,14 +5691,15 @@ void cmdShowPeakAndLoudnessMenu(Command* command) {
56795691
}
56805692
// Tracks submenu
56815693
// Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5682-
HMENU tracksSub = addSubMenu(menu, 1, "Tracks", selTracks > 0);
5694+
HMENU tracksSub = addSubMenu(menu, 1, "Tracks", selTracks > 0
5695+
&& (selTracksHaveItems || selTracksIncludeFolder));
56835696
if (selTracks > 0) {
56845697
// Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5685-
addMenuItem(tracksSub, 0, "Selected &tracks", 3, selTracksHaveItems);
5698+
addMenuItem(tracksSub, 0, "Selected &tracks", 3, selTracksHaveItems || selTracksIncludeFolder);
56865699
// Translators: An entry in OSARA's context menu for analyzing loudness statistics.
56875700
addMenuItem(tracksSub, 1, "Time &selection", 4, startTS != endTS);
56885701
// Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5689-
addMenuItem(tracksSub, 2, "&Mono summed selected tracks", 5, selTracksHaveItems);
5702+
addMenuItem(tracksSub, 2, "&Mono summed selected tracks", 5, selTracksHaveItems || selTracksIncludeFolder);
56905703
// Translators: An entry in OSARA's context menu for analyzing loudness statistics.
56915704
addMenuItem(tracksSub, 3, "Mono summed time selection", 6, startTS != endTS);
56925705
}
@@ -5705,7 +5718,7 @@ void cmdShowPeakAndLoudnessMenu(Command* command) {
57055718
int id = TrackPopupMenu(menu, TPM_NONOTIFY | TPM_RETURNCMD, 0, 0, 0, mainHwnd, nullptr);
57065719
switch (id) {
57075720
case 0: return; // canceled
5708-
case 1:Main_OnCommand(42440, 0); break; // Master mix
5721+
case 1: Main_OnCommand(42440, 0); break; // Master mix
57095722
case 2: Main_OnCommand(42441, 0); break; // Master mix within time selection
57105723
case 3: Main_OnCommand(42438, 0); break; // Selected tracks
57115724
case 4: Main_OnCommand(42439, 0); break; // Selected tracks within time selection

0 commit comments

Comments
 (0)