File: debuggerpane.h

package info (click to toggle)
codelite 12.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 95,112 kB
  • sloc: cpp: 424,040; ansic: 18,284; php: 9,569; lex: 4,186; yacc: 2,820; python: 2,294; sh: 312; makefile: 51; xml: 13
file content (144 lines) | stat: -rw-r--r-- 4,466 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright            : (C) 2008 by Eran Ifrah
// file name            : debuggerpane.h
//
// -------------------------------------------------------------------------
// A
//              _____           _      _     _ _
//             /  __ \         | |    | |   (_) |
//             | /  \/ ___   __| | ___| |    _| |_ ___
//             | |    / _ \ / _  |/ _ \ |   | | __/ _ )
//             | \__/\ (_) | (_| |  __/ |___| | ||  __/
//              \____/\___/ \__,_|\___\_____/_|\__\___|
//
//                                                  F i l e
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifndef DEBUGGERPANE_H
#define DEBUGGERPANE_H

#include "wx/panel.h"
#include "Notebook.h"
#include <wx/imaglist.h>
#include "cl_config.h"

class DebuggerCallstackView;
class LocalsTable;
class WatchesTable;
class BreakpointDlg;
class ThreadListPanel;
class MemoryView;
class wxAuiManager;
class DebuggerAsciiViewer;
class DebugTab;
class DebuggerDisassemblyTab;

class DebuggerPaneConfig : public clConfigItem
{
    size_t m_windows;

public:
    enum eDebuggerWindows {
        None = 0x00000000,
        Locals = 0x00000001,
        Watches = 0x00000002,
        Callstack = 0x00000004,
        Memory = 0x00000008,
        AsciiViewer = 0x00000010,
        Breakpoints = 0x00000020,
        Output = 0x00000040,
        Threads = 0x00000080,
        Disassemble = 0x00000100,
        All = 0xFFFFFFFF,
    };

public:
    virtual void FromJSON(const JSONElement& json);
    virtual JSONElement ToJSON() const;

    void SetWindows(size_t windows) { this->m_windows = windows; }
    size_t GetWindows() const { return m_windows; }

    /**
     * @brief convert debugger window flag id to its visual name
     */
    wxString WindowName(eDebuggerWindows flag) const;

    void ShowDebuggerWindow(eDebuggerWindows win, bool show)
    {
        if(show) {
            m_windows |= win;
        } else {
            m_windows &= ~win;
        }
    }

    bool IsDebuggerWindowShown(eDebuggerWindows win) const { return m_windows & win; }

public:
    DebuggerPaneConfig();
    virtual ~DebuggerPaneConfig();
};

class DebuggerPane : public wxPanel
{
public:
    static const wxString LOCALS;
    static const wxString WATCHES;
    static const wxString FRAMES;
    static const wxString BREAKPOINTS;
    static const wxString THREADS;
    static const wxString MEMORY;
    static const wxString ASCII_VIEWER;
    static const wxString DEBUGGER_OUTPUT;
    static const wxString DISASSEMBLY;

private:
    Notebook* m_book;
    LocalsTable* m_localsTable;
    wxString m_caption;
    WatchesTable* m_watchesTable;
    DebuggerCallstackView* m_frameList;
    BreakpointDlg* m_breakpoints;
    ThreadListPanel* m_threads;
    MemoryView* m_memory;
    DebuggerAsciiViewer* m_asciiViewer;
    DebuggerDisassemblyTab* m_disassemble;
    bool m_initDone;
    wxAuiManager* m_mgr;
    DebugTab* m_outputDebug;
    wxStringSet_t m_visibleWindows;

private:
    void CreateGUIControls();
    void OnSettingsChanged(wxCommandEvent& event);

public:
    DebuggerPane(wxWindow* parent, const wxString& caption, wxAuiManager* mgr);
    virtual ~DebuggerPane();

    // setters/getters
    const wxString& GetCaption() const { return m_caption; }
    LocalsTable* GetLocalsTable() { return m_localsTable; }
    WatchesTable* GetWatchesTable() { return m_watchesTable; }
    DebuggerCallstackView* GetFrameListView() { return m_frameList; }
    BreakpointDlg* GetBreakpointView() { return m_breakpoints; }
    ThreadListPanel* GetThreadsView() { return m_threads; }
    MemoryView* GetMemoryView() { return m_memory; }
    DebuggerAsciiViewer* GetAsciiViewer() { return m_asciiViewer; }
    DebugTab* GetDebugWindow() { return m_outputDebug; }

    Notebook* GetNotebook() { return m_book; }
    void SelectTab(const wxString& tabName);
    void Clear();
    void OnPageChanged(wxBookCtrlEvent& event);
};
#endif // DEBUGGERPANE_H