mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:17:44 +00:00
SystemMonitor: Add "Debug In HackStudio" action to process context menu
This action launches HackStudio with its debugger attached to the selected process.
This commit is contained in:
parent
6e5b1f5819
commit
91224d47d2
2 changed files with 14 additions and 1 deletions
|
@ -264,6 +264,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
|
|
||||||
TRY(Core::System::unveil("/bin/Profiler", "rx"));
|
TRY(Core::System::unveil("/bin/Profiler", "rx"));
|
||||||
TRY(Core::System::unveil("/bin/Inspector", "rx"));
|
TRY(Core::System::unveil("/bin/Inspector", "rx"));
|
||||||
|
TRY(Core::System::unveil("/bin/HackStudio", "rx"));
|
||||||
TRY(Core::System::unveil(nullptr, nullptr));
|
TRY(Core::System::unveil(nullptr, nullptr));
|
||||||
|
|
||||||
StringView args_tab = "processes"sv;
|
StringView args_tab = "processes"sv;
|
||||||
|
@ -385,6 +386,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
},
|
},
|
||||||
&process_table_view);
|
&process_table_view);
|
||||||
|
|
||||||
|
auto debug_action = GUI::Action::create(
|
||||||
|
"Debug in HackStudio", { Mod_Ctrl, Key_D }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/app-hack-studio.png"sv)), [&](const GUI::Action&) {
|
||||||
|
pid_t pid = selected_id(ProcessModel::Column::PID);
|
||||||
|
if (pid == -1)
|
||||||
|
return;
|
||||||
|
auto pid_string = DeprecatedString::number(pid);
|
||||||
|
GUI::Process::spawn_or_show_error(window, "/bin/HackStudio"sv, Array { "--pid", pid_string.characters() });
|
||||||
|
},
|
||||||
|
&process_table_view);
|
||||||
|
|
||||||
HashMap<pid_t, NonnullRefPtr<GUI::Window>> process_windows;
|
HashMap<pid_t, NonnullRefPtr<GUI::Window>> process_windows;
|
||||||
|
|
||||||
auto process_properties_action = GUI::CommonActions::make_properties_action(
|
auto process_properties_action = GUI::CommonActions::make_properties_action(
|
||||||
|
@ -424,6 +435,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
process_context_menu->add_action(continue_action);
|
process_context_menu->add_action(continue_action);
|
||||||
process_context_menu->add_separator();
|
process_context_menu->add_separator();
|
||||||
process_context_menu->add_action(profile_action);
|
process_context_menu->add_action(profile_action);
|
||||||
|
process_context_menu->add_action(debug_action);
|
||||||
process_context_menu->add_separator();
|
process_context_menu->add_separator();
|
||||||
process_context_menu->add_action(process_properties_action);
|
process_context_menu->add_action(process_properties_action);
|
||||||
process_table_view.on_context_menu_request = [&]([[maybe_unused]] const GUI::ModelIndex& index, const GUI::ContextMenuEvent& event) {
|
process_table_view.on_context_menu_request = [&]([[maybe_unused]] const GUI::ModelIndex& index, const GUI::ContextMenuEvent& event) {
|
||||||
|
@ -471,6 +483,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
stop_action->set_enabled(has_access);
|
stop_action->set_enabled(has_access);
|
||||||
continue_action->set_enabled(has_access);
|
continue_action->set_enabled(has_access);
|
||||||
profile_action->set_enabled(has_access);
|
profile_action->set_enabled(has_access);
|
||||||
|
debug_action->set_enabled(has_access);
|
||||||
process_properties_action->set_enabled(has_access);
|
process_properties_action->set_enabled(has_access);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1091,7 +1091,7 @@ void HackStudioWidget::initialize_debugger()
|
||||||
});
|
});
|
||||||
GUI::Application::the()->event_loop().wake();
|
GUI::Application::the()->event_loop().wake();
|
||||||
},
|
},
|
||||||
[this](float progress) {
|
[](float progress) {
|
||||||
if (GUI::Application::the()->active_window())
|
if (GUI::Application::the()->active_window())
|
||||||
GUI::Application::the()->active_window()->set_progress(progress * 100);
|
GUI::Application::the()->active_window()->set_progress(progress * 100);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue