add single_buffer and copy/paste one file or dir

This commit is contained in:
chatlanin
2023-04-10 11:19:21 +03:00
parent c451d859a7
commit d037e74788
6 changed files with 78 additions and 10 deletions

View File

@@ -4,6 +4,7 @@
#include "try_engine/event/event_classificator.hpp"
#include "utils/types.hpp"
#include "buffer/buffer.hpp"
#include "logger/logger.hpp"
@@ -58,6 +59,8 @@ namespace rrr::layers::gui
ImGui::TextUnformatted(">");
ImGui::SameLine(22.f);
// HERE
// нужно использовать std::distance
current_position = it - data->begin();
}
else
@@ -107,6 +110,10 @@ namespace rrr::layers::gui
{
auto file_content = f.path.filename().string();
if (!buffers::get_instance().single_buffer.empty())
if (f.path == buffers::get_instance().single_buffer[1].path)
file_content = "* " + file_content;
if (f.is_link)
file_content += " ->";
@@ -219,10 +226,17 @@ namespace rrr::layers::gui
set_scroll();
}
// вставка из single_buffer
if (shift && key.get_keycode() == try_engine::key::P)
{
if (buffers::get_instance().single_buffer.empty()) return;
cnt->paste(buffers::get_instance().single_buffer[1].path);
buffers::get_instance().single_buffer.clear();
}
return;
}
if (key.get_keycode() == try_engine::key::J)
{
cnt->increment_position(STEP_DOWN);
@@ -269,6 +283,22 @@ namespace rrr::layers::gui
set_scroll();
g_coutn = 0;
}
// копирование/добавление в буфер одного файла вместо другого
if (key.get_keycode() == try_engine::key::C)
{
if (buffers::get_instance().single_buffer.empty())
buffers::get_instance().single_buffer[1] = selected_file;
else
if (selected_file.path == buffers::get_instance().single_buffer[1].path)
buffers::get_instance().single_buffer.clear();
else
buffers::get_instance().single_buffer[1] = selected_file;
}
// очистка
if (key.get_keycode() == try_engine::key::ESCAPE)
buffers::get_instance().single_buffer.clear();
}
void navigation::released(system_event& e)