audacia/src/BatchProcessDialog.h
James Crook f55b3f21cf Bug 2524 - ENH: Macros "OK" button is confusing - doesn't do "what it says on the tin"
Removed redundant OK button.
Also improved positioning of buttons.
Also fixed issue where canceling change appeared to not be respected.  (It was being respected, but display was not being refreshed)
2020-08-22 13:41:18 +01:00

143 lines
3.7 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
BatchProcessDialog.h
Dominic Mazzoni
James Crook
**********************************************************************/
#ifndef __AUDACITY_MACROS_WINDOW__
#define __AUDACITY_MACROS_WINDOW__
#include <wx/defs.h>
#include "BatchCommands.h"
class wxWindow;
class wxTextCtrl;
class wxListCtrl;
class wxListEvent;
class wxButton;
class wxTextCtrl;
class AudacityProject;
class ShuttleGui;
class ApplyMacroDialog : public wxDialogWrapper {
public:
// constructors and destructors
ApplyMacroDialog(
wxWindow * parent, AudacityProject &project, bool bInherited=false);
virtual ~ApplyMacroDialog();
public:
// Populate methods NOT virtual.
void Populate();
void PopulateOrExchange( ShuttleGui & S );
virtual void OnApplyToProject(wxCommandEvent & event);
virtual void OnApplyToFiles(wxCommandEvent & event);
virtual void OnCancel(wxCommandEvent & event);
virtual void OnHelp(wxCommandEvent & event);
virtual wxString GetHelpPageName() {return "Apply_Macro";};
void PopulateMacros();
static CommandID MacroIdOfName( const wxString & MacroName );
void ApplyMacroToProject( int iMacro, bool bHasGui=true );
void ApplyMacroToProject( const CommandID & MacroID, bool bHasGui=true );
// These will be reused in the derived class...
wxListCtrl *mList;
wxListCtrl *mMacros;
MacroCommands mMacroCommands; /// Provides list of available commands.
wxButton *mResize;
wxButton *mOK;
wxButton *mCancel;
wxTextCtrl *mResults;
bool mAbort;
bool mbExpanded;
wxString mActiveMacro;
wxString mMacroBeingRenamed;
protected:
AudacityProject &mProject;
const MacroCommandsCatalog mCatalog;
DECLARE_EVENT_TABLE()
};
class MacrosWindow final : public ApplyMacroDialog
{
public:
MacrosWindow(
wxWindow * parent, AudacityProject &project, bool bExpanded=true);
~MacrosWindow();
void UpdateDisplay( bool bExpanded );
private:
TranslatableString WindowTitle() const;
void Populate();
void PopulateOrExchange(ShuttleGui &S);
void OnApplyToProject(wxCommandEvent & event) override;
void OnApplyToFiles(wxCommandEvent & event) override;
void OnCancel(wxCommandEvent &event) override;
virtual wxString GetHelpPageName() override {return
mbExpanded ? "Manage_Macros"
: "Apply_Macro";};
void PopulateList();
void AddItem(const CommandID &command, wxString const &params);
bool ChangeOK();
void UpdateMenus();
void ShowActiveMacro();
void OnMacroSelected(wxListEvent &event);
void OnListSelected(wxListEvent &event);
void OnMacrosBeginEdit(wxListEvent &event);
void OnMacrosEndEdit(wxListEvent &event);
void OnAdd(wxCommandEvent &event);
void OnRemove(wxCommandEvent &event);
void OnRename(wxCommandEvent &event);
void OnRestore(wxCommandEvent &event);
void OnImport(wxCommandEvent &event);
void OnExport(wxCommandEvent &event);
void OnExpand(wxCommandEvent &event);
void OnShrink(wxCommandEvent &event);
void OnSize(wxSizeEvent &event);
void OnCommandActivated(wxListEvent &event);
void OnInsert(wxCommandEvent &event);
void OnEditCommandParams(wxCommandEvent &event);
void OnDelete(wxCommandEvent &event);
void OnUp(wxCommandEvent &event);
void OnDown(wxCommandEvent &event);
void OnOK(wxCommandEvent &event);
void OnKeyDown(wxKeyEvent &event);
void FitColumns();
void InsertCommandAt(int item);
bool SaveChanges();
AudacityProject &mProject;
wxButton *mRemove;
wxButton *mRename;
wxButton *mRestore;
wxButton *mImport;
wxButton *mExport;
int mSelectedCommand;
bool mChanged;
DECLARE_EVENT_TABLE()
};
#endif