mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-10 09:01:13 +02:00
Store popup sub-menu caption with its item table
This commit is contained in:
parent
1e37172e6d
commit
9435e97fb8
@ -152,7 +152,9 @@ enum {
|
||||
// Table class for a sub-menu
|
||||
class WaveColorMenuTable : public PopupMenuTable
|
||||
{
|
||||
WaveColorMenuTable() : mpData(NULL) {}
|
||||
WaveColorMenuTable()
|
||||
: PopupMenuTable( XO("&Wave Color") )
|
||||
{}
|
||||
DECLARE_POPUP_MENU(WaveColorMenuTable);
|
||||
|
||||
public:
|
||||
@ -167,7 +169,7 @@ private:
|
||||
mpData = NULL;
|
||||
}
|
||||
|
||||
PlayableTrackControls::InitMenuData *mpData;
|
||||
PlayableTrackControls::InitMenuData *mpData{};
|
||||
|
||||
int IdOfWaveColor(int WaveColor);
|
||||
void OnWaveColorChange(wxCommandEvent & event);
|
||||
@ -249,7 +251,9 @@ void WaveColorMenuTable::OnWaveColorChange(wxCommandEvent & event)
|
||||
// Table class for a sub-menu
|
||||
class FormatMenuTable : public PopupMenuTable
|
||||
{
|
||||
FormatMenuTable() : mpData(NULL) {}
|
||||
FormatMenuTable()
|
||||
: PopupMenuTable{ XO("&Format") }
|
||||
{}
|
||||
DECLARE_POPUP_MENU(FormatMenuTable);
|
||||
|
||||
public:
|
||||
@ -264,7 +268,7 @@ private:
|
||||
mpData = NULL;
|
||||
}
|
||||
|
||||
PlayableTrackControls::InitMenuData *mpData;
|
||||
PlayableTrackControls::InitMenuData *mpData{};
|
||||
|
||||
int IdOfFormat(int format);
|
||||
|
||||
@ -370,7 +374,9 @@ void FormatMenuTable::OnFormatChange(wxCommandEvent & event)
|
||||
// Table class for a sub-menu
|
||||
class RateMenuTable : public PopupMenuTable
|
||||
{
|
||||
RateMenuTable() : mpData(NULL) {}
|
||||
RateMenuTable()
|
||||
: PopupMenuTable{ XO("Rat&e") }
|
||||
{}
|
||||
DECLARE_POPUP_MENU(RateMenuTable);
|
||||
|
||||
public:
|
||||
@ -385,7 +391,7 @@ private:
|
||||
mpData = NULL;
|
||||
}
|
||||
|
||||
PlayableTrackControls::InitMenuData *mpData;
|
||||
PlayableTrackControls::InitMenuData *mpData{};
|
||||
|
||||
int IdOfRate(int rate);
|
||||
void SetRate(WaveTrack * pTrack, double rate);
|
||||
@ -800,14 +806,14 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable)
|
||||
) );
|
||||
if( hasWaveform ){
|
||||
POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_SUB_MENU(XO("&Wave Color"), WaveColorMenuTable)
|
||||
POPUP_MENU_SUB_MENU(WaveColorMenuTable)
|
||||
}
|
||||
}
|
||||
|
||||
POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_SUB_MENU(XO("&Format"), FormatMenuTable)
|
||||
POPUP_MENU_SUB_MENU(FormatMenuTable)
|
||||
POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_SUB_MENU(XO("Rat&e"), RateMenuTable)
|
||||
POPUP_MENU_SUB_MENU(RateMenuTable)
|
||||
END_POPUP_MENU()
|
||||
|
||||
|
||||
|
@ -56,7 +56,8 @@ void PopupMenuTable::Menu::Extend(PopupMenuTable *pTable)
|
||||
{
|
||||
const auto subTable = pEntry->subTable;
|
||||
auto subMenu = BuildMenu( this->pParent, subTable, pUserData );
|
||||
this->AppendSubMenu( subMenu.release(), pEntry->caption.Translation());
|
||||
this->AppendSubMenu(
|
||||
subMenu.release(), subTable->Caption().Translation());
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
@ -55,7 +55,12 @@ struct PopupMenuTableEntry
|
||||
class PopupMenuTable : public wxEvtHandler
|
||||
{
|
||||
public:
|
||||
typedef PopupMenuTableEntry Entry;
|
||||
using Entry = PopupMenuTableEntry;
|
||||
|
||||
// Supply a nonempty caption for sub-menu tables
|
||||
PopupMenuTable( const TranslatableString &caption = {} )
|
||||
: mCaption{ caption }
|
||||
{}
|
||||
|
||||
class Menu
|
||||
: public wxMenu
|
||||
@ -95,6 +100,8 @@ public:
|
||||
static std::unique_ptr<Menu> BuildMenu
|
||||
(wxEvtHandler *pParent, PopupMenuTable *pTable, void *pUserData = NULL);
|
||||
|
||||
const TranslatableString &Caption() const { return mCaption; }
|
||||
|
||||
protected:
|
||||
virtual void Populate() = 0;
|
||||
void Clear() { mContents.clear(); }
|
||||
@ -108,6 +115,7 @@ protected:
|
||||
}
|
||||
|
||||
Entries mContents;
|
||||
TranslatableString mCaption;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -173,7 +181,7 @@ That's all!
|
||||
// begins function
|
||||
#define BEGIN_POPUP_MENU(HandlerClass) \
|
||||
void HandlerClass::Populate() { \
|
||||
typedef HandlerClass My;
|
||||
using My = HandlerClass;
|
||||
|
||||
#define POPUP_MENU_APPEND(type, id, string, memFn, subTable) \
|
||||
mContents.push_back( Entry { \
|
||||
@ -202,9 +210,9 @@ void HandlerClass::Populate() { \
|
||||
POPUP_MENU_APPEND_ITEM(Entry::CheckItem, id, string, memFn);
|
||||
|
||||
// classname names a class that derives from MenuTable and defines Instance()
|
||||
#define POPUP_MENU_SUB_MENU(string, classname) \
|
||||
#define POPUP_MENU_SUB_MENU(classname) \
|
||||
POPUP_MENU_APPEND( \
|
||||
Entry::SubMenu, -1, string, nullptr, &classname::Instance() );
|
||||
Entry::SubMenu, -1, classname::Instance().Caption(), nullptr, &classname::Instance() );
|
||||
|
||||
#define POPUP_MENU_SEPARATOR() \
|
||||
POPUP_MENU_APPEND( \
|
||||
|
Loading…
x
Reference in New Issue
Block a user