summaryrefslogtreecommitdiffstats
path: root/Project/IOControlForm.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-04-24 17:39:03 -0300
committerGitHub <noreply@github.com>2017-04-24 17:39:03 -0300
commit7804c1bd2c0bd2a5f135c30b20991e8187581cc6 (patch)
tree725e524253d6fd714460402194b408cb33b80b3f /Project/IOControlForm.cpp
parent69131a727782090ffd7cb467f449e8f26d3d2949 (diff)
parent9529a6ed44645842adc6f938478acc1dfa17a284 (diff)
downloadPSP.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.cpp89
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);
+}