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
|