17#include "../../widgets/BasicMenu.h"
19#include "../../commands/CommandContext.h"
20#include "../../commands/CommandManager.h"
21#include "../../HitTestResult.h"
22#include "../../Menus.h"
23#include "../../RefreshCode.h"
24#include "../../TrackPanelMouseEvent.h"
35 static wxCursor defaultCursor{ wxCURSOR_ARROW };
36 return { {}, &defaultCursor, {} };
41 -> std::vector<MenuItem>
49 const auto items =
GetMenuItems( rect, pPoint, pProject );
58 region = { time, time };
59 context.temporarySelection.pSelectedRegion = ®ion;
61 context.temporarySelection.pTrack =
FindTrack().get();
67 auto dispatcher = [&]( wxCommandEvent &evt ){
68 auto idx = evt.GetId() - 1;
69 if (idx >= 0 && idx < items.size()) {
70 if (
auto &action = items[idx].action)
73 commandManager.HandleTextualCommand(
74 items[idx].symbol.Internal(), context, flags,
false);
80 for (
const auto &item: items) {
81 if (
const auto &commandID = item.symbol.Internal();
83 menu.AppendSeparator();
88 commandManager.FormatLabelForMenu( commandID, &item.symbol.Msgid() );
89 menu.Append( ii,
label );
90 menu.Bind( wxEVT_COMMAND_MENU_SELECTED, dispatcher );
91 bool enabled = item.enabled &&
92 (item.action || commandManager.GetEnabled( commandID ));
93 menu.Enable( ii, enabled );
100 point = { pPoint->
x, pPoint->y };
Toolkit-neutral facade for basic user interface services.
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
void Popup(const BasicUI::WindowPlacement &window, const Point &pos={})
Display the menu at pos, invoke at most one action, then hide it.
CommandContext provides additional information to an 'Apply()' command. It provides the project,...
static CommandManager & Get(AudacityProject &project)
std::shared_ptr< Track > DoFindTrack() override
std::weak_ptr< Track > mwTrack
void Reparent(const std::shared_ptr< Track > &parent) override
Object may be shared among tracks but hold a special back-pointer to one of them; reassign it.
CommonTrackCell(const std::shared_ptr< Track > &pTrack)
unsigned HandleWheelRotation(const TrackPanelMouseEvent &event, AudacityProject *pProject) override
HitTestPreview DefaultPreview(const TrackPanelMouseState &, const AudacityProject *) override
std::shared_ptr< Track > FindTrack()
virtual std::vector< MenuItem > GetMenuItems(const wxRect &rect, const wxPoint *pPosition, AudacityProject *pProject)
Return a list of items for DoContextMenu() (empties for separators)
virtual ~CommonTrackPanelCell()=0
unsigned DoContextMenu(const wxRect &rect, wxWindow *pParent, const wxPoint *pPosition, AudacityProject *pProject) override
static stored_type & Get()
Get the installed value.
Defines a selected portion of a project.
static ViewInfo & Get(AudacityProject &project)
double PositionToTime(int64 position, int64 origin=0, bool ignoreFisheye=false) const
A pair of screen coordinates, x increasing rightward, y downward.