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