add fast navigation
This commit is contained in:
parent
b9cb5315dc
commit
740cb023a8
@ -59,9 +59,8 @@ namespace rrr::layers::gui
|
||||
|
||||
ImGui::TextUnformatted(">");
|
||||
ImGui::SameLine(22.f);
|
||||
// HERE
|
||||
// нужно использовать std::distance
|
||||
current_position = it - data->begin();
|
||||
|
||||
current_position = std::distance(it, data->begin());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -200,28 +199,28 @@ namespace rrr::layers::gui
|
||||
if (shift)
|
||||
{
|
||||
// удаление
|
||||
if (shift && key.get_keycode() == try_engine::key::D)
|
||||
if (key.get_keycode() == try_engine::key::D)
|
||||
{
|
||||
em->execute(types::event_type::SHOW_DELETE_ONE_FILE_DIALOG, selected_file);
|
||||
freeze = true;
|
||||
}
|
||||
|
||||
// создание файла/директории
|
||||
if (shift && key.get_keycode() == try_engine::key::A)
|
||||
if (key.get_keycode() == try_engine::key::A)
|
||||
{
|
||||
em->execute(types::event_type::SHOW_CREATE_FILE_DIALOG, nullptr);
|
||||
freeze = true;
|
||||
}
|
||||
|
||||
// переименование файла/директории
|
||||
if (shift && key.get_keycode() == try_engine::key::R)
|
||||
if (key.get_keycode() == try_engine::key::R)
|
||||
{
|
||||
em->execute(types::event_type::SHOW_RENAME_FILE_DIALOG, selected_file);
|
||||
freeze = true;
|
||||
}
|
||||
|
||||
// перемещение в конец списка
|
||||
if (shift && key.get_keycode() == try_engine::key::G)
|
||||
if (key.get_keycode() == try_engine::key::G)
|
||||
{
|
||||
cnt->increment_position(data->size());
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
@ -231,12 +230,32 @@ namespace rrr::layers::gui
|
||||
}
|
||||
|
||||
// вставка из single_buffer
|
||||
if (shift && key.get_keycode() == try_engine::key::P)
|
||||
if (key.get_keycode() == try_engine::key::P)
|
||||
{
|
||||
paste_from_copy();
|
||||
paste_from_cut();
|
||||
}
|
||||
|
||||
// перемещение на несколько позиций вниз
|
||||
if (key.get_keycode() == try_engine::key::J)
|
||||
{
|
||||
cnt->increment_position((data->size() - current_position) / 4);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_DOWN, nullptr);
|
||||
set_delta(MOVE_DIRECTION::DOWN);
|
||||
set_scroll();
|
||||
}
|
||||
|
||||
// перемещение на несколько позиций вверх
|
||||
if (key.get_keycode() == try_engine::key::K)
|
||||
{
|
||||
cnt->increment_position(current_position - current_position / 4);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_UP, nullptr);
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
set_scroll();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -16,9 +16,14 @@ namespace rrr
|
||||
public:
|
||||
rrr_impl(std::string app_name) : try_engine::application{ app_name }
|
||||
{
|
||||
// HERE
|
||||
// убрать это в релизе
|
||||
cnt.set_pwd("/mnt/develop/projects/cpp/rrr/dir_for_tests");
|
||||
std::string pwd = hack::utils::unix_cmd("pwd");
|
||||
|
||||
// перемещаем все знаки перевода строки в конец строки
|
||||
// т.к. там это есть и это вызывает ошибку
|
||||
auto it = std::remove(pwd.begin(), pwd.end(), '\n');
|
||||
pwd.erase(it, pwd.end());
|
||||
|
||||
cnt.set_pwd(std::filesystem::path(pwd));
|
||||
cnt.fill();
|
||||
};
|
||||
~rrr_impl() = default;
|
||||
|
Loading…
Reference in New Issue
Block a user