audacia/src/commands/CommandHandler.cpp

57 lines
1.5 KiB
C++

/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
File License: wxWidgets
Dan Horgan
******************************************************************//**
\file CommandHandler.cpp
\brief Contains definitions for the CommandHandler class.
\class CommandHandler
\brief Contains methods for applying commands that are passed to it.
*//*******************************************************************/
#include "CommandHandler.h"
#include <wx/event.h>
#include "../Project.h"
#include "../ProjectWindow.h"
#include "AppCommandEvent.h"
#include "ScriptCommandRelay.h"
#include "../commands/CommandContext.h"
#include "../commands/Command.h"
CommandHandler::CommandHandler()
{
}
CommandHandler::~CommandHandler()
{
}
void CommandHandler::OnReceiveCommand(AppCommandEvent &event)
{
// First retrieve the actual command from the event 'envelope'.
OldStyleCommandPointer cmd = event.GetCommand();
if (const auto pProject = GetActiveProject()) {
// Then apply it to current application & project. Note that the
// command may change the context - for example, switching to a
// different project.
CommandContext context{ *pProject };
auto result = GuardedCall<bool>( [&] {
return cmd->Apply( context );
});
wxUnusedVar(result);
// Redraw the project
ProjectWindow::Get( context.project ).RedrawProject();
}
}