mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 20:17:41 +00:00
FileManager: Move "Open Terminal here" action to DirectoryView
This commit is contained in:
parent
609108f6b3
commit
825fcb8292
3 changed files with 21 additions and 18 deletions
|
@ -484,4 +484,19 @@ void DirectoryView::setup_actions()
|
||||||
ASSERT(rc >= 0);
|
ASSERT(rc >= 0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
m_open_terminal_action = GUI::Action::create("Open Terminal here...", Gfx::Bitmap::load_from_file("/res/icons/16x16/app-terminal.png"), [&](auto&) {
|
||||||
|
posix_spawn_file_actions_t spawn_actions;
|
||||||
|
posix_spawn_file_actions_init(&spawn_actions);
|
||||||
|
posix_spawn_file_actions_addchdir(&spawn_actions, path().characters());
|
||||||
|
pid_t pid;
|
||||||
|
const char* argv[] = { "Terminal", nullptr };
|
||||||
|
if ((errno = posix_spawn(&pid, "/bin/Terminal", &spawn_actions, nullptr, const_cast<char**>(argv), environ))) {
|
||||||
|
perror("posix_spawn");
|
||||||
|
} else {
|
||||||
|
if (disown(pid) < 0)
|
||||||
|
perror("disown");
|
||||||
|
}
|
||||||
|
posix_spawn_file_actions_destroy(&spawn_actions);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,6 +136,7 @@ public:
|
||||||
|
|
||||||
GUI::Action& mkdir_action() { return *m_mkdir_action; }
|
GUI::Action& mkdir_action() { return *m_mkdir_action; }
|
||||||
GUI::Action& touch_action() { return *m_touch_action; }
|
GUI::Action& touch_action() { return *m_touch_action; }
|
||||||
|
GUI::Action& open_terminal_action() { return *m_open_terminal_action; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit DirectoryView(Mode);
|
explicit DirectoryView(Mode);
|
||||||
|
@ -171,4 +172,5 @@ private:
|
||||||
|
|
||||||
RefPtr<GUI::Action> m_mkdir_action;
|
RefPtr<GUI::Action> m_mkdir_action;
|
||||||
RefPtr<GUI::Action> m_touch_action;
|
RefPtr<GUI::Action> m_touch_action;
|
||||||
|
RefPtr<GUI::Action> m_open_terminal_action;
|
||||||
};
|
};
|
||||||
|
|
|
@ -181,6 +181,7 @@ int run_in_desktop_mode(RefPtr<Core::ConfigFile> config)
|
||||||
desktop_view_context_menu->add_separator();
|
desktop_view_context_menu->add_separator();
|
||||||
|
|
||||||
desktop_view_context_menu->add_action(file_manager_action);
|
desktop_view_context_menu->add_action(file_manager_action);
|
||||||
|
desktop_view_context_menu->add_action(directory_view.open_terminal_action());
|
||||||
desktop_view_context_menu->add_separator();
|
desktop_view_context_menu->add_separator();
|
||||||
desktop_view_context_menu->add_action(display_properties_action);
|
desktop_view_context_menu->add_action(display_properties_action);
|
||||||
|
|
||||||
|
@ -291,21 +292,6 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
|
||||||
directory_view.open_parent_directory();
|
directory_view.open_parent_directory();
|
||||||
});
|
});
|
||||||
|
|
||||||
auto open_terminal_action = GUI::Action::create("Open Terminal here...", Gfx::Bitmap::load_from_file("/res/icons/16x16/app-terminal.png"), [&](const GUI::Action&) {
|
|
||||||
posix_spawn_file_actions_t spawn_actions;
|
|
||||||
posix_spawn_file_actions_init(&spawn_actions);
|
|
||||||
posix_spawn_file_actions_addchdir(&spawn_actions, directory_view.path().characters());
|
|
||||||
pid_t pid;
|
|
||||||
const char* argv[] = { "Terminal", nullptr };
|
|
||||||
if ((errno = posix_spawn(&pid, "/bin/Terminal", &spawn_actions, nullptr, const_cast<char**>(argv), environ))) {
|
|
||||||
perror("posix_spawn");
|
|
||||||
} else {
|
|
||||||
if (disown(pid) < 0)
|
|
||||||
perror("disown");
|
|
||||||
}
|
|
||||||
posix_spawn_file_actions_destroy(&spawn_actions);
|
|
||||||
});
|
|
||||||
|
|
||||||
RefPtr<GUI::Action> view_as_table_action;
|
RefPtr<GUI::Action> view_as_table_action;
|
||||||
RefPtr<GUI::Action> view_as_icons_action;
|
RefPtr<GUI::Action> view_as_icons_action;
|
||||||
RefPtr<GUI::Action> view_as_columns_action;
|
RefPtr<GUI::Action> view_as_columns_action;
|
||||||
|
@ -560,7 +546,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
|
||||||
app_menu.add_action(copy_action);
|
app_menu.add_action(copy_action);
|
||||||
app_menu.add_action(paste_action);
|
app_menu.add_action(paste_action);
|
||||||
app_menu.add_action(delete_action);
|
app_menu.add_action(delete_action);
|
||||||
app_menu.add_action(open_terminal_action);
|
app_menu.add_action(directory_view.open_terminal_action());
|
||||||
app_menu.add_separator();
|
app_menu.add_separator();
|
||||||
app_menu.add_action(properties_action);
|
app_menu.add_action(properties_action);
|
||||||
app_menu.add_separator();
|
app_menu.add_separator();
|
||||||
|
@ -606,7 +592,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
|
||||||
main_toolbar.add_action(copy_action);
|
main_toolbar.add_action(copy_action);
|
||||||
main_toolbar.add_action(paste_action);
|
main_toolbar.add_action(paste_action);
|
||||||
main_toolbar.add_action(delete_action);
|
main_toolbar.add_action(delete_action);
|
||||||
main_toolbar.add_action(open_terminal_action);
|
main_toolbar.add_action(directory_view.open_terminal_action());
|
||||||
|
|
||||||
main_toolbar.add_separator();
|
main_toolbar.add_separator();
|
||||||
main_toolbar.add_action(*view_as_icons_action);
|
main_toolbar.add_action(*view_as_icons_action);
|
||||||
|
@ -683,7 +669,7 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
|
||||||
directory_view_context_menu->add_action(directory_view.mkdir_action());
|
directory_view_context_menu->add_action(directory_view.mkdir_action());
|
||||||
directory_view_context_menu->add_action(directory_view.touch_action());
|
directory_view_context_menu->add_action(directory_view.touch_action());
|
||||||
directory_view_context_menu->add_action(paste_action);
|
directory_view_context_menu->add_action(paste_action);
|
||||||
directory_view_context_menu->add_action(open_terminal_action);
|
directory_view_context_menu->add_action(directory_view.open_terminal_action());
|
||||||
directory_view_context_menu->add_separator();
|
directory_view_context_menu->add_separator();
|
||||||
directory_view_context_menu->add_action(properties_action);
|
directory_view_context_menu->add_action(properties_action);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue