UI for rom info

This commit is contained in:
2025-06-26 23:54:55 -04:00
parent cb0d31fb9e
commit f469e3d27b
3 changed files with 27 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
#include "RomInfo.h" #include "RomInfo.h"
#include <filesystem>
#include "imgui.h" #include "imgui.h"
RomInfo::RomInfo( RomInfo::RomInfo(
@@ -10,11 +12,33 @@ RomInfo::RomInfo(
machine_state{std::move(machine_state)}, machine_state{std::move(machine_state)},
callback_manager{std::move(callback_manager)} callback_manager{std::move(callback_manager)}
{ {
this->callback_manager->rom_load_callback.push_back(std::bind(
&RomInfo::on_rom_load,
this,
std::placeholders::_1
));
} }
void RomInfo::render() void RomInfo::render()
{ {
if (ImGui::Begin("Chip-8 - ROM Info")) if (ImGui::Begin("Chip-8 - ROM Info"))
{ {
if (!this->rom_path.empty())
{
ImGui::Text("ROM: %s", this->rom_path.c_str());
} }
else
{
ImGui::Text("ROM: None");
}
}
ImGui::End();
}
void RomInfo::on_rom_load(const std::string& rom_path)
{
std::filesystem::path home = SDL_GetUserFolder(SDL_FOLDER_HOME);
std::filesystem::path path = rom_path;
this->rom_path = std::filesystem::relative(path, home).string();
} }

View File

@@ -11,6 +11,7 @@ class RomInfo
std::shared_ptr<Graphics> graphics; std::shared_ptr<Graphics> graphics;
std::shared_ptr<MachineState> machine_state; std::shared_ptr<MachineState> machine_state;
std::shared_ptr<CallbackManager> callback_manager; std::shared_ptr<CallbackManager> callback_manager;
std::string rom_path;
public: public:
RomInfo( RomInfo(
@@ -20,6 +21,7 @@ public:
); );
void render(); void render();
void on_rom_load(const std::string& rom_path);
}; };

View File

@@ -21,4 +21,5 @@ void UIManager::render()
{ {
this->display->render(); this->display->render();
this->control_panel->render(); this->control_panel->render();
this->rom_info->render();
} }