@@ -40,6 +40,31 @@ DebugControlsWidget::DebugControlsWidget(QWidget* parent, const std::string name
4040 if (!m_controller)
4141 return ;
4242
43+ // Add adapter selector dropdown at the top
44+ m_adapterSelector = new QComboBox (this );
45+ m_adapterSelector->setMinimumWidth (150 );
46+ for (const std::string& adapter : DebugAdapterType::GetAvailableAdapters (m_controller->GetData ()))
47+ {
48+ m_adapterSelector->addItem (QString::fromStdString (adapter));
49+ }
50+
51+ // Set current adapter
52+ if (!m_controller->GetAdapterType ().empty ())
53+ {
54+ m_adapterSelector->setCurrentText (QString::fromStdString (m_controller->GetAdapterType ()));
55+ }
56+ else if (m_adapterSelector->count () > 0 )
57+ {
58+ // Set first available adapter if none is set
59+ m_controller->SetAdapterType (m_adapterSelector->itemText (0 ).toStdString ());
60+ m_adapterSelector->setCurrentIndex (0 );
61+ }
62+
63+ connect (m_adapterSelector, &QComboBox::currentTextChanged, this , &DebugControlsWidget::selectAdapter);
64+
65+ addWidget (m_adapterSelector);
66+ addSeparator ();
67+
4368 auto cyan = getThemeColor (CyanStandardHighlightColor);
4469 auto green = getThemeColor (GreenStandardHighlightColor);
4570 auto red = getThemeColor (RedStandardHighlightColor);
@@ -587,3 +612,21 @@ void DebugControlsWidget::performTimestampNavigation()
587612 auto * dialog = new TimestampNavigationDialog (this , m_controller);
588613 dialog->show ();
589614}
615+
616+
617+ void DebugControlsWidget::selectAdapter (const QString& adapter)
618+ {
619+ if (adapter.isEmpty ())
620+ return ;
621+
622+ auto adapterType = DebugAdapterType::GetByName (adapter.toStdString ());
623+ if (!adapterType)
624+ return ;
625+
626+ m_controller->SetAdapterType (adapter.toStdString ());
627+ Ref<Metadata> data = new Metadata (adapter.toStdString ());
628+ m_controller->GetData ()->StoreMetadata (" debugger.adapter_type" , data);
629+
630+ // Update button states after adapter change
631+ updateButtons ();
632+ }
0 commit comments