summaryrefslogtreecommitdiffstats
path: root/Project/ReactiveShuntElementForm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/ReactiveShuntElementForm.cpp')
-rw-r--r--Project/ReactiveShuntElementForm.cpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/Project/ReactiveShuntElementForm.cpp b/Project/ReactiveShuntElementForm.cpp
new file mode 100644
index 0000000..90d4049
--- /dev/null
+++ b/Project/ReactiveShuntElementForm.cpp
@@ -0,0 +1,139 @@
+#include "ReactiveShuntElementForm.h"
+#include "SwitchingForm.h"
+#include "Capacitor.h"
+#include "Inductor.h"
+
+ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, Capacitor* capacitor)
+ : ReactiveShuntElementFormBase(parent)
+{
+ CapacitorElectricalData data = capacitor->GetElectricalData();
+
+ m_textCtrlName->SetValue(data.name);
+
+ m_textCtrlReactivePower->SetValue(Capacitor::StringFromDouble(data.reactivePower));
+ switch(data.reactivePowerUnit) {
+ case UNIT_PU: {
+ m_choiceReactivePower->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceReactivePower->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceReactivePower->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceReactivePower->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+
+ m_parent = parent;
+ m_capacitor = capacitor;
+}
+
+ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, Inductor* inductor)
+ : ReactiveShuntElementFormBase(parent)
+{
+ InductorElectricalData data = inductor->GetElectricalData();
+
+ m_textCtrlName->SetValue(data.name);
+
+ m_textCtrlReactivePower->SetValue(Inductor::StringFromDouble(data.reactivePower));
+ switch(data.reactivePowerUnit) {
+ case UNIT_PU: {
+ m_choiceReactivePower->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceReactivePower->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceReactivePower->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceReactivePower->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+
+ m_parent = parent;
+ m_inductor = inductor;
+}
+
+ReactiveShuntElementForm::~ReactiveShuntElementForm() {}
+void ReactiveShuntElementForm::OnOKButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) EndModal(wxID_OK);
+}
+
+void ReactiveShuntElementForm::OnStabilityButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) {
+ if(m_capacitor) {
+ SwitchingForm swForm(m_parent, m_capacitor);
+ swForm.SetTitle(_("Capacitor: Switching"));
+ swForm.ShowModal();
+ } else if(m_inductor) {
+ SwitchingForm swForm(m_parent, m_inductor);
+ swForm.SetTitle(_("Inductor: Switching"));
+ swForm.ShowModal();
+ }
+
+ EndModal(wxID_OK);
+ }
+}
+
+bool ReactiveShuntElementForm::ValidateData()
+{
+ if(m_capacitor) {
+ CapacitorElectricalData data;
+
+ data.name = m_textCtrlName->GetValue();
+
+ if(!m_capacitor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,
+ _("Value entered incorrectly in the field \"Reactive power\".")))
+ return false;
+ switch(m_choiceReactivePower->GetSelection()) {
+ case 0: {
+ data.reactivePowerUnit = UNIT_PU;
+ } break;
+ case 1: {
+ data.reactivePowerUnit = UNIT_VAr;
+ } break;
+ case 2: {
+ data.reactivePowerUnit = UNIT_kVAr;
+ } break;
+ case 3: {
+ data.reactivePowerUnit = UNIT_MVAr;
+ } break;
+ }
+
+ m_capacitor->SetElectricalData(data);
+ } else if(m_inductor) {
+ InductorElectricalData data;
+
+ data.name = m_textCtrlName->GetValue();
+
+ if(!m_inductor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,
+ _("Value entered incorrectly in the field \"Reactive power\".")))
+ return false;
+ switch(m_choiceReactivePower->GetSelection()) {
+ case 0: {
+ data.reactivePowerUnit = UNIT_PU;
+ } break;
+ case 1: {
+ data.reactivePowerUnit = UNIT_VAr;
+ } break;
+ case 2: {
+ data.reactivePowerUnit = UNIT_kVAr;
+ } break;
+ case 3: {
+ data.reactivePowerUnit = UNIT_MVAr;
+ } break;
+ }
+
+ m_inductor->SetElectricalData(data);
+ }
+ return true;
+}