add delete file and dirs
This commit is contained in:
parent
8c61772c66
commit
d775a65feb
@ -1,5 +1,6 @@
|
|||||||
#include "content.hpp"
|
#include "content.hpp"
|
||||||
|
|
||||||
|
#include <filesystem>
|
||||||
#include <oneapi/tbb/parallel_for.h>
|
#include <oneapi/tbb/parallel_for.h>
|
||||||
#include "logger/logger.hpp"
|
#include "logger/logger.hpp"
|
||||||
|
|
||||||
@ -96,17 +97,26 @@ namespace rrr
|
|||||||
{
|
{
|
||||||
cursor_position += step;
|
cursor_position += step;
|
||||||
check_cursor_position();
|
check_cursor_position();
|
||||||
prev.fill(nav.store[PWD].at(cursor_position).path);
|
|
||||||
|
// в зависимости от того пустаая ли директория
|
||||||
|
// например после удаления последнего файла
|
||||||
|
if (std::filesystem::is_empty(PWD))
|
||||||
|
prev.data.clear();
|
||||||
|
else
|
||||||
|
prev.fill(nav.store[PWD].at(cursor_position).path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void content::check_cursor_position()
|
void content::check_cursor_position()
|
||||||
{
|
{
|
||||||
if (cursor_position == (int)nav.store[PWD].size()) cursor_position = (int)nav.store[PWD].size() - 1;
|
if (cursor_position == (int)nav.store[PWD].size()) cursor_position = (int)nav.store[PWD].size() - 1;
|
||||||
if (cursor_position < 0) cursor_position = 0;
|
else if (cursor_position < 0) cursor_position = 0;
|
||||||
|
else if (cursor_position > (int)nav.store[PWD].size()) cursor_position = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void content::navigation_right()
|
void content::navigation_right()
|
||||||
{
|
{
|
||||||
|
if (std::filesystem::is_empty(PWD)) return;
|
||||||
|
|
||||||
// ставим новый pwd и заполняем навигацию и историю
|
// ставим новый pwd и заполняем навигацию и историю
|
||||||
PWD = PWD / nav.store[PWD].at(cursor_position).path.filename();
|
PWD = PWD / nav.store[PWD].at(cursor_position).path.filename();
|
||||||
|
|
||||||
@ -143,7 +153,11 @@ namespace rrr
|
|||||||
{
|
{
|
||||||
// буфер заполняется только когда отсюда уходишь
|
// буфер заполняется только когда отсюда уходишь
|
||||||
// типа я тут был
|
// типа я тут был
|
||||||
buffer::state[PWD] = nav.store[PWD].at(cursor_position);
|
if (std::filesystem::is_empty(PWD))
|
||||||
|
buffer::state[PWD] = nav.store[PWD.parent_path()].at(cursor_position);
|
||||||
|
else
|
||||||
|
buffer::state[PWD] = nav.store[PWD].at(cursor_position);
|
||||||
|
|
||||||
auto from = PWD;
|
auto from = PWD;
|
||||||
|
|
||||||
// ставим новый pwd и заполняем навигацию и историю
|
// ставим новый pwd и заполняем навигацию и историю
|
||||||
@ -180,5 +194,14 @@ namespace rrr
|
|||||||
|
|
||||||
hack::utils::unix_cmd(cmd);
|
hack::utils::unix_cmd(cmd);
|
||||||
nav.fill(PWD);
|
nav.fill(PWD);
|
||||||
|
check_cursor_position();
|
||||||
|
}
|
||||||
|
|
||||||
|
void content::delete_file(file f)
|
||||||
|
{
|
||||||
|
std::string cmd = "delete " + f.path.string();
|
||||||
|
hack::utils::unix_cmd(cmd);
|
||||||
|
nav.fill(PWD);
|
||||||
|
increment_position(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ namespace rrr
|
|||||||
void navigation_right();
|
void navigation_right();
|
||||||
void navigation_left();
|
void navigation_left();
|
||||||
void create_file(std::string);
|
void create_file(std::string);
|
||||||
|
void delete_file(file);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
content_type::navigation nav;
|
content_type::navigation nav;
|
||||||
|
@ -131,15 +131,18 @@ namespace rrr::layers::gui
|
|||||||
freeze = false;
|
freeze = false;
|
||||||
break;
|
break;
|
||||||
case types::event_type::DELETE_CURRENT_FILE:
|
case types::event_type::DELETE_CURRENT_FILE:
|
||||||
freeze = false;
|
{
|
||||||
hack::log()("DELETE FILE");
|
freeze = false;
|
||||||
|
cnt->delete_file(current_file);
|
||||||
|
cursor_position = cnt->get_cursor_position(TYPE_WIN::NAVIGATION);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case types::event_type::CREATE_FILE:
|
case types::event_type::CREATE_FILE:
|
||||||
{
|
{
|
||||||
freeze = false;
|
freeze = false;
|
||||||
auto filename = std::any_cast<std::string>(value);
|
auto filename = std::any_cast<std::string>(value);
|
||||||
cnt->create_file(filename);
|
cnt->create_file(filename);
|
||||||
data = cnt->get(TYPE_WIN::NAVIGATION);
|
cursor_position = cnt->get_cursor_position(TYPE_WIN::NAVIGATION);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user