add simple preview code without colorize

This commit is contained in:
chatlanin 2023-05-09 12:27:38 +03:00
parent 740cb023a8
commit ea80038121
7 changed files with 133 additions and 99 deletions

View File

@ -50,14 +50,14 @@ namespace rrr
set_history_cursor_position(); set_history_cursor_position();
f = his.data.at(history_cursor_position); f = his.data.at(history_cursor_position);
} }
catch(...) { hack::error()("Dont set history"); } catch(...) {}
break; break;
case TYPE_WIN::NAVIGATION: case TYPE_WIN::NAVIGATION:
try try
{ {
f = nav.data.at(navigation_cursor_position); f = nav.data.at(navigation_cursor_position);
} }
catch(...) { hack::error()("Dont set navigation"); } catch(...) {}
break; break;
case TYPE_WIN::PREVIEW: case TYPE_WIN::PREVIEW:
try try
@ -65,7 +65,7 @@ namespace rrr
set_preview_cursor_position(); set_preview_cursor_position();
f = prev.data.at(preview_cursor_position); f = prev.data.at(preview_cursor_position);
} }
catch(...) { hack::error()("Dont set preview"); } catch(...) {}
break; break;
} }

View File

@ -255,10 +255,9 @@ namespace rrr::layers::gui
set_delta(MOVE_DIRECTION::UP); set_delta(MOVE_DIRECTION::UP);
set_scroll(); set_scroll();
} }
return;
} }
else
{
if (key.get_keycode() == try_engine::key::J) if (key.get_keycode() == try_engine::key::J)
{ {
cnt->increment_position(STEP_DOWN); cnt->increment_position(STEP_DOWN);
@ -284,6 +283,9 @@ namespace rrr::layers::gui
set_scroll(); set_scroll();
} }
// HERE начинаем тут
// если дирректория пуста и туда заъодить, то происходит краш приложения
// сотрим тут: void content::navigation_right()
if (key.get_keycode() == try_engine::key::L) if (key.get_keycode() == try_engine::key::L)
{ {
cnt->navigation_right(); cnt->navigation_right();
@ -352,8 +354,9 @@ namespace rrr::layers::gui
em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr); em->execute(types::event_type::SHOW_HELP_DIALOG, nullptr);
freeze = true; freeze = true;
} }
}
detect_img(); detect_file();
} }
void navigation::released(system_event& e) void navigation::released(system_event& e)
@ -455,11 +458,15 @@ namespace rrr::layers::gui
selected_file = cnt->get_selected_file(TYPE_WIN::NAVIGATION); 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" || if (selected_file.path.extension() == ".jpg" ||
selected_file.path.extension() == ".jpeg" || selected_file.path.extension() == ".jpeg" ||
selected_file.path.extension() == ".png") selected_file.path.extension() == ".png")
em->execute(types::event_type::SHOW_IMG, selected_file.path); em->execute(types::event_type::SHOW_IMG, selected_file.path);
else
em->execute(types::event_type::SHOW_SRC, selected_file.path);
} }
} }

View File

@ -70,7 +70,8 @@ namespace rrr::layers::gui
void set_scroll(); void set_scroll();
void paste_from_copy(); // вставка после копирования void paste_from_copy(); // вставка после копирования
void paste_from_cut(); // вставки после вырезания void paste_from_cut(); // вставки после вырезания
void detect_img(); void detect_file(); // определяем не кортинка ли это или определяем не является ли
// это что-то типа кода, который можно вывести на просмотр
}; };
} }

View File

@ -43,7 +43,7 @@ namespace rrr::layers::gui
{ {
make_media = false; make_media = false;
tx.make(); tx.make();
frame = cv::imread(media_path); frame = cv::imread(src_path);
cv::cvtColor(frame, frame, cv::COLOR_BGR2RGBA); cv::cvtColor(frame, frame, cv::COLOR_BGR2RGBA);
tx.bind(frame); tx.bind(frame);
media_show = true; media_show = true;
@ -53,6 +53,13 @@ namespace rrr::layers::gui
if (media_show) if (media_show)
tx.draw(ImVec2(pos.x + 830.f, pos.y), ImVec2(width + 850.f, frame.rows / 1.6f)); 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) for (files::iterator it = begin; it != end; ++it)
{ {
auto item = *it; auto item = *it;
@ -114,7 +121,9 @@ namespace rrr::layers::gui
case types::event_type::NAVIGATION_DOWN: case types::event_type::NAVIGATION_DOWN:
case types::event_type::NAVIGATION_LEFT: case types::event_type::NAVIGATION_LEFT:
case types::event_type::NAVIGATION_RIGHT: case types::event_type::NAVIGATION_RIGHT:
media_path.clear(); src_path.clear();
src_data.clear();
src_show = false;
media_show = false; media_show = false;
selected_file = cnt->get_selected_file(TYPE_WIN::PREVIEW); selected_file = cnt->get_selected_file(TYPE_WIN::PREVIEW);
cursor_position = 0; cursor_position = 0;
@ -123,9 +132,21 @@ namespace rrr::layers::gui
set_scroll(); set_scroll();
break; break;
case types::event_type::SHOW_IMG: 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; make_media = true;
break; 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: default:
break; break;
} }

View File

@ -42,12 +42,14 @@ namespace rrr::layers::gui
int delta = 0; int delta = 0;
enum class MOVE_DIRECTION { UP, DOWN }; enum class MOVE_DIRECTION { UP, DOWN };
std::filesystem::path media_path;
try_engine::texture tx; try_engine::texture tx;
cv::Mat frame; cv::Mat frame;
cv::VideoCapture cap; cv::VideoCapture cap;
std::filesystem::path src_path;
bool media_show = false; bool media_show = false;
bool make_media = false; bool make_media = false;
bool src_show = false;
std::string src_data; // данные для показа кода из файла
private: private:
const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f); const ImVec4 dir_color = func::get_IMGUI_color<ImVec4>(91.f, 128.f, 191.f);

View File

@ -284,7 +284,7 @@ namespace rrr::layers::gui
void dialogs::draw_help_dialog() 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); TR_PUSH_FONT(MEDIUM, 16);
@ -300,7 +300,7 @@ namespace rrr::layers::gui
ImGui::TextUnformatted(label.data()); ImGui::TextUnformatted(label.data());
ImGui::Separator(); ImGui::Separator();
ImGui::TextUnformatted("Копирование: С / backspace"); ImGui::TextUnformatted("Копирование: c / backspace");
ImGui::TextUnformatted("Вставка: P"); ImGui::TextUnformatted("Вставка: P");
ImGui::TextUnformatted("Удаление: D"); ImGui::TextUnformatted("Удаление: D");
ImGui::TextUnformatted("Переименование: R"); ImGui::TextUnformatted("Переименование: R");
@ -309,6 +309,8 @@ namespace rrr::layers::gui
ImGui::Separator(); ImGui::Separator();
ImGui::TextUnformatted("Перемещение в начало: gg"); ImGui::TextUnformatted("Перемещение в начало: gg");
ImGui::TextUnformatted("Перемещение в конец: G"); ImGui::TextUnformatted("Перемещение в конец: G");
ImGui::TextUnformatted("Быстрое перемещение вверх: J");
ImGui::TextUnformatted("Быстрое перемещение вниз: K");
ImGui::Separator(); ImGui::Separator();
ImGui::TextUnformatted("Выход из помощи: F1"); ImGui::TextUnformatted("Выход из помощи: F1");

View File

@ -18,7 +18,8 @@ namespace rrr::types
SHOW_RENAME_FILE_DIALOG, SHOW_RENAME_FILE_DIALOG,
RENAME_FILE, RENAME_FILE,
SHOW_HELP_DIALOG, SHOW_HELP_DIALOG,
SHOW_IMG SHOW_IMG,
SHOW_SRC // показываем содержимое файла если это код
}; };
} }