diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-04-27 20:38:55 -0300 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-04-27 20:38:55 -0300 |
commit | 50f31898499d1d1e1ebc8ab9c9c26d3b4ec1b3c1 (patch) | |
tree | f4a509a9e20d6ece771a718638b9f31a2a268ef8 /Project/ChartView.cpp | |
parent | ee58faacaaaf83293ead87696847b018f9a1281d (diff) | |
download | PSP.git-50f31898499d1d1e1ebc8ab9c9c26d3b4ec1b3c1.tar.gz PSP.git-50f31898499d1d1e1ebc8ab9c9c26d3b4ec1b3c1.tar.xz PSP.git-50f31898499d1d1e1ebc8ab9c9c26d3b4ec1b3c1.zip |
More methods implemented
buggy
Diffstat (limited to 'Project/ChartView.cpp')
-rw-r--r-- | Project/ChartView.cpp | 121 |
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; +} |