diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-04-24 17:39:03 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-24 17:39:03 -0300 |
commit | 7804c1bd2c0bd2a5f135c30b20991e8187581cc6 (patch) | |
tree | 725e524253d6fd714460402194b408cb33b80b3f /Project/IOControlForm.cpp | |
parent | 69131a727782090ffd7cb467f449e8f26d3d2949 (diff) | |
parent | 9529a6ed44645842adc6f938478acc1dfa17a284 (diff) | |
download | PSP.git-7804c1bd2c0bd2a5f135c30b20991e8187581cc6.tar.gz PSP.git-7804c1bd2c0bd2a5f135c30b20991e8187581cc6.tar.xz PSP.git-7804c1bd2c0bd2a5f135c30b20991e8187581cc6.zip |
Merge pull request #28 from Thales1330/wip/generic-controllers
Wip generic controllers. Chart view implementation required, creating new branch....
Diffstat (limited to 'Project/IOControlForm.cpp')
-rw-r--r-- | Project/IOControlForm.cpp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Project/IOControlForm.cpp b/Project/IOControlForm.cpp new file mode 100644 index 0000000..8a848d9 --- /dev/null +++ b/Project/IOControlForm.cpp @@ -0,0 +1,89 @@ +#include "IOControlForm.h" + +IOControlForm::IOControlForm(wxWindow* parent, IOControl* ioControl) : IOControlFormBase(parent) +{ + m_parent = parent; + m_ioControl = ioControl; + + int ioFlags = m_ioControl->GetIOFlags(); + int inChoiceNumber = -1; + int outChoiceNumber = -1; + + if(ioFlags & IOControl::IN_TERMINAL_VOLTAGE) { + m_choiceInput->Append(_("Terminal voltage")); + m_inputFlags.push_back(IOControl::IN_TERMINAL_VOLTAGE); + if(m_ioControl->GetValue() == IOControl::IN_TERMINAL_VOLTAGE) inChoiceNumber = (int)m_inputFlags.size() - 1; + } + if(ioFlags & IOControl::IN_VELOCITY) { + m_choiceInput->Append(_("Velocity")); + m_inputFlags.push_back(IOControl::IN_VELOCITY); + if(m_ioControl->GetValue() == IOControl::IN_VELOCITY) inChoiceNumber = (int)m_inputFlags.size() - 1; + } + if(ioFlags & IOControl::IN_ACTIVE_POWER) { + m_choiceInput->Append(_("Active power")); + m_inputFlags.push_back(IOControl::IN_ACTIVE_POWER); + if(m_ioControl->GetValue() == IOControl::IN_ACTIVE_POWER) inChoiceNumber = (int)m_inputFlags.size() - 1; + } + if(ioFlags & IOControl::IN_REACTIVE_POWER) { + m_choiceInput->Append(_("Reactive power")); + m_inputFlags.push_back(IOControl::IN_REACTIVE_POWER); + if(m_ioControl->GetValue() == IOControl::IN_REACTIVE_POWER) inChoiceNumber = (int)m_inputFlags.size() - 1; + } + if(ioFlags & IOControl::OUT_FIELD_VOLTAGE) { + m_choiceOutput->Append(_("Field voltage")); + m_outputFlags.push_back(IOControl::OUT_FIELD_VOLTAGE); + if(m_ioControl->GetValue() == IOControl::OUT_FIELD_VOLTAGE) outChoiceNumber = (int)m_outputFlags.size() - 1; + } + if(ioFlags & IOControl::OUT_MEC_POWER) { + m_choiceOutput->Append(_("Mechanical power")); + m_outputFlags.push_back(IOControl::OUT_MEC_POWER); + if(m_ioControl->GetValue() == IOControl::OUT_MEC_POWER) outChoiceNumber = (int)m_outputFlags.size() - 1; + } + + if(inChoiceNumber != -1) { + m_choiceInput->SetSelection(inChoiceNumber); + m_checkBoxInput->SetValue(true); + m_checkBoxOutput->SetValue(false); + m_choiceOutput->Enable(false); + } else { + m_choiceOutput->SetSelection(outChoiceNumber); + m_checkBoxInput->SetValue(false); + m_checkBoxOutput->SetValue(true); + m_choiceInput->Enable(false); + } +} + +IOControlForm::~IOControlForm() {} +void IOControlForm::OnOKButtonClick(wxCommandEvent& event) +{ + if(ValidateData()) EndModal(wxID_OK); +} + +bool IOControlForm::ValidateData() +{ + if(m_checkBoxInput->GetValue() && m_choiceInput->GetSelection() != -1) { + m_ioControl->SetValue(m_inputFlags[m_choiceInput->GetSelection()]); + return true; + } else if(m_checkBoxOutput->GetValue() && m_choiceOutput->GetSelection() != -1) { + m_ioControl->SetValue(m_outputFlags[m_choiceOutput->GetSelection()]); + return true; + } + + return false; +} + +void IOControlForm::OnInputChecked(wxCommandEvent& event) +{ + m_checkBoxInput->SetValue(true); + m_checkBoxOutput->SetValue(false); + m_choiceOutput->Enable(false); + m_choiceInput->Enable(true); +} + +void IOControlForm::OnOutputChecked(wxCommandEvent& event) +{ + m_checkBoxOutput->SetValue(true); + m_checkBoxInput->SetValue(false); + m_choiceOutput->Enable(true); + m_choiceInput->Enable(false); +} |