Serenity Operating System
at master 58 lines 1.4 kB view raw
1/* 2 * Copyright (c) 2020, Luke Wilde <lukew@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "Debugger.h" 10#include <AK/NonnullOwnPtr.h> 11#include <LibGUI/Label.h> 12#include <LibGUI/Model.h> 13#include <LibGUI/TableView.h> 14#include <LibGUI/Widget.h> 15#include <sys/arch/regs.h> 16 17namespace HackStudio { 18 19class UnavailableDisassemblyWidget final : public GUI::Frame { 20 C_OBJECT(UnavailableDisassemblyWidget) 21public: 22 virtual ~UnavailableDisassemblyWidget() override { } 23 24 DeprecatedString const& reason() const { return m_reason; } 25 void set_reason(DeprecatedString const& text) { m_reason = text; } 26 27private: 28 UnavailableDisassemblyWidget(DeprecatedString const& reason) 29 : m_reason(reason) 30 { 31 } 32 33 virtual void paint_event(GUI::PaintEvent& event) override; 34 35 DeprecatedString m_reason; 36}; 37 38class DisassemblyWidget final : public GUI::Widget { 39 C_OBJECT(DisassemblyWidget) 40public: 41 virtual ~DisassemblyWidget() override { } 42 43 void update_state(Debug::DebugSession const&, PtraceRegisters const&); 44 void program_stopped(); 45 46private: 47 DisassemblyWidget(); 48 49 void show_disassembly(); 50 void hide_disassembly(DeprecatedString const&); 51 52 RefPtr<GUI::Widget> m_top_container; 53 RefPtr<GUI::TableView> m_disassembly_view; 54 RefPtr<GUI::Label> m_function_name_label; 55 RefPtr<UnavailableDisassemblyWidget> m_unavailable_disassembly_widget; 56}; 57 58}