109{
110
111
112 std::vector<int> harmonicOrder;
113 std::vector<double> injHarmCurrent;
114 std::vector<ElectricalUnit> injHarmCurrentUnit;
115 std::vector<double> injHarmAngle;
116
117
118 long item = -1;
119 while(true) {
120 item = m_listCtrlHarmCurrentList->GetNextItem(item, wxLIST_NEXT_ALL);
121 if(item == -1) break;
122 harmonicOrder.push_back(wxAtoi(m_listCtrlHarmCurrentList->GetItemText(item, 0)));
123 double injCurrent = 0.0;
124 if(!m_listCtrlHarmCurrentList->GetItemText(item, 1).ToDouble(&injCurrent)) return;
125 injHarmCurrent.push_back(injCurrent);
126 if(m_listCtrlHarmCurrentList->GetItemText(item, 2) == "A")
128 else
130 double injCAngle = 0.0;
131 if(!m_listCtrlHarmCurrentList->GetItemText(item, 3).ToDouble(&injCAngle)) return;
132 injHarmAngle.push_back(injCAngle);
133 }
134
135
136 for(unsigned int i = 0; i < harmonicOrder.size(); ++i) {
137 for(unsigned int j = 0; j < harmonicOrder.size(); ++j) {
138 if(harmonicOrder[i] < harmonicOrder[j]) {
139 int h = harmonicOrder[j];
140 harmonicOrder[j] = harmonicOrder[i];
141 harmonicOrder[i] = h;
142
143 double current = injHarmCurrent[j];
144 injHarmCurrent[j] = injHarmCurrent[i];
145 injHarmCurrent[i] = current;
146
147 auto unit = injHarmCurrentUnit[j];
148 injHarmCurrentUnit[j] = injHarmCurrentUnit[i];
149 injHarmCurrentUnit[i] = unit;
150
151 double angle = injHarmAngle[j];
152 injHarmAngle[j] = injHarmAngle[i];
153 injHarmAngle[i] = angle;
154 }
155 }
156 }
157
158
159 m_listCtrlHarmCurrentList->ClearAll();
160 m_listCtrlHarmCurrentList->AppendColumn(_("Order"));
161 m_listCtrlHarmCurrentList->AppendColumn(_("Current"));
162 m_listCtrlHarmCurrentList->AppendColumn(_("Unit"));
163 m_listCtrlHarmCurrentList->AppendColumn(_("Angle"));
164 m_maxID = 0;
165 for(unsigned int i = 0; i < harmonicOrder.size(); ++i) {
166 long item = m_listCtrlHarmCurrentList->InsertItem(m_maxID, wxString::Format("%d", harmonicOrder[i]));
167 m_listCtrlHarmCurrentList->SetItem(item, 1, m_harmCurrent->
StringFromDouble(injHarmCurrent[i], 1));
168 m_listCtrlHarmCurrentList->SetItem(item, 2, injHarmCurrentUnit[i] ==
ElectricalUnit::UNIT_A ? _(
"A") : _(
"p.u."));
169 m_listCtrlHarmCurrentList->SetItem(item, 3, m_harmCurrent->
StringFromDouble(injHarmAngle[i], 1));
170 m_maxID++;
171 }
172}