mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-03 09:09:47 +02:00
186 lines
5.2 KiB
C++
186 lines
5.2 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
Menus.h
|
|
|
|
Dominic Mazzoni
|
|
|
|
**********************************************************************/
|
|
#ifndef __AUDACITY_MENUS__
|
|
#define __AUDACITY_MENUS__
|
|
|
|
#include "audacity/Types.h"
|
|
|
|
#include <wx/string.h> // member variable
|
|
|
|
class wxArrayString;
|
|
class AudacityProject;
|
|
class CommandContext;
|
|
class CommandManager;
|
|
class LabelTrack;
|
|
class PluginDescriptor;
|
|
class Track;
|
|
class TrackList;
|
|
class ViewInfo;
|
|
class WaveClip;
|
|
class WaveTrack;
|
|
|
|
enum CommandFlag : unsigned long long;
|
|
enum EffectType : int;
|
|
|
|
typedef wxString PluginID;
|
|
typedef wxArrayString PluginIDs;
|
|
|
|
class PrefsListener
|
|
{
|
|
public:
|
|
virtual ~PrefsListener();
|
|
virtual void UpdatePrefs(); // default is no-op
|
|
};
|
|
|
|
class MenuCreator
|
|
{
|
|
public:
|
|
MenuCreator();
|
|
~MenuCreator();
|
|
void CreateMenusAndCommands(AudacityProject &project);
|
|
void RebuildMenuBar(AudacityProject &project);
|
|
|
|
static void RebuildAllMenuBars();
|
|
|
|
public:
|
|
CommandFlag mLastFlags;
|
|
|
|
// Last effect applied to this project
|
|
PluginID mLastEffect{};
|
|
};
|
|
|
|
class MenuManager : public MenuCreator
|
|
{
|
|
public:
|
|
static void ModifyUndoMenuItems(AudacityProject &project);
|
|
static void ModifyToolbarMenus(AudacityProject &project);
|
|
// Calls ModifyToolbarMenus() on all projects
|
|
static void ModifyAllProjectToolbarMenus();
|
|
|
|
// checkActive is a temporary hack that should be removed as soon as we
|
|
// get multiple effect preview working
|
|
void UpdateMenus(AudacityProject &project, bool checkActive = true);
|
|
|
|
// If checkActive, do not do complete flags testing on an
|
|
// inactive project as it is needlessly expensive.
|
|
CommandFlag GetUpdateFlags(
|
|
AudacityProject &project, bool checkActive = false);
|
|
void UpdatePrefs();
|
|
|
|
// Command Handling
|
|
bool ReportIfActionNotAllowed(
|
|
AudacityProject &project,
|
|
const wxString & Name, CommandFlag & flags, CommandFlag flagsRqd,
|
|
CommandFlag mask );
|
|
bool TryToMakeActionAllowed(
|
|
AudacityProject &project,
|
|
CommandFlag & flags, CommandFlag flagsRqd, CommandFlag mask );
|
|
|
|
|
|
private:
|
|
CommandFlag GetFocusedFrame(AudacityProject &project);
|
|
|
|
// 0 is grey out, 1 is Autoselect, 2 is Give warnings.
|
|
int mWhatIfNoSelection;
|
|
bool mStopIfWasPaused;
|
|
};
|
|
|
|
|
|
MenuManager &GetMenuManager(AudacityProject &project);
|
|
|
|
// Exported helper functions from various menu handling source files
|
|
|
|
|
|
/// Namespace for functions for File menu
|
|
namespace FileActions {
|
|
AudacityProject *DoImportMIDI(
|
|
AudacityProject *pProject, const FilePath &fileName );
|
|
}
|
|
|
|
/// Namespace for functions for Edit menu
|
|
namespace EditActions {
|
|
bool DoEditMetadata(
|
|
AudacityProject &project,
|
|
const wxString &title, const wxString &shortUndoDescription, bool force );
|
|
void DoReloadPreferences( AudacityProject & );
|
|
void DoUndo( AudacityProject &project );
|
|
}
|
|
|
|
/// Namespace for functions for Select menu
|
|
namespace SelectActions {
|
|
void DoListSelection(
|
|
AudacityProject &project, Track *t,
|
|
bool shift, bool ctrl, bool modifyState );
|
|
void DoSelectAll( AudacityProject &project );
|
|
void DoSelectAllAudio( AudacityProject &project );
|
|
void DoSelectSomething( AudacityProject &project );
|
|
}
|
|
|
|
/// Namespace for functions for View menu
|
|
namespace ViewActions {
|
|
double GetZoomOfToFit( const AudacityProject &project );
|
|
void DoZoomFit( AudacityProject &project );
|
|
void DoZoomFitV( AudacityProject &project );
|
|
}
|
|
|
|
/// Namespace for functions for Transport menu
|
|
namespace TransportActions {
|
|
bool DoPlayStopSelect( AudacityProject &project, bool click, bool shift );
|
|
void DoPlayStopSelect( AudacityProject &project );
|
|
void DoStop( AudacityProject & );
|
|
void DoPause( AudacityProject & );
|
|
void DoLockPlayRegion( AudacityProject & );
|
|
void DoUnlockPlayRegion( AudacityProject & );
|
|
void DoTogglePinnedHead( AudacityProject & );
|
|
void DoRecord( AudacityProject & );
|
|
}
|
|
|
|
/// Namespace for functions for Track menu
|
|
namespace TrackActions {
|
|
enum MoveChoice {
|
|
OnMoveUpID, OnMoveDownID, OnMoveTopID, OnMoveBottomID
|
|
};
|
|
/// Move a track up, down, to top or to bottom.
|
|
void DoMoveTrack( AudacityProject &project, Track* target, MoveChoice choice );
|
|
// "exclusive" mute means mute the chosen track and unmute all others.
|
|
void DoTrackMute( AudacityProject &project, Track *pTrack, bool exclusive );
|
|
// Type of solo (standard or simple) follows the set preference, unless
|
|
// exclusive == true, which causes the opposite behavior.
|
|
void DoTrackSolo( AudacityProject &project, Track *pTrack, bool exclusive );
|
|
void DoRemoveTrack( AudacityProject &project, Track * toRemove );
|
|
void DoRemoveTracks( AudacityProject & );
|
|
}
|
|
|
|
|
|
/// Namespace for helper functions to do with plug ins
|
|
namespace PluginActions {
|
|
enum : unsigned {
|
|
// No flags specified
|
|
kNone = 0x00,
|
|
// Flag used to disable prompting for configuration parameteres.
|
|
kConfigured = 0x01,
|
|
// Flag used to disable saving the state after processing.
|
|
kSkipState = 0x02,
|
|
// Flag used to disable "Repeat Last Effect"
|
|
kDontRepeatLast = 0x04,
|
|
};
|
|
bool DoEffect(
|
|
const PluginID & ID, const CommandContext & context, unsigned flags );
|
|
bool DoAudacityCommand(
|
|
const PluginID & ID, const CommandContext & context, unsigned flags );
|
|
}
|
|
|
|
/// Namespace for functions for Help menu
|
|
namespace HelpActions {
|
|
void DoHelpWelcome( AudacityProject & );
|
|
}
|
|
|
|
#endif
|