@@ -56,17 +56,21 @@ SelectorWindow::SelectorWindow(
5656 this ->toolManagerManager ->setBlock (selectedProceduralCircuit->getBlockType (proceduralCircuitParameters));
5757 } else if (selectedBus) {
5858 Rml::Element* parametersElement = parameterMenu->GetElementById (" parameter-menu-parameters" );
59- assert (parametersElement->GetNumChildren () == 1 );
59+ assert (parametersElement->GetNumChildren () == 2 );
6060 Rml::ElementList elements;
61- parametersElement->GetFirstChild ()->GetElementsByClassName (elements, " parameter-input" );
62- Rml::ElementFormControlInput* parameterInput = rmlui_dynamic_cast<Rml::ElementFormControlInput*>(elements[0 ]);
63- std::string str = parameterInput->GetValue ();
61+ parametersElement->GetChild (0 )->GetElementsByClassName (elements, " parameter-input" );
62+ Rml::ElementFormControlInput* numInputsInput = rmlui_dynamic_cast<Rml::ElementFormControlInput*>(elements[0 ]);
63+ elements.clear ();
64+ parametersElement->GetChild (1 )->GetElementsByClassName (elements, " parameter-input" );
65+ Rml::ElementFormControlInput* inputBitWidthInput = rmlui_dynamic_cast<Rml::ElementFormControlInput*>(elements[0 ]);
66+ std::string numInputsStr = numInputsInput->GetValue ();
67+ std::string inputBitWidthStr = inputBitWidthInput->GetValue ();
6468 try {
65- int value = std::stoi (str );
66-
67- this ->toolManagerManager ->setBlock (this ->blockDataManager ->getBusBlock (value ));
69+ int numInputs = std::stoi (numInputsStr );
70+ int inputBitWidth = std::stoi (inputBitWidthStr);
71+ this ->toolManagerManager ->setBlock (this ->blockDataManager ->getBusBlock (numInputs, inputBitWidth ));
6872 } catch (std::exception const & ex) {
69- logError (" Invalid bus bit width {} . {}" , " " , str , ex.what ());
73+ logError (" Invalid bus parameters: {} inputs of {} bits each . {}" , " " , numInputsStr, inputBitWidthStr , ex.what ());
7074 return ;
7175 }
7276 }
@@ -239,7 +243,8 @@ void SelectorWindow::setupBusParameterMenu() {
239243 return ;
240244 }
241245 ProceduralCircuitParameters parameters;
242- parameters.parameters .emplace (" Bit Width" , 8 );
246+ parameters.parameters .emplace (" Number of Ports" , 8 );
247+ parameters.parameters .emplace (" Port Bit Widths" , 1 );
243248 addParametersToParameterMenu (parameters, " Bus" );
244249}
245250
0 commit comments