From a7960864dd7a8d4674fe8088e6a06c97acb1c9dc Mon Sep 17 00:00:00 2001 From: James Crook Date: Wed, 20 Dec 2017 19:58:05 +0000 Subject: [PATCH] Fix scripting bug where missing parameters gave syntax error In these cases the default parameters should have been used instead. Also the Help command now gives Help on Help by default. --- src/Shuttle.cpp | 2 ++ src/commands/CommandBuilder.cpp | 3 +++ src/commands/GetAllMenuCommands.cpp | 2 +- src/commands/HelpCommand.cpp | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Shuttle.cpp b/src/Shuttle.cpp index b704338f2..4fba85c0f 100644 --- a/src/Shuttle.cpp +++ b/src/Shuttle.cpp @@ -245,6 +245,8 @@ bool Shuttle::TransferString( const wxString & Name, wxString & strValue, const { strValue = mValueString; } + else + return false; } else { diff --git a/src/commands/CommandBuilder.cpp b/src/commands/CommandBuilder.cpp index 91ebc922a..0b349c8a9 100644 --- a/src/commands/CommandBuilder.cpp +++ b/src/commands/CommandBuilder.cpp @@ -114,11 +114,14 @@ void CommandBuilder::BuildCommand(const wxString &cmdName, ParamValueMap::const_iterator iter; ParamValueMap params = signature.GetDefaults(); + // Iterate through the parameters defined by the command for (iter = params.begin(); iter != params.end(); ++iter) { wxString paramString; + // IF there is a match in the args actually used if (shuttle.TransferString(iter->first, paramString, wxT(""))) { + // Then set that parameter. if (!mCommand->SetParameter(iter->first, paramString)) { Failure(); diff --git a/src/commands/GetAllMenuCommands.cpp b/src/commands/GetAllMenuCommands.cpp index 754266865..ebfabb743 100644 --- a/src/commands/GetAllMenuCommands.cpp +++ b/src/commands/GetAllMenuCommands.cpp @@ -25,7 +25,7 @@ wxString GetAllMenuCommandsType::BuildName() void GetAllMenuCommandsType::BuildSignature(CommandSignature &signature) { auto showStatusValidator = make_movable(); - signature.AddParameter(wxT("ShowStatus"), 0, std::move(showStatusValidator)); + signature.AddParameter(wxT("ShowStatus"), false, std::move(showStatusValidator)); } CommandHolder GetAllMenuCommandsType::Create(std::unique_ptr &&target) diff --git a/src/commands/HelpCommand.cpp b/src/commands/HelpCommand.cpp index bfe262ea5..b4cc75731 100644 --- a/src/commands/HelpCommand.cpp +++ b/src/commands/HelpCommand.cpp @@ -26,7 +26,7 @@ wxString HelpCommandType::BuildName() void HelpCommandType::BuildSignature(CommandSignature &signature) { auto commandNameValidator = make_movable(); - signature.AddParameter(wxT("CommandName"), wxT(""), std::move(commandNameValidator)); + signature.AddParameter(wxT("CommandName"), wxT("Help"), std::move(commandNameValidator)); } CommandHolder HelpCommandType::Create(std::unique_ptr &&target)