ScriptCommandRelay.cpp doesn't depend on AudacityProject.cpp ...

... This doesn't break any dependency cycles yet.
This commit is contained in:
Paul Licameli 2019-05-12 08:54:03 -04:00
parent 016e1949ae
commit ae0cd061c6
2 changed files with 13 additions and 10 deletions

View File

@ -24,8 +24,8 @@ code out of ModuleManager.
#include "CommandTargets.h"
#include "CommandBuilder.h"
#include "AppCommandEvent.h"
#include "../Project.h"
#include <wx/app.h>
#include <wx/window.h>
#include <wx/string.h>
// Declare static class members
@ -52,13 +52,16 @@ void ScriptCommandRelay::Run()
}
/// Send a command to a project, to be applied in that context.
void ScriptCommandRelay::PostCommand(AudacityProject *project, const OldStyleCommandPointer &cmd)
void ScriptCommandRelay::PostCommand(
wxWindow *pWindow, const OldStyleCommandPointer &cmd)
{
wxASSERT(project != NULL);
wxASSERT( pWindow );
wxASSERT(cmd != NULL);
AppCommandEvent ev;
ev.SetCommand(cmd);
project->GetEventHandler()->AddPendingEvent(ev);
if ( pWindow ) {
AppCommandEvent ev;
ev.SetCommand(cmd);
pWindow->GetEventHandler()->AddPendingEvent(ev);
}
}
/// This is the function which actually obeys one command. Rather than applying
@ -71,9 +74,8 @@ int ExecCommand(wxString *pIn, wxString *pOut)
CommandBuilder builder(*pIn);
if (builder.WasValid())
{
AudacityProject *project = GetActiveProject();
OldStyleCommandPointer cmd = builder.GetCommand();
ScriptCommandRelay::PostCommand(project, cmd);
ScriptCommandRelay::PostCommand(wxTheApp->GetTopWindow(), cmd);
*pOut = wxEmptyString;
}

View File

@ -20,11 +20,11 @@
#include "../MemoryX.h"
class wxWindow;
class CommandHandler;
class ResponseQueue;
class Response;
class ResponseQueueTarget;
class AudacityProject;
class OldStyleCommand;
using OldStyleCommandPointer = std::shared_ptr<OldStyleCommand>;
class wxString;
@ -50,7 +50,8 @@ class ScriptCommandRelay
static void SetCommandHandler(CommandHandler &ch);
static void Run();
static void PostCommand(AudacityProject *project, const OldStyleCommandPointer &cmd);
static void PostCommand(
wxWindow *pWindow, const OldStyleCommandPointer &cmd);
static void SendResponse(const wxString &response);
static Response ReceiveResponse();
static std::shared_ptr<ResponseQueueTarget> GetResponseTarget();