ParseStatus: replace NoDevice with EmptyExpression

This commit is contained in:
Michael M 2017-06-07 16:03:36 -07:00
parent 754efd75c5
commit 85301e2bae
3 changed files with 9 additions and 10 deletions

View File

@ -347,11 +347,12 @@ void ControlDialog::UpdateGUI()
case ParseStatus::SyntaxError: case ParseStatus::SyntaxError:
m_error_label->SetLabel(_("Syntax error")); m_error_label->SetLabel(_("Syntax error"));
break; break;
case ParseStatus::NoDevice: case ParseStatus::Successful:
m_error_label->SetLabel(_("Device not found")); m_error_label->SetLabel(control_reference->BoundCount() > 0 ? "" : _("Device not found"));
break; break;
default: case ParseStatus::EmptyExpression:
m_error_label->SetLabel(""); m_error_label->SetLabel("");
break;
} }
}; };
@ -408,7 +409,7 @@ bool ControlDialog::Validate()
UpdateGUI(); UpdateGUI();
const auto parse_status = control_reference->GetParseStatus(); const auto parse_status = control_reference->GetParseStatus();
return parse_status == ParseStatus::Successful || parse_status == ParseStatus::NoDevice; return parse_status == ParseStatus::Successful || parse_status == ParseStatus::EmptyExpression;
} }
void InputConfigDialog::SetDevice(wxCommandEvent&) void InputConfigDialog::SetDevice(wxCommandEvent&)

View File

@ -10,6 +10,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "Common/StringUtil.h"
#include "InputCommon/ControlReference/ExpressionParser.h" #include "InputCommon/ControlReference/ExpressionParser.h"
using namespace ciface::Core; using namespace ciface::Core;
@ -393,9 +394,6 @@ private:
{ {
std::shared_ptr<Device> device = finder.FindDevice(tok.qualifier); std::shared_ptr<Device> device = finder.FindDevice(tok.qualifier);
Device::Control* control = finder.FindControl(tok.qualifier); Device::Control* control = finder.FindControl(tok.qualifier);
if (control == nullptr)
return {ParseStatus::NoDevice, std::make_unique<ControlExpression>(tok.qualifier, control)};
return {ParseStatus::Successful, return {ParseStatus::Successful,
std::make_unique<ControlExpression>(tok.qualifier, std::move(device), control)}; std::make_unique<ControlExpression>(tok.qualifier, std::move(device), control)};
} }
@ -510,8 +508,8 @@ Expression::~Expression()
static std::pair<ParseStatus, std::unique_ptr<Expression>> static std::pair<ParseStatus, std::unique_ptr<Expression>>
ParseExpressionInner(const std::string& str, ControlFinder& finder) ParseExpressionInner(const std::string& str, ControlFinder& finder)
{ {
if (str == "") if (StripSpaces(str).empty())
return std::make_pair(ParseStatus::Successful, nullptr); return std::make_pair(ParseStatus::EmptyExpression, nullptr);
Lexer l(str); Lexer l(str);
std::vector<Token> tokens; std::vector<Token> tokens;

View File

@ -63,7 +63,7 @@ enum class ParseStatus
{ {
Successful, Successful,
SyntaxError, SyntaxError,
NoDevice, EmptyExpression,
}; };
std::pair<ParseStatus, std::unique_ptr<Expression>> ParseExpression(const std::string& expr, std::pair<ParseStatus, std::unique_ptr<Expression>> ParseExpression(const std::string& expr,