summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
committerThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
commit41b81949a92aad043caa28b0e1144348d06921f8 (patch)
tree9336697587beafbcca1ad8bcf90e750db550b927
parent926af7f34aaf5aebdbac0cbc550ed75647874258 (diff)
downloadPSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.gz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.xz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.zip
Data report implementation start
-rw-r--r--Project/Bus.h2
-rw-r--r--Project/DataReport.cpp383
-rw-r--r--Project/DataReport.h46
-rw-r--r--Project/DataReport.wxcp2188
-rw-r--r--Project/DataReportBase.cpp277
-rw-r--r--Project/DataReportBase.h94
-rw-r--r--Project/DataReportBitmaps.cpp724
-rw-r--r--Project/ElectricCalculation.cpp29
-rw-r--r--Project/Line.cpp114
-rw-r--r--Project/Line.h7
-rw-r--r--Project/MainFrame.cpp17
-rw-r--r--Project/MainFrame.h1
-rw-r--r--Project/Project.mk44
-rw-r--r--Project/Project.project6
-rw-r--r--Project/Project.txt4
-rw-r--r--Project/Transformer.cpp58
-rw-r--r--Project/Transformer.h3
-rw-r--r--Project/Workspace.cpp41
-rw-r--r--Project/Workspace.h7
-rw-r--r--Project/data/images/dataReport128.pngbin0 -> 3437 bytes
-rw-r--r--Project/data/images/dataReport16.pngbin0 -> 658 bytes
-rw-r--r--Project/data/images/dataReport256.pngbin0 -> 6518 bytes
-rw-r--r--Project/data/images/dataReport32.pngbin0 -> 1105 bytes
-rw-r--r--Project/data/images/dataReport64.pngbin0 -> 1844 bytes
24 files changed, 4002 insertions, 43 deletions
diff --git a/Project/Bus.h b/Project/Bus.h
index cbc8287..17d341b 100644
--- a/Project/Bus.h
+++ b/Project/Bus.h
@@ -16,6 +16,8 @@ struct BusElectricalData {
// Power flow (p.u.)
std::complex<double> voltage = std::complex<double>(1.0, 0.0);
+ std::complex<double> power = std::complex<double>(0.0, 0.0);
+ int busType = 2; // PQ
// Fault
bool hasFault = false;
diff --git a/Project/DataReport.cpp b/Project/DataReport.cpp
new file mode 100644
index 0000000..173f476
--- /dev/null
+++ b/Project/DataReport.cpp
@@ -0,0 +1,383 @@
+#include "DataReport.h"
+#include "Workspace.h"
+#include "ElectricCalculation.h"
+
+DataReport::DataReport(wxWindow* parent, Workspace* workspace) : DataReportBase(parent)
+{
+ m_workspace = workspace;
+ CreateGrids();
+ SetHeaders();
+ FillValues();
+
+ Layout();
+}
+
+DataReport::~DataReport() {}
+void DataReport::SetHeaders()
+{
+ // Headers choices fill
+ m_voltageChoices.Add(_("Voltage (p.u.)"));
+ m_voltageChoices.Add(_("Voltage (V)"));
+ m_voltageChoices.Add(_("Voltage (kV)"));
+
+ m_activePowerChoices.Add(_("Active Power (p.u.)"));
+ m_activePowerChoices.Add(_("Active Power (W)"));
+ m_activePowerChoices.Add(_("Active Power (kW)"));
+ m_activePowerChoices.Add(_("Active Power (MW)"));
+
+ m_reactivePowerChoices.Add(_("Reactive Power (p.u.)"));
+ m_reactivePowerChoices.Add(_("Reactive Power (VAr)"));
+ m_reactivePowerChoices.Add(_("Reactive Power (kVAr)"));
+ m_reactivePowerChoices.Add(_("Reactive Power (MVAr)"));
+
+ // Power flow
+ m_gridPowerFlow->SetCellValue(0, 0, _("Type"));
+ m_gridPowerFlow->SetCellValue(0, 1, _("Name"));
+ m_gridPowerFlow->SetCellValue(0, 2, _("From"));
+ m_gridPowerFlow->SetCellValue(0, 3, _("To"));
+ m_gridPowerFlow->SetCellEditor(0, 4, new wxGridCellChoiceEditor(m_activePowerChoices));
+ m_gridPowerFlow->SetCellValue(0, 4, m_activePowerChoices[3]);
+ m_gridPowerFlow->SetCellEditor(0, 5, new wxGridCellChoiceEditor(m_reactivePowerChoices));
+ m_gridPowerFlow->SetCellValue(0, 5, m_reactivePowerChoices[3]);
+
+ // Power flow buses
+ m_gridPFBuses->SetCellValue(0, 0, _("Name"));
+ m_gridPFBuses->SetCellValue(0, 1, _("Type"));
+ m_gridPFBuses->SetCellEditor(0, 2, new wxGridCellChoiceEditor(m_voltageChoices));
+ m_gridPFBuses->SetCellValue(0, 2, m_voltageChoices[0]);
+ m_gridPFBuses->SetCellValue(0, 3, _("Angle"));
+ m_gridPFBuses->SetCellEditor(0, 4, new wxGridCellChoiceEditor(m_activePowerChoices));
+ m_gridPFBuses->SetCellValue(0, 4, m_activePowerChoices[3]);
+ m_gridPFBuses->SetCellEditor(0, 5, new wxGridCellChoiceEditor(m_reactivePowerChoices));
+ m_gridPFBuses->SetCellValue(0, 5, m_reactivePowerChoices[3]);
+
+ // Power flow brances
+ m_gridPFBranches->SetCellValue(0, 0, _("Type"));
+ m_gridPFBranches->SetCellValue(0, 1, _("Name"));
+ m_gridPFBranches->SetCellValue(0, 2, _("From"));
+ m_gridPFBranches->SetCellValue(0, 3, _("To"));
+ m_gridPFBranches->SetCellValue(0, 4, _("R (p.u.)"));
+ m_gridPFBranches->SetCellValue(0, 5, _("XL (p.u.)"));
+ m_gridPFBranches->SetCellValue(0, 6, _("B (p.u.)"));
+ m_gridPFBranches->SetCellValue(0, 7, _("TAP"));
+ m_gridPFBranches->SetCellValue(0, 8, _("Phase Shift"));
+ m_gridPFBranches->SetCellValue(0, 9, _("Online"));
+}
+
+void DataReport::FillValues(GridSelection gridToFill)
+{
+ m_changingValues = true;
+ ElectricCalculation eCalc;
+ eCalc.GetElementsFromList(m_workspace->GetElementList());
+
+ double basePower = m_workspace->GetProperties()->GetSimulationPropertiesData().basePower;
+ switch(m_workspace->GetProperties()->GetSimulationPropertiesData().basePowerUnit) {
+ case UNIT_kVA: {
+ basePower *= 1e3;
+ } break;
+ case UNIT_MVA: {
+ basePower *= 1e6;
+ } break;
+ default:
+ break;
+ }
+
+ int rowNumber = 1;
+ auto lineList = eCalc.GetLineList();
+ auto transformerList = eCalc.GetTransformerList();
+ auto busList = eCalc.GetBusList();
+
+ // Power Flow
+ if(gridToFill == GRID_ALL || gridToFill == GRID_PF) {
+ double kActivePower = 1.0;
+ if(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[1])
+ kActivePower = basePower;
+ else if(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[2])
+ kActivePower = basePower / 1e3;
+ else if(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[3])
+ kActivePower = basePower / 1e6;
+
+ double kReactivePower = 1.0;
+ if(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[1])
+ kReactivePower = basePower;
+ else if(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[2])
+ kReactivePower = basePower / 1e3;
+ else if(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[3])
+ kReactivePower = basePower / 1e6;
+
+ for(auto it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {
+ Line* line = *it;
+ if(line->IsOnline()) {
+ auto data = line->GetElectricalData();
+
+ Bus* bus1 = static_cast<Bus*>(line->GetParentList()[0]);
+ Bus* bus2 = static_cast<Bus*>(line->GetParentList()[1]);
+
+ m_gridPowerFlow->SetCellValue(rowNumber, 0, _("Line"));
+ m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 2, bus1->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 3, bus2->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 4,
+ line->StringFromDouble(std::real(data.powerFlow[0]) * kActivePower));
+ m_gridPowerFlow->SetCellValue(rowNumber, 5,
+ line->StringFromDouble(std::imag(data.powerFlow[0]) * kReactivePower));
+ rowNumber++;
+
+ m_gridPowerFlow->SetCellValue(rowNumber, 0, _("Line"));
+ m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 2, bus2->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 3, bus1->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 4,
+ line->StringFromDouble(std::real(data.powerFlow[1]) * kActivePower));
+ m_gridPowerFlow->SetCellValue(rowNumber, 5,
+ line->StringFromDouble(std::imag(data.powerFlow[1]) * kReactivePower));
+ rowNumber++;
+ }
+ }
+
+ for(auto it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {
+ Transformer* transformer = *it;
+ if(transformer->IsOnline()) {
+ auto data = transformer->GetElectricalData();
+
+ Bus* bus1 = static_cast<Bus*>(transformer->GetParentList()[0]);
+ Bus* bus2 = static_cast<Bus*>(transformer->GetParentList()[1]);
+
+ m_gridPowerFlow->SetCellValue(rowNumber, 0, _("Transformer"));
+ m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 2, bus1->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 3, bus2->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(
+ rowNumber, 4, transformer->StringFromDouble(std::real(data.powerFlow[0]) * kActivePower));
+ m_gridPowerFlow->SetCellValue(
+ rowNumber, 5, transformer->StringFromDouble(std::imag(data.powerFlow[0]) * kReactivePower));
+ rowNumber++;
+
+ m_gridPowerFlow->SetCellValue(rowNumber, 0, _("Transformer"));
+ m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 2, bus2->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(rowNumber, 3, bus1->GetElectricalData().name);
+ m_gridPowerFlow->SetCellValue(
+ rowNumber, 4, transformer->StringFromDouble(std::real(data.powerFlow[1]) * kActivePower));
+ m_gridPowerFlow->SetCellValue(
+ rowNumber, 5, transformer->StringFromDouble(std::imag(data.powerFlow[1]) * kReactivePower));
+ rowNumber++;
+ }
+ }
+ m_gridPowerFlow->AutoSize();
+ }
+
+ // Power Flow buses
+ if(gridToFill == GRID_ALL || gridToFill == GRID_PFBUSES) {
+ double kActivePower = 1.0;
+ if(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[1])
+ kActivePower = basePower;
+ else if(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[2])
+ kActivePower = basePower / 1e3;
+ else if(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[3])
+ kActivePower = basePower / 1e6;
+
+ double kReactivePower = 1.0;
+ if(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[1])
+ kReactivePower = basePower;
+ else if(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[2])
+ kReactivePower = basePower / 1e3;
+ else if(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[3])
+ kReactivePower = basePower / 1e6;
+
+ rowNumber = 1;
+ for(auto it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {
+ Bus* bus = *it;
+ auto data = bus->GetElectricalData();
+
+ double vb = std::abs(data.nominalVoltage);
+ if(data.nominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ double kVoltage = 1.0;
+ if(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[1])
+ kVoltage = vb;
+ else if(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[2])
+ kVoltage = vb / 1e3;
+
+ m_gridPFBuses->SetCellValue(rowNumber, 0, data.name);
+ wxString busTypeString = "";
+ switch(data.busType) {
+ case BUS_SLACK: {
+ busTypeString = _("Slack");
+ } break;
+ case BUS_PV: {
+ busTypeString = _("PV");
+ } break;
+ case BUS_PQ: {
+ busTypeString = _("PQ");
+ } break;
+ }
+ m_gridPFBuses->SetCellValue(rowNumber, 1, busTypeString);
+ m_gridPFBuses->SetCellValue(rowNumber, 2, bus->StringFromDouble(std::abs(data.voltage) * kVoltage));
+ m_gridPFBuses->SetCellValue(rowNumber, 3, bus->StringFromDouble(wxRadToDeg(std::arg(data.voltage))));
+ m_gridPFBuses->SetCellValue(rowNumber, 4, bus->StringFromDouble(std::real(data.power) * kActivePower));
+ m_gridPFBuses->SetCellValue(rowNumber, 5, bus->StringFromDouble(std::imag(data.power) * kReactivePower));
+ rowNumber++;
+ }
+ m_gridPFBuses->AutoSize();
+ }
+
+ // Power flow branches
+ if(gridToFill == GRID_ALL || gridToFill == GRID_PFBRANCHES) {
+ rowNumber = 1;
+ for(auto it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {
+ Line* line = *it;
+ auto data = line->GetPUElectricalData(basePower);
+
+ m_gridPFBranches->SetCellValue(rowNumber, 0, _("Line"));
+ m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);
+
+ wxString busName1 = "-";
+ if(line->GetParentList()[0])
+ busName1 = static_cast<Bus*>(line->GetParentList()[0])->GetElectricalData().name;
+ wxString busName2 = "-";
+ if(line->GetParentList()[1])
+ busName2 = static_cast<Bus*>(line->GetParentList()[1])->GetElectricalData().name;
+ m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);
+ m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);
+
+ m_gridPFBranches->SetCellValue(rowNumber, 4, line->StringFromDouble(data.resistance));
+ m_gridPFBranches->SetCellValue(rowNumber, 5, line->StringFromDouble(data.indReactance));
+ m_gridPFBranches->SetCellValue(rowNumber, 6, line->StringFromDouble(data.capSusceptance));
+ m_gridPFBranches->SetCellValue(rowNumber, 7, "-");
+ m_gridPFBranches->SetCellValue(rowNumber, 8, "-");
+
+ wxString isOnline = _("Yes");
+ if(!line->IsOnline()) isOnline = _("No");
+ m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);
+ rowNumber++;
+ }
+ for(auto it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {
+ Transformer* transformer = *it;
+ auto data = transformer->GetPUElectricalData(basePower);
+
+ m_gridPFBranches->SetCellValue(rowNumber, 0, _("Transformer"));
+ m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);
+
+ wxString busName1 = "-";
+ if(transformer->GetParentList()[0])
+ busName1 = static_cast<Bus*>(transformer->GetParentList()[0])->GetElectricalData().name;
+ wxString busName2 = "-";
+ if(transformer->GetParentList()[1])
+ busName2 = static_cast<Bus*>(transformer->GetParentList()[1])->GetElectricalData().name;
+ m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);
+ m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);
+
+ m_gridPFBranches->SetCellValue(rowNumber, 4, transformer->StringFromDouble(data.resistance));
+ m_gridPFBranches->SetCellValue(rowNumber, 5, transformer->StringFromDouble(data.indReactance));
+ m_gridPFBranches->SetCellValue(rowNumber, 6, "-");
+ m_gridPFBranches->SetCellValue(rowNumber, 7, transformer->StringFromDouble(data.turnsRatio));
+ m_gridPFBranches->SetCellValue(rowNumber, 8, transformer->StringFromDouble(data.phaseShift));
+
+ wxString isOnline = _("Yes");
+ if(!transformer->IsOnline()) isOnline = _("No");
+ m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);
+ rowNumber++;
+ }
+ m_gridPFBranches->AutoSize();
+ }
+
+ m_changingValues = false;
+}
+
+void DataReport::CreateGrids()
+{
+ wxColour headerColour(200, 200, 200);
+ wxFont headerFont = m_gridPowerFlow->GetLabelFont();
+ headerFont.SetWeight(wxFONTWEIGHT_BOLD);
+
+ ElectricCalculation eCalc;
+ eCalc.GetElementsFromList(m_workspace->GetElementList());
+
+ // Power Flow
+ // Header
+ m_gridPowerFlow->AppendCols(6);
+ m_gridPowerFlow->AppendRows();
+ m_gridPowerFlow->HideColLabels();
+ m_gridPowerFlow->HideRowLabels();
+ for(int i = 0; i < 6; ++i) {
+ m_gridPowerFlow->SetCellBackgroundColour(0, i, headerColour);
+ m_gridPowerFlow->SetCellFont(0, i, headerFont);
+ }
+ m_gridPowerFlow->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ // Values
+ auto lineList = eCalc.GetLineList();
+ for(auto it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {
+ Line* line = *it;
+ if(line->IsOnline()) {
+ m_gridPowerFlow->AppendRows(2);
+ }
+ }
+ auto transformerList = eCalc.GetTransformerList();
+ for(auto it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {
+ Transformer* transformer = *it;
+ if(transformer->IsOnline()) {
+ m_gridPowerFlow->AppendRows(2);
+ }
+ }
+ m_gridPowerFlow->AutoSize();
+
+ // Power Flow buses
+ // Header
+ m_gridPFBuses->AppendCols(6);
+ m_gridPFBuses->AppendRows();
+ m_gridPFBuses->HideColLabels();
+ m_gridPFBuses->HideRowLabels();
+ for(int i = 0; i < 6; ++i) {
+ m_gridPFBuses->SetCellBackgroundColour(0, i, headerColour);
+ m_gridPFBuses->SetCellFont(0, i, headerFont);
+ }
+ m_gridPFBuses->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ // Values
+ auto busList = eCalc.GetBusList();
+ m_gridPFBuses->AppendRows(busList.size());
+ m_gridPFBuses->AutoSize();
+
+ // Power flow branches
+ // Header
+ m_gridPFBranches->AppendCols(10);
+ m_gridPFBranches->AppendRows(1);
+ m_gridPFBranches->HideColLabels();
+ m_gridPFBranches->HideRowLabels();
+ for(int i = 0; i < 10; ++i) {
+ m_gridPFBranches->SetCellBackgroundColour(0, i, headerColour);
+ m_gridPFBranches->SetCellFont(0, i, headerFont);
+ }
+ m_gridPFBranches->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ // Values
+ m_gridPFBranches->AppendRows(lineList.size() + transformerList.size());
+ m_gridPFBranches->AutoSize();
+}
+
+void DataReport::OnPFBusGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_PFBUSES);
+}
+void DataReport::OnFaulrGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_FAULT);
+}
+void DataReport::OnFaultBranchesGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_FAULTBRANCHES);
+}
+void DataReport::OnFaultBusesGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_FAULTBUSES);
+}
+void DataReport::OnFaultGeneratorsGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_FAULTGENERATORS);
+}
+void DataReport::OnPFBranchesGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_PFBRANCHES);
+}
+void DataReport::OnPowerFlowGridChanged(wxGridEvent& event)
+{
+ if(!m_changingValues) FillValues(GRID_PF);
+}
diff --git a/Project/DataReport.h b/Project/DataReport.h
new file mode 100644
index 0000000..61d8e15
--- /dev/null
+++ b/Project/DataReport.h
@@ -0,0 +1,46 @@
+#ifndef DATAREPORT_H
+#define DATAREPORT_H
+
+#include "DataReportBase.h"
+
+class Workspace;
+class ElectricCalculation;
+
+class DataReport : public DataReportBase
+{
+public:
+ enum GridSelection {
+ GRID_ALL = 0,
+ GRID_PF,
+ GRID_PFBUSES,
+ GRID_PFBRANCHES,
+ GRID_FAULT,
+ GRID_FAULTBUSES,
+ GRID_FAULTBRANCHES,
+ GRID_FAULTGENERATORS,
+ };
+
+ DataReport(wxWindow* parent, Workspace* workspace);
+ virtual ~DataReport();
+
+ virtual void SetHeaders();
+ virtual void CreateGrids();
+ virtual void FillValues(GridSelection gridToFill = GRID_ALL);
+
+ protected:
+ virtual void OnFaulrGridChanged(wxGridEvent& event);
+ virtual void OnFaultBranchesGridChanged(wxGridEvent& event);
+ virtual void OnFaultBusesGridChanged(wxGridEvent& event);
+ virtual void OnFaultGeneratorsGridChanged(wxGridEvent& event);
+ virtual void OnPFBranchesGridChanged(wxGridEvent& event);
+ virtual void OnPowerFlowGridChanged(wxGridEvent& event);
+ virtual void OnPFBusGridChanged(wxGridEvent& event);
+ Workspace* m_workspace = NULL;
+ bool m_changingValues = false;
+
+ // Headers choices
+ wxArrayString m_voltageChoices;
+ wxArrayString m_activePowerChoices;
+ wxArrayString m_reactivePowerChoices;
+};
+#endif // DATAREPORT_H
diff --git a/Project/DataReport.wxcp b/Project/DataReport.wxcp
new file mode 100644
index 0000000..e43aa2a
--- /dev/null
+++ b/Project/DataReport.wxcp
@@ -0,0 +1,2188 @@
+{
+ "metadata": {
+ "m_generatedFilesDir": ".",
+ "m_objCounter": 85,
+ "m_includeFiles": [],
+ "m_bitmapFunction": "wxC6A63InitBitmapResources",
+ "m_bitmapsFile": "DataReportBitmaps.cpp",
+ "m_GenerateCodeTypes": 1,
+ "m_outputFileName": "DataReportBase",
+ "m_firstWindowId": 10000,
+ "m_useEnum": true,
+ "m_useUnderscoreMacro": true,
+ "m_addHandlers": true,
+ "m_templateClasses": []
+ },
+ "windows": [{
+ "m_type": 4402,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxDEFAULT_FRAME_STYLE"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "500,300"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "DataReportBase"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Enable Window Persistency:",
+ "m_value": true
+ }, {
+ "type": "string",
+ "m_label": "Title:",
+ "m_value": "Data report"
+ }, {
+ "type": "virtualFolderPicker",
+ "m_label": "Virtual Folder:",
+ "m_path": "Project:wxcrafter:resources"
+ }, {
+ "type": "choice",
+ "m_label": "Centre:",
+ "m_selection": 1,
+ "m_options": ["", "wxBOTH", "wxVERTICAL", "wxHORIZONTAL"]
+ }, {
+ "type": "string",
+ "m_label": "Inherited Class",
+ "m_value": "DataReport"
+ }, {
+ "type": "string",
+ "m_label": "File:",
+ "m_value": "DataReport"
+ }, {
+ "type": "string",
+ "m_label": "Class Decorator",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "wxFrame Type",
+ "m_selection": 0,
+ "m_options": ["wxFrame", "wxDocMDIParentFrame", "wxDocMDIChildFrame", "wxDocParentFrame", "wxDocChildFrame"]
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File (16x16) :",
+ "m_path": "data/images/chart16.png"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File (32x32) :",
+ "m_path": "data/images/chart32.png"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File (64x64) :",
+ "m_path": "data/images/chart64.png"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File (128x128):",
+ "m_path": "data/images/chart128.png"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File (256x256):",
+ "m_path": "data/images/chart256.png"
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl1_1"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl2_1"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 1,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4442,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxBK_DEFAULT"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_notebookPowerFlowData"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelPowerFlowData"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Power flow data"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl3_1"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4442,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxBK_LEFT", "wxBK_DEFAULT"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_notebookPowerFlow"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelPowerFlow"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Power flow"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_1"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridPowerFlow"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnPowerFlowGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelPFBuses"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Buses"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_2"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridPFBuses"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnPFBusGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelPFBranches"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Branches"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_3"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridPFBranches"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnPFBranchesGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }]
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelFaultData"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Fault data"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl3_2"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4442,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxBK_LEFT", "wxBK_DEFAULT"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_notebookFault"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelFault"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Fault"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_4"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridFault"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnFaulrGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelFaultBuses"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Buses"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_5"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridFaultBuses"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnFaultBusesGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelFaultBranches"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Branches"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_6"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridFaultBranches"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnFaultBranchesGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }, {
+ "m_type": 4441,
+ "proportion": 0,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxTAB_TRAVERSAL"],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_panelFaultGenerators"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Label:",
+ "m_value": "Generators"
+ }, {
+ "type": "bitmapPicker",
+ "m_label": "Bitmap File:",
+ "m_path": ""
+ }, {
+ "type": "bool",
+ "m_label": "Selected",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Null Page",
+ "m_value": false
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4401,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": [],
+ "m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
+ "m_properties": [{
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "boxSizerLvl4_118"
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "choice",
+ "m_label": "Orientation:",
+ "m_selection": 0,
+ "m_options": ["wxVERTICAL", "wxHORIZONTAL"]
+ }],
+ "m_events": [],
+ "m_children": [{
+ "m_type": 4426,
+ "proportion": 1,
+ "border": 5,
+ "gbSpan": "1,1",
+ "gbPosition": "0,0",
+ "m_styles": ["wxWANTS_CHARS"],
+ "m_sizerFlags": ["wxEXPAND"],
+ "m_properties": [{
+ "type": "winid",
+ "m_label": "ID:",
+ "m_winid": "wxID_ANY"
+ }, {
+ "type": "string",
+ "m_label": "Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Minimum Size:",
+ "m_value": "-1,-1"
+ }, {
+ "type": "string",
+ "m_label": "Name:",
+ "m_value": "m_gridFaultGenerators"
+ }, {
+ "type": "multi-string",
+ "m_label": "Tooltip:",
+ "m_value": ""
+ }, {
+ "type": "colour",
+ "m_label": "Bg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "colour",
+ "m_label": "Fg Colour:",
+ "colour": "<Default>"
+ }, {
+ "type": "font",
+ "m_label": "Font:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Hidden",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Disabled",
+ "m_value": false
+ }, {
+ "type": "bool",
+ "m_label": "Focused",
+ "m_value": false
+ }, {
+ "type": "string",
+ "m_label": "Class Name:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Include File:",
+ "m_value": ""
+ }, {
+ "type": "string",
+ "m_label": "Style:",
+ "m_value": ""
+ }, {
+ "type": "bool",
+ "m_label": "Fit Content to Columns",
+ "m_value": true
+ }, {
+ "type": "bool",
+ "m_label": "Use Native Header",
+ "m_value": true
+ }, {
+ "type": "integer",
+ "m_label": "Height:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Horizontal Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Col Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "integer",
+ "m_label": "Width:",
+ "m_value": -1
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Horizontal Align",
+ "m_selection": 2,
+ "m_options": ["wxALIGN_LEFT", "wxALIGN_CENTRE", "wxALIGN_RIGHT"]
+ }, {
+ "type": "choice",
+ "m_label": "Row Label Vertical Align",
+ "m_selection": 1,
+ "m_options": ["wxALIGN_TOP", "wxALIGN_CENTRE", "wxALIGN_BOTTOM"]
+ }, {
+ "type": "bool",
+ "m_label": "Allow Cell Editing",
+ "m_value": true
+ }],
+ "m_events": [{
+ "m_eventName": "wxEVT_GRID_CELL_CHANGED",
+ "m_eventClass": "wxGridEvent",
+ "m_eventHandler": "wxGridEventHandler",
+ "m_functionNameAndSignature": "OnFaultGeneratorsGridChanged(wxGridEvent& event)",
+ "m_description": "The user changed the data in a cell. The old cell value as string is available from GetString() event object method. Notice that vetoing this event still works for backwards compatibility reasons but any new code should only veto EVT_GRID_CELL_CHANGING event and not this one. Processes a wxEVT_GRID_CELL_CHANGED event type.",
+ "m_noBody": false
+ }],
+ "m_children": []
+ }]
+ }]
+ }]
+ }]
+ }]
+ }]
+ }]
+ }]
+ }]
+ }]
+} \ No newline at end of file
diff --git a/Project/DataReportBase.cpp b/Project/DataReportBase.cpp
new file mode 100644
index 0000000..92d511f
--- /dev/null
+++ b/Project/DataReportBase.cpp
@@ -0,0 +1,277 @@
+//////////////////////////////////////////////////////////////////////
+// This file was auto-generated by codelite's wxCrafter Plugin
+// wxCrafter project file: DataReport.wxcp
+// Do not modify this file by hand!
+//////////////////////////////////////////////////////////////////////
+
+#include "DataReportBase.h"
+
+
+// Declare the bitmap loading function
+extern void wxC6A63InitBitmapResources();
+
+static bool bBitmapLoaded = false;
+
+
+DataReportBase::DataReportBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
+ : wxFrame(parent, id, title, pos, size, style)
+{
+ if ( !bBitmapLoaded ) {
+ // We need to initialise the default bitmap handler
+ wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
+ wxC6A63InitBitmapResources();
+ bBitmapLoaded = true;
+ }
+ // Set icon(s) to the application/dialog
+ wxIconBundle app_icons;
+ {
+ wxBitmap iconBmp = wxXmlResource::Get()->LoadBitmap(wxT("chart16"));
+ wxIcon icn;
+ icn.CopyFromBitmap(iconBmp);
+ app_icons.AddIcon( icn );
+ }
+ {
+ wxBitmap iconBmp = wxXmlResource::Get()->LoadBitmap(wxT("chart32"));
+ wxIcon icn;
+ icn.CopyFromBitmap(iconBmp);
+ app_icons.AddIcon( icn );
+ }
+ {
+ wxBitmap iconBmp = wxXmlResource::Get()->LoadBitmap(wxT("chart64"));
+ wxIcon icn;
+ icn.CopyFromBitmap(iconBmp);
+ app_icons.AddIcon( icn );
+ }
+ {
+ wxBitmap iconBmp = wxXmlResource::Get()->LoadBitmap(wxT("chart128"));
+ wxIcon icn;
+ icn.CopyFromBitmap(iconBmp);
+ app_icons.AddIcon( icn );
+ }
+ {
+ wxBitmap iconBmp = wxXmlResource::Get()->LoadBitmap(wxT("chart256"));
+ wxIcon icn;
+ icn.CopyFromBitmap(iconBmp);
+ app_icons.AddIcon( icn );
+ }
+ SetIcons( app_icons );
+
+
+ wxBoxSizer* boxSizerLvl1_1 = new wxBoxSizer(wxVERTICAL);
+ this->SetSizer(boxSizerLvl1_1);
+
+ wxBoxSizer* boxSizerLvl2_1 = new wxBoxSizer(wxHORIZONTAL);
+
+ boxSizerLvl1_1->Add(boxSizerLvl2_1, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_notebookPowerFlowData = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1,-1)), wxBK_DEFAULT);
+ m_notebookPowerFlowData->SetName(wxT("m_notebookPowerFlowData"));
+
+ boxSizerLvl2_1->Add(m_notebookPowerFlowData, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelPowerFlowData = new wxPanel(m_notebookPowerFlowData, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookPowerFlowData, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookPowerFlowData->AddPage(m_panelPowerFlowData, _("Power flow data"), false);
+
+ wxBoxSizer* boxSizerLvl3_1 = new wxBoxSizer(wxVERTICAL);
+ m_panelPowerFlowData->SetSizer(boxSizerLvl3_1);
+
+ m_notebookPowerFlow = new wxNotebook(m_panelPowerFlowData, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPowerFlowData, wxSize(-1,-1)), wxBK_LEFT|wxBK_DEFAULT);
+ m_notebookPowerFlow->SetName(wxT("m_notebookPowerFlow"));
+
+ boxSizerLvl3_1->Add(m_notebookPowerFlow, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelPowerFlow = new wxPanel(m_notebookPowerFlow, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookPowerFlow, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookPowerFlow->AddPage(m_panelPowerFlow, _("Power flow"), false);
+
+ wxBoxSizer* boxSizerLvl4_1 = new wxBoxSizer(wxVERTICAL);
+ m_panelPowerFlow->SetSizer(boxSizerLvl4_1);
+
+ m_gridPowerFlow = new wxGrid(m_panelPowerFlow, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPowerFlow, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridPowerFlow->CreateGrid(0, 0);
+ m_gridPowerFlow->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridPowerFlow->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridPowerFlow->UseNativeColHeader(true);
+ #endif
+ m_gridPowerFlow->EnableEditing(true);
+
+ boxSizerLvl4_1->Add(m_gridPowerFlow, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelPFBuses = new wxPanel(m_notebookPowerFlow, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookPowerFlow, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookPowerFlow->AddPage(m_panelPFBuses, _("Buses"), false);
+
+ wxBoxSizer* boxSizerLvl4_2 = new wxBoxSizer(wxVERTICAL);
+ m_panelPFBuses->SetSizer(boxSizerLvl4_2);
+
+ m_gridPFBuses = new wxGrid(m_panelPFBuses, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPFBuses, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridPFBuses->CreateGrid(0, 0);
+ m_gridPFBuses->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridPFBuses->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridPFBuses->UseNativeColHeader(true);
+ #endif
+ m_gridPFBuses->EnableEditing(true);
+
+ boxSizerLvl4_2->Add(m_gridPFBuses, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelPFBranches = new wxPanel(m_notebookPowerFlow, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookPowerFlow, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookPowerFlow->AddPage(m_panelPFBranches, _("Branches"), false);
+
+ wxBoxSizer* boxSizerLvl4_3 = new wxBoxSizer(wxVERTICAL);
+ m_panelPFBranches->SetSizer(boxSizerLvl4_3);
+
+ m_gridPFBranches = new wxGrid(m_panelPFBranches, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPFBranches, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridPFBranches->CreateGrid(0, 0);
+ m_gridPFBranches->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridPFBranches->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridPFBranches->UseNativeColHeader(true);
+ #endif
+ m_gridPFBranches->EnableEditing(true);
+
+ boxSizerLvl4_3->Add(m_gridPFBranches, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelFaultData = new wxPanel(m_notebookPowerFlowData, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookPowerFlowData, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookPowerFlowData->AddPage(m_panelFaultData, _("Fault data"), false);
+
+ wxBoxSizer* boxSizerLvl3_2 = new wxBoxSizer(wxVERTICAL);
+ m_panelFaultData->SetSizer(boxSizerLvl3_2);
+
+ m_notebookFault = new wxNotebook(m_panelFaultData, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelFaultData, wxSize(-1,-1)), wxBK_LEFT|wxBK_DEFAULT);
+ m_notebookFault->SetName(wxT("m_notebookFault"));
+
+ boxSizerLvl3_2->Add(m_notebookFault, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelFault = new wxPanel(m_notebookFault, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookFault, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookFault->AddPage(m_panelFault, _("Fault"), false);
+
+ wxBoxSizer* boxSizerLvl4_4 = new wxBoxSizer(wxVERTICAL);
+ m_panelFault->SetSizer(boxSizerLvl4_4);
+
+ m_gridFault = new wxGrid(m_panelFault, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelFault, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridFault->CreateGrid(0, 0);
+ m_gridFault->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridFault->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridFault->UseNativeColHeader(true);
+ #endif
+ m_gridFault->EnableEditing(true);
+
+ boxSizerLvl4_4->Add(m_gridFault, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelFaultBuses = new wxPanel(m_notebookFault, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookFault, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookFault->AddPage(m_panelFaultBuses, _("Buses"), false);
+
+ wxBoxSizer* boxSizerLvl4_5 = new wxBoxSizer(wxVERTICAL);
+ m_panelFaultBuses->SetSizer(boxSizerLvl4_5);
+
+ m_gridFaultBuses = new wxGrid(m_panelFaultBuses, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelFaultBuses, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridFaultBuses->CreateGrid(0, 0);
+ m_gridFaultBuses->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridFaultBuses->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridFaultBuses->UseNativeColHeader(true);
+ #endif
+ m_gridFaultBuses->EnableEditing(true);
+
+ boxSizerLvl4_5->Add(m_gridFaultBuses, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelFaultBranches = new wxPanel(m_notebookFault, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookFault, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookFault->AddPage(m_panelFaultBranches, _("Branches"), false);
+
+ wxBoxSizer* boxSizerLvl4_6 = new wxBoxSizer(wxVERTICAL);
+ m_panelFaultBranches->SetSizer(boxSizerLvl4_6);
+
+ m_gridFaultBranches = new wxGrid(m_panelFaultBranches, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelFaultBranches, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridFaultBranches->CreateGrid(0, 0);
+ m_gridFaultBranches->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridFaultBranches->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridFaultBranches->UseNativeColHeader(true);
+ #endif
+ m_gridFaultBranches->EnableEditing(true);
+
+ boxSizerLvl4_6->Add(m_gridFaultBranches, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+ m_panelFaultGenerators = new wxPanel(m_notebookFault, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebookFault, wxSize(-1,-1)), wxTAB_TRAVERSAL);
+ m_notebookFault->AddPage(m_panelFaultGenerators, _("Generators"), false);
+
+ wxBoxSizer* boxSizerLvl4_118 = new wxBoxSizer(wxVERTICAL);
+ m_panelFaultGenerators->SetSizer(boxSizerLvl4_118);
+
+ m_gridFaultGenerators = new wxGrid(m_panelFaultGenerators, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelFaultGenerators, wxSize(-1,-1)), wxWANTS_CHARS);
+ m_gridFaultGenerators->CreateGrid(0, 0);
+ m_gridFaultGenerators->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);
+ m_gridFaultGenerators->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);
+ #if wxVERSION_NUMBER >= 2904
+ m_gridFaultGenerators->UseNativeColHeader(true);
+ #endif
+ m_gridFaultGenerators->EnableEditing(true);
+
+ boxSizerLvl4_118->Add(m_gridFaultGenerators, 1, wxEXPAND, WXC_FROM_DIP(5));
+
+
+ #if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(m_notebookPowerFlowData)){
+ wxPersistenceManager::Get().RegisterAndRestore(m_notebookPowerFlowData);
+ } else {
+ wxPersistenceManager::Get().Restore(m_notebookPowerFlowData);
+ }
+ #endif
+
+ #if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(m_notebookPowerFlow)){
+ wxPersistenceManager::Get().RegisterAndRestore(m_notebookPowerFlow);
+ } else {
+ wxPersistenceManager::Get().Restore(m_notebookPowerFlow);
+ }
+ #endif
+
+ #if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(m_notebookFault)){
+ wxPersistenceManager::Get().RegisterAndRestore(m_notebookFault);
+ } else {
+ wxPersistenceManager::Get().Restore(m_notebookFault);
+ }
+ #endif
+
+ SetName(wxT("DataReportBase"));
+ SetMinClientSize(wxSize(500,300));
+ SetSize(-1,-1);
+ if (GetSizer()) {
+ GetSizer()->Fit(this);
+ }
+ if(GetParent()) {
+ CentreOnParent(wxBOTH);
+ } else {
+ CentreOnScreen(wxBOTH);
+ }
+#if wxVERSION_NUMBER >= 2900
+ if(!wxPersistenceManager::Get().Find(this)) {
+ wxPersistenceManager::Get().RegisterAndRestore(this);
+ } else {
+ wxPersistenceManager::Get().Restore(this);
+ }
+#endif
+ // Connect events
+ m_gridPowerFlow->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPowerFlowGridChanged), NULL, this);
+ m_gridPFBuses->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPFBusGridChanged), NULL, this);
+ m_gridPFBranches->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPFBranchesGridChanged), NULL, this);
+ m_gridFault->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaulrGridChanged), NULL, this);
+ m_gridFaultBuses->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultBusesGridChanged), NULL, this);
+ m_gridFaultBranches->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultBranchesGridChanged), NULL, this);
+ m_gridFaultGenerators->Connect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultGeneratorsGridChanged), NULL, this);
+
+}
+
+DataReportBase::~DataReportBase()
+{
+ m_gridPowerFlow->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPowerFlowGridChanged), NULL, this);
+ m_gridPFBuses->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPFBusGridChanged), NULL, this);
+ m_gridPFBranches->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnPFBranchesGridChanged), NULL, this);
+ m_gridFault->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaulrGridChanged), NULL, this);
+ m_gridFaultBuses->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultBusesGridChanged), NULL, this);
+ m_gridFaultBranches->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultBranchesGridChanged), NULL, this);
+ m_gridFaultGenerators->Disconnect(wxEVT_GRID_CELL_CHANGED, wxGridEventHandler(DataReportBase::OnFaultGeneratorsGridChanged), NULL, this);
+
+}
diff --git a/Project/DataReportBase.h b/Project/DataReportBase.h
new file mode 100644
index 0000000..aa3f721
--- /dev/null
+++ b/Project/DataReportBase.h
@@ -0,0 +1,94 @@
+//////////////////////////////////////////////////////////////////////
+// This file was auto-generated by codelite's wxCrafter Plugin
+// wxCrafter project file: DataReport.wxcp
+// Do not modify this file by hand!
+//////////////////////////////////////////////////////////////////////
+
+#ifndef _PSP_PROJECT_DATAREPORT_BASE_CLASSES_H
+#define _PSP_PROJECT_DATAREPORT_BASE_CLASSES_H
+
+#include <wx/settings.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/xrc/xh_bmp.h>
+#include <wx/frame.h>
+#include <wx/iconbndl.h>
+#include <wx/artprov.h>
+#include <wx/sizer.h>
+#include <wx/notebook.h>
+#include <wx/panel.h>
+#include <wx/imaglist.h>
+#include <wx/grid.h>
+#if wxVERSION_NUMBER >= 2900
+#include <wx/persist.h>
+#include <wx/persist/toplevel.h>
+#include <wx/persist/bookctrl.h>
+#include <wx/persist/treebook.h>
+#endif
+
+#ifdef WXC_FROM_DIP
+#undef WXC_FROM_DIP
+#endif
+#if wxVERSION_NUMBER >= 3100
+#define WXC_FROM_DIP(x) wxWindow::FromDIP(x, NULL)
+#else
+#define WXC_FROM_DIP(x) x
+#endif
+
+
+class DataReportBase : public wxFrame
+{
+protected:
+ wxNotebook* m_notebookPowerFlowData;
+ wxPanel* m_panelPowerFlowData;
+ wxNotebook* m_notebookPowerFlow;
+ wxPanel* m_panelPowerFlow;
+ wxGrid* m_gridPowerFlow;
+ wxPanel* m_panelPFBuses;
+ wxGrid* m_gridPFBuses;
+ wxPanel* m_panelPFBranches;
+ wxGrid* m_gridPFBranches;
+ wxPanel* m_panelFaultData;
+ wxNotebook* m_notebookFault;
+ wxPanel* m_panelFault;
+ wxGrid* m_gridFault;
+ wxPanel* m_panelFaultBuses;
+ wxGrid* m_gridFaultBuses;
+ wxPanel* m_panelFaultBranches;
+ wxGrid* m_gridFaultBranches;
+ wxPanel* m_panelFaultGenerators;
+ wxGrid* m_gridFaultGenerators;
+
+protected:
+ virtual void OnPowerFlowGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnPFBusGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnPFBranchesGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnFaulrGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnFaultBusesGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnFaultBranchesGridChanged(wxGridEvent& event) { event.Skip(); }
+ virtual void OnFaultGeneratorsGridChanged(wxGridEvent& event) { event.Skip(); }
+
+public:
+ wxGrid* GetGridPowerFlow() { return m_gridPowerFlow; }
+ wxPanel* GetPanelPowerFlow() { return m_panelPowerFlow; }
+ wxGrid* GetGridPFBuses() { return m_gridPFBuses; }
+ wxPanel* GetPanelPFBuses() { return m_panelPFBuses; }
+ wxGrid* GetGridPFBranches() { return m_gridPFBranches; }
+ wxPanel* GetPanelPFBranches() { return m_panelPFBranches; }
+ wxNotebook* GetNotebookPowerFlow() { return m_notebookPowerFlow; }
+ wxPanel* GetPanelPowerFlowData() { return m_panelPowerFlowData; }
+ wxGrid* GetGridFault() { return m_gridFault; }
+ wxPanel* GetPanelFault() { return m_panelFault; }
+ wxGrid* GetGridFaultBuses() { return m_gridFaultBuses; }
+ wxPanel* GetPanelFaultBuses() { return m_panelFaultBuses; }
+ wxGrid* GetGridFaultBranches() { return m_gridFaultBranches; }
+ wxPanel* GetPanelFaultBranches() { return m_panelFaultBranches; }
+ wxGrid* GetGridFaultGenerators() { return m_gridFaultGenerators; }
+ wxPanel* GetPanelFaultGenerators() { return m_panelFaultGenerators; }
+ wxNotebook* GetNotebookFault() { return m_notebookFault; }
+ wxPanel* GetPanelFaultData() { return m_panelFaultData; }
+ wxNotebook* GetNotebookPowerFlowData() { return m_notebookPowerFlowData; }
+ DataReportBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Data report"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(-1,-1), long style = wxDEFAULT_FRAME_STYLE);
+ virtual ~DataReportBase();
+};
+
+#endif
diff --git a/Project/DataReportBitmaps.cpp b/Project/DataReportBitmaps.cpp
new file mode 100644
index 0000000..5d547ad
--- /dev/null
+++ b/Project/DataReportBitmaps.cpp
@@ -0,0 +1,724 @@
+//
+// This file was automatically generated by wxrc, do not edit by hand.
+//
+
+#include <wx/wxprec.h>
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#include <wx/filesys.h>
+#include <wx/fs_mem.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/xrc/xh_all.h>
+
+#if wxCHECK_VERSION(2,8,5) && wxABI_VERSION >= 20805
+ #define XRC_ADD_FILE(name, data, size, mime) \
+ wxMemoryFSHandler::AddFileWithMimeType(name, data, size, mime)
+#else
+ #define XRC_ADD_FILE(name, data, size, mime) \
+ wxMemoryFSHandler::AddFile(name, data, size)
+#endif
+
+static size_t xml_res_size_0 = 3278;
+static unsigned char xml_res_file_0[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,
+0,0,195,62,97,203,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,9,112,
+72,89,115,0,0,21,211,0,0,21,211,1,251,209,60,11,0,0,0,25,116,69,88,116,
+83,111,102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,
+101,46,111,114,103,155,238,60,26,0,0,12,75,73,68,65,84,120,156,237,157,
+121,116,21,213,25,192,127,55,9,33,33,160,64,136,85,64,212,82,168,162,162,
+30,212,163,7,212,138,130,27,214,106,177,5,165,81,17,194,86,15,160,213,138,
+138,68,20,42,10,138,11,178,184,69,80,118,227,82,177,238,90,197,189,173,
+82,80,4,142,82,203,81,34,88,1,129,188,240,150,220,254,17,34,9,121,239,101,
+238,125,119,150,100,238,239,63,242,230,155,249,14,243,155,111,230,125,247,
+206,187,130,73,31,74,178,178,176,132,147,44,98,17,168,174,246,59,15,139,
+79,100,33,37,86,130,240,82,83,251,173,4,161,101,223,205,223,74,16,74,234,
+63,253,89,9,66,71,78,131,191,236,149,160,251,193,237,24,126,226,65,142,
+118,178,112,245,15,124,82,81,105,58,55,139,7,52,20,0,64,74,58,231,199,25,
+127,114,17,217,217,217,141,238,100,85,69,196,10,208,68,73,221,0,144,146,
+221,187,119,147,72,36,60,76,199,226,53,105,59,64,210,74,16,40,218,178,147,
+92,98,70,247,217,104,11,208,74,16,28,238,22,247,179,65,92,194,88,177,152,
+150,68,141,236,211,81,15,216,74,224,63,135,179,153,98,86,208,133,10,102,
+50,131,117,98,32,37,60,67,14,153,157,19,199,131,0,86,2,127,41,21,243,234,
+149,255,195,216,204,92,49,149,245,226,18,74,120,134,108,244,190,186,43,
+141,2,213,74,16,143,199,181,14,102,209,163,27,155,184,156,191,37,253,236,
+8,190,101,174,152,202,106,49,136,98,86,40,139,160,60,12,40,165,164,178,
+178,210,74,224,33,147,196,188,70,75,253,81,108,228,9,81,202,191,247,138,
+144,229,80,4,173,113,96,43,129,119,28,197,70,6,241,138,227,237,123,236,
+21,225,53,49,198,209,246,218,19,1,172,4,222,80,42,230,105,221,223,223,164,
+151,163,237,50,154,9,82,43,129,180,15,134,174,112,52,95,49,144,55,148,227,
+254,199,129,220,39,7,59,218,54,227,169,64,82,74,226,123,34,80,109,37,48,
+205,100,230,56,190,151,215,101,6,67,248,145,2,71,219,26,154,11,38,33,86,
+101,37,48,200,9,172,227,98,241,150,114,220,247,180,229,65,249,59,199,219,
+155,155,12,40,173,4,38,185,77,204,69,32,149,227,166,201,43,216,73,43,199,
+219,155,157,13,106,37,48,66,47,214,50,128,149,202,113,21,20,242,16,3,149,
+98,204,79,7,182,18,100,204,237,98,142,246,213,95,73,158,82,140,59,243,193,
+173,4,218,156,202,106,206,227,61,229,184,205,116,96,46,151,40,199,185,247,
+66,128,149,64,139,201,204,209,138,155,194,80,34,180,84,142,115,247,141,
+16,43,129,18,189,89,197,217,226,35,229,184,77,252,140,71,228,69,90,199,
+116,255,149,32,43,129,99,238,96,182,86,220,20,134,178,135,92,173,88,111,
+222,9,179,18,52,74,95,241,49,191,18,255,84,142,251,154,67,120,92,94,168,
+125,92,239,94,10,148,18,162,182,99,152,138,73,242,97,173,184,201,114,24,
+81,90,104,31,215,251,183,66,173,4,13,56,135,247,57,93,124,162,28,247,37,
+157,153,207,5,25,29,219,159,215,130,173,4,245,40,69,255,234,143,211,248,
+180,253,116,248,247,94,120,52,2,9,59,148,124,1,43,57,69,172,86,142,219,
+192,161,44,228,220,140,143,239,239,15,3,196,170,66,47,193,36,161,119,245,
+79,146,35,50,190,250,193,111,1,32,212,18,252,70,188,197,73,124,174,28,247,
+57,71,176,132,126,70,114,240,95,0,8,165,4,2,201,36,205,123,127,169,44,161,
+218,208,169,11,134,0,16,58,9,126,43,222,224,120,214,43,199,173,161,43,79,
+211,215,88,30,193,17,0,66,35,65,22,213,76,228,81,173,216,137,140,52,118,
+245,215,228,18,52,66,32,193,239,121,149,158,108,80,142,251,23,71,242,156,
+60,195,104,46,193,19,0,154,181,4,217,84,51,81,232,93,253,147,40,65,34,140,
+230,147,252,247,1,130,64,172,10,200,131,236,250,41,150,240,12,125,196,167,
+188,207,177,188,39,143,99,13,93,73,4,212,227,100,92,198,75,28,197,70,229,
+184,143,228,209,188,192,105,198,243,9,174,0,80,79,130,150,68,121,80,220,
+205,48,158,5,224,15,188,8,2,118,147,207,167,116,103,165,60,158,119,57,142,
+247,57,150,239,105,235,111,222,41,200,166,154,155,197,99,90,177,183,50,
+194,112,54,53,4,91,0,128,88,21,93,216,78,121,206,77,244,98,109,131,143,
+11,136,208,155,85,244,22,171,0,144,8,214,114,56,15,113,41,179,228,165,94,
+103,155,150,98,86,240,75,190,86,142,123,79,246,228,101,78,117,33,163,160,
+62,3,212,161,143,248,148,215,227,67,233,153,104,120,242,147,33,144,244,
+96,35,211,120,128,131,248,193,229,236,156,211,130,56,183,104,222,251,111,
+101,164,225,108,246,17,88,1,4,146,113,98,17,207,113,29,69,108,163,50,6,
+49,133,241,163,2,34,252,137,39,221,75,80,145,171,248,43,63,231,27,229,184,
+149,242,120,94,231,36,23,50,170,33,144,2,180,161,146,5,226,86,74,169,255,
+94,156,170,4,163,197,242,64,84,129,150,68,181,239,253,55,139,209,134,179,
+169,79,224,4,232,198,38,94,21,163,83,206,139,87,145,160,128,8,215,137,167,
+12,102,167,199,48,241,28,93,168,80,142,123,77,158,204,219,242,4,23,50,218,
+71,160,4,56,159,119,121,93,140,226,200,70,30,148,84,36,24,195,50,95,171,
+64,30,81,110,164,76,43,118,50,195,204,38,147,132,64,8,144,77,53,165,204,
+227,41,49,145,3,216,237,40,198,169,4,126,87,129,17,162,156,206,108,81,142,
+123,73,158,202,59,184,123,245,67,0,4,40,100,7,79,115,3,227,196,34,229,183,
+97,156,74,224,87,21,200,35,202,245,204,215,138,45,165,196,112,54,201,241,
+85,128,19,89,203,59,98,184,214,108,216,90,156,72,224,215,55,130,49,98,41,
+157,216,170,28,247,130,236,195,135,28,227,66,70,13,241,77,128,65,188,204,
+11,98,60,29,53,254,131,246,199,137,4,94,127,35,40,32,194,13,44,80,142,147,
+8,38,51,220,133,140,146,227,185,0,45,137,114,191,152,206,28,113,39,121,
+236,49,182,223,198,36,240,250,89,224,26,150,104,9,247,44,103,240,49,61,
+92,200,40,57,158,10,208,137,45,188,200,88,138,89,225,202,254,43,99,16,77,
+35,129,87,207,2,173,169,228,90,177,80,57,78,34,184,77,122,115,239,175,197,
+51,1,206,228,31,188,45,74,232,37,190,48,178,191,84,195,162,145,52,18,120,
+85,5,198,177,136,34,182,41,199,45,231,44,86,209,205,133,140,82,227,186,
+0,181,45,221,229,226,207,20,178,195,200,62,215,208,149,115,121,128,72,138,
+119,225,211,73,224,118,21,56,144,93,140,215,184,250,171,201,226,118,121,
+181,11,25,165,199,85,1,90,19,161,140,219,26,180,116,51,97,25,103,211,79,
+206,226,67,121,116,218,119,226,82,73,80,64,132,107,81,63,65,78,25,207,66,
+218,243,163,114,220,98,250,179,154,95,184,144,81,122,92,19,160,27,155,120,
+77,140,226,34,241,119,35,251,139,147,77,41,37,12,151,55,255,244,30,252,
+125,12,74,89,5,32,181,4,127,20,75,93,169,2,109,217,201,88,177,88,57,46,
+225,211,213,15,46,9,224,180,165,235,148,173,180,227,98,121,55,51,247,251,
+237,187,239,104,79,25,3,210,198,38,147,192,173,42,112,189,88,64,91,118,
+42,199,61,201,249,124,193,225,198,243,113,130,81,1,116,90,186,141,241,129,
+60,150,211,228,195,41,219,162,51,229,224,180,85,0,146,75,96,186,10,20,178,
+131,107,88,162,28,151,32,139,169,242,42,99,121,168,98,76,128,76,90,186,
+169,40,99,0,191,102,6,21,20,166,220,198,73,21,128,134,18,20,16,97,188,88,
+100,34,77,0,110,16,243,105,131,250,186,73,101,92,200,122,186,24,203,67,
+21,35,2,116,97,51,111,137,145,25,181,116,235,82,69,46,163,229,141,140,147,
+215,57,122,247,221,73,21,128,134,18,232,54,107,246,167,136,109,140,102,
+185,114,92,140,28,166,200,161,25,31,63,19,140,8,112,189,152,207,161,26,
+227,221,201,248,138,78,156,37,31,98,33,231,56,142,113,90,5,160,190,4,166,
+170,192,4,202,104,173,113,245,63,202,69,108,164,99,198,199,207,4,35,2,228,
+102,184,108,73,45,175,200,83,232,43,103,243,25,93,149,99,157,86,1,168,47,
+65,166,85,224,16,190,103,132,40,87,142,139,210,130,105,242,10,237,227,154,
+194,247,225,96,168,233,234,205,148,131,25,196,20,182,211,70,107,31,42,85,
+0,246,73,144,105,21,152,64,25,173,168,82,142,155,199,197,252,135,67,180,
+143,107,10,223,5,216,73,43,134,48,153,82,50,127,227,117,166,28,76,149,194,
+111,229,213,74,160,91,5,58,178,149,97,226,89,229,184,42,114,185,83,94,169,
+28,231,6,190,10,176,134,174,156,46,31,102,133,236,99,100,127,223,209,158,
+50,233,188,10,64,141,4,45,18,122,85,96,162,120,148,124,141,17,205,217,114,
+32,223,80,164,28,231,6,190,9,176,132,126,244,147,179,140,63,4,205,68,173,
+10,64,141,4,37,137,165,116,96,187,227,152,195,216,204,80,158,87,77,143,
+74,242,184,139,98,229,56,183,240,92,128,218,150,238,8,121,147,214,79,155,
+54,70,5,133,202,85,0,32,59,86,201,216,132,243,9,28,183,136,199,180,86,241,
+156,37,47,77,219,215,240,26,79,5,72,213,210,53,205,189,92,166,92,5,0,174,
+142,47,165,40,209,248,12,165,218,69,28,85,217,77,62,211,25,162,28,231,38,
+158,9,208,88,75,215,36,58,207,2,0,173,168,98,84,236,73,72,164,191,178,247,
+95,196,209,41,247,49,136,45,180,87,142,115,19,79,4,112,210,210,53,141,110,
+21,24,41,202,233,16,251,14,226,201,215,230,77,183,136,99,58,118,209,202,
+245,202,167,131,171,2,168,182,116,77,162,218,23,168,165,21,85,140,102,89,
+141,0,73,36,112,178,136,99,50,238,225,50,182,210,78,57,206,109,92,19,64,
+167,165,107,26,213,190,64,45,35,69,121,205,55,130,253,36,232,206,127,149,
+22,113,172,101,7,173,3,121,245,131,75,2,100,210,210,53,73,5,133,218,85,
+96,148,216,59,184,83,71,130,219,197,108,173,153,77,51,184,156,109,28,160,
+28,231,5,70,5,48,209,210,53,141,118,21,160,124,95,95,32,30,165,71,124,157,
+235,139,56,250,129,49,1,76,182,116,77,162,91,5,10,136,236,171,2,192,132,
+248,92,98,113,245,171,127,186,116,190,136,163,31,24,57,83,203,101,95,78,
+147,143,24,107,233,154,102,166,28,68,149,198,138,26,35,40,167,61,63,210,
+147,13,12,16,43,169,138,195,30,133,31,47,219,74,59,30,196,249,34,142,126,
+96,68,128,87,57,37,16,35,91,169,168,160,3,79,104,244,5,90,19,97,140,88,
+202,77,226,241,159,102,57,169,72,112,151,44,102,151,194,34,142,126,16,156,
+90,237,50,247,50,88,171,10,140,97,57,231,240,65,189,191,57,145,64,103,17,
+71,63,8,141,0,186,85,32,143,61,73,231,56,54,38,129,206,34,142,126,16,26,
+1,64,191,59,152,138,84,18,232,46,226,232,7,161,18,160,130,66,158,144,153,
+173,177,179,63,201,36,208,93,196,209,15,66,37,0,152,175,2,80,95,130,76,
+22,113,244,131,208,9,224,70,21,128,125,18,100,178,136,163,31,132,78,0,112,
+167,10,0,108,136,31,204,227,177,204,23,114,242,146,80,10,80,65,33,243,57,
+223,248,126,167,201,98,162,241,234,148,67,201,65,36,148,2,0,220,35,47,55,
+90,5,54,210,145,197,244,175,249,71,138,161,228,32,18,90,1,76,87,129,105,
+178,184,254,50,110,77,68,130,208,10,0,230,170,192,151,116,98,57,103,55,
+252,160,9,72,16,106,1,76,85,129,191,200,171,82,47,226,24,112,9,66,45,0,
+100,94,5,190,224,48,202,57,51,253,70,1,150,32,244,2,84,80,200,2,121,158,
+118,252,157,242,74,103,243,31,2,42,65,232,5,128,154,190,128,78,243,230,
+51,186,242,60,167,59,15,8,160,4,86,0,224,91,138,152,47,213,159,5,166,226,
+240,234,175,75,192,36,176,2,236,101,6,67,148,158,5,86,209,157,23,101,111,
+189,131,5,72,130,224,175,26,230,17,21,20,114,164,92,70,91,118,57,218,126,
+7,173,51,91,196,177,86,128,28,127,199,13,172,0,117,216,78,27,111,103,51,
+7,64,2,123,11,240,27,159,111,7,86,128,32,224,163,4,86,128,160,224,147,4,
+86,128,32,17,143,66,204,220,34,26,78,176,2,4,141,68,204,83,9,172,0,65,196,
+67,9,172,0,65,197,35,9,172,0,65,198,3,9,172,0,65,199,101,9,172,0,77,1,23,
+37,176,2,52,21,92,146,192,10,208,148,112,65,2,43,64,83,195,176,4,41,71,
+3,115,178,156,15,117,182,201,205,166,168,192,14,44,122,135,132,236,4,162,
+133,179,249,11,219,171,18,68,19,201,151,241,73,121,214,142,57,40,223,113,
+58,211,251,119,102,122,255,206,142,183,183,152,33,55,55,151,252,252,198,
+207,211,185,79,173,231,229,47,147,175,101,104,111,1,77,152,104,52,74,36,
+18,201,104,31,86,128,38,78,166,18,88,1,154,1,209,104,148,202,74,245,69,
+171,192,10,208,108,136,197,98,90,18,88,1,154,17,58,18,88,1,154,25,170,18,
+88,1,154,33,42,18,88,1,154,41,78,37,176,2,52,99,156,72,144,178,19,248,252,
+186,29,180,207,115,214,222,149,134,86,11,183,184,195,87,91,146,119,1,1,
+4,19,222,180,103,47,12,100,231,64,139,134,63,93,107,111,1,97,33,17,135,
+88,195,53,142,173,0,97,34,137,4,86,128,176,177,159,4,86,128,48,82,71,2,
+59,139,35,172,36,226,64,21,255,7,181,153,56,45,184,129,88,206,0,0,0,0,73,
+69,78,68,174,66,96,130};
+
+static size_t xml_res_size_1 = 560;
+static unsigned char xml_res_file_1[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
+0,31,243,255,97,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,9,112,
+72,89,115,0,0,2,186,0,0,2,186,1,219,5,165,194,0,0,0,25,116,69,88,116,83,
+111,102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,101,
+46,111,114,103,155,238,60,26,0,0,1,173,73,68,65,84,56,141,149,147,63,72,
+28,65,28,133,191,209,185,91,148,104,226,33,130,160,32,92,115,136,141,145,
+112,130,85,42,17,141,40,241,76,229,191,78,33,54,169,44,130,70,16,212,11,
+8,130,162,156,26,8,4,133,96,170,84,73,8,136,49,218,120,133,34,8,162,22,
+34,68,137,133,38,81,55,187,115,55,22,114,171,203,90,172,175,154,249,189,
+121,31,143,97,70,24,111,86,117,121,241,67,182,79,76,76,149,230,190,202,
+42,123,32,88,235,8,19,46,48,124,135,6,196,12,79,89,191,6,0,152,166,137,
+86,150,175,112,5,123,244,51,75,139,248,126,3,0,72,219,22,248,128,12,137,
+41,108,36,195,186,203,13,0,174,1,202,34,136,125,103,184,138,109,26,89,38,
+161,155,57,164,232,14,0,80,157,74,178,147,122,198,174,104,38,143,11,151,
+55,40,18,152,4,25,166,211,153,185,0,221,124,226,51,175,200,86,151,148,168,
+67,94,138,143,142,23,101,139,122,86,152,162,133,95,20,122,1,175,197,28,
+35,98,130,36,17,158,232,247,252,180,35,244,170,15,78,139,65,145,224,156,
+28,226,186,221,213,202,1,52,240,131,25,221,68,163,30,227,136,66,70,69,39,
+185,234,140,158,212,2,53,108,80,203,26,147,196,56,38,228,2,200,204,162,
+143,94,166,41,119,140,175,58,74,146,8,221,106,158,58,86,249,43,115,121,
+171,219,60,23,235,52,88,210,85,30,51,78,7,33,254,80,169,54,25,179,99,156,
+240,200,115,70,122,38,183,244,133,106,190,17,165,148,35,198,213,115,192,
+2,25,244,15,0,136,233,145,155,77,230,161,221,130,200,236,44,1,64,73,94,
+128,255,62,63,147,144,32,2,6,7,103,22,178,52,63,0,192,98,107,216,87,56,
+35,195,48,120,252,110,23,185,114,240,143,23,139,251,252,190,176,81,105,
+125,47,200,254,105,154,43,206,33,140,175,150,245,39,228,0,0,0,0,73,69,78,
+68,174,66,96,130};
+
+static size_t xml_res_size_2 = 6410;
+static unsigned char xml_res_file_2[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,0,0,0,1,0,8,6,0,0,0,
+92,114,168,102,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,9,112,72,
+89,115,0,0,43,165,0,0,43,165,1,137,102,26,50,0,0,0,25,116,69,88,116,83,
+111,102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,101,
+46,111,114,103,155,238,60,26,0,0,24,135,73,68,65,84,120,156,237,221,105,
+120,85,213,185,192,241,255,10,73,152,81,68,20,84,174,181,22,171,32,85,107,
+181,173,15,125,180,74,65,64,133,130,85,164,14,113,66,172,94,161,106,69,
+171,64,64,173,120,169,138,67,85,16,209,160,12,82,172,114,11,181,181,150,
+58,161,60,90,43,215,214,129,50,22,28,65,40,40,25,200,25,214,253,16,3,9,
+156,36,103,88,251,221,211,251,251,210,199,152,179,223,45,37,255,189,206,
+201,58,251,24,38,189,153,2,138,80,74,197,78,17,181,213,126,159,131,82,202,
+39,69,164,147,104,4,148,138,167,186,165,127,58,165,17,80,42,134,118,63,
+247,215,8,40,21,59,141,95,252,211,8,40,21,43,123,191,250,175,17,80,42,54,
+50,255,250,79,35,160,84,44,52,253,251,255,250,8,88,43,120,58,74,41,73,205,
+111,0,74,167,32,81,163,17,80,42,162,90,222,1,168,17,80,42,178,178,219,2,
+172,17,80,42,146,138,179,254,206,250,8,148,180,161,67,235,86,180,47,105,
+229,244,68,118,166,210,108,171,73,57,61,166,82,170,121,217,7,0,118,69,96,
+226,143,122,114,253,73,221,156,158,200,31,87,111,103,224,220,85,78,143,
+169,148,106,94,238,239,2,76,167,72,212,84,99,245,233,128,82,161,151,215,
+219,128,211,169,36,85,85,85,26,1,165,66,46,239,251,0,36,147,26,1,165,194,
+174,160,27,129,104,4,148,10,183,130,239,4,164,17,80,42,188,156,220,10,76,
+35,160,212,222,78,53,111,114,32,91,253,62,141,102,57,187,23,96,50,153,164,
+178,178,82,35,160,20,208,158,106,230,113,11,107,205,16,238,53,119,209,141,
+45,126,159,82,70,78,111,6,154,74,165,52,2,74,1,99,152,207,1,108,165,29,
+53,92,195,124,86,155,31,115,175,185,43,112,43,2,231,119,3,214,8,168,184,
+235,68,37,215,153,39,27,125,173,61,213,187,66,48,133,7,232,204,23,62,157,
+93,99,158,220,14,92,35,160,226,108,44,243,216,175,137,31,240,14,84,49,206,
+84,240,111,115,38,83,120,128,125,249,82,248,236,26,243,236,243,0,52,2,42,
+142,246,97,7,99,205,188,22,191,175,227,87,33,88,99,134,82,206,12,246,97,
+135,192,217,237,205,211,15,4,209,8,168,184,185,142,57,57,45,239,247,227,
+11,38,154,71,118,133,160,19,149,30,158,221,222,60,255,68,32,141,128,138,
+139,46,108,103,76,22,87,255,166,30,91,31,130,113,166,130,182,236,116,124,
+118,153,137,124,36,152,70,64,197,193,245,230,201,130,175,224,251,179,141,
+41,60,192,122,115,22,227,76,5,109,168,117,116,118,153,137,125,38,160,70,
+64,69,217,254,108,227,42,22,56,59,222,1,108,101,10,15,240,47,51,140,49,
+102,190,103,33,16,253,80,80,141,128,138,170,113,166,130,142,84,57,63,110,
+15,62,99,26,119,177,210,12,103,140,153,79,107,199,33,16,255,84,96,141,128,
+138,154,110,108,225,103,44,244,116,198,127,241,41,211,184,139,119,205,185,
+92,200,18,12,110,126,126,124,249,88,112,141,128,138,146,27,121,156,118,
+212,136,204,58,156,15,185,208,44,193,98,156,28,207,151,0,128,70,64,69,67,
+119,62,103,148,121,70,116,230,100,46,119,118,44,223,2,0,26,1,21,126,55,
+51,75,236,87,118,0,127,226,251,188,108,143,115,118,60,95,3,0,26,1,21,94,
+61,248,140,203,204,34,209,153,229,14,175,254,16,128,0,64,93,4,106,170,171,
+244,115,7,84,168,220,98,30,117,254,170,124,115,22,219,190,44,183,125,156,
+30,51,16,1,0,72,167,82,144,208,207,34,84,225,112,40,159,80,198,98,209,153,
+46,159,251,215,11,76,0,0,72,167,53,2,42,20,38,152,153,148,146,16,155,247,
+172,61,133,55,233,229,252,184,193,10,0,104,4,84,224,29,206,135,92,200,18,
+177,121,22,195,36,15,174,254,16,196,0,128,70,64,5,218,4,51,147,98,228,62,
+198,110,33,167,177,130,35,60,57,118,48,3,0,26,1,21,72,61,217,200,72,254,
+40,54,47,77,17,183,217,75,60,59,126,112,3,0,117,17,168,213,8,168,224,152,
+100,166,139,94,253,159,226,71,188,67,79,207,142,31,236,0,0,88,141,128,10,
+134,94,172,227,92,254,44,54,47,69,17,183,218,75,61,157,17,252,0,128,70,
+64,5,66,185,153,65,17,105,177,121,115,24,200,251,28,230,233,140,112,4,0,
+52,2,202,87,71,179,134,225,44,21,155,151,162,136,95,217,139,61,159,19,158,
+0,128,70,64,249,230,86,30,22,189,250,87,112,6,43,57,212,243,57,225,10,0,
+104,4,148,184,111,243,1,67,204,75,98,243,18,20,115,187,135,175,252,55,20,
+190,0,64,131,8,200,21,89,197,215,36,166,59,187,1,71,54,102,217,179,88,203,
+193,34,179,194,25,0,248,42,2,53,26,1,229,169,239,152,247,25,108,150,137,
+205,171,165,132,41,148,137,205,11,111,0,64,35,160,60,119,27,15,137,94,253,
+31,177,67,89,79,119,177,121,225,14,0,104,4,148,103,78,50,239,48,128,215,
+197,230,213,80,42,122,245,135,40,4,0,52,2,202,19,147,121,88,116,222,195,
+12,231,67,14,16,157,25,141,0,128,70,64,57,213,215,172,224,52,222,20,155,
+87,67,41,83,237,5,98,243,234,69,39,0,160,17,80,206,220,198,67,162,243,30,
+224,28,62,166,171,232,76,136,90,0,64,35,160,10,214,207,188,193,201,252,
+93,108,94,37,109,125,185,250,67,20,3,0,26,1,85,144,9,204,20,157,119,63,
+231,178,137,253,68,103,214,139,102,0,64,35,160,242,114,186,121,157,31,240,
+182,216,188,29,180,227,110,59,82,108,222,158,162,27,0,208,8,168,156,149,
+51,67,116,222,61,118,36,155,233,44,58,179,161,104,7,0,52,2,42,107,103,242,
+10,223,229,159,98,243,182,211,129,105,156,39,54,47,147,232,7,0,52,2,170,
+69,6,203,120,35,251,220,255,110,251,83,182,210,73,116,230,158,226,17,0,
+208,8,168,102,13,229,37,78,224,61,177,121,219,232,200,125,156,43,54,175,
+41,241,9,0,104,4,84,70,6,203,68,35,251,220,127,170,189,128,109,116,20,157,
+153,73,188,2,0,26,1,181,151,159,240,23,142,97,149,216,188,45,236,195,253,
+1,184,250,67,28,3,0,26,1,181,75,17,105,110,49,143,138,206,188,147,139,248,
+146,118,162,51,155,18,207,0,128,70,64,1,48,130,231,233,195,106,177,121,
+155,233,204,67,118,184,216,188,150,196,55,0,160,17,136,185,86,164,25,47,
+124,245,191,131,50,118,4,228,234,15,113,15,0,104,4,98,236,124,254,192,145,
+172,23,155,247,9,251,51,221,14,19,155,151,13,13,0,104,4,98,168,21,105,126,
+105,30,19,157,249,43,123,49,85,180,17,157,217,18,13,64,61,141,64,172,148,
+241,123,142,96,131,216,188,143,233,202,163,12,17,155,151,45,13,64,67,26,
+129,88,40,33,41,126,245,191,213,94,74,53,173,69,103,102,67,3,176,39,141,
+64,228,93,202,34,190,206,71,98,243,54,208,141,89,156,37,54,47,23,26,128,
+76,244,115,7,34,171,148,4,227,76,133,232,204,201,246,50,106,41,17,157,153,
+45,13,64,83,172,213,8,68,208,40,158,225,107,124,34,54,111,61,221,121,130,
+65,98,243,114,165,1,104,142,70,32,82,218,80,43,126,245,47,183,163,2,123,
+245,7,13,64,203,52,2,145,113,165,89,200,33,108,18,155,183,138,30,204,97,
+160,216,188,124,104,0,178,81,31,129,180,70,32,172,218,178,147,235,121,82,
+116,102,185,29,69,146,86,162,51,115,165,1,200,150,181,144,208,8,132,213,
+213,102,1,7,177,89,108,222,123,28,198,124,250,139,205,203,151,6,32,23,26,
+129,80,106,79,181,248,213,127,146,29,69,58,4,63,94,193,63,195,160,201,35,
+2,39,154,119,185,136,197,162,59,207,212,110,215,152,167,56,128,173,98,243,
+254,193,55,88,200,169,98,243,10,81,236,247,9,132,82,125,4,74,218,66,81,
+243,13,29,197,51,220,207,84,74,77,2,128,47,104,207,27,182,55,203,56,134,
+183,56,138,87,56,54,16,119,134,137,170,14,84,241,115,230,138,206,44,39,
+28,87,127,208,0,228,175,133,8,180,161,150,251,205,84,46,227,217,70,95,239,
+68,37,253,204,27,244,227,13,0,82,20,177,146,67,121,149,99,89,102,235,162,
+240,30,135,97,49,34,255,25,81,119,45,115,233,202,127,196,230,189,205,55,
+121,198,158,34,54,175,80,26,128,66,52,17,129,30,124,198,66,198,113,34,239,
+182,120,136,86,164,233,197,58,122,177,142,81,230,25,0,62,165,11,127,179,
+71,241,22,71,241,170,169,11,67,16,247,145,7,221,62,236,96,172,153,39,58,
+115,162,189,34,84,241,214,0,20,106,143,8,244,55,203,153,203,45,116,97,123,
+222,135,236,198,22,206,48,175,114,6,175,2,80,107,74,248,187,61,146,229,
+230,104,94,179,223,226,105,78,13,205,18,211,79,215,49,135,206,124,33,54,
+239,77,122,177,152,190,98,243,92,208,191,69,46,88,139,73,84,113,131,125,
+156,63,48,166,160,31,254,76,74,73,240,61,243,15,198,50,143,5,230,38,206,
+102,169,211,227,71,81,23,182,51,70,175,254,45,210,0,56,208,129,106,42,152,
+200,205,137,223,136,252,138,112,162,153,65,17,250,171,200,230,92,199,147,
+116,162,82,108,222,235,244,225,57,78,18,155,231,138,6,160,64,61,217,200,
+11,230,74,206,226,101,172,133,202,4,164,60,254,217,236,197,58,93,5,52,99,
+127,182,113,181,89,32,58,115,2,163,69,231,185,162,1,40,192,32,150,177,212,
+140,230,72,254,189,235,107,82,17,208,85,64,211,198,153,10,58,82,37,54,111,
+25,199,240,130,61,81,108,158,75,26,128,60,20,147,162,156,25,204,49,227,
+51,254,69,147,136,128,174,2,50,235,198,22,126,198,66,209,153,183,112,165,
+232,60,151,52,0,57,234,202,127,120,150,235,25,107,230,97,176,77,126,159,
+68,4,38,152,71,116,21,176,135,113,166,130,118,212,136,205,91,106,79,224,
+69,123,188,216,60,215,52,0,57,56,150,149,44,53,63,163,175,89,145,213,247,
+123,29,129,222,172,213,85,64,3,221,249,156,43,248,157,232,204,73,230,114,
+209,121,174,105,0,178,84,198,98,158,55,255,77,15,62,205,233,113,94,71,64,
+95,11,216,237,102,102,209,150,157,98,243,254,196,247,121,217,30,39,54,207,
+11,26,128,22,180,161,150,251,204,175,153,102,238,162,148,68,94,199,240,
+50,2,189,88,199,112,93,5,208,131,207,184,204,44,18,157,89,78,184,175,254,
+160,1,104,214,193,108,98,9,99,184,144,37,5,31,203,203,8,76,212,215,2,184,
+153,89,180,166,86,108,222,18,250,178,220,246,17,155,231,21,13,64,19,250,
+154,21,188,104,70,115,188,249,192,217,49,189,138,64,111,214,198,122,21,
+112,40,159,112,177,249,189,232,204,73,54,252,87,127,208,0,236,197,96,185,
+142,57,44,226,58,79,222,69,230,85,4,38,152,153,177,93,5,140,55,143,230,
+253,244,44,31,139,56,153,55,233,37,54,207,75,26,128,6,58,80,77,133,41,103,
+188,153,73,43,15,127,152,188,136,192,209,172,137,229,42,224,112,62,228,
+34,22,139,205,179,24,202,237,40,177,121,94,211,0,124,165,225,150,94,9,94,
+68,32,142,175,5,76,48,51,41,38,37,54,239,105,123,42,43,56,66,108,158,215,
+52,0,100,222,210,43,193,117,4,226,246,90,64,79,54,50,146,63,138,205,75,
+83,196,173,92,42,54,79,66,172,3,80,76,138,219,205,67,77,110,233,149,224,
+58,2,227,205,163,177,89,5,148,155,25,162,87,255,5,244,227,29,122,138,205,
+147,16,219,0,116,97,59,11,25,199,85,44,104,118,75,175,4,151,17,232,195,
+106,134,153,191,22,126,160,128,235,197,58,70,240,188,216,188,20,69,76,182,
+151,137,205,147,18,203,0,28,203,74,94,52,163,57,197,188,229,247,169,236,
+82,31,129,164,131,8,148,19,253,221,129,229,194,59,32,231,114,58,239,115,
+152,216,60,41,177,11,64,190,91,122,37,88,11,85,14,34,208,155,181,145,94,
+5,72,255,198,35,69,17,183,219,75,196,230,73,138,77,0,92,108,233,149,224,
+42,2,81,94,5,220,202,195,162,255,109,21,156,193,74,14,21,155,39,41,22,1,
+112,185,165,87,130,139,8,68,117,21,240,109,62,96,136,121,73,108,94,130,
+226,200,94,253,33,6,1,240,98,75,175,4,23,17,136,226,42,96,18,211,69,95,
+180,125,140,51,89,203,193,98,243,164,69,54,0,6,203,88,51,207,179,45,189,
+18,10,141,64,111,214,242,99,94,116,122,78,126,58,158,247,25,108,150,137,
+205,171,165,132,41,182,76,108,158,31,34,25,128,250,45,189,229,204,240,116,
+75,175,132,66,35,48,201,76,143,204,42,224,118,243,144,232,213,255,17,59,
+148,117,28,36,54,207,15,145,11,192,145,172,231,69,51,74,108,75,111,62,82,
+57,254,177,23,18,129,168,172,2,78,50,239,48,128,215,197,230,213,80,202,
+29,92,44,54,207,47,145,10,192,32,150,241,103,115,21,223,224,67,191,79,37,
+35,139,225,97,134,243,115,123,109,238,143,45,32,2,81,88,5,76,230,97,209,
+121,211,237,48,62,162,171,232,76,63,68,34,0,173,72,55,123,151,222,32,216,
+65,91,202,152,200,141,246,106,230,48,144,213,28,146,243,49,242,141,64,216,
+87,1,125,205,10,78,227,77,177,121,53,148,50,149,11,197,230,249,41,244,1,
+232,194,118,158,230,134,22,239,210,235,167,213,28,66,63,251,32,139,236,
+201,64,221,83,128,123,236,79,243,58,86,190,17,8,243,42,224,86,43,123,245,
+127,128,115,98,113,245,135,144,7,32,136,91,122,247,244,156,61,137,83,237,
+195,124,192,215,26,125,125,62,253,243,90,5,64,126,17,8,235,42,160,159,121,
+67,244,255,223,74,218,50,213,94,32,54,207,111,161,13,64,144,183,244,66,
+221,85,190,156,81,140,228,54,190,160,125,198,127,159,239,42,0,242,139,64,
+24,87,1,19,152,41,58,239,126,206,101,19,251,137,206,244,83,232,2,208,58,
+4,91,122,183,176,15,103,219,59,153,102,207,107,246,211,98,11,89,5,64,238,
+17,232,205,90,134,10,238,162,43,212,233,230,117,126,192,219,98,243,118,
+208,142,187,237,72,177,121,65,16,170,0,28,204,38,254,16,240,45,189,255,
+199,17,252,208,78,231,175,124,167,197,239,45,116,21,0,95,189,139,176,54,
+251,8,76,34,60,171,128,114,102,136,206,187,199,142,100,51,157,69,103,250,
+45,52,1,8,195,150,222,249,244,103,128,189,143,13,28,152,211,99,10,89,5,
+212,203,54,2,71,179,38,20,171,128,51,204,43,124,151,127,138,205,219,78,
+7,166,113,158,216,188,160,8,124,0,194,176,165,119,39,165,140,177,215,51,
+218,222,68,13,173,115,122,172,139,85,64,189,108,35,16,244,85,128,193,138,
+63,247,191,135,145,108,165,147,232,204,32,8,116,0,194,176,165,247,99,186,
+50,216,78,163,130,193,121,31,99,62,253,89,227,232,13,39,149,181,144,104,
+225,46,89,65,95,5,12,229,37,78,224,61,177,121,219,232,200,189,118,132,216,
+188,32,9,108,0,164,239,210,155,143,101,28,195,41,118,58,127,227,168,130,
+142,227,114,21,0,117,47,12,182,20,129,160,174,2,12,150,137,70,246,185,255,
+84,123,1,219,232,40,58,51,40,2,25,128,65,44,227,47,230,74,241,187,244,102,
+171,126,75,239,16,123,23,155,28,189,104,52,143,1,206,86,1,208,114,4,130,
+186,10,56,155,191,112,12,171,196,230,109,97,31,238,231,92,177,121,65,19,
+168,0,52,220,210,219,137,74,191,79,39,163,134,91,122,147,180,114,118,92,
+215,171,0,104,57,2,65,91,5,20,145,102,188,121,84,116,230,255,216,11,249,
+146,118,162,51,131,36,48,1,40,37,25,186,45,189,174,185,94,5,64,243,17,56,
+154,53,12,9,208,83,172,17,60,79,31,86,139,205,219,76,103,30,228,108,177,
+121,65,20,152,0,156,104,222,13,229,150,94,151,188,88,5,64,243,17,152,108,
+100,239,175,215,148,86,62,92,253,239,160,140,29,49,190,250,67,128,2,208,
+134,157,126,159,66,70,45,109,233,117,205,139,85,0,52,29,129,160,172,2,126,
+202,115,28,201,122,177,121,159,176,63,211,237,48,177,121,65,21,152,0,4,
+81,182,91,122,93,242,106,21,0,77,71,192,239,85,64,43,210,220,108,102,137,
+206,188,131,50,170,104,35,58,51,136,52,0,77,200,101,75,175,107,94,173,2,
+32,115,4,252,94,5,148,241,123,142,96,131,216,188,143,233,202,76,59,84,108,
+94,144,105,0,50,200,103,75,175,75,41,138,152,230,225,155,82,50,69,192,175,
+85,64,9,73,126,105,30,19,157,121,171,189,148,234,28,119,108,70,149,6,160,
+129,66,182,244,186,54,159,254,172,167,187,103,199,223,51,2,126,173,2,46,
+49,255,203,215,249,72,108,222,6,186,49,139,179,196,230,5,157,6,224,43,46,
+182,244,186,148,160,152,187,236,249,158,206,216,51,2,19,204,35,162,191,
+130,45,37,193,141,60,46,54,15,234,174,254,181,148,136,206,12,50,13,0,238,
+182,244,186,230,245,42,0,26,71,224,88,254,37,250,169,59,163,120,134,175,
+241,137,216,188,245,116,103,118,64,2,31,20,177,14,128,23,91,122,93,146,
+88,5,64,227,8,76,68,102,21,208,134,90,198,153,10,207,231,52,84,110,71,233,
+213,127,15,177,13,128,87,91,122,93,147,88,5,192,238,8,72,173,2,70,243,52,
+135,176,201,243,57,245,86,209,131,57,12,20,155,23,22,177,12,128,215,91,
+122,93,146,90,5,192,238,8,120,189,10,104,203,78,126,97,158,240,236,248,
+153,76,178,163,2,29,122,191,196,46,0,139,236,201,156,98,103,120,186,165,
+215,181,249,244,231,223,116,19,153,85,149,128,222,41,111,87,1,87,241,91,
+14,98,179,103,199,223,211,251,28,198,124,250,139,205,11,147,216,4,160,126,
+75,111,25,19,217,65,91,191,79,39,39,146,171,0,168,139,192,205,169,25,158,
+172,2,218,83,45,126,245,47,183,163,114,254,56,182,184,136,197,159,138,31,
+91,122,93,155,199,0,145,215,2,234,245,76,172,226,204,244,82,231,199,189,
+198,60,197,1,108,117,126,220,166,188,203,215,89,200,169,98,243,194,38,242,
+1,240,115,75,175,75,9,138,185,219,163,247,8,52,229,23,137,153,152,148,187,
+91,175,119,160,138,159,51,215,217,241,178,49,129,209,164,163,255,215,60,
+111,145,254,147,241,123,75,175,107,210,171,128,62,172,102,96,98,41,164,
+146,78,142,119,45,115,69,111,236,250,54,223,228,25,123,138,216,188,48,138,
+100,0,130,180,165,215,37,63,86,1,55,154,10,76,162,26,10,92,9,236,195,14,
+198,154,121,142,206,42,59,19,237,21,161,125,202,39,37,114,1,8,218,150,94,
+215,164,87,1,223,98,21,3,121,13,18,59,11,138,192,181,102,14,157,249,194,
+225,153,53,239,45,142,98,49,125,197,230,133,85,164,2,16,212,45,189,46,249,
+182,10,192,230,29,129,125,249,146,107,120,202,131,51,107,218,120,59,90,
+175,254,89,136,68,0,130,190,165,215,181,121,12,16,219,23,0,13,86,1,144,
+87,4,110,96,54,251,242,165,7,103,150,217,235,244,225,57,78,18,155,23,102,
+161,15,64,88,182,244,186,84,183,10,144,219,23,0,13,86,1,144,83,4,246,103,
+27,87,155,5,30,158,217,222,38,48,90,116,94,152,133,58,0,97,218,210,235,
+218,92,63,87,1,144,117,4,110,96,54,29,169,242,240,204,26,91,198,49,188,
+96,79,20,155,23,118,161,13,128,196,93,122,131,204,247,85,0,180,24,129,110,
+108,225,42,243,91,129,51,219,237,22,174,20,157,23,118,161,11,64,138,34,
+166,216,139,196,238,210,27,100,126,172,2,78,55,175,55,254,98,51,17,24,103,
+42,104,71,141,192,153,213,89,106,79,224,69,123,188,216,188,40,8,85,0,234,
+183,244,78,161,76,95,225,197,159,85,192,77,60,190,247,123,4,50,68,160,59,
+159,115,5,191,19,60,51,152,100,46,23,157,23,5,161,9,64,84,182,244,186,22,
+136,85,0,236,21,129,95,154,199,104,43,248,89,15,127,226,251,188,108,143,
+19,155,23,21,161,8,64,212,182,244,186,148,160,216,179,207,17,104,74,198,
+85,0,236,138,64,15,62,227,114,158,21,61,167,114,244,234,159,143,64,7,32,
+170,91,122,93,155,195,233,193,88,5,0,36,118,50,46,53,147,214,212,138,157,
+207,18,250,178,220,246,17,155,23,37,129,13,64,212,183,244,186,20,164,85,
+64,15,62,227,156,228,18,106,155,249,84,98,215,38,115,153,220,176,136,9,
+100,0,226,176,165,215,181,160,172,2,110,48,179,41,37,65,117,2,145,8,60,
+107,79,225,13,219,219,251,65,17,21,152,0,108,176,221,99,183,165,215,165,
+32,172,2,14,227,99,70,240,252,174,127,246,58,2,22,195,36,125,238,95,144,
+192,4,96,21,135,48,132,95,199,106,75,175,107,115,56,157,13,194,171,128,
+1,44,223,245,207,227,204,108,74,104,124,239,0,47,35,240,59,126,200,10,142,
+240,230,224,49,17,152,0,88,12,47,219,111,251,125,26,161,230,199,59,5,111,
+50,117,171,128,195,249,136,179,121,33,227,247,120,17,129,52,69,76,182,250,
+220,191,80,129,9,128,114,67,250,181,128,99,248,23,3,88,206,141,230,113,
+138,105,250,167,220,117,4,22,208,143,119,232,233,238,128,49,165,1,136,24,
+63,94,11,184,195,60,192,112,90,190,129,104,117,2,118,58,184,187,88,138,
+34,38,89,125,238,239,130,6,32,130,164,87,1,135,241,113,214,31,45,94,147,
+44,60,2,115,57,61,182,111,2,115,77,3,16,65,9,138,153,198,72,191,79,163,
+73,133,68,32,69,17,183,219,75,220,158,80,140,105,0,34,234,73,59,80,116,
+21,144,171,124,35,48,155,193,172,228,80,247,39,20,83,26,128,136,10,250,
+42,0,114,143,64,130,98,110,179,151,122,119,66,49,164,1,136,176,160,175,
+2,32,183,8,60,198,153,172,229,96,111,79,40,102,52,0,17,22,134,85,0,100,
+23,129,4,197,76,177,101,34,231,19,39,26,128,136,123,210,14,20,221,29,152,
+175,150,34,240,8,67,89,199,65,114,39,20,19,26,128,136,75,80,204,52,123,
+158,223,167,145,149,166,34,80,67,41,119,216,139,229,79,40,6,52,0,49,240,
+4,131,66,177,10,128,204,17,152,110,135,241,33,7,248,115,66,17,167,1,136,
+129,48,173,2,160,113,4,106,40,101,42,23,250,123,66,17,166,1,136,137,48,
+173,2,96,119,4,126,99,207,225,35,186,250,125,58,145,165,1,136,137,176,173,
+2,0,182,38,219,112,103,114,132,223,167,17,105,26,128,24,9,219,42,96,58,
+195,216,156,108,15,73,185,251,11,198,141,6,32,70,194,180,10,168,164,45,
+191,177,63,169,251,135,100,173,70,192,35,26,128,152,9,203,42,224,65,206,
+230,115,246,221,253,5,141,128,39,52,0,49,147,160,152,123,9,246,243,234,
+47,104,207,131,245,87,255,134,52,2,206,105,0,98,104,182,29,28,232,85,192,
+131,252,132,255,208,49,243,191,212,8,56,165,1,136,161,32,175,2,182,211,
+129,135,236,240,230,191,73,35,224,140,6,32,166,130,186,10,184,207,142,96,
+59,29,90,254,70,141,128,19,26,128,152,10,226,42,96,43,157,152,206,176,236,
+31,160,17,40,152,6,32,198,130,182,10,184,215,158,199,14,218,230,246,32,
+141,64,65,52,0,49,22,164,85,192,38,58,243,8,67,243,123,176,70,32,111,26,
+128,152,123,194,14,98,99,0,86,1,247,218,17,84,209,38,255,3,104,4,242,162,
+1,136,185,90,74,184,215,250,187,10,248,148,46,204,98,72,225,7,210,8,228,
+76,3,160,152,141,191,171,128,123,24,73,53,173,221,28,76,35,144,19,13,128,
+242,117,21,240,41,251,83,97,7,187,61,168,70,32,107,26,0,5,248,183,10,152,
+202,249,212,184,186,250,55,164,17,200,138,6,64,1,117,171,128,105,194,191,
+17,216,72,55,158,176,131,188,27,160,17,104,145,6,64,237,34,253,27,129,169,
+246,124,106,41,241,118,136,70,160,89,26,0,181,139,228,107,1,27,232,198,
+124,250,139,204,34,89,11,137,157,50,179,66,70,3,160,26,145,122,45,96,138,
+45,243,254,234,223,80,42,161,17,200,64,3,160,26,169,165,132,251,56,215,
+211,25,107,56,152,5,244,243,116,70,70,26,129,189,104,0,212,94,42,236,96,
+79,87,1,119,218,50,146,180,242,236,248,205,210,8,52,82,236,247,9,168,224,
+169,165,132,65,118,26,93,216,214,236,247,181,50,150,142,84,230,124,252,
+87,56,46,223,83,115,35,149,168,251,223,18,15,126,253,24,50,26,0,149,209,
+70,14,100,35,7,54,255,77,86,230,92,60,161,17,0,244,41,128,138,51,125,58,
+160,1,80,49,23,243,8,104,0,148,138,113,4,52,0,74,65,108,35,160,1,80,170,
+94,12,35,160,1,80,170,161,152,69,64,3,160,212,158,98,20,1,13,128,82,153,
+196,36,2,26,0,165,154,18,131,8,104,0,148,106,78,42,1,137,26,191,207,194,
+51,26,0,165,90,146,74,70,54,2,26,0,165,178,17,209,8,104,0,148,202,86,4,
+35,160,1,80,42,23,17,139,128,6,64,169,92,69,40,2,26,0,165,242,17,145,8,
+104,0,148,202,87,4,34,160,1,80,170,16,33,143,128,6,64,169,66,133,56,2,26,
+0,165,92,8,105,4,52,0,74,185,18,194,8,104,0,148,114,41,100,17,208,0,40,
+229,90,136,34,160,1,80,202,11,169,36,212,86,251,125,22,45,210,0,40,229,
+149,116,42,240,17,208,0,40,229,165,128,71,64,3,160,148,215,2,28,1,13,128,
+82,18,2,26,1,13,128,82,82,2,24,129,188,62,29,184,93,137,251,110,116,40,
+109,69,175,174,109,157,31,87,169,160,49,69,80,212,218,237,223,245,205,85,
+73,62,221,145,200,249,113,121,5,224,184,238,237,243,121,88,179,190,119,
+72,123,94,187,228,72,231,199,85,42,136,138,139,139,105,223,222,221,207,
+209,61,203,63,227,218,231,55,230,252,56,125,10,160,148,15,146,201,36,149,
+149,149,126,159,134,6,64,41,191,4,33,2,26,0,165,124,228,119,4,52,0,74,249,
+172,62,2,214,90,241,217,26,0,165,2,32,153,76,82,85,85,37,30,1,13,128,82,
+1,225,71,4,52,0,74,5,136,116,4,52,0,74,5,140,100,4,52,0,74,5,144,84,4,52,
+0,74,5,148,68,4,52,0,74,5,152,215,17,208,0,40,21,112,94,70,64,3,160,84,
+8,120,21,1,13,128,82,33,225,69,4,52,0,74,133,136,235,8,104,0,148,10,25,
+151,239,29,208,0,40,21,66,169,84,202,73,4,52,0,74,133,148,139,8,104,0,148,
+10,177,66,35,144,87,0,94,219,248,101,94,195,148,82,238,165,82,41,106,107,
+170,32,143,8,24,110,90,154,170,187,79,105,246,218,151,22,121,114,103,96,
+165,84,126,170,18,105,42,147,64,73,91,48,38,235,199,229,117,87,224,202,
+218,52,149,181,233,124,30,170,148,242,82,162,58,167,8,232,101,92,169,40,
+73,167,235,34,144,229,211,1,13,128,82,81,147,67,4,52,0,74,69,81,150,17,
+208,0,40,21,85,89,68,64,3,160,84,148,181,16,1,13,128,82,81,215,76,4,52,
+0,74,197,65,19,17,208,0,40,21,23,25,34,160,1,80,42,78,246,136,128,6,64,
+169,184,105,16,1,13,128,82,113,244,85,4,254,31,121,241,55,153,214,40,101,
+56,0,0,0,0,73,69,78,68,174,66,96,130};
+
+static size_t xml_res_size_3 = 987;
+static unsigned char xml_res_file_3[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,32,0,0,0,32,8,6,0,0,
+0,115,122,122,244,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,9,112,
+72,89,115,0,0,5,98,0,0,5,98,1,172,97,92,156,0,0,0,25,116,69,88,116,83,111,
+102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,101,46,
+111,114,103,155,238,60,26,0,0,3,88,73,68,65,84,88,133,197,151,123,104,141,
+97,24,192,127,239,217,185,76,10,209,140,105,229,210,92,74,174,115,89,91,
+20,139,134,48,127,80,194,220,134,63,8,145,63,196,54,119,43,33,252,97,182,
+154,40,162,200,106,214,148,132,153,68,211,102,180,37,119,25,67,238,235,
+236,59,231,59,123,253,113,182,119,59,190,239,59,151,156,195,243,215,251,
+60,207,251,188,207,239,125,222,219,247,9,242,238,74,226,28,252,47,177,227,
+213,72,238,233,100,250,144,62,0,220,122,253,147,151,223,180,127,6,96,3,
+24,213,219,70,81,86,18,165,243,6,50,105,64,247,152,36,74,166,153,25,226,
+158,57,0,128,219,237,198,227,241,196,36,57,192,78,81,194,53,54,80,69,46,
+233,212,25,1,58,32,218,116,111,212,147,15,162,137,229,148,3,144,33,106,
+25,79,131,57,0,128,207,211,10,122,116,43,145,39,138,113,160,3,240,142,4,
+138,88,96,13,0,248,1,162,4,145,194,91,150,82,161,244,253,114,37,26,206,
+16,0,81,132,200,19,197,196,209,6,192,27,250,81,194,188,0,191,53,64,20,32,
+134,243,138,197,92,83,250,94,185,10,15,129,119,78,112,128,63,32,250,243,
+57,34,128,2,113,10,91,251,236,95,146,196,105,230,24,250,132,6,0,156,122,
+11,39,244,125,52,137,44,62,136,153,28,17,135,67,198,140,228,57,11,185,174,
+244,61,114,53,94,236,145,3,36,241,137,10,177,145,37,190,43,104,58,36,242,
+133,77,156,39,85,52,4,141,219,69,17,2,9,192,51,146,57,195,108,211,126,65,
+1,50,68,45,183,196,90,82,219,207,109,171,14,154,255,52,145,47,139,45,227,
+198,240,148,108,113,179,19,70,230,226,179,72,101,9,176,94,92,160,140,45,
+36,240,85,217,170,25,173,32,230,136,170,128,11,165,171,116,157,125,35,3,
+57,199,76,75,88,3,128,11,141,82,177,139,189,156,84,199,199,131,131,77,114,
+11,179,229,81,106,25,166,32,242,133,177,10,169,162,129,185,226,118,39,140,
+204,165,45,72,161,13,158,29,162,148,108,110,42,189,137,4,178,56,166,118,
+240,65,153,3,248,151,99,134,94,197,56,26,3,226,119,115,82,181,159,48,152,
+139,100,90,38,55,5,72,226,147,106,87,49,150,41,242,20,53,114,184,178,85,
+146,70,29,67,21,196,118,189,72,249,210,168,39,139,187,74,47,96,77,208,217,
+155,2,116,200,113,22,49,95,30,226,51,189,12,190,66,185,76,181,51,125,119,
+24,163,63,6,2,103,95,71,10,151,228,180,160,201,77,1,126,208,157,28,10,216,
+41,215,89,238,220,10,210,121,68,138,210,183,249,74,72,215,31,144,41,238,
+43,91,190,92,139,68,68,14,176,77,110,160,76,78,13,25,88,72,103,21,102,81,
+205,81,223,1,90,219,143,104,13,35,40,35,244,24,166,0,94,194,251,62,172,
+144,233,60,102,136,210,83,120,139,166,251,247,69,190,92,19,214,24,166,0,
+225,138,68,80,72,142,193,94,173,143,224,170,62,49,246,0,0,229,50,131,39,
+93,170,0,176,159,21,17,189,162,198,215,33,2,145,8,246,176,138,173,156,5,
+224,5,3,184,33,39,248,157,29,0,118,167,69,116,20,0,0,42,101,26,149,164,
+153,59,195,128,248,171,37,8,75,66,44,71,236,1,66,64,216,1,122,184,226,148,
+97,100,223,110,124,215,124,49,225,176,57,156,216,28,46,0,30,190,111,225,
+99,139,238,7,24,218,59,94,117,218,60,57,145,205,147,19,99,2,0,224,114,185,
+136,143,143,39,251,226,51,174,52,126,251,251,77,24,169,104,90,224,127,167,
+29,224,114,227,87,117,107,127,248,229,229,135,167,45,230,32,53,239,90,1,
+225,7,168,111,118,83,223,236,142,121,82,131,216,157,252,6,173,114,47,95,
+172,143,154,9,0,0,0,0,73,69,78,68,174,66,96,130};
+
+static size_t xml_res_size_4 = 1881;
+static unsigned char xml_res_file_4[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,64,0,0,0,64,8,6,0,0,
+0,170,105,113,222,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,9,112,
+72,89,115,0,0,10,233,0,0,10,233,1,253,117,206,211,0,0,0,25,116,69,88,116,
+83,111,102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,
+101,46,111,114,103,155,238,60,26,0,0,6,214,73,68,65,84,120,156,229,155,
+121,108,84,69,28,199,63,211,61,186,96,57,228,80,17,84,130,136,8,65,140,
+26,60,162,81,84,98,168,128,130,130,45,32,10,4,80,140,114,41,90,64,40,162,
+65,81,20,8,162,128,66,41,8,114,40,209,152,200,81,4,131,9,40,136,26,84,136,
+86,228,16,139,128,96,45,236,118,119,223,238,248,199,186,237,110,119,222,
+219,247,246,173,108,91,190,255,237,252,126,111,102,222,103,102,126,115,
+188,89,193,212,29,18,135,147,243,85,89,4,43,33,164,101,186,30,25,83,22,
+192,249,12,161,186,239,7,43,153,114,123,59,114,59,54,139,115,216,118,176,
+130,73,159,31,61,215,245,58,103,138,27,252,151,93,16,226,198,139,179,113,
+185,92,85,105,199,206,4,207,121,165,236,202,73,136,16,89,72,68,82,223,172,
+154,9,94,175,151,96,176,238,189,116,172,158,20,107,217,43,242,232,79,9,
+2,105,232,155,0,0,234,54,4,15,1,158,165,152,206,28,96,141,40,224,123,49,
+208,16,132,18,0,212,93,8,163,89,75,107,78,84,253,238,66,41,107,68,1,59,
+196,48,186,242,75,130,191,46,0,136,64,8,105,117,7,194,5,248,152,40,138,
+149,182,235,217,79,5,13,19,210,13,1,0,248,125,62,8,213,13,8,79,177,154,
+139,57,165,180,21,209,139,3,180,78,72,79,10,0,128,160,191,214,67,200,193,
+203,120,177,82,105,11,226,100,166,28,170,180,153,3,0,181,30,194,88,86,209,
+146,211,74,219,98,30,224,55,46,85,218,204,3,128,90,11,161,9,103,24,167,
+211,250,126,220,186,173,15,86,1,64,173,132,48,142,149,52,227,31,165,109,
+33,253,248,157,139,116,159,181,14,0,106,21,132,166,84,48,70,124,160,180,
+85,226,102,150,28,98,248,124,106,0,160,214,64,120,134,21,52,165,66,105,
+123,75,14,224,40,45,13,159,79,29,0,100,28,66,115,202,121,90,167,245,207,
+210,128,215,120,36,105,30,246,0,64,70,33,76,20,197,52,194,171,180,205,151,
+3,248,147,102,74,91,172,236,3,128,140,64,104,193,223,140,102,157,210,118,
+134,134,188,193,64,83,249,164,7,0,36,64,184,75,236,162,3,135,211,150,125,
+77,21,136,34,114,116,90,127,174,204,227,184,137,214,135,26,231,1,182,21,
+244,227,33,192,91,206,55,24,198,39,32,224,36,77,217,65,23,118,202,46,44,
+163,87,210,160,100,70,173,56,201,19,58,173,95,78,14,179,25,100,58,175,180,
+2,184,148,19,20,107,211,184,93,236,3,71,36,173,5,127,211,155,237,244,22,
+219,233,196,1,6,203,25,182,203,41,160,136,6,248,149,182,57,50,159,211,52,
+54,157,87,218,134,64,119,118,179,93,140,224,70,246,225,11,66,32,148,232,
+147,199,38,58,114,208,86,57,109,56,206,8,177,94,105,59,77,99,222,52,57,
+246,163,178,13,64,32,25,199,74,214,137,231,104,78,121,85,186,10,130,131,
+48,47,136,247,108,149,55,137,165,120,8,40,109,179,25,68,57,57,150,242,179,
+5,160,17,94,150,139,169,76,19,139,113,16,78,176,171,32,60,108,163,23,92,
+65,25,195,197,199,74,219,73,154,50,79,230,89,206,51,101,0,87,113,132,205,
+98,52,189,248,210,208,175,38,4,7,97,38,139,37,41,149,57,69,44,193,141,122,
+186,125,157,193,202,3,143,100,74,9,192,253,226,11,182,138,81,116,228,144,
+41,255,154,16,242,217,200,213,38,159,141,170,29,71,121,148,79,149,182,227,
+52,99,190,28,96,41,191,168,44,1,112,16,166,144,69,20,49,157,28,124,134,
+190,171,233,193,100,249,68,213,111,95,16,252,90,117,62,83,44,198,130,23,
+196,187,184,80,127,188,121,85,14,225,44,13,44,229,23,149,105,0,205,41,231,
+67,38,50,86,172,50,60,106,214,112,80,200,72,70,201,73,44,162,31,135,185,
+164,202,86,169,85,67,200,103,163,233,88,208,158,35,12,230,51,165,237,24,
+205,121,135,7,205,190,70,130,76,1,232,202,207,108,21,143,115,167,248,198,
+208,175,140,22,228,202,121,204,145,249,64,228,40,106,46,241,129,41,10,193,
+74,44,40,20,139,112,162,152,87,129,153,242,49,188,120,76,229,163,82,82,
+0,109,56,206,70,241,52,151,115,204,208,111,7,215,114,167,92,200,215,116,
+138,75,47,150,247,197,245,2,168,134,96,166,23,116,224,48,121,108,82,218,
+202,104,193,98,250,38,123,5,67,37,5,112,29,63,227,209,89,117,69,85,68,47,
+250,200,217,202,221,151,170,23,64,4,130,166,37,239,5,47,138,119,148,83,
+44,192,12,134,227,35,219,240,249,100,178,181,14,56,75,3,134,201,169,140,
+149,19,8,26,172,170,85,189,0,34,16,250,105,250,51,66,103,14,208,159,45,
+74,219,97,46,97,137,236,147,90,197,99,148,50,128,82,218,112,183,92,192,
+71,116,79,234,27,196,89,21,23,18,108,90,152,231,67,139,149,182,233,98,33,
+89,58,173,255,146,28,142,31,183,249,10,235,40,37,0,27,228,205,220,45,223,
+102,63,109,77,63,179,156,92,101,47,0,232,163,109,166,131,86,26,151,214,
+133,82,250,178,77,233,127,136,86,44,227,62,211,101,27,201,18,0,137,96,142,
+204,103,32,47,91,94,115,235,197,2,136,204,8,227,67,75,65,171,94,227,191,
+196,219,186,173,95,40,71,18,192,165,180,89,149,105,0,167,104,204,67,242,
+21,10,25,73,56,197,145,179,92,230,114,68,167,23,244,167,132,171,180,95,
+65,11,112,3,251,232,45,182,43,253,74,185,140,21,244,76,169,124,149,146,
+190,73,5,13,217,75,123,186,203,133,108,161,155,173,194,2,184,152,171,179,
+97,113,16,102,130,88,1,90,128,169,161,5,186,139,173,233,114,4,90,244,176,
+33,13,74,10,224,43,58,211,67,206,231,144,78,203,89,213,114,122,114,84,231,
+67,69,127,74,200,99,35,119,104,59,171,86,140,177,218,79,91,86,113,111,90,
+234,17,85,82,0,149,100,83,105,115,174,141,149,31,183,238,129,165,131,48,
+11,196,172,72,185,49,203,230,168,166,203,17,132,210,120,140,9,233,60,20,
+181,32,163,88,16,27,248,98,33,252,72,59,214,112,79,218,235,146,17,0,70,
+177,160,166,162,16,166,201,81,41,7,95,35,101,4,0,64,49,250,189,160,166,
+246,104,237,88,175,221,250,191,212,35,99,0,172,244,130,25,12,39,172,105,
+113,235,132,116,41,99,0,192,120,70,136,234,91,121,53,27,228,45,145,31,90,
+32,237,16,50,10,192,143,155,57,168,247,8,81,205,20,67,227,47,60,166,25,
+66,70,1,0,20,203,92,221,94,176,75,118,98,147,188,41,209,144,70,8,25,191,
+39,239,199,205,24,38,112,155,252,46,46,189,17,94,214,136,30,232,158,190,
+69,1,56,237,237,8,51,14,0,160,68,118,163,68,181,204,54,190,229,154,22,8,
+25,31,2,182,101,115,56,212,125,0,96,11,66,253,0,0,41,67,168,63,0,32,37,
+8,245,11,0,88,134,80,255,0,128,37,8,113,211,224,21,77,18,247,253,215,180,
+244,48,163,187,250,158,109,109,151,211,157,141,211,29,255,78,123,202,188,
+172,250,161,250,70,121,28,128,86,57,137,203,130,43,47,244,240,84,183,212,
+63,61,101,90,217,217,217,120,60,213,245,127,127,239,95,113,0,234,231,16,
+136,145,223,239,199,231,211,255,146,93,239,1,0,4,2,1,93,8,181,98,41,124,
+46,20,8,168,131,98,28,128,221,101,94,92,89,241,255,181,243,6,195,156,170,
+84,127,154,174,123,58,203,79,127,84,198,165,8,10,182,38,219,114,212,63,
+57,92,224,138,204,14,231,69,12,72,80,40,24,185,218,203,121,20,3,18,244,
+223,189,230,127,1,145,119,128,141,62,61,149,199,0,0,0,0,73,69,78,68,174,
+66,96,130};
+
+static size_t xml_res_size_5 = 626;
+static unsigned char xml_res_file_5[] = {
+60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
+110,99,111,100,105,110,103,61,34,85,84,70,45,56,34,63,62,10,60,114,101,
+115,111,117,114,99,101,32,120,109,108,110,115,61,34,104,116,116,112,58,
+47,47,119,119,119,46,119,120,119,105,100,103,101,116,115,46,111,114,103,
+47,119,120,120,114,99,34,62,10,32,32,60,33,45,45,32,72,97,110,100,108,101,
+114,32,71,101,110,101,114,97,116,105,111,110,32,105,115,32,79,78,32,45,
+45,62,10,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,
+120,66,105,116,109,97,112,34,32,110,97,109,101,61,34,99,104,97,114,116,
+49,50,56,34,62,68,97,116,97,82,101,112,111,114,116,66,105,116,109,97,112,
+115,46,99,112,112,36,100,97,116,97,95,105,109,97,103,101,115,95,99,104,
+97,114,116,49,50,56,46,112,110,103,60,47,111,98,106,101,99,116,62,10,32,
+32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,105,116,
+109,97,112,34,32,110,97,109,101,61,34,99,104,97,114,116,49,54,34,62,68,
+97,116,97,82,101,112,111,114,116,66,105,116,109,97,112,115,46,99,112,112,
+36,100,97,116,97,95,105,109,97,103,101,115,95,99,104,97,114,116,49,54,46,
+112,110,103,60,47,111,98,106,101,99,116,62,10,32,32,60,111,98,106,101,99,
+116,32,99,108,97,115,115,61,34,119,120,66,105,116,109,97,112,34,32,110,
+97,109,101,61,34,99,104,97,114,116,50,53,54,34,62,68,97,116,97,82,101,112,
+111,114,116,66,105,116,109,97,112,115,46,99,112,112,36,100,97,116,97,95,
+105,109,97,103,101,115,95,99,104,97,114,116,50,53,54,46,112,110,103,60,
+47,111,98,106,101,99,116,62,10,32,32,60,111,98,106,101,99,116,32,99,108,
+97,115,115,61,34,119,120,66,105,116,109,97,112,34,32,110,97,109,101,61,
+34,99,104,97,114,116,51,50,34,62,68,97,116,97,82,101,112,111,114,116,66,
+105,116,109,97,112,115,46,99,112,112,36,100,97,116,97,95,105,109,97,103,
+101,115,95,99,104,97,114,116,51,50,46,112,110,103,60,47,111,98,106,101,
+99,116,62,10,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,
+119,120,66,105,116,109,97,112,34,32,110,97,109,101,61,34,99,104,97,114,
+116,54,52,34,62,68,97,116,97,82,101,112,111,114,116,66,105,116,109,97,112,
+115,46,99,112,112,36,100,97,116,97,95,105,109,97,103,101,115,95,99,104,
+97,114,116,54,52,46,112,110,103,60,47,111,98,106,101,99,116,62,10,60,47,
+114,101,115,111,117,114,99,101,62,10};
+
+void wxC6A63InitBitmapResources()
+{
+
+ // Check for memory FS. If not present, load the handler:
+ {
+ wxMemoryFSHandler::AddFile(wxT("XRC_resource/dummy_file"), wxT("dummy one"));
+ wxFileSystem fsys;
+ wxFSFile *f = fsys.OpenFile(wxT("memory:XRC_resource/dummy_file"));
+ wxMemoryFSHandler::RemoveFile(wxT("XRC_resource/dummy_file"));
+ if (f) delete f;
+ else wxFileSystem::AddHandler(new wxMemoryFSHandlerBase);
+ }
+
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$data_images_chart128.png"), xml_res_file_0, xml_res_size_0, wxT("image/png"));
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$data_images_chart16.png"), xml_res_file_1, xml_res_size_1, wxT("image/png"));
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$data_images_chart256.png"), xml_res_file_2, xml_res_size_2, wxT("image/png"));
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$data_images_chart32.png"), xml_res_file_3, xml_res_size_3, wxT("image/png"));
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$data_images_chart64.png"), xml_res_file_4, xml_res_size_4, wxT("image/png"));
+ XRC_ADD_FILE(wxT("XRC_resource/DataReportBitmaps.cpp$C__Users_NDSE-69_Documents_GitHub_PSP_Project_DataReportBitmaps.xrc"), xml_res_file_5, xml_res_size_5, wxT("text/xml"));
+ wxXmlResource::Get()->Load(wxT("memory:XRC_resource/DataReportBitmaps.cpp$C__Users_NDSE-69_Documents_GitHub_PSP_Project_DataReportBitmaps.xrc"));
+}
diff --git a/Project/ElectricCalculation.cpp b/Project/ElectricCalculation.cpp
index e67c9b4..95810fc 100644
--- a/Project/ElectricCalculation.cpp
+++ b/Project/ElectricCalculation.cpp
@@ -41,6 +41,16 @@ void ElectricCalculation::GetElementsFromList(std::vector<Element*> elementList)
else if(Transformer* transformer = dynamic_cast<Transformer*>(element))
m_transformerList.push_back(transformer);
}
+
+ // Set buses numbers
+ int busNumber = 0;
+ for(auto itb = m_busList.begin(); itb != m_busList.end(); itb++) {
+ Bus* bus = *itb;
+ BusElectricalData data = bus->GetElectricalData();
+ data.number = busNumber;
+ bus->SetElectricalData(data);
+ busNumber++;
+ }
}
bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > >& yBus,
@@ -274,15 +284,24 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector<std::complex<doubl
std::vector<ReactiveLimits> reactiveLimit,
double systemPowerBase)
{
- for(int i = 0; i < (int)reactiveLimit.size(); ++i) {
- if(reactiveLimit[i].maxLimit > -1e-5 && reactiveLimit[i].maxLimit < 1e-5) reactiveLimit[i].maxLimit = 1e-5;
- if(reactiveLimit[i].minLimit > -1e-5 && reactiveLimit[i].minLimit < 1e-5) reactiveLimit[i].minLimit = 1e-5;
- }
- // Buses voltages
+ double zeroLimit = 1e-4;
+ for(unsigned int i = 0; i < reactiveLimit.size(); ++i) {
+ if(reactiveLimit[i].maxLimit > -zeroLimit && reactiveLimit[i].maxLimit < zeroLimit) reactiveLimit[i].maxLimit = zeroLimit;
+ if(reactiveLimit[i].minLimit > -zeroLimit && reactiveLimit[i].minLimit < zeroLimit) reactiveLimit[i].minLimit = zeroLimit;
+ }
+ for(unsigned int i = 0; i < power.size(); ++i) {
+ if(std::real(power[i]) > -zeroLimit && std::real(power[i]) < zeroLimit)
+ power[i] = std::complex<double>(0.0, std::imag(power[i]));
+ if(std::imag(power[i]) > -zeroLimit && std::imag(power[i]) < zeroLimit)
+ power[i] = std::complex<double>(std::real(power[i]), 0.0);
+ }
+ // Buses
for(int i = 0; i < (int)m_busList.size(); i++) {
Bus* bus = m_busList[i];
BusElectricalData data = bus->GetElectricalData();
data.voltage = voltage[i];
+ data.power = power[i];
+ data.busType = busType[i];
bus->SetElectricalData(data);
}
diff --git a/Project/Line.cpp b/Project/Line.cpp
index 350d3f5..637e45b 100644
--- a/Project/Line.cpp
+++ b/Project/Line.cpp
@@ -4,7 +4,7 @@ Line::Line() : Branch()
{
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
- m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
}
}
}
@@ -13,10 +13,10 @@ Line::Line(wxString name) : Branch()
{
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
- m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
}
}
- m_electricaData.name = name;
+ m_electricalData.name = name;
}
Line::~Line() {}
bool Line::Contains(wxPoint2DDouble position) const
@@ -136,16 +136,16 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
UpdateSwitches();
Bus* parentBus = static_cast<Bus*>(parent);
- m_electricaData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;
- m_electricaData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;
+ m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;
+ m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;
return false;
}
// Second bus.
else if(parent != m_parentList[0]) {
Bus* parentBus = static_cast<Bus*>(parent);
- if(m_electricaData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||
- m_electricaData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {
+ if(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||
+ m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {
wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n"
"Use a transformer or edit the bus properties."),
_("Error"), wxOK | wxCENTRE | wxICON_ERROR);
@@ -341,8 +341,8 @@ bool Line::ShowForm(wxWindow* parent, Element* element)
void Line::SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)
{
if(nominalVoltage.size() > 0) {
- m_electricaData.nominalVoltage = nominalVoltage[0];
- m_electricaData.nominalVoltageUnit = nominalVoltageUnit[0];
+ m_electricalData.nominalVoltage = nominalVoltage[0];
+ m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];
}
}
@@ -368,10 +368,10 @@ bool Line::SetNodeParent(Element* parent)
// two different voltages buses
Bus* parentBus = static_cast<Bus*>(parent);
if(!m_parentList[0] && !m_parentList[1]) {
- m_electricaData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;
- m_electricaData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;
- } else if(m_electricaData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||
- m_electricaData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {
+ m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;
+ m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;
+ } else if(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||
+ m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {
wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n"
"Use a transformer or edit the bus properties."),
_("Error"), wxOK | wxCENTRE | wxICON_ERROR);
@@ -485,7 +485,7 @@ Element* Line::GetCopy()
wxString Line::GetTipText() const
{
- wxString tipText = m_electricaData.name;
+ wxString tipText = m_electricalData.name;
if(m_online) {
tipText += "\n";
@@ -494,14 +494,92 @@ wxString Line::GetTipText() const
busNumber[1] = static_cast<Bus*>(m_parentList[1])->GetElectricalData().number + 1;
tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) +
- wxString::FromDouble(m_electricaData.powerFlow[0].real(), 5) + _(" p.u.");
+ wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(" p.u.");
tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) +
- wxString::FromDouble(m_electricaData.powerFlow[0].imag(), 5) + _(" p.u.");
+ wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(" p.u.");
tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) +
- wxString::FromDouble(m_electricaData.powerFlow[1].real(), 5) + _(" p.u.");
+ wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(" p.u.");
tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) +
- wxString::FromDouble(m_electricaData.powerFlow[1].imag(), 5) + _(" p.u.");
+ wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(" p.u.");
}
return tipText;
}
+
+LineElectricalData Line::GetPUElectricalData(double basePower) const
+{
+ LineElectricalData data = m_electricalData;
+ double lineBasePower = basePower;
+ if(m_electricalData.useLinePower) {
+ lineBasePower = m_electricalData.nominalPower;
+ switch(m_electricalData.nominalPowerUnit) {
+ case UNIT_MVA: {
+ lineBasePower *= 1e6;
+ } break;
+ case UNIT_kVA: {
+ lineBasePower *= 1e3;
+ } break;
+ default:
+ break;
+ }
+ }
+ double vb = m_electricalData.nominalVoltage;
+ if(m_electricalData.nominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ double zb = (vb * vb) / basePower;
+
+ // Resistance
+ double r = data.resistance;
+ switch(data.resistanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useLinePower) data.resistance = (basePower / lineBasePower) * r;
+ } break;
+ case UNIT_OHM: {
+ data.resistance = r / zb;
+ data.resistanceUnit = UNIT_PU;
+ } break;
+ case UNIT_OHM_km: {
+ data.resistance = (r * data.lineSize) / zb;
+ data.resistanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ // Indutive reactance
+ double xl = data.indReactance;
+ switch(data.indReactanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useLinePower) data.indReactance = (basePower / lineBasePower) * xl;
+ } break;
+ case UNIT_OHM: {
+ data.indReactance = xl / zb;
+ data.indReactanceUnit = UNIT_PU;
+ } break;
+ case UNIT_OHM_km: {
+ data.indReactance = (xl * data.lineSize) / zb;
+ data.indReactanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ // Capacitive susceptance
+ double b = data.capSusceptance;
+ switch(data.capSusceptanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useLinePower) data.capSusceptance = (basePower / lineBasePower) * b;
+ } break;
+ case UNIT_S: {
+ data.capSusceptance = b / zb;
+ data.capSusceptanceUnit = UNIT_PU;
+ } break;
+ case UNIT_S_km: {
+ data.capSusceptance = (b * data.lineSize) / zb;
+ data.capSusceptanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ return data;
+}
diff --git a/Project/Line.h b/Project/Line.h
index 0abcd82..9cea359 100644
--- a/Project/Line.h
+++ b/Project/Line.h
@@ -59,14 +59,15 @@ public:
virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const;
virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection);
virtual bool ShowForm(wxWindow* parent, Element* element);
- virtual LineElectricalData GetElectricalData() const { return m_electricaData; }
- virtual void SetElectricalData(LineElectricalData electricalData) { m_electricaData = electricalData; }
+ virtual LineElectricalData GetElectricalData() const { return m_electricalData; }
+ virtual LineElectricalData GetPUElectricalData(double basePower) const;
+ virtual void SetElectricalData(LineElectricalData electricalData) { m_electricalData = electricalData; }
virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
virtual void SetPointList(std::vector<wxPoint2DDouble> pointList);
protected:
void UpdatePowerFlowArrowsPosition();
- LineElectricalData m_electricaData;
+ LineElectricalData m_electricalData;
};
#endif // LINE_H
diff --git a/Project/MainFrame.cpp b/Project/MainFrame.cpp
index 6604722..d113385 100644
--- a/Project/MainFrame.cpp
+++ b/Project/MainFrame.cpp
@@ -15,6 +15,7 @@
#include "SimulationsSettingsForm.h"
#include "PropertiesData.h"
#include "ChartView.h"
+#include "DataReport.h"
MainFrame::MainFrame() : MainFrameBase(NULL) {}
MainFrame::MainFrame(wxWindow* parent, wxLocale* locale, PropertiesData* initProperties) : MainFrameBase(parent)
@@ -156,7 +157,14 @@ void MainFrame::OnChartsClick(wxRibbonButtonBarEvent& event)
void MainFrame::OnCloseClick(wxRibbonButtonBarEvent& event) {}
void MainFrame::OnCopyClick(wxRibbonButtonBarEvent& event) {}
-void MainFrame::OnDataReportClick(wxRibbonButtonBarEvent& event) {}
+
+void MainFrame::OnDataReportClick(wxRibbonButtonBarEvent& event)
+{
+ if(Workspace* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {
+ DataReport* dataReport = new DataReport(workspace, workspace);
+ dataReport->Show();
+ }
+}
void MainFrame::OnDeleteClick(wxRibbonButtonBarEvent& event)
{
Workspace* workspace = static_cast<Workspace*>(m_auiNotebook->GetCurrentPage());
@@ -166,6 +174,9 @@ void MainFrame::OnDeleteClick(wxRibbonButtonBarEvent& event)
}
void MainFrame::OnDisableSolutionClick(wxRibbonButtonBarEvent& event)
{
+ if(Workspace* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {
+ workspace->SetContinuousCalculationActive(false);
+ }
m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, true);
m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, false);
}
@@ -173,6 +184,10 @@ void MainFrame::OnDisableSolutionClick(wxRibbonButtonBarEvent& event)
void MainFrame::OnDragClick(wxRibbonButtonBarEvent& event) {}
void MainFrame::OnEnableSolutionClick(wxRibbonButtonBarEvent& event)
{
+ if(Workspace* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {
+ workspace->SetContinuousCalculationActive(true);
+ workspace->RunStaticStudies();
+ }
m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, true);
m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, false);
}
diff --git a/Project/MainFrame.h b/Project/MainFrame.h
index f9d9523..47bc5ee 100644
--- a/Project/MainFrame.h
+++ b/Project/MainFrame.h
@@ -15,6 +15,7 @@ class GeneralPropertiesForm;
class SimulationsSettingsForm;
class PropertiesData;
class ChartView;
+class DataReport;
enum {
ID_ADDMENU_BUS = 20000,
diff --git a/Project/Project.mk b/Project/Project.mk
index d8000b1..e33928b 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=NDSE-69
-Date :=04/09/2017
+Date :=06/09/2017
CodeLitePath :="C:/Program Files/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC
@@ -65,16 +65,16 @@ CodeLiteDir:=C:\Program Files\CodeLite
WXWIN:=C:\wxWidgets-3.1.0
WXCFG:=gcc_dll\mswu
Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/PropertiesData.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlEditorBitmaps.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/ChartViewBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/PropertiesFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlEditorBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ChartViewBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/PropertiesForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/Fault.cpp$(ObjectSuffix) $(IntermediateDirectory)/Electromechanical.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementPlotData.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxMathPlot_mathplot.cpp$(ObjectSuffix) $(IntermediateDirectory)/Camera.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/ChartView.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/ControlEditor.cpp$(ObjectSuffix) $(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IntermediateDirectory)/ConnectionLine.cpp$(ObjectSuffix) $(IntermediateDirectory)/Constant.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElementContainer.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElementSolver.cpp$(ObjectSuffix) $(IntermediateDirectory)/Exponential.cpp$(ObjectSuffix) $(IntermediateDirectory)/Gain.cpp$(ObjectSuffix) $(IntermediateDirectory)/IOControl.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/Limiter.cpp$(ObjectSuffix) $(IntermediateDirectory)/Multiplier.cpp$(ObjectSuffix) $(IntermediateDirectory)/RateLimiter.cpp$(ObjectSuffix) $(IntermediateDirectory)/Sum.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransferFunction.cpp$(ObjectSuffix) $(IntermediateDirectory)/GraphicalElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/GeneralPropertiesForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SimulationsSettingsForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ConstantForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlSystemTest.cpp$(ObjectSuffix) $(IntermediateDirectory)/ExponentialForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GainForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IOControlForm.cpp$(ObjectSuffix)
+ $(IntermediateDirectory)/ChartViewBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/PropertiesFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/DataReportBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlEditorBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ChartViewBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/PropertiesForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/DataReportBase.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IntermediateDirectory)/Fault.cpp$(ObjectSuffix) $(IntermediateDirectory)/Electromechanical.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementPlotData.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxMathPlot_mathplot.cpp$(ObjectSuffix) $(IntermediateDirectory)/Camera.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/ChartView.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlEditor.cpp$(ObjectSuffix) $(IntermediateDirectory)/DataReport.cpp$(ObjectSuffix) $(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IntermediateDirectory)/ConnectionLine.cpp$(ObjectSuffix) $(IntermediateDirectory)/Constant.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElementContainer.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlElementSolver.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/Exponential.cpp$(ObjectSuffix) $(IntermediateDirectory)/Gain.cpp$(ObjectSuffix) $(IntermediateDirectory)/IOControl.cpp$(ObjectSuffix) $(IntermediateDirectory)/Limiter.cpp$(ObjectSuffix) $(IntermediateDirectory)/Multiplier.cpp$(ObjectSuffix) $(IntermediateDirectory)/RateLimiter.cpp$(ObjectSuffix) $(IntermediateDirectory)/Sum.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransferFunction.cpp$(ObjectSuffix) $(IntermediateDirectory)/GraphicalElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerElement.cpp$(ObjectSuffix) $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneralPropertiesForm.cpp$(ObjectSuffix)
-Objects1=$(IntermediateDirectory)/LimiterForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/RateLimiterForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SumForm.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/TransferFunctionForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix)
+Objects1=$(IntermediateDirectory)/SimulationsSettingsForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ConstantForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ControlSystemTest.cpp$(ObjectSuffix) $(IntermediateDirectory)/ExponentialForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GainForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IOControlForm.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/LimiterForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/RateLimiterForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SumForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransferFunctionForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix)
@@ -196,6 +196,14 @@ $(IntermediateDirectory)/PropertiesFormBitmaps.cpp$(DependSuffix): PropertiesFor
$(IntermediateDirectory)/PropertiesFormBitmaps.cpp$(PreprocessSuffix): PropertiesFormBitmaps.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PropertiesFormBitmaps.cpp$(PreprocessSuffix) PropertiesFormBitmaps.cpp
+$(IntermediateDirectory)/DataReportBitmaps.cpp$(ObjectSuffix): DataReportBitmaps.cpp $(IntermediateDirectory)/DataReportBitmaps.cpp$(DependSuffix)
+ $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/DataReportBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/DataReportBitmaps.cpp$(ObjectSuffix) $(IncludePath)
+$(IntermediateDirectory)/DataReportBitmaps.cpp$(DependSuffix): DataReportBitmaps.cpp
+ @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/DataReportBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/DataReportBitmaps.cpp$(DependSuffix) -MM DataReportBitmaps.cpp
+
+$(IntermediateDirectory)/DataReportBitmaps.cpp$(PreprocessSuffix): DataReportBitmaps.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/DataReportBitmaps.cpp$(PreprocessSuffix) DataReportBitmaps.cpp
+
$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix): MainFrameBase.cpp $(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/MainFrameBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix): MainFrameBase.cpp
@@ -244,6 +252,14 @@ $(IntermediateDirectory)/PropertiesForm.cpp$(DependSuffix): PropertiesForm.cpp
$(IntermediateDirectory)/PropertiesForm.cpp$(PreprocessSuffix): PropertiesForm.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PropertiesForm.cpp$(PreprocessSuffix) PropertiesForm.cpp
+$(IntermediateDirectory)/DataReportBase.cpp$(ObjectSuffix): DataReportBase.cpp $(IntermediateDirectory)/DataReportBase.cpp$(DependSuffix)
+ $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/DataReportBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/DataReportBase.cpp$(ObjectSuffix) $(IncludePath)
+$(IntermediateDirectory)/DataReportBase.cpp$(DependSuffix): DataReportBase.cpp
+ @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/DataReportBase.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/DataReportBase.cpp$(DependSuffix) -MM DataReportBase.cpp
+
+$(IntermediateDirectory)/DataReportBase.cpp$(PreprocessSuffix): DataReportBase.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/DataReportBase.cpp$(PreprocessSuffix) DataReportBase.cpp
+
$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix): ElectricCalculation.cpp $(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/ElectricCalculation.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix): ElectricCalculation.cpp
@@ -348,6 +364,14 @@ $(IntermediateDirectory)/ControlEditor.cpp$(DependSuffix): ControlEditor.cpp
$(IntermediateDirectory)/ControlEditor.cpp$(PreprocessSuffix): ControlEditor.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ControlEditor.cpp$(PreprocessSuffix) ControlEditor.cpp
+$(IntermediateDirectory)/DataReport.cpp$(ObjectSuffix): DataReport.cpp $(IntermediateDirectory)/DataReport.cpp$(DependSuffix)
+ $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/DataReport.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/DataReport.cpp$(ObjectSuffix) $(IncludePath)
+$(IntermediateDirectory)/DataReport.cpp$(DependSuffix): DataReport.cpp
+ @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/DataReport.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/DataReport.cpp$(DependSuffix) -MM DataReport.cpp
+
+$(IntermediateDirectory)/DataReport.cpp$(PreprocessSuffix): DataReport.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/DataReport.cpp$(PreprocessSuffix) DataReport.cpp
+
$(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix): FileHanding.cpp $(IntermediateDirectory)/FileHanding.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/NDSE-69/Documents/GitHub/PSP/Project/FileHanding.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/FileHanding.cpp$(DependSuffix): FileHanding.cpp
diff --git a/Project/Project.project b/Project/Project.project
index a65be5b..601ee38 100644
--- a/Project/Project.project
+++ b/Project/Project.project
@@ -104,6 +104,7 @@
<VirtualDirectory Name="simulation GUI">
<File Name="ChartView.cpp"/>
<File Name="ControlEditor.cpp"/>
+ <File Name="DataReport.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="files">
<File Name="FileHanding.cpp"/>
@@ -216,6 +217,7 @@
<VirtualDirectory Name="simulation GUI">
<File Name="ChartView.h"/>
<File Name="ControlEditor.h"/>
+ <File Name="DataReport.h"/>
</VirtualDirectory>
</VirtualDirectory>
</VirtualDirectory>
@@ -231,6 +233,7 @@
<File Name="ControlEditorBitmaps.cpp"/>
<File Name="ChartViewBitmaps.cpp"/>
<File Name="PropertiesFormBitmaps.cpp"/>
+ <File Name="DataReportBitmaps.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="base">
<File Name="MainFrameBase.h"/>
@@ -245,6 +248,8 @@
<File Name="ChartViewBase.cpp"/>
<File Name="PropertiesForm.h"/>
<File Name="PropertiesForm.cpp"/>
+ <File Name="DataReportBase.h"/>
+ <File Name="DataReportBase.cpp"/>
</VirtualDirectory>
<File Name="MainFrame.wxcp"/>
<File Name="Workspace.wxcp"/>
@@ -252,6 +257,7 @@
<File Name="ControlEditor.wxcp"/>
<File Name="ChartView.wxcp"/>
<File Name="PropertiesForm.wxcp"/>
+ <File Name="DataReport.wxcp"/>
</VirtualDirectory>
<Settings Type="Executable">
<GlobalSettings>
diff --git a/Project/Project.txt b/Project/Project.txt
index 6a3e440..2eb8d56 100644
--- a/Project/Project.txt
+++ b/Project/Project.txt
@@ -1,2 +1,2 @@
-./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/PropertiesData.cpp.o ./Release/ArtMetro.cpp.o ./Release/wxGLString.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/ControlEditorBitmaps.cpp.o ./Release/ChartViewBitmaps.cpp.o ./Release/PropertiesFormBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/ControlEditorBase.cpp.o ./Release/ChartViewBase.cpp.o ./Release/PropertiesForm.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/Fault.cpp.o ./Release/Electromechanical.cpp.o ./Release/Element.cpp.o ./Release/ElementDataObject.cpp.o ./Release/ElementPlotData.cpp.o ./Release/wxMathPlot_mathplot.cpp.o ./Release/Camera.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/ChartView.cpp.o ./Release/ControlEditor.cpp.o ./Release/FileHanding.cpp.o ./Release/ConnectionLine.cpp.o ./Release/Constant.cpp.o ./Release/ControlElement.cpp.o ./Release/ControlElementContainer.cpp.o ./Release/ControlElementSolver.cpp.o ./Release/Exponential.cpp.o ./Release/Gain.cpp.o ./Release/IOControl.cpp.o ./Release/Limiter.cpp.o ./Release/Multiplier.cpp.o ./Release/RateLimiter.cpp.o ./Release/Sum.cpp.o ./Release/TransferFunction.cpp.o ./Release/GraphicalElement.cpp.o ./Release/Text.cpp.o ./Release/Branch.cpp.o ./Release/Bus.cpp.o ./Release/Capacitor.cpp.o ./Release/IndMotor.cpp.o ./Release/Inductor.cpp.o ./Release/Line.cpp.o ./Release/Load.cpp.o ./Release/Machines.cpp.o ./Release/PowerElement.cpp.o ./Release/Shunt.cpp.o ./Release/SyncGenerator.cpp.o ./Release/SyncMotor.cpp.o ./Release/Transformer.cpp.o ./Release/GeneralPropertiesForm.cpp.o ./Release/SimulationsSettingsForm.cpp.o ./Release/ConstantForm.cpp.o ./Release/ControlSystemTest.cpp.o ./Release/ExponentialForm.cpp.o ./Release/GainForm.cpp.o ./Release/IOControlForm.cpp.o
-./Release/LimiterForm.cpp.o ./Release/RateLimiterForm.cpp.o ./Release/SumForm.cpp.o ./Release/TransferFunctionForm.cpp.o ./Release/TextForm.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/LineForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/SyncMachineForm.cpp.o ./Release/TransformerForm.cpp.o
+./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/PropertiesData.cpp.o ./Release/ArtMetro.cpp.o ./Release/wxGLString.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/ControlEditorBitmaps.cpp.o ./Release/ChartViewBitmaps.cpp.o ./Release/PropertiesFormBitmaps.cpp.o ./Release/DataReportBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/ControlEditorBase.cpp.o ./Release/ChartViewBase.cpp.o ./Release/PropertiesForm.cpp.o ./Release/DataReportBase.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/Fault.cpp.o ./Release/Electromechanical.cpp.o ./Release/Element.cpp.o ./Release/ElementDataObject.cpp.o ./Release/ElementPlotData.cpp.o ./Release/wxMathPlot_mathplot.cpp.o ./Release/Camera.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/ChartView.cpp.o ./Release/ControlEditor.cpp.o ./Release/DataReport.cpp.o ./Release/FileHanding.cpp.o ./Release/ConnectionLine.cpp.o ./Release/Constant.cpp.o ./Release/ControlElement.cpp.o ./Release/ControlElementContainer.cpp.o ./Release/ControlElementSolver.cpp.o ./Release/Exponential.cpp.o ./Release/Gain.cpp.o ./Release/IOControl.cpp.o ./Release/Limiter.cpp.o ./Release/Multiplier.cpp.o ./Release/RateLimiter.cpp.o ./Release/Sum.cpp.o ./Release/TransferFunction.cpp.o ./Release/GraphicalElement.cpp.o ./Release/Text.cpp.o ./Release/Branch.cpp.o ./Release/Bus.cpp.o ./Release/Capacitor.cpp.o ./Release/IndMotor.cpp.o ./Release/Inductor.cpp.o ./Release/Line.cpp.o ./Release/Load.cpp.o ./Release/Machines.cpp.o ./Release/PowerElement.cpp.o ./Release/Shunt.cpp.o ./Release/SyncGenerator.cpp.o ./Release/SyncMotor.cpp.o ./Release/Transformer.cpp.o ./Release/GeneralPropertiesForm.cpp.o
+./Release/SimulationsSettingsForm.cpp.o ./Release/ConstantForm.cpp.o ./Release/ControlSystemTest.cpp.o ./Release/ExponentialForm.cpp.o ./Release/GainForm.cpp.o ./Release/IOControlForm.cpp.o ./Release/LimiterForm.cpp.o ./Release/RateLimiterForm.cpp.o ./Release/SumForm.cpp.o ./Release/TransferFunctionForm.cpp.o ./Release/TextForm.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/LineForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/SyncMachineForm.cpp.o ./Release/TransformerForm.cpp.o
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 584a139..9ac1e97 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -444,3 +444,61 @@ wxString Transformer::GetTipText() const
return tipText;
}
+
+TransformerElectricalData Transformer::GetPUElectricalData(double basePower) const
+{
+ TransformerElectricalData data = m_electricalData;
+ double transformerBasePower = basePower;
+ if(m_electricalData.useTransformerPower) {
+ transformerBasePower = m_electricalData.nominalPower;
+ switch(m_electricalData.nominalPowerUnit) {
+ case UNIT_MVA: {
+ transformerBasePower *= 1e6;
+ } break;
+ case UNIT_kVA: {
+ transformerBasePower *= 1e3;
+ } break;
+ default:
+ break;
+ }
+ }
+ double vb = 0.0;
+ if(m_electricalData.baseVoltage == 0) {
+ vb = m_electricalData.primaryNominalVoltage;
+ if(m_electricalData.primaryNominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ } else {
+ vb = m_electricalData.secondaryNominalVoltage;
+ if(m_electricalData.secondaryNominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ }
+ double zb = (vb * vb) / basePower;
+
+ // Resistance
+ double r = data.resistance;
+ switch(data.resistanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useTransformerPower) data.resistance = (basePower / transformerBasePower) * r;
+ } break;
+ case UNIT_OHM: {
+ data.resistance = r / zb;
+ data.resistanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ // Indutive reactance
+ double xl = data.indReactance;
+ switch(data.indReactanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useTransformerPower) data.indReactance = (basePower / transformerBasePower) * xl;
+ } break;
+ case UNIT_OHM: {
+ data.indReactance = xl / zb;
+ data.indReactanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ return data;
+}
diff --git a/Project/Transformer.h b/Project/Transformer.h
index 723a5df..04b114f 100644
--- a/Project/Transformer.h
+++ b/Project/Transformer.h
@@ -73,7 +73,8 @@ public:
virtual bool SetNodeParent(Element* parent);
virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection);
virtual bool ShowForm(wxWindow* parent, Element* element);
- virtual TransformerElectricalData GetElectricalData() { return m_electricalData; }
+ virtual TransformerElectricalData GetElectricalData() const { return m_electricalData; }
+ virtual TransformerElectricalData GetPUElectricalData(double basePower) const;
virtual void SetElectricaData(TransformerElectricalData electricalData) { m_electricalData = electricalData; }
virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index 4ef610d..12a4ace 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -135,6 +135,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
bool foundElement = false;
Element* newElement = NULL;
bool showNewElementForm = false;
+ bool clickOnSwitch = false;
if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) {
m_mode = MODE_EDIT;
} else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) {
@@ -204,6 +205,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
// Click in a switch.
else if(element->SwitchesContains(m_camera->ScreenToWorld(clickPoint))) {
element->SetOnline(element->IsOnline() ? false : true);
+ clickOnSwitch = true;
}
}
@@ -232,8 +234,12 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
UpdateStatusBar();
if(showNewElementForm) {
- if(newElement) newElement->ShowForm(this, newElement);
+ if(newElement) {
+ newElement->ShowForm(this, newElement);
+ if(m_continuousCalc) RunStaticStudies();
+ }
}
+ if(clickOnSwitch && m_continuousCalc) RunStaticStudies();
event.Skip();
}
@@ -241,6 +247,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
{
bool elementEdited = false;
+ bool clickOnSwitch = false;
bool redraw = false;
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
@@ -293,6 +300,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
// Click in a switch.
else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) {
element->SetOnline(element->IsOnline() ? false : true);
+ clickOnSwitch = true;
}
}
@@ -304,7 +312,12 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
redraw = true;
}
}
- if(elementEdited) UpdateTextElements();
+ if(elementEdited) {
+ UpdateTextElements();
+ if(m_continuousCalc) RunStaticStudies();
+ }
+ if(clickOnSwitch && m_continuousCalc) RunStaticStudies();
+
if(redraw) Redraw();
m_timer->Start();
}
@@ -1444,3 +1457,27 @@ void Workspace::OnMiddleDoubleClick(wxMouseEvent& event)
Fit();
event.Skip();
}
+
+bool Workspace::RunStaticStudies()
+{
+ bool pfStatus, faultStatus, scStatus;
+ pfStatus = faultStatus = scStatus = false;
+
+ pfStatus = RunPowerFlow();
+
+ if(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) {
+ if(pfStatus) faultStatus = RunFault();
+ } else {
+ faultStatus = true;
+ }
+
+ if(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) {
+ if(pfStatus) scStatus = RunSCPower();
+ } else {
+ scStatus = true;
+ }
+
+ if(pfStatus && faultStatus && scStatus) return true;
+
+ return false;
+}
diff --git a/Project/Workspace.h b/Project/Workspace.h
index 2a8b9b6..7eb82ba 100644
--- a/Project/Workspace.h
+++ b/Project/Workspace.h
@@ -116,10 +116,14 @@ public:
PropertiesData* GetProperties() const { return m_properties; }
std::vector<double> GetStabilityTimeVector() const { return m_stabilityTimeVector; }
+
+ bool IsContinuousCalculationActive() const { return m_continuousCalc; }
+ void SetContinuousCalculationActive(bool value = true) { m_continuousCalc = value; }
bool RunPowerFlow();
bool RunFault();
bool RunSCPower();
+ bool RunStaticStudies();
bool RunStability();
protected:
@@ -162,7 +166,8 @@ protected:
PropertiesData* m_properties = NULL;
std::vector<double> m_stabilityTimeVector;
-
+
+ bool m_continuousCalc = false;
bool m_justOpened = false;
};
diff --git a/Project/data/images/dataReport128.png b/Project/data/images/dataReport128.png
new file mode 100644
index 0000000..0e1adba
--- /dev/null
+++ b/Project/data/images/dataReport128.png
Binary files differ
diff --git a/Project/data/images/dataReport16.png b/Project/data/images/dataReport16.png
new file mode 100644
index 0000000..fce3fd8
--- /dev/null
+++ b/Project/data/images/dataReport16.png
Binary files differ
diff --git a/Project/data/images/dataReport256.png b/Project/data/images/dataReport256.png
new file mode 100644
index 0000000..5d5eec0
--- /dev/null
+++ b/Project/data/images/dataReport256.png
Binary files differ
diff --git a/Project/data/images/dataReport32.png b/Project/data/images/dataReport32.png
new file mode 100644
index 0000000..a485fab
--- /dev/null
+++ b/Project/data/images/dataReport32.png
Binary files differ
diff --git a/Project/data/images/dataReport64.png b/Project/data/images/dataReport64.png
new file mode 100644
index 0000000..63a1b95
--- /dev/null
+++ b/Project/data/images/dataReport64.png
Binary files differ