@@ -1504,6 +1504,29 @@ class ChoicesFieldDelegate : public FieldDelegate {
1504
1504
int m_first_visibile_choice;
1505
1505
};
1506
1506
1507
+ class ProcessPluginFieldDelegate : public ChoicesFieldDelegate {
1508
+ public:
1509
+ ProcessPluginFieldDelegate ()
1510
+ : ChoicesFieldDelegate(" Process Plugin" , 3 , GetPossiblePluginNames()) {}
1511
+
1512
+ std::vector<std::string> GetPossiblePluginNames () {
1513
+ std::vector<std::string> names;
1514
+ names.push_back (" <default>" );
1515
+
1516
+ size_t i = 0 ;
1517
+ while (auto name = PluginManager::GetProcessPluginNameAtIndex (i++))
1518
+ names.push_back (name);
1519
+ return names;
1520
+ }
1521
+
1522
+ std::string GetPluginName () {
1523
+ std::string plugin_name = GetChoiceContent ();
1524
+ if (plugin_name == " <default>" )
1525
+ return " " ;
1526
+ return plugin_name;
1527
+ }
1528
+ };
1529
+
1507
1530
template <class T > class ListFieldDelegate : public FieldDelegate {
1508
1531
public:
1509
1532
ListFieldDelegate (const char *label, T default_field)
@@ -1899,6 +1922,12 @@ class FormDelegate {
1899
1922
return delegate;
1900
1923
}
1901
1924
1925
+ ProcessPluginFieldDelegate *AddProcessPluginField () {
1926
+ ProcessPluginFieldDelegate *delegate = new ProcessPluginFieldDelegate ();
1927
+ m_fields.push_back (FieldDelegateUP (delegate));
1928
+ return delegate;
1929
+ }
1930
+
1902
1931
template <class T >
1903
1932
ListFieldDelegate<T> *AddListField (const char *label, T default_field) {
1904
1933
ListFieldDelegate<T> *delegate =
@@ -2347,8 +2376,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
2347
2376
m_include_existing_field =
2348
2377
AddBooleanField (" Include existing processes." , false );
2349
2378
m_show_advanced_field = AddBooleanField (" Show advanced settings." , false );
2350
- m_plugin_field =
2351
- AddChoicesField (" Plugin Name" , 3 , GetPossiblePluginNames ());
2379
+ m_plugin_field = AddProcessPluginField ();
2352
2380
2353
2381
AddAction (" Attach" , [this ](Window &window) { Attach (window); });
2354
2382
}
@@ -2390,16 +2418,6 @@ class ProcessAttachFormDelegate : public FormDelegate {
2390
2418
return module_sp->GetFileSpec ().GetFilename ().AsCString ();
2391
2419
}
2392
2420
2393
- std::vector<std::string> GetPossiblePluginNames () {
2394
- std::vector<std::string> names;
2395
- names.push_back (" <default>" );
2396
-
2397
- size_t i = 0 ;
2398
- while (auto name = PluginManager::GetProcessPluginNameAtIndex (i++))
2399
- names.push_back (name);
2400
- return names;
2401
- }
2402
-
2403
2421
bool StopRunningProcess () {
2404
2422
ExecutionContext exe_ctx =
2405
2423
m_debugger.GetCommandInterpreter ().GetExecutionContext ();
@@ -2455,8 +2473,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
2455
2473
} else {
2456
2474
attach_info.SetProcessID (m_pid_field->GetInteger ());
2457
2475
}
2458
- if (m_plugin_field->GetChoiceContent () != " <default>" )
2459
- attach_info.SetProcessPluginName (m_plugin_field->GetChoiceContent ());
2476
+ attach_info.SetProcessPluginName (m_plugin_field->GetPluginName ());
2460
2477
2461
2478
return attach_info;
2462
2479
}
@@ -2504,7 +2521,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
2504
2521
BooleanFieldDelegate *m_wait_for_field;
2505
2522
BooleanFieldDelegate *m_include_existing_field;
2506
2523
BooleanFieldDelegate *m_show_advanced_field;
2507
- ChoicesFieldDelegate *m_plugin_field;
2524
+ ProcessPluginFieldDelegate *m_plugin_field;
2508
2525
};
2509
2526
2510
2527
class MenuDelegate {
0 commit comments