add single_buffer and copy/paste one file or dir
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user