mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-30 05:05:19 -05:00
feat: Added simplified pattern value editor
This commit is contained in:
@@ -8,9 +8,11 @@
|
||||
#include <pl/pattern_visitor.hpp>
|
||||
|
||||
#include <pl/formatters.hpp>
|
||||
#include <pl/patterns/pattern_error.hpp>
|
||||
|
||||
#include <set>
|
||||
#include <pl/patterns/pattern_error.hpp>
|
||||
|
||||
#include <ui/pattern_value_editor.hpp>
|
||||
|
||||
struct ImGuiTableSortSpecs;
|
||||
|
||||
@@ -20,9 +22,12 @@ namespace hex::ui {
|
||||
public:
|
||||
PatternDrawer() {
|
||||
m_formatters = pl::gen::fmt::createFormatters();
|
||||
m_valueEditor = PatternValueEditor([this]() {
|
||||
this->resetEditing();
|
||||
});
|
||||
}
|
||||
|
||||
virtual ~PatternDrawer() = default;
|
||||
~PatternDrawer() override = default;
|
||||
|
||||
void draw(const std::vector<std::shared_ptr<pl::ptrn::Pattern>> &patterns, const pl::PatternLanguage *runtime = nullptr, float height = 0.0F);
|
||||
|
||||
@@ -111,6 +116,7 @@ namespace hex::ui {
|
||||
const pl::ptrn::Pattern *m_editingPattern = nullptr;
|
||||
u64 m_editingPatternOffset = 0;
|
||||
hex::ui::VisualizerDrawer m_visualizerDrawer;
|
||||
hex::ui::PatternValueEditor m_valueEditor;
|
||||
|
||||
TreeStyle m_treeStyle = TreeStyle::Default;
|
||||
bool m_rowColoring = false;
|
||||
|
||||
39
plugins/ui/include/ui/pattern_value_editor.hpp
Normal file
39
plugins/ui/include/ui/pattern_value_editor.hpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
|
||||
#include <hex.hpp>
|
||||
#include <pl/pattern_visitor.hpp>
|
||||
#include <functional>
|
||||
|
||||
namespace hex::ui {
|
||||
|
||||
class PatternValueEditor : public pl::PatternVisitor {
|
||||
public:
|
||||
PatternValueEditor() = default;
|
||||
explicit PatternValueEditor(const std::function<void()>& onEditCallback) : m_onEditCallback(onEditCallback) {}
|
||||
|
||||
void visit(pl::ptrn::PatternArrayDynamic& pattern) override;
|
||||
void visit(pl::ptrn::PatternArrayStatic& pattern) override;
|
||||
void visit(pl::ptrn::PatternBitfield& pattern) override;
|
||||
void visit(pl::ptrn::PatternBitfieldField& pattern) override;
|
||||
void visit(pl::ptrn::PatternBitfieldArray& pattern) override;
|
||||
void visit(pl::ptrn::PatternBoolean& pattern) override;
|
||||
void visit(pl::ptrn::PatternCharacter& pattern) override;
|
||||
void visit(pl::ptrn::PatternEnum& pattern) override;
|
||||
void visit(pl::ptrn::PatternFloat& pattern) override;
|
||||
void visit(pl::ptrn::PatternPadding& pattern) override;
|
||||
void visit(pl::ptrn::PatternPointer& pattern) override;
|
||||
void visit(pl::ptrn::PatternSigned& pattern) override;
|
||||
void visit(pl::ptrn::PatternString& pattern) override;
|
||||
void visit(pl::ptrn::PatternStruct& pattern) override;
|
||||
void visit(pl::ptrn::PatternUnion& pattern) override;
|
||||
void visit(pl::ptrn::PatternUnsigned& pattern) override;
|
||||
void visit(pl::ptrn::PatternWideCharacter& pattern) override;
|
||||
void visit(pl::ptrn::PatternWideString& pattern) override;
|
||||
void visit(pl::ptrn::PatternError& pattern) override;
|
||||
void visit(pl::ptrn::Pattern& pattern) override;
|
||||
|
||||
private:
|
||||
std::function<void()> m_onEditCallback = [](){};
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user