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
|
// Table class
|
||||||
|
|
||||||
class NoteTrackVRulerMenuTable : public PopupMenuTable
|
class NoteTrackVRulerMenuTable
|
||||||
|
: public PopupMenuTable
|
||||||
|
, private PrefsListener
|
||||||
{
|
{
|
||||||
NoteTrackVRulerMenuTable()
|
NoteTrackVRulerMenuTable()
|
||||||
: PopupMenuTable{ "NoteTrackVRuler" }
|
: PopupMenuTable{ "NoteTrackVRuler" }
|
||||||
@ -205,6 +207,12 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InitUserData(void *pUserData) override;
|
void InitUserData(void *pUserData) override;
|
||||||
|
|
||||||
|
void UpdatePrefs() override
|
||||||
|
{
|
||||||
|
// Because labels depend on advanced vertical zoom setting
|
||||||
|
PopupMenuTable::Clear();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
NoteTrackVRulerMenuTable &NoteTrackVRulerMenuTable::Instance()
|
NoteTrackVRulerMenuTable &NoteTrackVRulerMenuTable::Instance()
|
||||||
@ -248,15 +256,25 @@ void NoteTrackVRulerMenuTable::OnZoom( int iZoomCode ){
|
|||||||
|
|
||||||
BEGIN_POPUP_MENU(NoteTrackVRulerMenuTable)
|
BEGIN_POPUP_MENU(NoteTrackVRulerMenuTable)
|
||||||
|
|
||||||
|
// Accelerators only if zooming enabled.
|
||||||
|
bool bVZoom;
|
||||||
|
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||||
|
|
||||||
BeginSection( "Zoom" );
|
BeginSection( "Zoom" );
|
||||||
BeginSection( "Basic" );
|
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 ) );
|
AppendItem( "Max", OnZoomMaxID, XXO("Max Zoom"), POPUP_MENU_FN( OnZoomMax ) );
|
||||||
EndSection();
|
EndSection();
|
||||||
|
|
||||||
BeginSection( "InOut" );
|
BeginSection( "InOut" );
|
||||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) );
|
AppendItem( "In", OnZoomInVerticalID,
|
||||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) );
|
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();
|
||||||
EndSection();
|
EndSection();
|
||||||
|
|
||||||
@ -285,9 +303,6 @@ UIHandle::Result NoteTrackVZoomHandle::Release
|
|||||||
const bool rightUp = event.RightUp();
|
const bool rightUp = event.RightUp();
|
||||||
|
|
||||||
|
|
||||||
bool bVZoom;
|
|
||||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
|
||||||
|
|
||||||
// Popup menu...
|
// Popup menu...
|
||||||
if (
|
if (
|
||||||
rightUp &&
|
rightUp &&
|
||||||
@ -301,25 +316,13 @@ UIHandle::Result NoteTrackVZoomHandle::Release
|
|||||||
(PopupMenuTable *) &NoteTrackVRulerMenuTable::Instance();
|
(PopupMenuTable *) &NoteTrackVRulerMenuTable::Instance();
|
||||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, pTable, &data);
|
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);
|
pParent->PopupMenu(pMenu.get(), event.m_x, event.m_y);
|
||||||
|
|
||||||
return data.result;
|
return data.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool bVZoom;
|
||||||
|
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||||
bVZoom &= event.GetId() != kCaptureLostEventId;
|
bVZoom &= event.GetId() != kCaptureLostEventId;
|
||||||
if( !bVZoom )
|
if( !bVZoom )
|
||||||
return RefreshAll;
|
return RefreshAll;
|
||||||
|
@ -290,14 +290,21 @@ EndSection();
|
|||||||
|
|
||||||
|
|
||||||
BeginSection( "Zoom" );
|
BeginSection( "Zoom" );
|
||||||
|
// Accelerators only if zooming enabled.
|
||||||
|
bool bVZoom;
|
||||||
|
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||||
|
|
||||||
AppendItem( "Reset", OnZoomResetID, XXO("Zoom Reset"),
|
AppendItem( "Reset", OnZoomResetID, XXO("Zoom Reset"),
|
||||||
POPUP_MENU_FN( OnZoomReset ) );
|
POPUP_MENU_FN( OnZoomReset ) );
|
||||||
AppendItem( "Fit", OnZoomFitVerticalID, XXO("Zoom to Fit\tShift-Right-Click"),
|
AppendItem( "Fit", OnZoomFitVerticalID,
|
||||||
POPUP_MENU_FN( OnZoomFitVertical ) );
|
MakeLabel( XXO("Zoom to Fit"), bVZoom, XXO("Shift-Right-Click") ),
|
||||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"),
|
POPUP_MENU_FN( OnZoomFitVertical ) );
|
||||||
POPUP_MENU_FN( OnZoomInVertical ) );
|
AppendItem( "In", OnZoomInVerticalID,
|
||||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"),
|
MakeLabel( XXO("Zoom In"), bVZoom, XXO("Left-Click/Left-Drag") ),
|
||||||
POPUP_MENU_FN( OnZoomOutVertical ) );
|
POPUP_MENU_FN( OnZoomInVertical ) );
|
||||||
|
AppendItem( "Out", OnZoomOutVerticalID,
|
||||||
|
MakeLabel( XXO("Zoom Out"), bVZoom, XXO("Shift-Left-Click") ),
|
||||||
|
POPUP_MENU_FN( OnZoomOutVertical ) );
|
||||||
EndSection();
|
EndSection();
|
||||||
|
|
||||||
END_POPUP_MENU()
|
END_POPUP_MENU()
|
||||||
|
@ -20,7 +20,6 @@ Paul Licameli split from TrackPanel.cpp
|
|||||||
#include "WaveTrackViewConstants.h"
|
#include "WaveTrackViewConstants.h"
|
||||||
#include "../../../../AudioIOBase.h"
|
#include "../../../../AudioIOBase.h"
|
||||||
#include "../../../../CellularPanel.h"
|
#include "../../../../CellularPanel.h"
|
||||||
#include "../../../../Menus.h"
|
|
||||||
#include "../../../../Project.h"
|
#include "../../../../Project.h"
|
||||||
#include "../../../../ProjectAudioIO.h"
|
#include "../../../../ProjectAudioIO.h"
|
||||||
#include "../../../../ProjectHistory.h"
|
#include "../../../../ProjectHistory.h"
|
||||||
|
@ -52,6 +52,12 @@ void WaveTrackVRulerMenuTable::OnZoom(
|
|||||||
mpData->result = UpdateVRuler | RefreshAll;
|
mpData->result = UpdateVRuler | RefreshAll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WaveTrackVRulerMenuTable::UpdatePrefs()
|
||||||
|
{
|
||||||
|
// Because labels depend on advanced vertical zoom setting
|
||||||
|
PopupMenuTable::Clear();
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
HitTestPreview WaveTrackVZoomHandle::HitPreview(const wxMouseState &state)
|
HitTestPreview WaveTrackVZoomHandle::HitPreview(const wxMouseState &state)
|
||||||
@ -105,10 +111,7 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
|||||||
const bool rightUp = event.RightUp();
|
const bool rightUp = event.RightUp();
|
||||||
|
|
||||||
|
|
||||||
bool bVZoom;
|
// Popup menu...
|
||||||
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
|
||||||
|
|
||||||
// Popup menu...
|
|
||||||
using namespace WaveTrackViewConstants;
|
using namespace WaveTrackViewConstants;
|
||||||
if (
|
if (
|
||||||
rightUp &&
|
rightUp &&
|
||||||
@ -119,27 +122,13 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
|
|||||||
pTrack, rect, RefreshCode::RefreshNone, event.m_y, doZoom };
|
pTrack, rect, RefreshCode::RefreshNone, event.m_y, doZoom };
|
||||||
|
|
||||||
auto pMenu = PopupMenuTable::BuildMenu(pParent, &table, &data);
|
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);
|
pParent->PopupMenu(pMenu.get(), event.m_x, event.m_y);
|
||||||
|
|
||||||
return data.result;
|
return data.result;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
bool bVZoom;
|
||||||
|
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||||
// Ignore Capture Lost event
|
// Ignore Capture Lost event
|
||||||
bVZoom &= event.GetId() != kCaptureLostEventId;
|
bVZoom &= event.GetId() != kCaptureLostEventId;
|
||||||
// shiftDown | rightUp | ZoomKind
|
// shiftDown | rightUp | ZoomKind
|
||||||
|
@ -16,7 +16,7 @@ class PopupMenuTable;
|
|||||||
class WaveTrack;
|
class WaveTrack;
|
||||||
#include "WaveTrackViewConstants.h"
|
#include "WaveTrackViewConstants.h"
|
||||||
#include "../../../../UIHandle.h"
|
#include "../../../../UIHandle.h"
|
||||||
|
#include "../../../../Prefs.h"
|
||||||
|
|
||||||
namespace WaveTrackVZoomHandle
|
namespace WaveTrackVZoomHandle
|
||||||
{
|
{
|
||||||
@ -53,7 +53,9 @@ namespace WaveTrackVZoomHandle
|
|||||||
|
|
||||||
#include "../../../../widgets/PopupMenuTable.h" // to inherit
|
#include "../../../../widgets/PopupMenuTable.h" // to inherit
|
||||||
|
|
||||||
class WaveTrackVRulerMenuTable : public PopupMenuTable
|
class WaveTrackVRulerMenuTable
|
||||||
|
: public PopupMenuTable
|
||||||
|
, private PrefsListener
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct InitMenuData
|
struct InitMenuData
|
||||||
@ -98,6 +100,8 @@ protected:
|
|||||||
{ OnZoom( WaveTrackViewConstants::kZoomIn );};
|
{ OnZoom( WaveTrackViewConstants::kZoomIn );};
|
||||||
void OnZoomOutVertical(wxCommandEvent&)
|
void OnZoomOutVertical(wxCommandEvent&)
|
||||||
{ OnZoom( WaveTrackViewConstants::kZoomOut );};
|
{ OnZoom( WaveTrackViewConstants::kZoomOut );};
|
||||||
|
|
||||||
|
void UpdatePrefs() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -265,6 +265,9 @@ PopupMenuTable &WaveformVRulerMenuTable::Instance()
|
|||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
||||||
|
// Accelerators only if zooming enabled.
|
||||||
|
bool bVZoom;
|
||||||
|
gPrefs->Read(wxT("/GUI/VerticalZooming"), &bVZoom, false);
|
||||||
|
|
||||||
BeginSection( "Scales" );
|
BeginSection( "Scales" );
|
||||||
{
|
{
|
||||||
@ -289,8 +292,11 @@ BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
|||||||
|
|
||||||
BeginSection( "Zoom" );
|
BeginSection( "Zoom" );
|
||||||
BeginSection( "Basic" );
|
BeginSection( "Basic" );
|
||||||
AppendItem( "Reset", OnZoomFitVerticalID, XXO("Zoom Reset\tShift-Right-Click"), POPUP_MENU_FN( OnZoomReset ) );
|
AppendItem( "Reset", OnZoomFitVerticalID,
|
||||||
AppendItem( "TimesHalf", OnZoomDiv2ID, XXO("Zoom x1/2"), POPUP_MENU_FN( OnZoomDiv2Vertical ) );
|
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 ) );
|
AppendItem( "TimesTwo", OnZoomTimes2ID, XXO("Zoom x2"), POPUP_MENU_FN( OnZoomTimes2Vertical ) );
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_HALF_WAVE
|
#ifdef EXPERIMENTAL_HALF_WAVE
|
||||||
@ -299,8 +305,12 @@ BEGIN_POPUP_MENU(WaveformVRulerMenuTable)
|
|||||||
EndSection();
|
EndSection();
|
||||||
|
|
||||||
BeginSection( "InOut" );
|
BeginSection( "InOut" );
|
||||||
AppendItem( "In", OnZoomInVerticalID, XXO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) );
|
AppendItem( "In", OnZoomInVerticalID,
|
||||||
AppendItem( "Out", OnZoomOutVerticalID, XXO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) );
|
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();
|
||||||
EndSection();
|
EndSection();
|
||||||
|
|
||||||
|
@ -78,7 +78,9 @@ enum
|
|||||||
OnMoveBottomID,
|
OnMoveBottomID,
|
||||||
};
|
};
|
||||||
|
|
||||||
class TrackMenuTable : public PopupMenuTable
|
class TrackMenuTable
|
||||||
|
: public PopupMenuTable
|
||||||
|
, private PrefsListener
|
||||||
{
|
{
|
||||||
TrackMenuTable()
|
TrackMenuTable()
|
||||||
: PopupMenuTable{ "Track" }
|
: PopupMenuTable{ "Track" }
|
||||||
@ -100,6 +102,12 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
CommonTrackControls::InitMenuData *mpData{};
|
CommonTrackControls::InitMenuData *mpData{};
|
||||||
|
|
||||||
|
void UpdatePrefs() override
|
||||||
|
{
|
||||||
|
// Because labels depend on keyboard preferences
|
||||||
|
PopupMenuTable::Clear();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TrackMenuTable &TrackMenuTable::Instance()
|
TrackMenuTable &TrackMenuTable::Instance()
|
||||||
|
@ -17,7 +17,6 @@ Paul Licameli split from TrackPanel.cpp
|
|||||||
|
|
||||||
#include "../../AudioIO.h"
|
#include "../../AudioIO.h"
|
||||||
#include "../../CommonCommandFlags.h"
|
#include "../../CommonCommandFlags.h"
|
||||||
#include "../../Menus.h"
|
|
||||||
#include "../../Project.h"
|
#include "../../Project.h"
|
||||||
#include "../../ProjectAudioIO.h"
|
#include "../../ProjectAudioIO.h"
|
||||||
#include "../../ProjectAudioManager.h"
|
#include "../../ProjectAudioManager.h"
|
||||||
|
@ -141,6 +141,11 @@ public:
|
|||||||
return mTop;
|
return mTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{
|
||||||
|
mTop.reset();
|
||||||
|
}
|
||||||
|
|
||||||
// Forms a computed item, which may be omitted when function returns null
|
// Forms a computed item, which may be omitted when function returns null
|
||||||
// and thus can be a conditional item
|
// and thus can be a conditional item
|
||||||
template< typename Table >
|
template< typename Table >
|
||||||
@ -162,6 +167,16 @@ private:
|
|||||||
const Registry::Placement &placement, Registry::BaseItemPtr pItem );
|
const Registry::Placement &placement, Registry::BaseItemPtr pItem );
|
||||||
|
|
||||||
protected:
|
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;
|
virtual void Populate() = 0;
|
||||||
|
|
||||||
// To be used in implementations of Populate():
|
// To be used in implementations of Populate():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user