mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 23:59:41 +02:00
In addition, I've extracted the wxTextCtrl wrapper from the TimerRecordDialog intto widgets/wxTextCtrlWrapper.h and made it the default for ShuttleGui::AddTextBox(). This way readonly text controls are always included in the tab order.
151 lines
4.3 KiB
C++
151 lines
4.3 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
TimerRecordDialog.h
|
|
|
|
Copyright 2006 by Vaughan Johnson
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
**********************************************************************/
|
|
|
|
#ifndef __AUDACITY_TIMERRECORD_DIALOG__
|
|
#define __AUDACITY_TIMERRECORD_DIALOG__
|
|
|
|
#include <wx/textctrl.h> // to inherit
|
|
#include <wx/timer.h> // member variable
|
|
#include "export/Export.h"
|
|
|
|
class wxCheckBox;
|
|
class wxChoice;
|
|
class wxDateEvent;
|
|
class wxDatePickerCtrl;
|
|
class wxTimerEvent;
|
|
|
|
class NumericTextCtrl;
|
|
class ShuttleGui;
|
|
class wxTextCtrlWrapper;
|
|
|
|
enum TimerRecordCompletedActions {
|
|
TR_ACTION_NOTHING = 0x00000000,
|
|
TR_ACTION_SAVED = 0x00000001,
|
|
TR_ACTION_EXPORTED = 0x00000002
|
|
};
|
|
|
|
enum {
|
|
POST_TIMER_RECORD_STOPPED = -3,
|
|
POST_TIMER_RECORD_CANCEL_WAIT,
|
|
POST_TIMER_RECORD_CANCEL,
|
|
|
|
POST_TIMER_RECORD_NOTHING = 0,
|
|
POST_TIMER_RECORD_CLOSE,
|
|
|
|
#ifdef __WINDOWS__
|
|
POST_TIMER_RECORD_RESTART,
|
|
POST_TIMER_RECORD_SHUTDOWN
|
|
#endif
|
|
};
|
|
|
|
class AudacityProject;
|
|
|
|
class TimerRecordDialog final : public wxDialogWrapper
|
|
{
|
|
public:
|
|
TimerRecordDialog(
|
|
wxWindow* parent, AudacityProject &project, bool bAlreadySaved);
|
|
~TimerRecordDialog();
|
|
|
|
void OnTimer(wxTimerEvent& event);
|
|
///Runs the wait for start dialog. Returns false if the user clicks stop.
|
|
int RunWaitDialog();
|
|
|
|
private:
|
|
void OnDatePicker_Start(wxDateEvent& event);
|
|
void OnTimeText_Start(wxCommandEvent& event);
|
|
|
|
void OnDatePicker_End(wxDateEvent& event);
|
|
void OnTimeText_End(wxCommandEvent& event);
|
|
|
|
void OnTimeText_Duration(wxCommandEvent & event);
|
|
|
|
void OnOK(wxCommandEvent& event);
|
|
void OnHelpButtonClick(wxCommandEvent& event);
|
|
|
|
TranslatableString GetDisplayDate(wxDateTime & dt);
|
|
void PopulateOrExchange(ShuttleGui& S);
|
|
|
|
bool TransferDataFromWindow() override;
|
|
// no TransferDataFromWindow() because ??
|
|
|
|
void UpdateDuration(); // Update m_TimeSpan_Duration and ctrl based on m_DateTime_Start and m_DateTime_End.
|
|
void UpdateEnd(); // Update m_DateTime_End and ctrls based on m_DateTime_Start and m_TimeSpan_Duration.
|
|
ProgressResult WaitForStart();
|
|
|
|
// Timer Recording Automation Control Events
|
|
void OnAutoSavePathButton_Click(wxCommandEvent& event);
|
|
void OnAutoExportPathButton_Click(wxCommandEvent& event);
|
|
void OnAutoSaveCheckBox_Change(wxCommandEvent& event);
|
|
void OnAutoExportCheckBox_Change(wxCommandEvent& event);
|
|
// Timer Recording Automation Routines
|
|
void EnableDisableAutoControls(bool bEnable, int iControlGoup);
|
|
void UpdateTextBoxControls();
|
|
|
|
// Add Path Controls to Form
|
|
wxTextCtrlWrapper *NewPathControl(
|
|
wxWindow *wParent, const int iID,
|
|
const TranslatableString &sCaption, const TranslatableString &sValue);
|
|
|
|
int ExecutePostRecordActions(bool bWasStopped);
|
|
ProgressResult PreActionDelay(int iActionIndex, TimerRecordCompletedActions eCompletedActions);
|
|
|
|
private:
|
|
AudacityProject &mProject;
|
|
|
|
wxDateTime m_DateTime_Start;
|
|
wxDateTime m_DateTime_End;
|
|
wxTimeSpan m_TimeSpan_Duration;
|
|
|
|
// controls
|
|
wxDatePickerCtrl* m_pDatePickerCtrl_Start;
|
|
NumericTextCtrl* m_pTimeTextCtrl_Start;
|
|
|
|
wxDatePickerCtrl* m_pDatePickerCtrl_End;
|
|
NumericTextCtrl* m_pTimeTextCtrl_End;
|
|
|
|
NumericTextCtrl* m_pTimeTextCtrl_Duration;
|
|
|
|
wxTimer m_timer;
|
|
|
|
// Controls for Auto Save/Export
|
|
wxCheckBox *m_pTimerAutoSaveCheckBoxCtrl;
|
|
wxTextCtrlWrapper *m_pTimerSavePathTextCtrl;
|
|
wxButton *m_pTimerSavePathButtonCtrl;
|
|
wxCheckBox *m_pTimerAutoExportCheckBoxCtrl;
|
|
wxTextCtrlWrapper *m_pTimerExportPathTextCtrl;
|
|
wxButton *m_pTimerExportPathButtonCtrl;
|
|
|
|
// After Timer Record Options Choice
|
|
wxChoice *m_pTimerAfterCompleteChoiceCtrl;
|
|
|
|
// After Timer Record do we need to clean up?
|
|
bool m_bProjectCleanupRequired;
|
|
|
|
// Variables for the Auto Save/Export
|
|
bool m_bAutoSaveEnabled;
|
|
wxFileName m_fnAutoSaveFile;
|
|
bool m_bAutoExportEnabled;
|
|
wxFileName m_fnAutoExportFile;
|
|
int m_iAutoExportFormat;
|
|
int m_iAutoExportSubFormat;
|
|
int m_iAutoExportFilterIndex;
|
|
bool m_bProjectAlreadySaved;
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
#endif
|