summaryrefslogtreecommitdiffstats
path: root/Project/ChartView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/ChartView.cpp')
-rw-r--r--Project/ChartView.cpp121
1 files changed, 119 insertions, 2 deletions
diff --git a/Project/ChartView.cpp b/Project/ChartView.cpp
index 166cdac..a9ac2c6 100644
--- a/Project/ChartView.cpp
+++ b/Project/ChartView.cpp
@@ -1,7 +1,12 @@
#include "ChartView.h"
+#include "ElementPlotData.h"
-ChartView::ChartView(wxWindow* parent) : ChartViewBase(parent)
+ChartView::ChartView(wxWindow* parent, std::vector<ElementPlotData> epdList, std::vector<double> time)
+ : ChartViewBase(parent)
{
+ m_epdList = epdList;
+ m_time = time;
+
m_menuItemShowGrid->Check(m_hideGrid ? false : true);
m_menuItemShowLabel->Check(m_showLeg);
m_menuItemShowCoordinates->Check(m_showCoords);
@@ -20,8 +25,11 @@ ChartView::ChartView(wxWindow* parent) : ChartViewBase(parent)
SetMPWindow();
GetSizer()->Add(m_mpWindow, 1, wxEXPAND, WXC_FROM_DIP(5));
+ SetTreectrl();
Layout();
SetInitialSize();
+
+ BuildColourList();
}
ChartView::~ChartView() {}
@@ -58,10 +66,47 @@ void ChartView::SetMPWindow()
Fit();
}
+void ChartView::SetTreectrl()
+{
+ wxTreeItemId rootID = m_treeCtrl->AddRoot(wxT("root"));
+ m_treeTimeID = m_treeCtrl->AppendItem(rootID, _("Time"));
+ m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);
+
+ bool firstElement[ElementPlotData::NUM_ELEMENTS];
+ for(int i = 0; i < ElementPlotData::NUM_ELEMENTS; ++i) firstElement[i] = true;
+
+ wxString rootElementName[ElementPlotData::NUM_ELEMENTS];
+ rootElementName[ElementPlotData::CT_BUS] = _("Bus");
+ rootElementName[ElementPlotData::CT_IND_MOTOR] = _("Induction motor");
+ rootElementName[ElementPlotData::CT_LINE] = _("Line");
+ rootElementName[ElementPlotData::CT_LOAD] = _("Load");
+ rootElementName[ElementPlotData::CT_SHUNT_CAPACITOR] = _("Capacitor");
+ rootElementName[ElementPlotData::CT_SHUNT_INDUCTOR] = _("Inductor");
+ rootElementName[ElementPlotData::CT_SYNC_COMPENSATOR] = _("Synchronous compensator");
+ rootElementName[ElementPlotData::CT_SYNC_GENERATOR] = _("Synchronous generator");
+ rootElementName[ElementPlotData::CT_TRANSFORMER] = _("Transformer");
+
+ wxTreeItemId rootItemID[ElementPlotData::NUM_ELEMENTS];
+
+ for(auto it = m_epdList.begin(), itEnd = m_epdList.end(); it != itEnd; ++it) {
+ ElementPlotData data = *it;
+ ElementPlotData::CurveType curveType = data.GetCurveType();
+
+ if(firstElement[curveType]) {
+ rootItemID[curveType] = m_treeCtrl->AppendItem(rootID, rootElementName[curveType]);
+ firstElement[curveType] = false;
+ }
+ wxTreeItemId itemID = m_treeCtrl->AppendItem(rootItemID[curveType], data.GetName());
+ for(int i = 0; i < data.GetElementDataNumber(); ++i) {
+ m_treeCtrl->AppendItem(itemID, data.GetDataName(i), -1, -1, data.GetPlotData(i));
+ }
+ }
+}
+
void ChartView::OnPropertyGridChange(wxPropertyGridEvent& event)
{
bool fit = false;
-
+
if(event.GetPropertyName() == _("Margins")) {
m_mpWindow->SetMargins(m_pgPropMarginsUp->GetValue().GetLong(), m_pgPropMarginsRight->GetValue().GetLong(),
m_pgPropMarginsBot->GetValue().GetLong(), m_pgPropMarginsLeft->GetValue().GetLong());
@@ -173,3 +218,75 @@ void ChartView::UpdatePlot(bool fit)
m_coords->SetBrush(*wxWHITE_BRUSH);
}
}
+
+void ChartView::OnTreeItemActivated(wxTreeEvent& event)
+{
+ PlotData* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()));
+
+ if(data) {
+ bool isPlotting = data->IsPlot() ? false : true;
+ data->SetPlot(isPlotting);
+ m_pgPropDraw->SetValue(data->IsPlot());
+ if(isPlotting) {
+ wxColour colour = GetNextColour();
+ wxVariant vColour;
+ vColour << colour;
+ //data->SetColour(colour);
+ m_pgPropColor->SetValue(vColour);
+ }
+ UpdatePlot(true);
+ }
+
+ if(event.GetItem() == m_treeTimeID) {
+ // AllToYAxis(treeCtrl_ChartSelection->GetRootItem());
+ m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);
+ // xAxisValues = time;
+ UpdatePlot(true);
+ }
+
+ event.Skip();
+}
+
+void ChartView::OnTreeItemSelectionChanged(wxTreeEvent& event)
+{
+ PlotData* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()));
+ if(data) {
+ m_pgPropDraw->SetValue(data->IsPlot());
+ wxVariant colour;
+ colour << data->GetColour();
+ m_pgPropColor->SetValue(colour);
+ m_pgProplineThick->SetValue(data->GetThick());
+ m_pgProplineType->SetValue(data->GetPenType());
+ m_pgProplineAxis->SetValue(data->GetAxis());
+ }
+ event.Skip();
+}
+
+void ChartView::BuildColourList()
+{
+ m_colourList.push_back(wxColour(255, 0, 0));
+ m_colourList.push_back(wxColour(0, 0, 255));
+ m_colourList.push_back(wxColour(0, 255, 0));
+ m_colourList.push_back(wxColour(255, 128, 0));
+ m_colourList.push_back(wxColour(128, 0, 255));
+ m_colourList.push_back(wxColour(0, 255, 128));
+ m_colourList.push_back(wxColour(255, 255, 0));
+ m_colourList.push_back(wxColour(255, 0, 255));
+ m_colourList.push_back(wxColour(0, 255, 255));
+ m_colourList.push_back(wxColour(128, 255, 0));
+ m_colourList.push_back(wxColour(255, 0, 128));
+ m_colourList.push_back(wxColour(0, 128, 255));
+ m_colourList.push_back(wxColour(128, 128, 128));
+ m_colourList.push_back(wxColour(0, 0, 0));
+ m_itColourList = m_colourList.end();
+}
+
+wxColour ChartView::GetNextColour()
+{
+ if(*m_itColourList == *wxBLACK)
+ m_itColourList = m_colourList.begin();
+ else
+ ++m_itColourList;
+
+ return *m_itColourList;
+}