1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-04 17:49:45 +02:00
audacity/src/toolbars/TranscriptionToolBar.h

150 lines
3.4 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
TranscriptionToolBar.h
Shane T. Mueller
Leland Lucius
**********************************************************************/
#ifndef __AUDACITY_TRANSCRIPTION_TOOLBAR__
#define __AUDACITY_TRANSCRIPTION_TOOLBAR__
#include "ToolBar.h"
#include <wx/brush.h>
#include <wx/pen.h>
#include "../Sequence.h"
#include "../Theme.h"
class wxBitmap;
class wxBrush;
class wxChoice;
class wxCommandEvent;
class wxImage;
class wxKeyEvent;
class wxPen;
class AButton;
class ASlider;
class TimeTrack;
class VoiceKey;
class WaveTrack;
//TTB 0-8 are button-ids, which also correspond to their
//position in mButtons. 9 & 10 are ids for sliders, which aren't
//in the button array.
enum
{
TTB_PlaySpeed,
TTB_StartOn,
TTB_EndOn,
TTB_StartOff,
TTB_EndOff,
TTB_SelectSound,
TTB_SelectSilence,
TTB_AutomateSelection,
TTB_MakeLabel,
TTB_Calibrate,
TTB_SensitivitySlider,
TTB_PlaySpeedSlider,
TTB_KeyType
};
#define TTBNumButtons 10
class TranscriptionToolBar:public ToolBar {
public:
TranscriptionToolBar();
virtual ~TranscriptionToolBar();
void Create(wxWindow *parent);
virtual void OnKeyEvent(wxKeyEvent & event);
virtual void OnPlaySpeed(wxCommandEvent & event);
virtual void OnSpeedSlider(wxCommandEvent & event);
virtual void OnStartOn(wxCommandEvent & event);
virtual void OnStartOff(wxCommandEvent & event);
virtual void OnEndOn(wxCommandEvent & event);
virtual void OnEndOff(wxCommandEvent & event);
virtual void OnSelectSound(wxCommandEvent & event);
virtual void OnSelectSilence(wxCommandEvent & event);
virtual void OnCalibrate(wxCommandEvent & event);
virtual void OnMakeLabel(wxCommandEvent & event);
virtual void OnAutomateSelection(wxCommandEvent & event);
virtual void OnSensitivitySlider(wxCommandEvent & event);
virtual void Populate();
virtual void Repaint(wxDC *dc) {};
virtual void EnableDisableButtons();
virtual void UpdatePrefs();
void OnFocus(wxFocusEvent &event);
void OnCaptureKey(wxCommandEvent &event);
virtual double GetSensitivity();
virtual void SetKeyType(wxCommandEvent & event);
void PlayAtSpeed();
void ShowPlaySpeedDialog();
void AdjustPlaySpeed(float adj);
private:
void InitializeTranscriptionToolBar();
AButton *AddButton(
teBmps eFore, teBmps eDisabled,
int id,
const wxChar *label);
void GetSamples(WaveTrack *t, sampleCount *s0, sampleCount *slen);
void SetButton(bool newstate, AButton *button);
void RegenerateTooltips();
AButton *mButtons[TTBNumButtons];
wxImage *upImage;
wxImage *downImage;
wxImage *hiliteImage;
ASlider *mPlaySpeedSlider;
double mPlaySpeed;
ASlider *mSensitivitySlider;
double mSensitivity;
VoiceKey *mVk;
wxBrush mBackgroundBrush;
wxPen mBackgroundPen;
int mBackgroundWidth;
int mBackgroundHeight;
TimeTrack *mTimeTrack;
wxChoice *mKeyTypeChoice;
public:
DECLARE_CLASS(TranscriptionToolBar);
DECLARE_EVENT_TABLE();
};
#define COMMAND_LINE_LOG_TRACE TRUE
#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: ToDo