mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-16 16:10:06 +02:00
Change the menu labels in vertical rulers...
... and recompute popup menu tables that depend on preferences. The code for labels in the rulers was unsatisfactory because (1) rescanning and editing the post-translation strings is a hack to avoid, and (2) separating the hints like "Shift-Left-Click" with a tab character made them invisible on Mac. So instead, append strings like " (Shift-Left-Click)"
This commit is contained in:
parent
7cf9263889
commit
b81c03c194
@ -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,13 +290,20 @@ 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"),
|
||||
AppendItem( "Fit", OnZoomFitVerticalID,
|
||||
MakeLabel( XXO("Zoom to Fit"), bVZoom, XXO("Shift-Right-Click") ),
|
||||
POPUP_MENU_FN( OnZoomFitVertical ) );
|
||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"),
|
||||
AppendItem( "In", OnZoomInVerticalID,
|
||||
MakeLabel( XXO("Zoom In"), bVZoom, XXO("Left-Click/Left-Drag") ),
|
||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"),
|
||||
AppendItem( "Out", OnZoomOutVerticalID,
|
||||
MakeLabel( XXO("Zoom Out"), bVZoom, XXO("Shift-Left-Click") ),
|
||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||
EndSection();
|
||||
|
||||
|
@ -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,9 +111,6 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
||||
const bool rightUp = event.RightUp();
|
||||
|
||||
|
||||
bool bVZoom;
|
||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||
|
||||
// Popup menu...
|
||||
using namespace WaveTrackViewConstants;
|
||||
if (
|
||||
@ -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