add simple preview code without colorize
This commit is contained in:
parent
740cb023a8
commit
ea80038121
@ -50,14 +50,14 @@ namespace rrr
|
||||
set_history_cursor_position();
|
||||
f = his.data.at(history_cursor_position);
|
||||
}
|
||||
catch(...) { hack::error()("Dont set history"); }
|
||||
catch(...) {}
|
||||
break;
|
||||
case TYPE_WIN::NAVIGATION:
|
||||
try
|
||||
{
|
||||
f = nav.data.at(navigation_cursor_position);
|
||||
}
|
||||
catch(...) { hack::error()("Dont set navigation"); }
|
||||
catch(...) {}
|
||||
break;
|
||||
case TYPE_WIN::PREVIEW:
|
||||
try
|
||||
@ -65,7 +65,7 @@ namespace rrr
|
||||
set_preview_cursor_position();
|
||||
f = prev.data.at(preview_cursor_position);
|
||||
}
|
||||
catch(...) { hack::error()("Dont set preview"); }
|
||||
catch(...) {}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -255,105 +255,108 @@ namespace rrr::layers::gui
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
set_scroll();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::J)
|
||||
else
|
||||
{
|
||||
cnt->increment_position(STEP_DOWN);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_DOWN, nullptr);
|
||||
set_delta(MOVE_DIRECTION::DOWN);
|
||||
}
|
||||
if (key.get_keycode() == try_engine::key::J)
|
||||
{
|
||||
cnt->increment_position(STEP_DOWN);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_DOWN, nullptr);
|
||||
set_delta(MOVE_DIRECTION::DOWN);
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::K)
|
||||
{
|
||||
cnt->increment_position(STEP_UP);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_UP, nullptr);
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
}
|
||||
if (key.get_keycode() == try_engine::key::K)
|
||||
{
|
||||
cnt->increment_position(STEP_UP);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_UP, nullptr);
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::H)
|
||||
{
|
||||
cnt->navigation_left();
|
||||
data = cnt->get(TYPE_WIN::NAVIGATION);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_LEFT, nullptr);
|
||||
set_scroll();
|
||||
}
|
||||
if (key.get_keycode() == try_engine::key::H)
|
||||
{
|
||||
cnt->navigation_left();
|
||||
data = cnt->get(TYPE_WIN::NAVIGATION);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_LEFT, nullptr);
|
||||
set_scroll();
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::L)
|
||||
{
|
||||
cnt->navigation_right();
|
||||
data = cnt->get(TYPE_WIN::NAVIGATION);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_RIGHT, nullptr);
|
||||
set_scroll();
|
||||
}
|
||||
// HERE начинаем тут
|
||||
// если дирректория пуста и туда заъодить, то происходит краш приложения
|
||||
// сотрим тут: void content::navigation_right()
|
||||
if (key.get_keycode() == try_engine::key::L)
|
||||
{
|
||||
cnt->navigation_right();
|
||||
data = cnt->get(TYPE_WIN::NAVIGATION);
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_RIGHT, nullptr);
|
||||
set_scroll();
|
||||
}
|
||||
|
||||
// двойное нажатие перемещение в начало списка
|
||||
if (key.get_keycode() == try_engine::key::G)
|
||||
{
|
||||
++g_coutn;
|
||||
if (g_coutn != 2) return;
|
||||
cnt->increment_position(-data->size());
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_UP, nullptr);
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
set_scroll();
|
||||
g_coutn = 0;
|
||||
}
|
||||
// двойное нажатие перемещение в начало списка
|
||||
if (key.get_keycode() == try_engine::key::G)
|
||||
{
|
||||
++g_coutn;
|
||||
if (g_coutn != 2) return;
|
||||
cnt->increment_position(-data->size());
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
em->execute(types::event_type::NAVIGATION_UP, nullptr);
|
||||
set_delta(MOVE_DIRECTION::UP);
|
||||
set_scroll();
|
||||
g_coutn = 0;
|
||||
}
|
||||
|
||||
// копирование/добавление в буфер одного файла вместо другого
|
||||
// когда в буфере что-то есть и мы на томже файле жмем кнопку еще раз
|
||||
// то происходит очищение буфера
|
||||
if (key.get_keycode() == try_engine::key::C)
|
||||
{
|
||||
// проверяем а может это файл отмечен на вырезание
|
||||
if (!buffers::get_instance().single_cut_buffer.empty())
|
||||
buffers::get_instance().single_cut_buffer.clear();
|
||||
|
||||
if (buffers::get_instance().single_copy_buffer.empty())
|
||||
buffers::get_instance().single_copy_buffer[1] = selected_file;
|
||||
else
|
||||
if (selected_file.path == buffers::get_instance().single_copy_buffer[1].path)
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
else
|
||||
buffers::get_instance().single_copy_buffer[1] = selected_file;
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::X)
|
||||
{
|
||||
// проверяем а может это файл отмечен на копирование
|
||||
if (!buffers::get_instance().single_copy_buffer.empty())
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
|
||||
if (buffers::get_instance().single_cut_buffer.empty())
|
||||
buffers::get_instance().single_cut_buffer[1] = selected_file;
|
||||
else
|
||||
if (selected_file.path == buffers::get_instance().single_cut_buffer[1].path)
|
||||
// копирование/добавление в буфер одного файла вместо другого
|
||||
// когда в буфере что-то есть и мы на томже файле жмем кнопку еще раз
|
||||
// то происходит очищение буфера
|
||||
if (key.get_keycode() == try_engine::key::C)
|
||||
{
|
||||
// проверяем а может это файл отмечен на вырезание
|
||||
if (!buffers::get_instance().single_cut_buffer.empty())
|
||||
buffers::get_instance().single_cut_buffer.clear();
|
||||
|
||||
if (buffers::get_instance().single_copy_buffer.empty())
|
||||
buffers::get_instance().single_copy_buffer[1] = selected_file;
|
||||
else
|
||||
if (selected_file.path == buffers::get_instance().single_copy_buffer[1].path)
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
else
|
||||
buffers::get_instance().single_copy_buffer[1] = selected_file;
|
||||
}
|
||||
|
||||
if (key.get_keycode() == try_engine::key::X)
|
||||
{
|
||||
// проверяем а может это файл отмечен на копирование
|
||||
if (!buffers::get_instance().single_copy_buffer.empty())
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
|
||||
if (buffers::get_instance().single_cut_buffer.empty())
|
||||
buffers::get_instance().single_cut_buffer[1] = selected_file;
|
||||
else
|
||||
if (selected_file.path == buffers::get_instance().single_cut_buffer[1].path)
|
||||
buffers::get_instance().single_cut_buffer.clear();
|
||||
else
|
||||
buffers::get_instance().single_cut_buffer[1] = selected_file;
|
||||
}
|
||||
|
||||
// очистка
|
||||
if (key.get_keycode() == try_engine::key::ESCAPE)
|
||||
{
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
buffers::get_instance().single_cut_buffer.clear();
|
||||
}
|
||||
|
||||
// помощь
|
||||
if (key.get_keycode() == try_engine::key::F1)
|
||||
{
|
||||
em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr);
|
||||
freeze = true;
|
||||
}
|
||||
}
|
||||
|
||||
// очистка
|
||||
if (key.get_keycode() == try_engine::key::ESCAPE)
|
||||
{
|
||||
buffers::get_instance().single_copy_buffer.clear();
|
||||
buffers::get_instance().single_cut_buffer.clear();
|
||||
}
|
||||
|
||||
// помощь
|
||||
if (key.get_keycode() == try_engine::key::F1)
|
||||
{
|
||||
em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr);
|
||||
freeze = true;
|
||||
}
|
||||
|
||||
detect_img();
|
||||
detect_file();
|
||||
}
|
||||
|
||||
void navigation::released(system_event& e)
|
||||
@ -455,11 +458,15 @@ namespace rrr::layers::gui
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION);
|
||||
}
|
||||
|
||||
void navigation::detect_img()
|
||||
void navigation::detect_file()
|
||||
{
|
||||
if (std::filesystem::is_directory(selected_file.path)) return;
|
||||
|
||||
if (selected_file.path.extension() == ".jpg" ||
|
||||
selected_file.path.extension() == ".jpeg" ||
|
||||
selected_file.path.extension() == ".png")
|
||||
em->execute(types::event_type::SHOW_IMG, selected_file.path);
|
||||
else
|
||||
em->execute(types::event_type::SHOW_SRC, selected_file.path);
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,8 @@ namespace rrr::layers::gui
|
||||
void set_scroll();
|
||||
void paste_from_copy(); // вставка после копирования
|
||||
void paste_from_cut(); // вставки после вырезания
|
||||
void detect_img();
|
||||
void detect_file(); // определяем не кортинка ли это или определяем не является ли
|
||||
// это что-то типа кода, который можно вывести на просмотр
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ namespace rrr::layers::gui
|
||||
{
|
||||
make_media = false;
|
||||
tx.make();
|
||||
frame = cv::imread(media_path);
|
||||
frame = cv::imread(src_path);
|
||||
cv::cvtColor(frame, frame, cv::COLOR_BGR2RGBA);
|
||||
tx.bind(frame);
|
||||
media_show = true;
|
||||
@ -53,6 +53,13 @@ namespace rrr::layers::gui
|
||||
if (media_show)
|
||||
tx.draw(ImVec2(pos.x + 830.f, pos.y), ImVec2(width + 850.f, frame.rows / 1.6f));
|
||||
|
||||
if (src_show)
|
||||
{
|
||||
TR_PUSH_FONT(MEDIUM, 18);
|
||||
ImGui::TextUnformatted(src_data.data());
|
||||
TR_POP_FONT();
|
||||
}
|
||||
|
||||
for (files::iterator it = begin; it != end; ++it)
|
||||
{
|
||||
auto item = *it;
|
||||
@ -114,7 +121,9 @@ namespace rrr::layers::gui
|
||||
case types::event_type::NAVIGATION_DOWN:
|
||||
case types::event_type::NAVIGATION_LEFT:
|
||||
case types::event_type::NAVIGATION_RIGHT:
|
||||
media_path.clear();
|
||||
src_path.clear();
|
||||
src_data.clear();
|
||||
src_show = false;
|
||||
media_show = false;
|
||||
selected_file = cnt->get_selected_file(TYPE_WIN::PREVIEW);
|
||||
cursor_position = 0;
|
||||
@ -123,9 +132,21 @@ namespace rrr::layers::gui
|
||||
set_scroll();
|
||||
break;
|
||||
case types::event_type::SHOW_IMG:
|
||||
media_path = std::any_cast<std::filesystem::path>(value);
|
||||
src_path = std::any_cast<std::filesystem::path>(value);
|
||||
make_media = true;
|
||||
break;
|
||||
case types::event_type::SHOW_SRC:
|
||||
src_path = std::any_cast<std::filesystem::path>(value);
|
||||
// HERE
|
||||
// пока не подсвечиваем, для этого нужно видимо написать свой токенайзер
|
||||
// и разбирать всю баш строку на наличие цветов
|
||||
// буз этого пока поживешь, не сломаешься!
|
||||
// src_data = hack::utils::unix_cmd("bat --style=plain --color=always " + src_path.string());
|
||||
if (std::filesystem::is_empty(src_path)) src_data = "no data";
|
||||
else
|
||||
src_data = hack::utils::unix_cmd("cat " + src_path.string());
|
||||
src_show = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -42,12 +42,14 @@ namespace rrr::layers::gui
|
||||
int delta = 0;
|
||||
enum class MOVE_DIRECTION { UP, DOWN };
|
||||
|
||||
std::filesystem::path media_path;
|
||||
try_engine::texture tx;
|
||||
cv::Mat frame;
|
||||
cv::VideoCapture cap;
|
||||
std::filesystem::path src_path;
|
||||
bool media_show = false;
|
||||
bool make_media = false;
|
||||
bool src_show = false;
|
||||
std::string src_data; // данные для показа кода из файла
|
||||
|
||||
private:
|
||||
const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f);
|
||||
|
@ -284,7 +284,7 @@ namespace rrr::layers::gui
|
||||
|
||||
void dialogs::draw_help_dialog()
|
||||
{
|
||||
height = try_engine::application::get()->get_window()->height() / 2.7f;
|
||||
height = try_engine::application::get()->get_window()->height() / 2.5f;
|
||||
|
||||
TR_PUSH_FONT(MEDIUM, 16);
|
||||
|
||||
@ -300,7 +300,7 @@ namespace rrr::layers::gui
|
||||
ImGui::TextUnformatted(label.data());
|
||||
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted("Копирование: С / backspace");
|
||||
ImGui::TextUnformatted("Копирование: c / backspace");
|
||||
ImGui::TextUnformatted("Вставка: P");
|
||||
ImGui::TextUnformatted("Удаление: D");
|
||||
ImGui::TextUnformatted("Переименование: R");
|
||||
@ -309,6 +309,8 @@ namespace rrr::layers::gui
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted("Перемещение в начало: gg");
|
||||
ImGui::TextUnformatted("Перемещение в конец: G");
|
||||
ImGui::TextUnformatted("Быстрое перемещение вверх: J");
|
||||
ImGui::TextUnformatted("Быстрое перемещение вниз: K");
|
||||
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted("Выход из помощи: F1");
|
||||
|
@ -18,7 +18,8 @@ namespace rrr::types
|
||||
SHOW_RENAME_FILE_DIALOG,
|
||||
RENAME_FILE,
|
||||
SHOW_HELP_DIALOG,
|
||||
SHOW_IMG
|
||||
SHOW_IMG,
|
||||
SHOW_SRC // показываем содержимое файла если это код
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user