ImHex/source/views/view_pattern_data.cpp

54 lines
1.7 KiB
C++
Raw Normal View History

2020-11-10 20:31:04 +00:00
#include "views/view_pattern_data.hpp"
#include "providers/provider.hpp"
#include "lang/pattern_data.hpp"
2020-11-10 20:31:04 +00:00
namespace hex {
ViewPatternData::ViewPatternData(prv::Provider* &dataProvider, std::vector<lang::PatternData*> &patternData)
: View(), m_dataProvider(dataProvider), m_patternData(patternData) {
2020-11-10 20:31:04 +00:00
2020-11-14 23:46:18 +00:00
this->subscribeEvent(Events::PatternChanged, [this](auto data) {
this->m_sortedPatternData.clear();
});
2020-11-10 20:31:04 +00:00
}
ViewPatternData::~ViewPatternData() {
2020-11-14 23:46:18 +00:00
this->unsubscribeEvent(Events::PatternChanged);
2020-11-10 20:31:04 +00:00
}
void ViewPatternData::createView() {
if (!this->m_windowOpen)
return;
if (ImGui::Begin("Pattern Data", &this->m_windowOpen)) {
ImGui::BeginChild("##scrolling", ImVec2(0, 0), false, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoNav);
2020-11-12 22:57:43 +00:00
if (this->m_dataProvider != nullptr && this->m_dataProvider->isReadable()) {
2020-11-10 20:31:04 +00:00
if (lang::PatternData::beginPatternDataTable(this->m_dataProvider, this->m_patternData, this->m_sortedPatternData)) {
2020-11-14 23:46:18 +00:00
u32 rowCount = 0;
for (auto& patternData : this->m_sortedPatternData) {
patternData->createEntry(this->m_dataProvider);
2020-11-14 23:46:18 +00:00
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ((rowCount % 2) == 0) ? 0xFF101010 : 0xFF303030);
rowCount++;
}
ImGui::EndTable();
}
2020-11-14 23:46:18 +00:00
2020-11-10 20:31:04 +00:00
}
ImGui::EndChild();
}
ImGui::End();
2020-11-10 20:31:04 +00:00
}
void ViewPatternData::createMenu() {
2020-11-11 08:22:55 +00:00
if (ImGui::BeginMenu("View")) {
2020-11-10 20:31:04 +00:00
ImGui::MenuItem("Data View", "", &this->m_windowOpen);
ImGui::EndMenu();
}
}
}