1 // Copyright 2014 Citra Emulator Project
2 // Licensed under GPLv2 or any later version
3 // Refer to the license.txt file included.
4 
5 #pragma once
6 
7 #include <memory>
8 #include <QDockWidget>
9 #include "video_core/debug_utils/debug_utils.h"
10 
11 class QLabel;
12 class QPushButton;
13 class QTreeView;
14 
15 class BreakPointModel;
16 
17 class GraphicsBreakPointsWidget : public QDockWidget, Pica::DebugContext::BreakPointObserver {
18     Q_OBJECT
19 
20     using Event = Pica::DebugContext::Event;
21 
22 public:
23     explicit GraphicsBreakPointsWidget(std::shared_ptr<Pica::DebugContext> debug_context,
24                                        QWidget* parent = nullptr);
25 
26     void OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data) override;
27     void OnPicaResume() override;
28 
29 signals:
30     void Resumed();
31     void BreakPointHit(Pica::DebugContext::Event event, void* data);
32     void BreakPointsChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight);
33 
34 private:
35     void OnBreakPointHit(Pica::DebugContext::Event event, void* data);
36     void OnItemDoubleClicked(const QModelIndex&);
37     void OnResumeRequested();
38     void OnResumed();
39 
40     QLabel* status_text;
41     QPushButton* resume_button;
42 
43     BreakPointModel* breakpoint_model;
44     QTreeView* breakpoint_list;
45 };
46