mirror of
https://github.com/cookiengineer/audacity
synced 2026-03-06 06:31:07 +01:00
Move defs of menu items for changing tools, to be with the toolbar
This commit is contained in:
@@ -1,27 +1,10 @@
|
||||
#include "../Audacity.h"
|
||||
|
||||
#include "../Menus.h"
|
||||
#include "../TrackPanel.h"
|
||||
#include "../ProjectSettings.h"
|
||||
#include "../commands/CommandContext.h"
|
||||
#include "../commands/CommandManager.h"
|
||||
#include "../toolbars/ToolManager.h"
|
||||
#include "../toolbars/ToolsToolBar.h"
|
||||
|
||||
// private helper classes and functions
|
||||
namespace {
|
||||
|
||||
/// Called by handlers that set tools.
|
||||
void SetTool(AudacityProject &project, int tool)
|
||||
{
|
||||
auto toolbar = &ToolsToolBar::Get( project );
|
||||
if (toolbar) {
|
||||
toolbar->SetCurrentTool(tool);
|
||||
TrackPanel::Get( project ).Refresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// Namespace for functions for View Toolbar menu
|
||||
namespace ToolbarActions {
|
||||
@@ -42,66 +25,6 @@ void OnResetToolBars(const CommandContext &context)
|
||||
MenuManager::Get(project).ModifyToolbarMenus(project);
|
||||
}
|
||||
|
||||
/// Handler to set the select tool active
|
||||
void OnSelectTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::selectTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Envelope tool active
|
||||
void OnEnvelopeTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::envelopeTool);
|
||||
}
|
||||
|
||||
void OnDrawTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::drawTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Zoom tool active
|
||||
void OnZoomTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::zoomTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Time shift tool active
|
||||
void OnTimeShiftTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::slideTool);
|
||||
}
|
||||
|
||||
void OnMultiTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::multiTool);
|
||||
}
|
||||
|
||||
void OnPrevTool(const CommandContext &context)
|
||||
{
|
||||
auto &project = context.project;
|
||||
auto &toolbar = ToolsToolBar::Get( project );
|
||||
auto &trackPanel = TrackPanel::Get( project );
|
||||
|
||||
using namespace ToolCodes;
|
||||
// Use GetDownTool() here since GetCurrentTool() can return a value that
|
||||
// doesn't represent the real tool if the Multi-tool is being used.
|
||||
toolbar.SetCurrentTool((toolbar.GetDownTool()+(numTools-1))%numTools);
|
||||
trackPanel.Refresh(false);
|
||||
}
|
||||
|
||||
void OnNextTool(const CommandContext &context)
|
||||
{
|
||||
auto &project = context.project;
|
||||
auto &toolbar = ToolsToolBar::Get( project );
|
||||
auto &trackPanel = TrackPanel::Get( project );
|
||||
|
||||
using namespace ToolCodes;
|
||||
// Use GetDownTool() here since GetCurrentTool() can return a value that
|
||||
// doesn't represent the real tool if the Multi-tool is being used.
|
||||
toolbar.SetCurrentTool((toolbar.GetDownTool()+1)%numTools);
|
||||
trackPanel.Refresh(false);
|
||||
}
|
||||
|
||||
}; // struct Handler
|
||||
|
||||
} // namespace
|
||||
@@ -152,36 +75,6 @@ AttachedItem sAttachment1{
|
||||
Placement{ wxT("View/Other"), { OrderingHint::Begin } },
|
||||
Shared( ToolbarsMenu() )
|
||||
};
|
||||
|
||||
BaseItemSharedPtr ExtraToolsMenu()
|
||||
{
|
||||
static BaseItemSharedPtr menu{
|
||||
( FinderScope{ findCommandHandler },
|
||||
Menu( wxT("Tools"), XO("T&ools"),
|
||||
Command( wxT("SelectTool"), XXO("&Selection Tool"), FN(OnSelectTool),
|
||||
AlwaysEnabledFlag, wxT("F1") ),
|
||||
Command( wxT("EnvelopeTool"), XXO("&Envelope Tool"),
|
||||
FN(OnEnvelopeTool), AlwaysEnabledFlag, wxT("F2") ),
|
||||
Command( wxT("DrawTool"), XXO("&Draw Tool"), FN(OnDrawTool),
|
||||
AlwaysEnabledFlag, wxT("F3") ),
|
||||
Command( wxT("ZoomTool"), XXO("&Zoom Tool"), FN(OnZoomTool),
|
||||
AlwaysEnabledFlag, wxT("F4") ),
|
||||
Command( wxT("TimeShiftTool"), XXO("&Time Shift Tool"),
|
||||
FN(OnTimeShiftTool), AlwaysEnabledFlag, wxT("F5") ),
|
||||
Command( wxT("MultiTool"), XXO("&Multi Tool"), FN(OnMultiTool),
|
||||
AlwaysEnabledFlag, wxT("F6") ),
|
||||
Command( wxT("PrevTool"), XXO("&Previous Tool"), FN(OnPrevTool),
|
||||
AlwaysEnabledFlag, wxT("A") ),
|
||||
Command( wxT("NextTool"), XXO("&Next Tool"), FN(OnNextTool),
|
||||
AlwaysEnabledFlag, wxT("D") )
|
||||
) ) };
|
||||
return menu;
|
||||
}
|
||||
|
||||
AttachedItem sAttachment2{
|
||||
wxT("Optional/Extra/Part1"),
|
||||
Shared( ExtraToolsMenu() )
|
||||
};
|
||||
}
|
||||
|
||||
#undef FN
|
||||
|
||||
@@ -305,3 +305,136 @@ AttachedToolBarMenuItem sAttachment{
|
||||
ToolsBarID, wxT("ShowToolsTB"), XXO("T&ools Toolbar"),
|
||||
};
|
||||
}
|
||||
|
||||
// Following code injects menu items for changing the current tool
|
||||
|
||||
#include "../TrackPanel.h"
|
||||
|
||||
// private helper classes and functions
|
||||
namespace {
|
||||
|
||||
/// Called by handlers that set tools.
|
||||
void SetTool(AudacityProject &project, int tool)
|
||||
{
|
||||
auto toolbar = &ToolsToolBar::Get( project );
|
||||
if (toolbar) {
|
||||
toolbar->SetCurrentTool(tool);
|
||||
TrackPanel::Get( project ).Refresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// Namespace for functions for View Toolbar menu
|
||||
namespace ToolActions {
|
||||
|
||||
// exported helper functions
|
||||
// none
|
||||
|
||||
// Menu handler functions
|
||||
|
||||
struct Handler : CommandHandlerObject {
|
||||
/// Handler to set the select tool active
|
||||
void OnSelectTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::selectTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Envelope tool active
|
||||
void OnEnvelopeTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::envelopeTool);
|
||||
}
|
||||
|
||||
void OnDrawTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::drawTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Zoom tool active
|
||||
void OnZoomTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::zoomTool);
|
||||
}
|
||||
|
||||
/// Handler to set the Time shift tool active
|
||||
void OnTimeShiftTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::slideTool);
|
||||
}
|
||||
|
||||
void OnMultiTool(const CommandContext &context)
|
||||
{
|
||||
SetTool(context.project, ToolCodes::multiTool);
|
||||
}
|
||||
|
||||
void OnPrevTool(const CommandContext &context)
|
||||
{
|
||||
auto &project = context.project;
|
||||
auto &toolbar = ToolsToolBar::Get( project );
|
||||
auto &trackPanel = TrackPanel::Get( project );
|
||||
|
||||
using namespace ToolCodes;
|
||||
// Use GetDownTool() here since GetCurrentTool() can return a value that
|
||||
// doesn't represent the real tool if the Multi-tool is being used.
|
||||
toolbar.SetCurrentTool((toolbar.GetDownTool()+(numTools-1))%numTools);
|
||||
trackPanel.Refresh(false);
|
||||
}
|
||||
|
||||
void OnNextTool(const CommandContext &context)
|
||||
{
|
||||
auto &project = context.project;
|
||||
auto &toolbar = ToolsToolBar::Get( project );
|
||||
auto &trackPanel = TrackPanel::Get( project );
|
||||
|
||||
using namespace ToolCodes;
|
||||
// Use GetDownTool() here since GetCurrentTool() can return a value that
|
||||
// doesn't represent the real tool if the Multi-tool is being used.
|
||||
toolbar.SetCurrentTool((toolbar.GetDownTool()+1)%numTools);
|
||||
trackPanel.Refresh(false);
|
||||
}
|
||||
|
||||
}; // struct Handler
|
||||
|
||||
static CommandHandlerObject &findCommandHandler(AudacityProject &) {
|
||||
// Handler is not stateful. Doesn't need a factory registered with
|
||||
// AudacityProject.
|
||||
static ToolActions::Handler instance;
|
||||
return instance;
|
||||
};
|
||||
|
||||
#define FN(X) (& ToolActions::Handler :: X)
|
||||
|
||||
using namespace MenuTable;
|
||||
BaseItemSharedPtr ExtraToolsMenu()
|
||||
{
|
||||
static BaseItemSharedPtr menu{
|
||||
( FinderScope{ findCommandHandler },
|
||||
Menu( wxT("Tools"), XO("T&ools"),
|
||||
Command( wxT("SelectTool"), XXO("&Selection Tool"), FN(OnSelectTool),
|
||||
AlwaysEnabledFlag, wxT("F1") ),
|
||||
Command( wxT("EnvelopeTool"), XXO("&Envelope Tool"),
|
||||
FN(OnEnvelopeTool), AlwaysEnabledFlag, wxT("F2") ),
|
||||
Command( wxT("DrawTool"), XXO("&Draw Tool"), FN(OnDrawTool),
|
||||
AlwaysEnabledFlag, wxT("F3") ),
|
||||
Command( wxT("ZoomTool"), XXO("&Zoom Tool"), FN(OnZoomTool),
|
||||
AlwaysEnabledFlag, wxT("F4") ),
|
||||
Command( wxT("TimeShiftTool"), XXO("&Time Shift Tool"),
|
||||
FN(OnTimeShiftTool), AlwaysEnabledFlag, wxT("F5") ),
|
||||
Command( wxT("MultiTool"), XXO("&Multi Tool"), FN(OnMultiTool),
|
||||
AlwaysEnabledFlag, wxT("F6") ),
|
||||
Command( wxT("PrevTool"), XXO("&Previous Tool"), FN(OnPrevTool),
|
||||
AlwaysEnabledFlag, wxT("A") ),
|
||||
Command( wxT("NextTool"), XXO("&Next Tool"), FN(OnNextTool),
|
||||
AlwaysEnabledFlag, wxT("D") )
|
||||
) ) };
|
||||
return menu;
|
||||
}
|
||||
|
||||
#undef FN
|
||||
|
||||
AttachedItem sAttachment2{
|
||||
wxT("Optional/Extra/Part1"),
|
||||
Shared( ExtraToolsMenu() )
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user