1
0
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:
Paul Licameli 2020-05-03 16:46:00 -04:00
parent 7cf9263889
commit b81c03c194
9 changed files with 90 additions and 56 deletions

View File

@ -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;

View File

@ -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()

View File

@ -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"

View File

@ -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

View File

@ -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 {

View File

@ -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();

View File

@ -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()

View File

@ -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"

View File

@ -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():