Skip to content

Commit c93dc25

Browse files
OmarEmaraDevclayborg
authored andcommitted
[LLDB][GUI] Add Process Plugin Field
This patch adds a new Process Plugin Field. It is a choices field that lists all the available process plugins and can retrieve the name of the selected plugin or an empty string if the default is selected. The Attach form now uses that field instead of manually creating a choices field. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D106467
1 parent 74fd3cb commit c93dc25

File tree

1 file changed

+32
-15
lines changed

1 file changed

+32
-15
lines changed

lldb/source/Core/IOHandlerCursesGUI.cpp

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,29 @@ class ChoicesFieldDelegate : public FieldDelegate {
15041504
int m_first_visibile_choice;
15051505
};
15061506

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+
15071530
template <class T> class ListFieldDelegate : public FieldDelegate {
15081531
public:
15091532
ListFieldDelegate(const char *label, T default_field)
@@ -1899,6 +1922,12 @@ class FormDelegate {
18991922
return delegate;
19001923
}
19011924

1925+
ProcessPluginFieldDelegate *AddProcessPluginField() {
1926+
ProcessPluginFieldDelegate *delegate = new ProcessPluginFieldDelegate();
1927+
m_fields.push_back(FieldDelegateUP(delegate));
1928+
return delegate;
1929+
}
1930+
19021931
template <class T>
19031932
ListFieldDelegate<T> *AddListField(const char *label, T default_field) {
19041933
ListFieldDelegate<T> *delegate =
@@ -2347,8 +2376,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
23472376
m_include_existing_field =
23482377
AddBooleanField("Include existing processes.", false);
23492378
m_show_advanced_field = AddBooleanField("Show advanced settings.", false);
2350-
m_plugin_field =
2351-
AddChoicesField("Plugin Name", 3, GetPossiblePluginNames());
2379+
m_plugin_field = AddProcessPluginField();
23522380

23532381
AddAction("Attach", [this](Window &window) { Attach(window); });
23542382
}
@@ -2390,16 +2418,6 @@ class ProcessAttachFormDelegate : public FormDelegate {
23902418
return module_sp->GetFileSpec().GetFilename().AsCString();
23912419
}
23922420

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-
24032421
bool StopRunningProcess() {
24042422
ExecutionContext exe_ctx =
24052423
m_debugger.GetCommandInterpreter().GetExecutionContext();
@@ -2455,8 +2473,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
24552473
} else {
24562474
attach_info.SetProcessID(m_pid_field->GetInteger());
24572475
}
2458-
if (m_plugin_field->GetChoiceContent() != "<default>")
2459-
attach_info.SetProcessPluginName(m_plugin_field->GetChoiceContent());
2476+
attach_info.SetProcessPluginName(m_plugin_field->GetPluginName());
24602477

24612478
return attach_info;
24622479
}
@@ -2504,7 +2521,7 @@ class ProcessAttachFormDelegate : public FormDelegate {
25042521
BooleanFieldDelegate *m_wait_for_field;
25052522
BooleanFieldDelegate *m_include_existing_field;
25062523
BooleanFieldDelegate *m_show_advanced_field;
2507-
ChoicesFieldDelegate *m_plugin_field;
2524+
ProcessPluginFieldDelegate *m_plugin_field;
25082525
};
25092526

25102527
class MenuDelegate {

0 commit comments

Comments
 (0)