503{
504 if (m_checkBoxReplace->GetValue()) {
505 m_workspace->RemoveAllTextElements();
506 }
507 ElectricalUnit voltageUnitList[3] = { ElectricalUnit::UNIT_PU, ElectricalUnit::UNIT_V, ElectricalUnit::UNIT_kV };
508 ElectricalUnit currentUnitList[3] = { ElectricalUnit::UNIT_PU, ElectricalUnit::UNIT_A, ElectricalUnit::UNIT_kA };
509 ElectricalUnit sUnitList[4] = { ElectricalUnit::UNIT_PU, ElectricalUnit::UNIT_VA, ElectricalUnit::UNIT_kVA, ElectricalUnit::UNIT_MVA };
510 ElectricalUnit pUnitList[4] = { ElectricalUnit::UNIT_PU, ElectricalUnit::UNIT_W, ElectricalUnit::UNIT_kW, ElectricalUnit::UNIT_MW };
511 ElectricalUnit qUnitList[4] = { ElectricalUnit::UNIT_PU, ElectricalUnit::UNIT_var, ElectricalUnit::UNIT_kvar, ElectricalUnit::UNIT_Mvar };
512 ElectricalUnit angleUnitList[2] = { ElectricalUnit::UNIT_DEGREE, ElectricalUnit::UNIT_RADIAN };
513
514 ElectricalUnit voltageUnit = voltageUnitList[m_radioBoxVoltage->GetSelection()];
515 ElectricalUnit currentUnit = currentUnitList[m_radioBoxCurrent->GetSelection()];
516 ElectricalUnit sUnit = sUnitList[m_radioBoxPower->GetSelection()];
517 ElectricalUnit pUnit = pUnitList[m_radioBoxPower->GetSelection()];
518 ElectricalUnit qUnit = qUnitList[m_radioBoxPower->GetSelection()];
519 ElectricalUnit angleUnit = angleUnitList[m_radioBoxAngle->GetSelection()];
520
521 auto elementList = m_workspace->GetElementList();
522 int numTxtElements = 0;
523 for (auto* element : elementList) {
524 ElementType elementType = element->GetElementType();
525 wxArrayInt checked;
526 switch (elementType)
527 {
528 case TYPE_BUS: {
529 TextID textOptions[7] = { ID_TXT_NAME, ID_TXT_VOLTAGE, ID_TXT_ANGLE, ID_TXT_FAULTCURRENT, ID_TXT_FAULTVOLTAGE, ID_TXT_SCC, ID_TXT_THD };
530 ElectricalUnit textUnits[7] = { ElectricalUnit::UNIT_NONE, voltageUnit, angleUnit, currentUnit, voltageUnit, sUnit, ElectricalUnit::UNIT_NONE };
531 m_checkListBoxBus->GetCheckedItems(checked);
532 for (int i : checked) {
533 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
534 numTxtElements++;
535 }
536 } break;
537 case TYPE_CAPACITOR: {
538 TextID textOptions[2] = { ID_TXT_NAME, ID_TXT_REACTIVE_POWER };
539 ElectricalUnit textUnits[2] = { ElectricalUnit::UNIT_NONE, qUnit };
540 m_checkListBoxCapacitor->GetCheckedItems(checked);
541 for (int i : checked) {
542 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
543 numTxtElements++;
544 }
545 } break;
546 case TYPE_IND_MOTOR: {
547 TextID textOptions[3] = { ID_TXT_NAME, ID_TXT_ACTIVE_POWER, ID_TXT_REACTIVE_POWER };
548 ElectricalUnit textUnits[3] = { ElectricalUnit::UNIT_NONE, pUnit, qUnit };
549 m_checkListBoxIndMotor->GetCheckedItems(checked);
550 for (int i : checked) {
551 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
552 numTxtElements++;
553 }
554 } break;
555 case TYPE_INDUCTOR: {
556 TextID textOptions[2] = { ID_TXT_NAME, ID_TXT_REACTIVE_POWER };
557 ElectricalUnit textUnits[2] = { ElectricalUnit::UNIT_NONE, qUnit };
558 m_checkListBoxInductor->GetCheckedItems(checked);
559 for (int i : checked) {
560 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
561 numTxtElements++;
562 }
563 } break;
564 case TYPE_LINE: {
565 TextID lineTextOptions[10] = { ID_TXT_NAME, ID_TXT_BRANCH_ACTIVE_POWER_1_2, ID_TXT_BRANCH_ACTIVE_POWER_2_1,
566 ID_TXT_BRANCH_REACTIVE_POWER_1_2, ID_TXT_BRANCH_REACTIVE_POWER_2_1, ID_TXT_BRANCH_LOSSES,
567 ID_TXT_BRANCH_CURRENT_1_2, ID_TXT_BRANCH_CURRENT_2_1, ID_TXT_BRANCH_FAULT_CURRENT_1_2, ID_TXT_BRANCH_FAULT_CURRENT_2_1 };
568 ElectricalUnit textUnits[10] = { ElectricalUnit::UNIT_NONE, pUnit, pUnit, qUnit, qUnit, pUnit, currentUnit, currentUnit, currentUnit, currentUnit };
569 m_checkListBoxLine->GetCheckedItems(checked);
570 for (int i : checked) {
571 m_workspace->InsertTextElement(lineTextOptions[i], element, textUnits[i], m_precision);
572 numTxtElements++;
573 }
574 } break;
575 case TYPE_LOAD: {
576 TextID textOptions[3] = { ID_TXT_NAME, ID_TXT_ACTIVE_POWER, ID_TXT_REACTIVE_POWER };
577 ElectricalUnit textUnits[3] = { ElectricalUnit::UNIT_NONE, pUnit, qUnit };
578 m_checkListBoxLoad->GetCheckedItems(checked);
579 for (int i : checked) {
580 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
581 numTxtElements++;
582 }
583 } break;
584 case TYPE_SYNC_GENERATOR: {
585 TextID textOptions[4] = { ID_TXT_NAME, ID_TXT_ACTIVE_POWER, ID_TXT_REACTIVE_POWER, ID_TXT_FAULTCURRENT };
586 ElectricalUnit textUnits[4] = { ElectricalUnit::UNIT_NONE, pUnit, qUnit, currentUnit };
587 m_checkListBoxGenerator->GetCheckedItems(checked);
588 for (int i : checked) {
589 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
590 numTxtElements++;
591 }
592 } break;
593 case TYPE_SYNC_MOTOR: {
594 TextID textOptions[3] = { ID_TXT_NAME, ID_TXT_ACTIVE_POWER, ID_TXT_REACTIVE_POWER };
595 ElectricalUnit textUnits[3] = { ElectricalUnit::UNIT_NONE, pUnit, qUnit };
596 m_checkListBoxSyncMotor->GetCheckedItems(checked);
597 for (int i : checked) {
598 m_workspace->InsertTextElement(textOptions[i], element, textUnits[i], m_precision);
599 numTxtElements++;
600 }
601 } break;
602 case TYPE_TRANSFORMER: {
603 TextID lineTextOptions[11] = { ID_TXT_NAME, ID_TXT_BRANCH_ACTIVE_POWER_1_2, ID_TXT_BRANCH_ACTIVE_POWER_2_1,
604 ID_TXT_BRANCH_REACTIVE_POWER_1_2, ID_TXT_BRANCH_REACTIVE_POWER_2_1, ID_TXT_BRANCH_LOSSES,
605 ID_TXT_BRANCH_CURRENT_1_2, ID_TXT_BRANCH_CURRENT_2_1, ID_TXT_BRANCH_FAULT_CURRENT_1_2, ID_TXT_BRANCH_FAULT_CURRENT_2_1,
606 ID_TXT_TAP };
607 ElectricalUnit textUnits[11] = { ElectricalUnit::UNIT_NONE, pUnit, pUnit, qUnit, qUnit, pUnit, currentUnit, currentUnit, currentUnit, currentUnit,
608 ElectricalUnit::UNIT_PU };
609 m_checkListBoxTransformer->GetCheckedItems(checked);
610 for (int i : checked) {
611 m_workspace->InsertTextElement(lineTextOptions[i], element, textUnits[i], m_precision);
612 numTxtElements++;
613 }
614 } break;
615 default:
616 break;
617 }
618 }
619 if (numTxtElements != 0) {
620 m_workspace->SaveCurrentState();
621 m_workspace->UpdateTextElements();
622 }
623 EndModal(wxID_OK);
624}