mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
Some more translatable string matters
This commit is contained in:
commit
29201bba1b
@ -20,6 +20,7 @@
|
||||
#include <math.h>
|
||||
|
||||
#include <wx/intl.h>
|
||||
#include <wx/simplebook.h>
|
||||
#include <wx/valgen.h>
|
||||
|
||||
#include "../Internat.h"
|
||||
@ -55,7 +56,7 @@ Param( DualMono, bool, wxT("DualMono"), true, false, tr
|
||||
Param( NormalizeTo, int, wxT("NormalizeTo"), kLoudness , 0 , nAlgos-1, 1 );
|
||||
|
||||
BEGIN_EVENT_TABLE(EffectLoudness, wxEvtHandler)
|
||||
EVT_CHOICE(wxID_ANY, EffectLoudness::OnUpdateUI)
|
||||
EVT_CHOICE(wxID_ANY, EffectLoudness::OnChoice)
|
||||
EVT_CHECKBOX(wxID_ANY, EffectLoudness::OnUpdateUI)
|
||||
EVT_TEXT(wxID_ANY, EffectLoudness::OnUpdateUI)
|
||||
END_EVENT_TABLE()
|
||||
@ -300,29 +301,69 @@ void EffectLoudness::PopulateOrExchange(ShuttleGui & S)
|
||||
S.AddVariableText(XO("&Normalize"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
|
||||
S
|
||||
mChoice = S
|
||||
.Validator<wxGenericValidator>( &mNormalizeTo )
|
||||
.AddChoice( {},
|
||||
Msgids(kNormalizeTargetStrings, nAlgos),
|
||||
mNormalizeTo
|
||||
);
|
||||
S.AddVariableText(XO("t&o"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
mNormalizeTo );
|
||||
S
|
||||
.AddVariableText(XO("t&o"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
|
||||
mLevelTextCtrl = S
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
.Name( XO("Loudness LUFS") )
|
||||
.Validator<FloatingPointValidator<double>>(
|
||||
2, &mLUFSLevel,
|
||||
NumValidatorStyle::ONE_TRAILING_ZERO,
|
||||
MIN_LUFSLevel, MAX_LUFSLevel
|
||||
)
|
||||
.AddTextBox( {}, wxT(""), 10);
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
mLeveldB = S.AddVariableText(XO("LUFS"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
mWarning = S.AddVariableText( {}, false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
// Use a notebook so we can have two controls but show only one
|
||||
// They target different variables with their validators
|
||||
mBook =
|
||||
S
|
||||
.StartSimplebook();
|
||||
{
|
||||
S.StartNotebookPage({});
|
||||
{
|
||||
S.StartHorizontalLay(wxALIGN_LEFT, false);
|
||||
{
|
||||
S
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
.Name( XO("Loudness LUFS") )
|
||||
.Validator<FloatingPointValidator<double>>(
|
||||
2, &mLUFSLevel,
|
||||
NumValidatorStyle::ONE_TRAILING_ZERO,
|
||||
MIN_LUFSLevel, MAX_LUFSLevel )
|
||||
.AddTextBox( {}, wxT(""), 10);
|
||||
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
S
|
||||
.AddVariableText(XO("LUFS"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
}
|
||||
S.EndHorizontalLay();
|
||||
}
|
||||
S.EndNotebookPage();
|
||||
|
||||
S.StartNotebookPage({});
|
||||
{
|
||||
S.StartHorizontalLay(wxALIGN_LEFT, false);
|
||||
{
|
||||
S
|
||||
.Name( XO("RMS dB") )
|
||||
.Validator<FloatingPointValidator<double>>(
|
||||
2, &mRMSLevel,
|
||||
NumValidatorStyle::ONE_TRAILING_ZERO,
|
||||
MIN_RMSLevel, MAX_RMSLevel )
|
||||
.AddTextBox( {}, wxT(""), 10);
|
||||
|
||||
S
|
||||
.AddVariableText(XO("dB"), false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
}
|
||||
S.EndHorizontalLay();
|
||||
}
|
||||
S.EndNotebookPage();
|
||||
}
|
||||
S.EndSimplebook();
|
||||
|
||||
mWarning =
|
||||
S
|
||||
.AddVariableText( {}, false,
|
||||
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
|
||||
}
|
||||
S.EndHorizontalLay();
|
||||
|
||||
@ -341,8 +382,6 @@ void EffectLoudness::PopulateOrExchange(ShuttleGui & S)
|
||||
S.EndMultiColumn();
|
||||
}
|
||||
S.EndVerticalLay();
|
||||
// To ensure that the UpdateUI on creation sets the prompts correctly.
|
||||
mGUINormalizeTo = !mNormalizeTo;
|
||||
}
|
||||
|
||||
bool EffectLoudness::TransferDataToWindow()
|
||||
@ -541,6 +580,14 @@ bool EffectLoudness::UpdateProgress()
|
||||
return !TotalProgress(mProgressVal, mProgressMsg);
|
||||
}
|
||||
|
||||
void EffectLoudness::OnChoice(wxCommandEvent & WXUNUSED(evt))
|
||||
{
|
||||
mChoice->GetValidator()->TransferFromWindow();
|
||||
mBook->SetSelection( mNormalizeTo );
|
||||
UpdateUI();
|
||||
mDualMonoCheckBox->Enable(mNormalizeTo == kLoudness);
|
||||
}
|
||||
|
||||
void EffectLoudness::OnUpdateUI(wxCommandEvent & WXUNUSED(evt))
|
||||
{
|
||||
UpdateUI();
|
||||
@ -557,33 +604,4 @@ void EffectLoudness::UpdateUI()
|
||||
}
|
||||
mWarning->SetLabel(wxT(""));
|
||||
EnableApply(true);
|
||||
|
||||
// Changing the prompts causes an unwanted UpdateUI event.
|
||||
// This 'guard' stops that becoming an infinite recursion.
|
||||
if (mNormalizeTo != mGUINormalizeTo)
|
||||
{
|
||||
mGUINormalizeTo = mNormalizeTo;
|
||||
if(mNormalizeTo == kLoudness)
|
||||
{
|
||||
FloatingPointValidator<double> vldLevel(2, &mLUFSLevel, NumValidatorStyle::ONE_TRAILING_ZERO);
|
||||
vldLevel.SetRange(MIN_LUFSLevel, MAX_LUFSLevel);
|
||||
mLevelTextCtrl->SetValidator(vldLevel);
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
mLevelTextCtrl->SetName(_("Loudness LUFS"));
|
||||
mLevelTextCtrl->SetValue(wxString::FromDouble(mLUFSLevel));
|
||||
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
|
||||
mLeveldB->SetLabel(_("LUFS"));
|
||||
}
|
||||
else // RMS
|
||||
{
|
||||
FloatingPointValidator<double> vldLevel(2, &mRMSLevel, NumValidatorStyle::ONE_TRAILING_ZERO);
|
||||
vldLevel.SetRange(MIN_RMSLevel, MAX_RMSLevel);
|
||||
mLevelTextCtrl->SetValidator(vldLevel);
|
||||
mLevelTextCtrl->SetName(_("RMS dB"));
|
||||
mLevelTextCtrl->SetValue(wxString::FromDouble(mRMSLevel));
|
||||
mLeveldB->SetLabel(_("dB"));
|
||||
}
|
||||
}
|
||||
|
||||
mDualMonoCheckBox->Enable(mNormalizeTo == kLoudness);
|
||||
}
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "Biquad.h"
|
||||
#include "EBUR128.h"
|
||||
|
||||
class wxChoice;
|
||||
class wxSimplebook;
|
||||
class ShuttleGui;
|
||||
|
||||
class EffectLoudness final : public Effect
|
||||
@ -72,6 +74,7 @@ private:
|
||||
sampleCount pos, size_t len);
|
||||
|
||||
bool UpdateProgress();
|
||||
void OnChoice(wxCommandEvent & evt);
|
||||
void OnUpdateUI(wxCommandEvent & evt);
|
||||
void UpdateUI();
|
||||
|
||||
@ -81,7 +84,6 @@ private:
|
||||
double mRMSLevel;
|
||||
bool mDualMono;
|
||||
int mNormalizeTo;
|
||||
int mGUINormalizeTo;
|
||||
|
||||
double mCurT0;
|
||||
double mCurT1;
|
||||
@ -96,8 +98,8 @@ private:
|
||||
float mRMS[2];
|
||||
std::unique_ptr<EBUR128> mLoudnessProcessor;
|
||||
|
||||
wxTextCtrl *mLevelTextCtrl;
|
||||
wxStaticText *mLeveldB;
|
||||
wxSimplebook *mBook;
|
||||
wxChoice *mChoice;
|
||||
wxStaticText *mWarning;
|
||||
wxCheckBox *mStereoIndCheckBox;
|
||||
wxCheckBox *mDualMonoCheckBox;
|
||||
|
@ -157,7 +157,9 @@ enum {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Table class
|
||||
|
||||
class NoteTrackVRulerMenuTable : public PopupMenuTable
|
||||
class NoteTrackVRulerMenuTable
|
||||
: public PopupMenuTable
|
||||
, private PrefsListener
|
||||
{
|
||||
NoteTrackVRulerMenuTable()
|
||||
: PopupMenuTable{ "NoteTrackVRuler" }
|
||||
@ -205,6 +207,12 @@ private:
|
||||
}
|
||||
|
||||
void InitUserData(void *pUserData) override;
|
||||
|
||||
void UpdatePrefs() override
|
||||
{
|
||||
// Because labels depend on advanced vertical zoom setting
|
||||
PopupMenuTable::Clear();
|
||||
}
|
||||
};
|
||||
|
||||
NoteTrackVRulerMenuTable &NoteTrackVRulerMenuTable::Instance()
|
||||
@ -248,15 +256,25 @@ void NoteTrackVRulerMenuTable::OnZoom( int iZoomCode ){
|
||||
|
||||
BEGIN_POPUP_MENU(NoteTrackVRulerMenuTable)
|
||||
|
||||
// Accelerators only if zooming enabled.
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
BeginSection( "Zoom" );
|
||||
BeginSection( "Basic" );
|
||||
AppendItem( "Reset", OnZoomResetID, XXO("Zoom Reset\tShift-Right-Click"), POPUP_MENU_FN( OnZoomReset ) );
|
||||
AppendItem( "Reset", OnZoomResetID,
|
||||
MakeLabel( XXO("Zoom Reset"), bVZoom, XXO("Shift-Right-Click")),
|
||||
POPUP_MENU_FN( OnZoomReset ) );
|
||||
AppendItem( "Max", OnZoomMaxID, XXO("Max Zoom"), POPUP_MENU_FN( OnZoomMax ) );
|
||||
EndSection();
|
||||
|
||||
BeginSection( "InOut" );
|
||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
AppendItem( "In", OnZoomInVerticalID,
|
||||
MakeLabel( XXO("Zoom In"), bVZoom, XXO("Left-Click/Left-Drag") ),
|
||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID,
|
||||
MakeLabel( XXO("Zoom Out"), bVZoom, XXO("Shift-Left-Click") ),
|
||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
EndSection();
|
||||
EndSection();
|
||||
|
||||
@ -285,9 +303,6 @@ UIHandle::Result NoteTrackVZoomHandle::Release
|
||||
const bool rightUp = event.RightUp();
|
||||
|
||||
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
// Popup menu...
|
||||
if (
|
||||
rightUp &&
|
||||
@ -301,25 +316,13 @@ UIHandle::Result NoteTrackVZoomHandle::Release
|
||||
(PopupMenuTable *) &NoteTrackVRulerMenuTable::Instance();
|
||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, pTable, &data);
|
||||
|
||||
// Accelerators only if zooming enabled.
|
||||
if( !bVZoom )
|
||||
{
|
||||
wxMenuItemList & L = pMenu->GetMenuItems();
|
||||
// let's iterate over the list in STL syntax
|
||||
wxMenuItemList::iterator iter;
|
||||
for (iter = L.begin(); iter != L.end(); ++iter)
|
||||
{
|
||||
wxMenuItem *pItem = *iter;
|
||||
// Remove accelerator, if any.
|
||||
pItem->SetItemLabel( (pItem->GetItemLabel() + "\t" ).BeforeFirst('\t') );
|
||||
}
|
||||
}
|
||||
|
||||
pParent->PopupMenu(pMenu.get(), event.m_x, event.m_y);
|
||||
|
||||
return data.result;
|
||||
}
|
||||
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
bVZoom &= event.GetId() != kCaptureLostEventId;
|
||||
if( !bVZoom )
|
||||
return RefreshAll;
|
||||
|
@ -290,14 +290,21 @@ EndSection();
|
||||
|
||||
|
||||
BeginSection( "Zoom" );
|
||||
// Accelerators only if zooming enabled.
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
AppendItem( "Reset", OnZoomResetID, XXO("Zoom Reset"),
|
||||
POPUP_MENU_FN( OnZoomReset ) );
|
||||
AppendItem( "Fit", OnZoomFitVerticalID, XXO("Zoom to Fit\tShift-Right-Click"),
|
||||
POPUP_MENU_FN( OnZoomFitVertical ) );
|
||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"),
|
||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"),
|
||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
AppendItem( "Fit", OnZoomFitVerticalID,
|
||||
MakeLabel( XXO("Zoom to Fit"), bVZoom, XXO("Shift-Right-Click") ),
|
||||
POPUP_MENU_FN( OnZoomFitVertical ) );
|
||||
AppendItem( "In", OnZoomInVerticalID,
|
||||
MakeLabel( XXO("Zoom In"), bVZoom, XXO("Left-Click/Left-Drag") ),
|
||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID,
|
||||
MakeLabel( XXO("Zoom Out"), bVZoom, XXO("Shift-Left-Click") ),
|
||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
EndSection();
|
||||
|
||||
END_POPUP_MENU()
|
||||
|
@ -20,7 +20,6 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "WaveTrackViewConstants.h"
|
||||
#include "../../../../AudioIOBase.h"
|
||||
#include "../../../../CellularPanel.h"
|
||||
#include "../../../../Menus.h"
|
||||
#include "../../../../Project.h"
|
||||
#include "../../../../ProjectAudioIO.h"
|
||||
#include "../../../../ProjectHistory.h"
|
||||
|
@ -52,6 +52,12 @@ void WaveTrackVRulerMenuTable::OnZoom(
|
||||
mpData->result = UpdateVRuler | RefreshAll;
|
||||
}
|
||||
|
||||
void WaveTrackVRulerMenuTable::UpdatePrefs()
|
||||
{
|
||||
// Because labels depend on advanced vertical zoom setting
|
||||
PopupMenuTable::Clear();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
HitTestPreview WaveTrackVZoomHandle::HitPreview(const wxMouseState &state)
|
||||
@ -105,10 +111,7 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
||||
const bool rightUp = event.RightUp();
|
||||
|
||||
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
// Popup menu...
|
||||
// Popup menu...
|
||||
using namespace WaveTrackViewConstants;
|
||||
if (
|
||||
rightUp &&
|
||||
@ -119,27 +122,13 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
||||
pTrack, rect, RefreshCode::RefreshNone, event.m_y, doZoom };
|
||||
|
||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, &table, &data);
|
||||
|
||||
// Accelerators only if zooming enabled.
|
||||
if( !bVZoom )
|
||||
{
|
||||
wxMenuItemList & L = pMenu->GetMenuItems();
|
||||
// let's iterate over the list in STL syntax
|
||||
wxMenuItemList::iterator iter;
|
||||
for (iter = L.begin(); iter != L.end(); ++iter)
|
||||
{
|
||||
wxMenuItem *pItem = *iter;
|
||||
// Remove accelerator, if any.
|
||||
pItem->SetItemLabel( (pItem->GetItemLabel() + "\t" ).BeforeFirst('\t') );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pParent->PopupMenu(pMenu.get(), event.m_x, event.m_y);
|
||||
|
||||
return data.result;
|
||||
}
|
||||
else{
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
// Ignore Capture Lost event
|
||||
bVZoom &= event.GetId() != kCaptureLostEventId;
|
||||
// shiftDown | rightUp | ZoomKind
|
||||
|
@ -16,7 +16,7 @@ class PopupMenuTable;
|
||||
class WaveTrack;
|
||||
#include "WaveTrackViewConstants.h"
|
||||
#include "../../../../UIHandle.h"
|
||||
|
||||
#include "../../../../Prefs.h"
|
||||
|
||||
namespace WaveTrackVZoomHandle
|
||||
{
|
||||
@ -53,7 +53,9 @@ namespace WaveTrackVZoomHandle
|
||||
|
||||
#include "../../../../widgets/PopupMenuTable.h" // to inherit
|
||||
|
||||
class WaveTrackVRulerMenuTable : public PopupMenuTable
|
||||
class WaveTrackVRulerMenuTable
|
||||
: public PopupMenuTable
|
||||
, private PrefsListener
|
||||
{
|
||||
public:
|
||||
struct InitMenuData
|
||||
@ -98,6 +100,8 @@ protected:
|
||||
{ OnZoom( WaveTrackViewConstants::kZoomIn );};
|
||||
void OnZoomOutVertical(wxCommandEvent&)
|
||||
{ OnZoom( WaveTrackViewConstants::kZoomOut );};
|
||||
|
||||
void UpdatePrefs() override;
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -265,6 +265,9 @@ PopupMenuTable &WaveformVRulerMenuTable::Instance()
|
||||
}
|
||||
|
||||
BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
||||
// Accelerators only if zooming enabled.
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
BeginSection( "Scales" );
|
||||
{
|
||||
@ -289,8 +292,11 @@ BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
||||
|
||||
BeginSection( "Zoom" );
|
||||
BeginSection( "Basic" );
|
||||
AppendItem( "Reset", OnZoomFitVerticalID, XXO("Zoom Reset\tShift-Right-Click"), POPUP_MENU_FN( OnZoomReset ) );
|
||||
AppendItem( "TimesHalf", OnZoomDiv2ID, XXO("Zoom x1/2"), POPUP_MENU_FN( OnZoomDiv2Vertical ) );
|
||||
AppendItem( "Reset", OnZoomFitVerticalID,
|
||||
MakeLabel( XXO("Zoom Reset"), bVZoom, XXO("Shift-Right-Click") ),
|
||||
POPUP_MENU_FN( OnZoomReset ) );
|
||||
AppendItem( "TimesHalf", OnZoomDiv2ID, XXO("Zoom x1/2"),
|
||||
POPUP_MENU_FN( OnZoomDiv2Vertical ) );
|
||||
AppendItem( "TimesTwo", OnZoomTimes2ID, XXO("Zoom x2"), POPUP_MENU_FN( OnZoomTimes2Vertical ) );
|
||||
|
||||
#ifdef EXPERIMENTAL_HALF_WAVE
|
||||
@ -299,8 +305,12 @@ BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
||||
EndSection();
|
||||
|
||||
BeginSection( "InOut" );
|
||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
AppendItem( "In", OnZoomInVerticalID,
|
||||
MakeLabel( XXO("Zoom In"), bVZoom, XXO("Left-Click/Left-Drag") ),
|
||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID,
|
||||
MakeLabel( XXO("Zoom Out"), bVZoom, XXO("Shift-Left-Click") ),
|
||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
EndSection();
|
||||
EndSection();
|
||||
|
||||
|
@ -78,7 +78,9 @@ enum
|
||||
OnMoveBottomID,
|
||||
};
|
||||
|
||||
class TrackMenuTable : public PopupMenuTable
|
||||
class TrackMenuTable
|
||||
: public PopupMenuTable
|
||||
, private PrefsListener
|
||||
{
|
||||
TrackMenuTable()
|
||||
: PopupMenuTable{ "Track" }
|
||||
@ -100,6 +102,12 @@ private:
|
||||
}
|
||||
|
||||
CommonTrackControls::InitMenuData *mpData{};
|
||||
|
||||
void UpdatePrefs() override
|
||||
{
|
||||
// Because labels depend on keyboard preferences
|
||||
PopupMenuTable::Clear();
|
||||
}
|
||||
};
|
||||
|
||||
TrackMenuTable &TrackMenuTable::Instance()
|
||||
|
@ -17,7 +17,6 @@ Paul Licameli split from TrackPanel.cpp
|
||||
|
||||
#include "../../AudioIO.h"
|
||||
#include "../../CommonCommandFlags.h"
|
||||
#include "../../Menus.h"
|
||||
#include "../../Project.h"
|
||||
#include "../../ProjectAudioIO.h"
|
||||
#include "../../ProjectAudioManager.h"
|
||||
|
@ -141,6 +141,11 @@ public:
|
||||
return mTop;
|
||||
}
|
||||
|
||||
void Clear()
|
||||
{
|
||||
mTop.reset();
|
||||
}
|
||||
|
||||
// Forms a computed item, which may be omitted when function returns null
|
||||
// and thus can be a conditional item
|
||||
template< typename Table >
|
||||
@ -162,6 +167,16 @@ private:
|
||||
const Registry::Placement &placement, Registry::BaseItemPtr pItem );
|
||||
|
||||
protected:
|
||||
// This convenience function composes a label, with the following optional
|
||||
// part put in parentheses if useExtra is true
|
||||
static TranslatableString MakeLabel( const TranslatableString &label,
|
||||
bool useExtra, const TranslatableString &extra )
|
||||
{
|
||||
return useExtra
|
||||
? XXO("%s (%s)").Format( label, extra )
|
||||
: label;
|
||||
}
|
||||
|
||||
virtual void Populate() = 0;
|
||||
|
||||
// To be used in implementations of Populate():
|
||||
|
Loading…
x
Reference in New Issue
Block a user