From 009849e49967af659354a94a16c51cab5eb8b5a4 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Tue, 7 Mar 2017 19:19:57 -0300 Subject: Sum implementation start --- Project/SumForm.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Project/SumForm.cpp (limited to 'Project/SumForm.cpp') diff --git a/Project/SumForm.cpp b/Project/SumForm.cpp new file mode 100644 index 0000000..d257771 --- /dev/null +++ b/Project/SumForm.cpp @@ -0,0 +1,14 @@ +#include "SumForm.h" +#include "Sum.h" + +SumForm::SumForm(wxWindow* parent, Sum* sum) + : SumFormBase(parent) +{ + m_parent = parent; + m_sum = sum; +} + +SumForm::~SumForm() +{ +} + -- cgit From a1890bd024e0baea393480810709f43208825b9a Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Wed, 8 Mar 2017 18:26:37 -0300 Subject: Sum form implementation start --- Project/SumForm.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) (limited to 'Project/SumForm.cpp') diff --git a/Project/SumForm.cpp b/Project/SumForm.cpp index d257771..4742eaa 100644 --- a/Project/SumForm.cpp +++ b/Project/SumForm.cpp @@ -6,9 +6,67 @@ SumForm::SumForm(wxWindow* parent, Sum* sum) { m_parent = parent; m_sum = sum; + + wxString signalStr = ""; + auto signalList = m_sum->GetSignalList(); + for(auto it = signalList.begin(), itEnd = signalList.end(); it != itEnd; ++it) { + Sum::Signal signal = *it; + switch(signal) { + case Sum::SIGNAL_POSITIVE: { + signalStr += "+"; + } break; + case Sum::SIGNAL_NEGATIVE: { + signalStr += "-"; + } break; + } + if(it != itEnd - 1) signalStr += " "; + } + m_textCtrlSigns->SetValue(signalStr); } -SumForm::~SumForm() +SumForm::~SumForm() {} + +void SumForm::OnOKClick(wxCommandEvent& event) { + if(ValidateData()) EndModal(wxID_OK); } +bool SumForm::ValidateData() +{ + wxString signalStr = ""; + for(int i = 0; i < (int)m_textCtrlSigns->GetValue().length(); ++i) { + if(m_textCtrlSigns->GetValue()[i] != ' ') signalStr += m_textCtrlSigns->GetValue()[i]; + } + if(signalStr.size() < 2) return false; + + std::vector signalList; + for(int i = 0; i < (int)signalStr.length(); ++i) { + switch(signalStr[i].GetValue()) { + case '+': { + signalList.push_back(Sum::SIGNAL_POSITIVE); + } break; + case '-': { + signalList.push_back(Sum::SIGNAL_NEGATIVE); + } break; + default: { + return false; + } + } + } + + int diff = (int)signalList.size() - (int)m_sum->GetSignalList().size(); + + if(diff < 0) { + + } else if(diff > 0) { + auto nodeList = m_sum->GetNodeList(); + for(int i = 0; i < diff; ++i) { + Node* newNode = new Node(); + nodeList.insert(nodeList.end() - 1, newNode); + } + m_sum->SetNodeList(nodeList); + } + m_sum->SetSignalList(signalList); + m_sum->UpdatePoints(); + return true; +} -- cgit From 21ebf63bb59357000f9bb44acde176d4ff169c01 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Thu, 9 Mar 2017 15:09:43 -0300 Subject: Sum implemented --- Project/SumForm.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'Project/SumForm.cpp') diff --git a/Project/SumForm.cpp b/Project/SumForm.cpp index 4742eaa..2bb7c67 100644 --- a/Project/SumForm.cpp +++ b/Project/SumForm.cpp @@ -37,7 +37,11 @@ bool SumForm::ValidateData() for(int i = 0; i < (int)m_textCtrlSigns->GetValue().length(); ++i) { if(m_textCtrlSigns->GetValue()[i] != ' ') signalStr += m_textCtrlSigns->GetValue()[i]; } - if(signalStr.size() < 2) return false; + if(signalStr.size() < 2){ + wxMessageDialog msg(this, _("You must assign at least two signals."), _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msg.ShowModal(); + return false; + } std::vector signalList; for(int i = 0; i < (int)signalStr.length(); ++i) { @@ -49,6 +53,8 @@ bool SumForm::ValidateData() signalList.push_back(Sum::SIGNAL_NEGATIVE); } break; default: { + wxMessageDialog msg(this, _("Value entered incorrectly in the field \"Signs\"."), _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msg.ShowModal(); return false; } } @@ -57,14 +63,14 @@ bool SumForm::ValidateData() int diff = (int)signalList.size() - (int)m_sum->GetSignalList().size(); if(diff < 0) { - + diff = std::abs(diff); + for(int i = 0; i < diff; ++i) { + m_sum->RemoveInNode(); + } } else if(diff > 0) { - auto nodeList = m_sum->GetNodeList(); for(int i = 0; i < diff; ++i) { - Node* newNode = new Node(); - nodeList.insert(nodeList.end() - 1, newNode); + m_sum->AddInNode(); } - m_sum->SetNodeList(nodeList); } m_sum->SetSignalList(signalList); m_sum->UpdatePoints(); -- cgit