VariablesModel.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "Debugger.h"
  8. #include <AK/NonnullOwnPtr.h>
  9. #include <LibGUI/Model.h>
  10. #include <LibGUI/TreeView.h>
  11. #include <sys/arch/regs.h>
  12. namespace HackStudio {
  13. class VariablesModel final : public GUI::Model {
  14. public:
  15. static RefPtr<VariablesModel> create(Debug::ProcessInspector&, PtraceRegisters const& regs);
  16. void set_variable_value(const GUI::ModelIndex&, StringView, GUI::Window*);
  17. virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override;
  18. virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return 1; }
  19. virtual GUI::Variant data(const GUI::ModelIndex& index, GUI::ModelRole role) const override;
  20. virtual GUI::ModelIndex parent_index(const GUI::ModelIndex&) const override;
  21. virtual GUI::ModelIndex index(int row, int column = 0, const GUI::ModelIndex& = GUI::ModelIndex()) const override;
  22. Debug::ProcessInspector& inspector() { return m_inspector; }
  23. private:
  24. explicit VariablesModel(Debug::ProcessInspector& inspector, Vector<NonnullOwnPtr<Debug::DebugInfo::VariableInfo>>&& variables, PtraceRegisters const& regs)
  25. : m_variables(move(variables))
  26. , m_regs(regs)
  27. , m_inspector(inspector)
  28. {
  29. m_variable_icon.set_bitmap_for_size(16, Gfx::Bitmap::load_from_file("/res/icons/16x16/inspector-object.png"sv).release_value_but_fixme_should_propagate_errors());
  30. }
  31. Vector<NonnullOwnPtr<Debug::DebugInfo::VariableInfo>> m_variables;
  32. PtraceRegisters m_regs;
  33. GUI::Icon m_variable_icon;
  34. Debug::ProcessInspector& m_inspector;
  35. };
  36. }