1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-18 17:47:41 +02:00
audacity/src/toolbars/ControlToolBar.h

153 lines
3.6 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
ControlToolbar.h
Dominic Mazzoni
Shane T. Mueller
Leland Lucius
**********************************************************************/
#ifndef __AUDACITY_CONTROL_TOOLBAR__
#define __AUDACITY_CONTROL_TOOLBAR__
#include "ToolBar.h"
#include "../Theme.h"
class wxBoxSizer;
class wxCommandEvent;
class wxDC;
class wxKeyEvent;
class wxWindow;
class AButton;
class AudacityProject;
class TrackList;
class TimeTrack;
// In the GUI, ControlToolBar appears as the "Transport Toolbar". "Control Toolbar" is historic.
class ControlToolBar:public ToolBar {
public:
ControlToolBar();
virtual ~ControlToolBar();
void Create(wxWindow *parent);
void UpdatePrefs();
virtual void OnKeyEvent(wxKeyEvent & event);
// msmeyer: These are public, but it's far better to
// call the "real" interface functions like PlayCurrentRegion() and
// StopPlaying() which are defined below.
void OnRewind(wxCommandEvent & evt);
void OnPlay(wxCommandEvent & evt);
void OnStop(wxCommandEvent & evt);
void OnBatch(wxCommandEvent & evt);
void OnRecord(wxCommandEvent & evt);
void OnFF(wxCommandEvent & evt);
void OnPause(wxCommandEvent & evt);
//These allow buttons to be controlled externally:
void SetPlay(bool down);
void SetStop(bool down);
void SetRecord(bool down);
bool IsRecordDown();
// Play currently selected region, or if nothing selected,
// play from current cursor.
void PlayCurrentRegion(bool looped = false, bool cutpreview = false);
// Play the region [t0,t1]
void PlayPlayRegion(double t0, double t1,
bool looped = false,
bool cutpreview = false,
TimeTrack *timetrack = NULL);
void PlayDefault();
// Stop playing
void StopPlaying(bool stopStream = true);
void Populate();
virtual void Repaint(wxDC *dc);
virtual void EnableDisableButtons();
void OnKeyDown(wxKeyEvent & event);
void OnKeyUp(wxKeyEvent & event);
void SetVUMeters(AudacityProject *p);
virtual void ReCreateButtons();
private:
AButton *MakeButton(teBmps eEnabledUp, teBmps eEnabledDown, teBmps eDisabled,
int id,
bool processdownevents,
const wxChar *label);
void MakeLoopImage();
void ArrangeButtons();
void RegenerateToolsTooltips();
void SetupCutPreviewTracks(double playStart, double cutStart,
double cutEnd, double playEnd);
void ClearCutPreviewTracks();
enum
{
ID_PLAY_BUTTON,
ID_RECORD_BUTTON,
ID_PAUSE_BUTTON,
ID_STOP_BUTTON,
ID_FF_BUTTON,
ID_REW_BUTTON,
ID_BATCH_BUTTON,
BUTTON_COUNT
};
AButton *mRewind;
AButton *mPlay;
AButton *mBatch;
AButton *mRecord;
AButton *mPause;
AButton *mStop;
AButton *mFF;
static AudacityProject *mBusyProject;
// Maybe button state values shouldn't be duplicated in this toolbar?
bool mPaused; //Play or record is paused or not paused?
// Activate ergonomic order for transport buttons
bool mErgonomicTransportButtons;
// Show/hide cleanspeech button
bool mCleanSpeechMode;
wxBoxSizer *mBatchGroup;
wxBoxSizer *mSizer;
TrackList* mCutPreviewTracks;
public:
DECLARE_CLASS(ControlToolBar);
DECLARE_EVENT_TABLE();
};
#endif
// Indentation settings for Vim and Emacs and unique identifier for Arch, a
// version control system. Please do not modify past this point.
//
// Local Variables:
// c-basic-offset: 3
// indent-tabs-mode: nil
// End:
//
// vim: et sts=3 sw=3
// arch-tag: bb2858b8-2c70-48df-9d72-bcdef94be4e3