//////////////////////////////////////////////////////////////////////
// This file was auto-generated by codelite's wxCrafter Plugin
// wxCrafter project file: DebuggerSettings.wxcp
// Do not modify this file by hand!
//////////////////////////////////////////////////////////////////////

#include "debuggersettingsbasedlg.h"

// Declare the bitmap loading function
extern void wxCrafter6v4fW1InitBitmapResources();

static bool bBitmapLoaded = false;

DebuggerSettingsBaseDlg::DebuggerSettingsBaseDlg(wxWindow* parent, wxWindowID id, const wxString& title,
                                                 const wxPoint& pos, const wxSize& size, long style)
    : wxDialog(parent, id, title, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer1 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer1);

    m_notebook = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(500, 300)), wxBK_DEFAULT);
    m_notebook->SetName(wxT("m_notebook"));

    bSizer1->Add(m_notebook, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    bSizer2 = new wxBoxSizer(wxHORIZONTAL);

    bSizer1->Add(bSizer2, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));

    m_stdBtnSizer92 = new wxStdDialogButtonSizer();

    bSizer2->Add(m_stdBtnSizer92, 0, wxALL, WXC_FROM_DIP(5));

    m_buttonOK = new wxButton(this, wxID_OK, wxT(""), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);
    m_buttonOK->SetDefault();
    m_stdBtnSizer92->AddButton(m_buttonOK);

    m_button96 = new wxButton(this, wxID_CANCEL, wxT(""), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);
    m_stdBtnSizer92->AddButton(m_button96);
    m_stdBtnSizer92->Realize();

    SetName(wxT("DebuggerSettingsBaseDlg"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    if(GetParent()) {
        CentreOnParent();
    } else {
        CentreOnScreen();
    }
    // Connect events
    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DebuggerSettingsBaseDlg::OnOk), NULL, this);
    m_button96->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DebuggerSettingsBaseDlg::OnButtonCancel),
                        NULL, this);
}

DebuggerSettingsBaseDlg::~DebuggerSettingsBaseDlg()
{
    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DebuggerSettingsBaseDlg::OnOk), NULL,
                           this);
    m_button96->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DebuggerSettingsBaseDlg::OnButtonCancel),
                           NULL, this);
}

DbgPageStartupCmdsBase::DbgPageStartupCmdsBase(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
                                               long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer7 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer7);

    m_textCtrlStartupCommands =
        new wxStyledTextCtrl(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);
    // Configure the fold margin
    m_textCtrlStartupCommands->SetMarginType(4, wxSTC_MARGIN_SYMBOL);
    m_textCtrlStartupCommands->SetMarginMask(4, wxSTC_MASK_FOLDERS);
    m_textCtrlStartupCommands->SetMarginSensitive(4, true);
    m_textCtrlStartupCommands->SetMarginWidth(4, 0);

    // Configure the tracker margin
    m_textCtrlStartupCommands->SetMarginWidth(1, 0);

    // Configure the symbol margin
    m_textCtrlStartupCommands->SetMarginType(2, wxSTC_MARGIN_SYMBOL);
    m_textCtrlStartupCommands->SetMarginMask(2, ~(wxSTC_MASK_FOLDERS));
    m_textCtrlStartupCommands->SetMarginWidth(2, 0);
    m_textCtrlStartupCommands->SetMarginSensitive(2, true);

    // Configure the line numbers margin
    m_textCtrlStartupCommands->SetMarginType(0, wxSTC_MARGIN_NUMBER);
    m_textCtrlStartupCommands->SetMarginWidth(0, 0);

    // Configure the line symbol margin
    m_textCtrlStartupCommands->SetMarginType(3, wxSTC_MARGIN_FORE);
    m_textCtrlStartupCommands->SetMarginMask(3, 0);
    m_textCtrlStartupCommands->SetMarginWidth(3, 0);
    // Select the lexer
    m_textCtrlStartupCommands->SetLexer(wxSTC_LEX_NULL);
    // Set default font / styles
    m_textCtrlStartupCommands->StyleClearAll();
    m_textCtrlStartupCommands->SetWrapMode(0);
    m_textCtrlStartupCommands->SetIndentationGuides(0);
    m_textCtrlStartupCommands->SetKeyWords(0, wxT(""));
    m_textCtrlStartupCommands->SetKeyWords(1, wxT(""));
    m_textCtrlStartupCommands->SetKeyWords(2, wxT(""));
    m_textCtrlStartupCommands->SetKeyWords(3, wxT(""));
    m_textCtrlStartupCommands->SetKeyWords(4, wxT(""));

    bSizer7->Add(m_textCtrlStartupCommands, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    SetName(wxT("DbgPageStartupCmdsBase"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
}

DbgPageStartupCmdsBase::~DbgPageStartupCmdsBase() {}

PreDefinedTypesPageBase::PreDefinedTypesPageBase(wxWindow* parent, wxWindowID id, const wxPoint& pos,
                                                 const wxSize& size, long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer11 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer11);

    m_panel2 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTAB_TRAVERSAL);

    bSizer11->Add(m_panel2, 1, wxEXPAND, WXC_FROM_DIP(5));

    bSizer4 = new wxBoxSizer(wxVERTICAL);
    m_panel2->SetSizer(bSizer4);

    bSizer5 = new wxBoxSizer(wxHORIZONTAL);

    bSizer4->Add(bSizer5, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_listCtrl1 = new wxListCtrl(m_panel2, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panel2, wxSize(-1, -1)),
                                 wxLC_VRULES | wxLC_HRULES | wxLC_SINGLE_SEL | wxLC_REPORT);

    bSizer5->Add(m_listCtrl1, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    bSizer6 = new wxBoxSizer(wxVERTICAL);

    bSizer5->Add(bSizer6, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_buttonNewType =
        new wxButton(m_panel2, wxID_ANY, _("&New..."), wxDefaultPosition, wxDLG_UNIT(m_panel2, wxSize(-1, -1)), 0);

    bSizer6->Add(m_buttonNewType, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_buttonEdit =
        new wxButton(m_panel2, wxID_ANY, _("Edit..."), wxDefaultPosition, wxDLG_UNIT(m_panel2, wxSize(-1, -1)), 0);

    bSizer6->Add(m_buttonEdit, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_buttonDelete =
        new wxButton(m_panel2, wxID_ANY, _("&Delete"), wxDefaultPosition, wxDLG_UNIT(m_panel2, wxSize(-1, -1)), 0);

    bSizer6->Add(m_buttonDelete, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    SetName(wxT("PreDefinedTypesPageBase"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_listCtrl1->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
                         wxListEventHandler(PreDefinedTypesPageBase::OnItemActivated), NULL, this);
    m_listCtrl1->Connect(wxEVT_COMMAND_LIST_ITEM_DESELECTED,
                         wxListEventHandler(PreDefinedTypesPageBase::OnItemDeselected), NULL, this);
    m_listCtrl1->Connect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(PreDefinedTypesPageBase::OnItemSelected),
                         NULL, this);
    m_buttonNewType->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
                             wxCommandEventHandler(PreDefinedTypesPageBase::OnNewShortcut), NULL, this);
    m_buttonEdit->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PreDefinedTypesPageBase::OnEditShortcut),
                          NULL, this);
    m_buttonDelete->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
                            wxCommandEventHandler(PreDefinedTypesPageBase::OnDeleteShortcut), NULL, this);
}

PreDefinedTypesPageBase::~PreDefinedTypesPageBase()
{
    m_listCtrl1->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
                            wxListEventHandler(PreDefinedTypesPageBase::OnItemActivated), NULL, this);
    m_listCtrl1->Disconnect(wxEVT_COMMAND_LIST_ITEM_DESELECTED,
                            wxListEventHandler(PreDefinedTypesPageBase::OnItemDeselected), NULL, this);
    m_listCtrl1->Disconnect(wxEVT_COMMAND_LIST_ITEM_SELECTED,
                            wxListEventHandler(PreDefinedTypesPageBase::OnItemSelected), NULL, this);
    m_buttonNewType->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
                                wxCommandEventHandler(PreDefinedTypesPageBase::OnNewShortcut), NULL, this);
    m_buttonEdit->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
                             wxCommandEventHandler(PreDefinedTypesPageBase::OnEditShortcut), NULL, this);
    m_buttonDelete->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
                               wxCommandEventHandler(PreDefinedTypesPageBase::OnDeleteShortcut), NULL, this);
}

NewPreDefinedSetBaseDlg::NewPreDefinedSetBaseDlg(wxWindow* parent, wxWindowID id, const wxString& title,
                                                 const wxPoint& pos, const wxSize& size, long style)
    : wxDialog(parent, id, title, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer17 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer17);

    fgSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
    fgSizer2->SetFlexibleDirection(wxBOTH);
    fgSizer2->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
    fgSizer2->AddGrowableCol(1);

    bSizer17->Add(fgSizer2, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_staticText3 =
        new wxStaticText(this, wxID_ANY, _("Name:"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);

    fgSizer2->Add(m_staticText3, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_textCtrlName = new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDLG_UNIT(this, wxSize(400, -1)), 0);
    m_textCtrlName->SetFocus();
#if wxVERSION_NUMBER >= 3000
    m_textCtrlName->SetHint(wxT(""));
#endif

    fgSizer2->Add(m_textCtrlName, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_staticText4 = new wxStaticText(this, wxID_ANY, _("Copy Values From:"), wxDefaultPosition,
                                     wxDLG_UNIT(this, wxSize(-1, -1)), 0);

    fgSizer2->Add(m_staticText4, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    wxArrayString m_choiceCopyFromArr;
    m_choiceCopyFrom =
        new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), m_choiceCopyFromArr, 0);

    fgSizer2->Add(m_choiceCopyFrom, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    fgSizer2->Add(0, 0, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxMakeActive = new wxCheckBox(this, wxID_ANY, _("Make this 'PreDefined Types' set active"),
                                          wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);
    m_checkBoxMakeActive->SetValue(false);

    fgSizer2->Add(m_checkBoxMakeActive, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    bSizer17->Add(0, 0, 1, wxEXPAND, WXC_FROM_DIP(5));

    bSizer18 = new wxBoxSizer(wxHORIZONTAL);

    bSizer17->Add(bSizer18, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));

    m_button9 = new wxButton(this, wxID_OK, _("&OK"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);
    m_button9->SetDefault();

    bSizer18->Add(m_button9, 0, wxALL, WXC_FROM_DIP(5));

    m_button10 = new wxButton(this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), 0);

    bSizer18->Add(m_button10, 0, wxALL, WXC_FROM_DIP(5));

    SetName(wxT("NewPreDefinedSetBaseDlg"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    if(GetParent()) {
        CentreOnParent(wxBOTH);
    } else {
        CentreOnScreen(wxBOTH);
    }
#if wxVERSION_NUMBER >= 2900
    if(!wxPersistenceManager::Get().Find(this)) {
        wxPersistenceManager::Get().RegisterAndRestore(this);
    } else {
        wxPersistenceManager::Get().Restore(this);
    }
#endif
}

NewPreDefinedSetBaseDlg::~NewPreDefinedSetBaseDlg() {}

DbgPageGeneralBase::DbgPageGeneralBase(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
                                       long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer18 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer18);

    m_panel6 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTAB_TRAVERSAL);

    bSizer18->Add(m_panel6, 1, wxEXPAND, WXC_FROM_DIP(5));

    bSizer16 = new wxBoxSizer(wxVERTICAL);
    m_panel6->SetSizer(bSizer16);

    m_notebook73 =
        new wxNotebook(m_panel6, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panel6, wxSize(-1, -1)), wxBK_DEFAULT);
    m_notebook73->SetName(wxT("m_notebook73"));

    bSizer16->Add(m_notebook73, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_panelGeneral = new wxPanel(m_notebook73, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook73, wxSize(-1, -1)),
                                 wxTAB_TRAVERSAL);
    m_notebook73->AddPage(m_panelGeneral, _("General"), false);

    boxSizer81 = new wxBoxSizer(wxVERTICAL);
    m_panelGeneral->SetSizer(boxSizer81);

    flexGridSizer49 = new wxFlexGridSizer(0, 3, 0, 0);
    flexGridSizer49->SetFlexibleDirection(wxBOTH);
    flexGridSizer49->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
    flexGridSizer49->AddGrowableCol(1);

    boxSizer81->Add(flexGridSizer49, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_staticText1 = new wxStaticText(m_panelGeneral, wxID_ANY, _("Debugger path:"), wxDefaultPosition,
                                     wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);

    flexGridSizer49->Add(m_staticText1, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_textCtrDbgPath = new wxTextCtrl(m_panelGeneral, wxID_ANY, wxT(""), wxDefaultPosition,
                                      wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_textCtrDbgPath->SetFocus();
#if wxVERSION_NUMBER >= 3000
    m_textCtrDbgPath->SetHint(wxT(""));
#endif

    flexGridSizer49->Add(m_textCtrDbgPath, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_buttonBrowse = new wxButton(m_panelGeneral, wxID_ANY, _("Browse"), wxDefaultPosition,
                                  wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);

    flexGridSizer49->Add(m_buttonBrowse, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    boxSizer86 = new wxBoxSizer(wxVERTICAL);

    boxSizer81->Add(boxSizer86, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxEnablePendingBreakpoints =
        new wxCheckBox(m_panelGeneral, wxID_ANY, _("Enable pending breakpoints"), wxDefaultPosition,
                       wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_checkBoxEnablePendingBreakpoints->SetValue(true);
    m_checkBoxEnablePendingBreakpoints->SetToolTip(
        _("Some breakpoints can't be applied before the program is run, or even later. This is especially a problem "
          "when trying to debug inside a library that is dynamically loaded (CodeLite itself contains examples of "
          "this).\n\ngdb has an option to 'remember' any breakpoints that it can't initially set, and automatically to "
          "set them when it becomes possible. It doesn't always work! However, tick this box to tell gdb to try."));

    boxSizer86->Add(m_checkBoxEnablePendingBreakpoints, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxSetBreakpointsAfterMain =
        new wxCheckBox(m_panelGeneral, wxID_ANY, _("Apply breakpoints after main function is hit"), wxDefaultPosition,
                       wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_checkBoxSetBreakpointsAfterMain->SetValue(false);
    m_checkBoxSetBreakpointsAfterMain->SetToolTip(
        _("Sometimes, some breakpoints won't apply cleanly until after main() has been reached. If this box is ticked, "
          "CodeLite won't try to apply them earlier."));

    boxSizer86->Add(m_checkBoxSetBreakpointsAfterMain, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBreakAtWinMain = new wxCheckBox(m_panelGeneral, wxID_ANY, _("Automatically set breakpoint at main"),
                                           wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_checkBreakAtWinMain->SetValue(false);
    m_checkBreakAtWinMain->SetToolTip(
        _("Every time the debugger runs, set a breakpoint at main(). You may wish to stop then anyway; but it's "
          "especially useful when you want to set breakpoints that won't 'take' earlier (however, first try enabling "
          "Pending breakpoints, or 'Apply breakpoints after main is hit'"));

    boxSizer86->Add(m_checkBreakAtWinMain, 0, wxALL, WXC_FROM_DIP(5));

    m_catchThrow = new wxCheckBox(m_panelGeneral, wxID_ANY, _("Break when a C++ exception is thrown"),
                                  wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_catchThrow->SetValue(false);

    boxSizer86->Add(m_catchThrow, 0, wxALL, WXC_FROM_DIP(5));

    m_raiseOnBpHit = new wxCheckBox(m_panelGeneral, wxID_ANY, _("Raise CodeLite when a breakpoint is hit"),
                                    wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_raiseOnBpHit->SetValue(true);
    m_raiseOnBpHit->SetToolTip(
        _("Normally, when a breakpoint is hit, you'll want CodeLite to be raise to the top of the window z-order, so "
          "that you can examine values of variables etc.\nHowever you won't always want that to happen; in particular, "
          "not if the breakpoint has commands, which end in 'continue'. If so untick this box to stop it happening."));

    boxSizer86->Add(m_raiseOnBpHit, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxRunAsSuperuser =
        new wxCheckBox(m_panelGeneral, wxID_ANY, _("On platforms that support it, run gdb as superuser"),
                       wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_checkBoxRunAsSuperuser->SetValue(false);
    m_checkBoxRunAsSuperuser->SetToolTip(
        _("On platforms that support it, run gdb as superuser.\nThis is done by running gdb with 'sudo'"));

    boxSizer86->Add(m_checkBoxRunAsSuperuser, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxDefaultHexDisplay = new wxCheckBox(m_panelGeneral, wxID_ANY, _("Use default Hex Display"),
                                                 wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1, -1)), 0);
    m_checkBoxDefaultHexDisplay->SetValue(false);

    boxSizer86->Add(m_checkBoxDefaultHexDisplay, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_panelTooltip = new wxPanel(m_notebook73, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook73, wxSize(-1, -1)),
                                 wxTAB_TRAVERSAL);
    m_notebook73->AddPage(m_panelTooltip, _("Tooltip"), false);

    boxSizer83 = new wxBoxSizer(wxVERTICAL);
    m_panelTooltip->SetSizer(boxSizer83);

    m_showTooltipsRequiresControl =
        new wxCheckBox(m_panelTooltip, wxID_ANY, _("Use CTRL key to evaluate expressions under the cursor"),
                       wxDefaultPosition, wxDLG_UNIT(m_panelTooltip, wxSize(-1, -1)), 0);
    m_showTooltipsRequiresControl->SetValue(true);
    m_showTooltipsRequiresControl->SetToolTip(
        _("When enabled, codelite will evaluate the expression under the cursor only if the CTRL key is down. "
          "\nOtherwise, it will evaluate it automatically"));

    boxSizer83->Add(m_showTooltipsRequiresControl, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxAutoExpand = new wxCheckBox(m_panelTooltip, wxID_ANY, _("Auto expand items under the cursor"),
                                          wxDefaultPosition, wxDLG_UNIT(m_panelTooltip, wxSize(-1, -1)), 0);
    m_checkBoxAutoExpand->SetValue(false);

    boxSizer83->Add(m_checkBoxAutoExpand, 0, wxALL, WXC_FROM_DIP(5));

    m_panelDisplay = new wxPanel(m_notebook73, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook73, wxSize(-1, -1)),
                                 wxTAB_TRAVERSAL);
    m_notebook73->AddPage(m_panelDisplay, _("Display"), false);

    boxSizer85 = new wxBoxSizer(wxVERTICAL);
    m_panelDisplay->SetSizer(boxSizer85);

    flexGridSizer102 = new wxFlexGridSizer(0, 2, 0, 0);
    flexGridSizer102->SetFlexibleDirection(wxBOTH);
    flexGridSizer102->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
    flexGridSizer102->AddGrowableCol(1);

    boxSizer85->Add(flexGridSizer102, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_staticText2 = new wxStaticText(m_panelDisplay, wxID_ANY, _("Max string size:"), wxDefaultPosition,
                                     wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);
    m_staticText2->SetToolTip(_("For no limit, set it to 0"));

    flexGridSizer102->Add(m_staticText2, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_spinCtrlStringSize = new wxSpinCtrl(m_panelDisplay, wxID_ANY, wxT("200"), wxDefaultPosition,
                                          wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), wxSP_ARROW_KEYS);
    m_spinCtrlStringSize->SetToolTip(_("For no limit, set it to 0"));
    m_spinCtrlStringSize->SetRange(0, 10000);
    m_spinCtrlStringSize->SetValue(200);

    flexGridSizer102->Add(m_spinCtrlStringSize, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_staticText104 = new wxStaticText(m_panelDisplay, wxID_ANY, _("Max number of elements:"), wxDefaultPosition,
                                       wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);

    flexGridSizer102->Add(m_staticText104, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_spinCtrlMaxElements = new wxSpinCtrl(m_panelDisplay, wxID_ANY, wxT("100"), wxDefaultPosition,
                                           wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), wxSP_ARROW_KEYS);
    m_spinCtrlMaxElements->SetToolTip(_("For no limit, set it to 0"));
    m_spinCtrlMaxElements->SetRange(0, 1000);
    m_spinCtrlMaxElements->SetValue(100);

    flexGridSizer102->Add(m_spinCtrlMaxElements, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    fgSizer21 = new wxFlexGridSizer(0, 2, 0, 0);
    fgSizer21->SetFlexibleDirection(wxBOTH);
    fgSizer21->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);

    boxSizer85->Add(fgSizer21, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxExpandLocals = new wxCheckBox(m_panelDisplay, wxID_ANY, _("Use 'PreDefined types for the 'Locals' view"),
                                            wxDefaultPosition, wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);
    m_checkBoxExpandLocals->SetValue(false);

    fgSizer21->Add(m_checkBoxExpandLocals, 0, wxALL | wxEXPAND | wxALIGN_LEFT, WXC_FROM_DIP(5));

    fgSizer21->Add(0, 0, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxCharArrAsPtr = new wxCheckBox(m_panelDisplay, wxID_ANY, _("Auto cast 'char[]' into 'char*'"),
                                            wxDefaultPosition, wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);
    m_checkBoxCharArrAsPtr->SetValue(false);

    fgSizer21->Add(m_checkBoxCharArrAsPtr, 0, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    fgSizer21->Add(0, 0, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxUsePrettyPrinting = new wxCheckBox(m_panelDisplay, wxID_ANY, _("Enable GDB Pretty Printing"),
                                                 wxDefaultPosition, wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);
    m_checkBoxUsePrettyPrinting->SetValue(true);
    m_checkBoxUsePrettyPrinting->SetToolTip(
        _("If ticked, examining the contents of e.g. std::string, wxString, wxArrayString will be much easier"));

    fgSizer21->Add(m_checkBoxUsePrettyPrinting, 0, wxALL | wxALIGN_LEFT, WXC_FROM_DIP(5));

    fgSizer21->Add(0, 0, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxPrintObjectOn = new wxCheckBox(m_panelDisplay, wxID_ANY, _("Print object ON"), wxDefaultPosition,
                                             wxDLG_UNIT(m_panelDisplay, wxSize(-1, -1)), 0);
    m_checkBoxPrintObjectOn->SetValue(true);
    m_checkBoxPrintObjectOn->SetToolTip(
        _("When displaying a pointer to an object, identify the actual (derived) type of the object rather than the "
          "declared type, using the virtual function table."));

    fgSizer21->Add(m_checkBoxPrintObjectOn, 0, wxALL | wxALIGN_LEFT, WXC_FROM_DIP(5));

    SetName(wxT("DbgPageGeneralBase"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_buttonBrowse->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DbgPageGeneralBase::OnBrowse), NULL,
                            this);
    m_checkBoxRunAsSuperuser->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageGeneralBase::OnSuperuserUI), NULL,
                                      this);
}

DbgPageGeneralBase::~DbgPageGeneralBase()
{
    m_buttonBrowse->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DbgPageGeneralBase::OnBrowse), NULL,
                               this);
    m_checkBoxRunAsSuperuser->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageGeneralBase::OnSuperuserUI),
                                         NULL, this);
}

DbgPageMiscBase::DbgPageMiscBase(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer19 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer19);

    m_panel7 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTAB_TRAVERSAL);

    bSizer19->Add(m_panel7, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    bSizer17 = new wxBoxSizer(wxVERTICAL);
    m_panel7->SetSizer(bSizer17);

    sbSizer2 = new wxStaticBoxSizer(new wxStaticBox(m_panel7, wxID_ANY, wxT("")), wxVERTICAL);

    bSizer17->Add(sbSizer2, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, WXC_FROM_DIP(5));

    boxSizer10 = new wxBoxSizer(wxVERTICAL);

    sbSizer2->Add(boxSizer10, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_checkUseRelativePaths =
        new wxCheckBox(m_panel7, wxID_ANY, _("Use file name only for breakpoints (NO full paths)"), wxDefaultPosition,
                       wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_checkUseRelativePaths->SetValue(false);

    boxSizer10->Add(m_checkUseRelativePaths, 0, wxALL, WXC_FROM_DIP(5));

    m_checkBoxEnableLog = new wxCheckBox(m_panel7, wxID_ANY, _("Enable full debugger logging"), wxDefaultPosition,
                                         wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_checkBoxEnableLog->SetValue(false);

    boxSizer10->Add(m_checkBoxEnableLog, 0, wxALL, WXC_FROM_DIP(5));

    m_checkShowTerminal = new wxCheckBox(m_panel7, wxID_ANY, _("Show debugger terminal"), wxDefaultPosition,
                                         wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_checkShowTerminal->SetValue(false);

    boxSizer10->Add(m_checkShowTerminal, 0, wxALL, WXC_FROM_DIP(5));

    boxSizer4 = new wxBoxSizer(wxHORIZONTAL);

    boxSizer10->Add(boxSizer4, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_staticText6 = new wxStaticText(m_panel7, wxID_ANY, _("Max number of frames to allow in a call-stack"),
                                     wxDefaultPosition, wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);

    boxSizer4->Add(m_staticText6, 1, wxALL | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_maxFramesSpinCtrl = new wxSpinCtrl(m_panel7, wxID_ANY, wxT("500"), wxDefaultPosition,
                                         wxDLG_UNIT(m_panel7, wxSize(70, -1)), wxSP_ARROW_KEYS);
    m_maxFramesSpinCtrl->SetToolTip(
        _("The maximum number of frames that CodeLite will display in the Call Stack tab. This protects against a very "
          "long hang while trying to show 100,000 frames in an infinite recursion situation."));
    m_maxFramesSpinCtrl->SetRange(1, 999999);
    m_maxFramesSpinCtrl->SetValue(500);

    boxSizer4->Add(m_maxFramesSpinCtrl, 0, wxALL, WXC_FROM_DIP(5));

    sbSizer6 = new wxStaticBoxSizer(new wxStaticBox(m_panel7, wxID_ANY, _("MinGW / Cygwin:")), wxVERTICAL);

    bSizer17->Add(sbSizer6, 0, wxLEFT | wxRIGHT | wxEXPAND, WXC_FROM_DIP(5));

    gSizer5 = new wxGridSizer(0, 1, 0, 0);

    sbSizer6->Add(gSizer5, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_checkBoxDebugAssert = new wxCheckBox(m_panel7, wxID_ANY, _("Break at assertion failure (MinGW only)"),
                                           wxDefaultPosition, wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_checkBoxDebugAssert->SetValue(false);

    gSizer5->Add(m_checkBoxDebugAssert, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_staticText5 = new wxStaticText(m_panel7, wxID_ANY, _("Cygwin path conversion command:"), wxDefaultPosition,
                                     wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_staticText5->SetToolTip(_("Set here the command to use in order to convert cygwin paths into native Windows "
                                "paths (use $(File) as a place holder for the file name)"));

    gSizer5->Add(m_staticText5, 0, wxLEFT | wxRIGHT | wxTOP | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_textCtrlCygwinPathCommand =
        new wxTextCtrl(m_panel7, wxID_ANY, wxT(""), wxDefaultPosition, wxDLG_UNIT(m_panel7, wxSize(-1, -1)), 0);
    m_textCtrlCygwinPathCommand->SetToolTip(
        _("Set here the command to use in order to convert cygwin paths into native Windows paths (use $(File) as a "
          "place holder for the file name)"));
#if wxVERSION_NUMBER >= 3000
    m_textCtrlCygwinPathCommand->SetHint(wxT(""));
#endif

    gSizer5->Add(m_textCtrlCygwinPathCommand, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND | wxALIGN_CENTER_VERTICAL,
                 WXC_FROM_DIP(5));

    SetName(wxT("DbgPageMiscBase"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_checkBoxDebugAssert->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED,
                                   wxCommandEventHandler(DbgPageMiscBase::OnDebugAssert), NULL, this);
    m_checkBoxDebugAssert->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL, this);
    m_staticText5->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL, this);
    m_textCtrlCygwinPathCommand->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL,
                                         this);
}

DbgPageMiscBase::~DbgPageMiscBase()
{
    m_checkBoxDebugAssert->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED,
                                      wxCommandEventHandler(DbgPageMiscBase::OnDebugAssert), NULL, this);
    m_checkBoxDebugAssert->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL,
                                      this);
    m_staticText5->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL, this);
    m_textCtrlCygwinPathCommand->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPageMiscBase::OnWindowsUI), NULL,
                                            this);
}

DbgPagePreDefTypesBase::DbgPagePreDefTypesBase(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
                                               long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    bSizer21 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(bSizer21);

    m_panel6 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTAB_TRAVERSAL);

    bSizer21->Add(m_panel6, 1, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    bSizer16 = new wxBoxSizer(wxVERTICAL);
    m_panel6->SetSizer(bSizer16);

    bSizer14 = new wxBoxSizer(wxHORIZONTAL);

    bSizer16->Add(bSizer14, 0, wxALIGN_RIGHT, WXC_FROM_DIP(5));

    m_buttonNewSet =
        new wxButton(m_panel6, wxID_NEW, _("&New"), wxDefaultPosition, wxDLG_UNIT(m_panel6, wxSize(-1, -1)), 0);
    m_buttonNewSet->SetToolTip(_("Create new 'PreDefined' set"));

    bSizer14->Add(m_buttonNewSet, 0, wxALL | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_buttonDeleteSet =
        new wxButton(m_panel6, wxID_DELETE, _("&Delete"), wxDefaultPosition, wxDLG_UNIT(m_panel6, wxSize(-1, -1)), 0);
    m_buttonDeleteSet->SetToolTip(_("Delete the currently selected set"));

    bSizer14->Add(m_buttonDeleteSet, 0, wxALL, WXC_FROM_DIP(5));

    sbSizer5 = new wxStaticBoxSizer(new wxStaticBox(m_panel6, wxID_ANY, _("Available sets:")), wxVERTICAL);

    bSizer16->Add(sbSizer5, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_notebookPreDefTypes =
        new wxChoicebook(m_panel6, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panel6, wxSize(-1, -1)), 0);
    m_notebookPreDefTypes->SetName(wxT("m_notebookPreDefTypes"));

    sbSizer5->Add(m_notebookPreDefTypes, 1, wxEXPAND, WXC_FROM_DIP(5));

    SetName(wxT("DbgPagePreDefTypesBase"));
    SetSize(wxDLG_UNIT(this, wxSize(-1, -1)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_buttonNewSet->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DbgPagePreDefTypesBase::OnNewSet), NULL,
                            this);
    m_buttonDeleteSet->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DbgPagePreDefTypesBase::OnDeleteSet),
                               NULL, this);
    m_buttonDeleteSet->Connect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPagePreDefTypesBase::OnDeleteSetUI), NULL,
                               this);
    m_notebookPreDefTypes->Connect(wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED,
                                   wxChoicebookEventHandler(DbgPagePreDefTypesBase::OnPageChanged), NULL, this);
}

DbgPagePreDefTypesBase::~DbgPagePreDefTypesBase()
{
    m_buttonNewSet->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(DbgPagePreDefTypesBase::OnNewSet),
                               NULL, this);
    m_buttonDeleteSet->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
                                  wxCommandEventHandler(DbgPagePreDefTypesBase::OnDeleteSet), NULL, this);
    m_buttonDeleteSet->Disconnect(wxEVT_UPDATE_UI, wxUpdateUIEventHandler(DbgPagePreDefTypesBase::OnDeleteSetUI), NULL,
                                  this);
    m_notebookPreDefTypes->Disconnect(wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED,
                                      wxChoicebookEventHandler(DbgPagePreDefTypesBase::OnPageChanged), NULL, this);
}

DebuggerDisassemblyTabBase::DebuggerDisassemblyTabBase(wxWindow* parent, wxWindowID id, const wxPoint& pos,
                                                       const wxSize& size, long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    boxSizer14 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(boxSizer14);

    flexGridSizer22 = new wxFlexGridSizer(0, 2, 0, 0);
    flexGridSizer22->SetFlexibleDirection(wxBOTH);
    flexGridSizer22->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
    flexGridSizer22->AddGrowableCol(1);

    boxSizer14->Add(flexGridSizer22, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_staticText24 = new wxStaticText(this, wxID_ANY, _("Current function:"), wxDefaultPosition,
                                      wxDLG_UNIT(this, wxSize(-1, -1)), 0);

    flexGridSizer22->Add(m_staticText24, 0, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));

    m_textCtrlCurFunction =
        new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTE_READONLY);
#if wxVERSION_NUMBER >= 3000
    m_textCtrlCurFunction->SetHint(wxT(""));
#endif

    flexGridSizer22->Add(m_textCtrlCurFunction, 0, wxALL | wxEXPAND, WXC_FROM_DIP(5));

    m_splitter51 = new clThemedSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)),
                                              wxSP_LIVE_UPDATE | wxSP_NO_XP_THEME | wxSP_3DSASH);
    m_splitter51->SetSashGravity(0.5);
    m_splitter51->SetMinimumPaneSize(10);

    boxSizer14->Add(m_splitter51, 1, wxEXPAND, WXC_FROM_DIP(5));

    m_splitterPage55 = new wxPanel(m_splitter51, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_splitter51, wxSize(-1, -1)),
                                   wxTAB_TRAVERSAL);

    boxSizer61 = new wxBoxSizer(wxVERTICAL);
    m_splitterPage55->SetSizer(boxSizer61);

    m_stc = new wxStyledTextCtrl(m_splitterPage55, wxID_ANY, wxDefaultPosition,
                                 wxDLG_UNIT(m_splitterPage55, wxSize(-1, -1)), wxBORDER_NONE);
    // Configure the fold margin
    m_stc->SetMarginType(4, wxSTC_MARGIN_SYMBOL);
    m_stc->SetMarginMask(4, wxSTC_MASK_FOLDERS);
    m_stc->SetMarginSensitive(4, true);
    m_stc->SetMarginWidth(4, 0);

    // Configure the tracker margin
    m_stc->SetMarginWidth(1, 0);

    // Configure the symbol margin
    m_stc->SetMarginType(2, wxSTC_MARGIN_SYMBOL);
    m_stc->SetMarginMask(2, ~(wxSTC_MASK_FOLDERS));
    m_stc->SetMarginWidth(2, 16);
    m_stc->SetMarginSensitive(2, true);

    // Configure the line numbers margin
    m_stc->SetMarginType(0, wxSTC_MARGIN_NUMBER);
    m_stc->SetMarginWidth(0, 0);

    // Configure the line symbol margin
    m_stc->SetMarginType(3, wxSTC_MARGIN_FORE);
    m_stc->SetMarginMask(3, 0);
    m_stc->SetMarginWidth(3, 0);
    // Select the lexer
    m_stc->SetLexer(wxSTC_LEX_ASM);
    // Set default font / styles
    m_stc->StyleClearAll();
    m_stc->SetWrapMode(0);
    m_stc->SetIndentationGuides(0);
    m_stc->SetKeyWords(0, wxT(""));
    m_stc->SetKeyWords(1, wxT(""));
    m_stc->SetKeyWords(2, wxT(""));
    m_stc->SetKeyWords(3, wxT(""));
    m_stc->SetKeyWords(4, wxT(""));

    boxSizer61->Add(m_stc, 1, wxEXPAND, WXC_FROM_DIP(2));

    m_splitterPage59 = new wxPanel(m_splitter51, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_splitter51, wxSize(-1, -1)),
                                   wxTAB_TRAVERSAL);
    m_splitter51->SplitVertically(m_splitterPage55, m_splitterPage59, 0);

    boxSizer63 = new wxBoxSizer(wxVERTICAL);
    m_splitterPage59->SetSizer(boxSizer63);

    m_dvListCtrlRegisters =
        new clThemedListCtrl(m_splitterPage59, wxID_ANY, wxDefaultPosition,
                             wxDLG_UNIT(m_splitterPage59, wxSize(-1, -1)), wxDV_ENABLE_SEARCH | wxDV_ROW_LINES);

    boxSizer63->Add(m_dvListCtrlRegisters, 1, wxEXPAND, WXC_FROM_DIP(2));

    m_dvListCtrlRegisters->AppendTextColumn(_("Register"), wxDATAVIEW_CELL_INERT, WXC_FROM_DIP(-2), wxALIGN_LEFT,
                                            wxDATAVIEW_COL_RESIZABLE);
    m_dvListCtrlRegisters->AppendTextColumn(_("Value"), wxDATAVIEW_CELL_INERT, WXC_FROM_DIP(-2), wxALIGN_LEFT,
                                            wxDATAVIEW_COL_RESIZABLE);

    SetName(wxT("DebuggerDisassemblyTabBase"));
    SetSize(wxDLG_UNIT(this, wxSize(500, 300)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_stc->Connect(wxEVT_STC_MARGINCLICK, wxStyledTextEventHandler(DebuggerDisassemblyTabBase::OnMarginClicked), NULL,
                   this);
}

DebuggerDisassemblyTabBase::~DebuggerDisassemblyTabBase()
{
    m_stc->Disconnect(wxEVT_STC_MARGINCLICK, wxStyledTextEventHandler(DebuggerDisassemblyTabBase::OnMarginClicked),
                      NULL, this);
}

LocalsTableBase::LocalsTableBase(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
    : wxPanel(parent, id, pos, size, style)
{
    if(!bBitmapLoaded) {
        // We need to initialise the default bitmap handler
        wxXmlResource::Get()->AddHandler(new wxBitmapXmlHandler);
        wxCrafter6v4fW1InitBitmapResources();
        bBitmapLoaded = true;
    }

    boxSizer29 = new wxBoxSizer(wxVERTICAL);
    this->SetSizer(boxSizer29);

    m_toolbar = new clToolBar(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)), wxTB_FLAT);
    m_toolbar->SetToolBitmapSize(wxSize(16, 16));

    boxSizer29->Add(m_toolbar, 0, wxEXPAND, WXC_FROM_DIP(5));

    m_listTable = new clThemedTreeCtrl(this, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(this, wxSize(-1, -1)),
                                       wxTR_SINGLE | wxTR_ROW_LINES | wxTR_HIDE_ROOT | wxTR_ENABLE_SEARCH);

    boxSizer29->Add(m_listTable, 1, wxEXPAND, WXC_FROM_DIP(2));

    SetName(wxT("LocalsTableBase"));
    SetSize(wxDLG_UNIT(this, wxSize(500, 300)));
    if(GetSizer()) {
        GetSizer()->Fit(this);
    }
    // Connect events
    m_listTable->Connect(wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, wxTreeEventHandler(LocalsTableBase::OnListEditLabelBegin),
                         NULL, this);
    m_listTable->Connect(wxEVT_COMMAND_TREE_END_LABEL_EDIT, wxTreeEventHandler(LocalsTableBase::OnListEditLabelEnd),
                         NULL, this);
    m_listTable->Connect(wxEVT_COMMAND_TREE_ITEM_MENU, wxTreeEventHandler(LocalsTableBase::OnItemRightClick), NULL,
                         this);
    m_listTable->Connect(wxEVT_COMMAND_TREE_KEY_DOWN, wxTreeEventHandler(LocalsTableBase::OnListKeyDown), NULL, this);
    m_listTable->Connect(wxEVT_COMMAND_TREE_ITEM_EXPANDING, wxTreeEventHandler(LocalsTableBase::OnItemExpanding), NULL,
                         this);
}

LocalsTableBase::~LocalsTableBase()
{
    m_listTable->Disconnect(wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT,
                            wxTreeEventHandler(LocalsTableBase::OnListEditLabelBegin), NULL, this);
    m_listTable->Disconnect(wxEVT_COMMAND_TREE_END_LABEL_EDIT, wxTreeEventHandler(LocalsTableBase::OnListEditLabelEnd),
                            NULL, this);
    m_listTable->Disconnect(wxEVT_COMMAND_TREE_ITEM_MENU, wxTreeEventHandler(LocalsTableBase::OnItemRightClick), NULL,
                            this);
    m_listTable->Disconnect(wxEVT_COMMAND_TREE_KEY_DOWN, wxTreeEventHandler(LocalsTableBase::OnListKeyDown), NULL,
                            this);
    m_listTable->Disconnect(wxEVT_COMMAND_TREE_ITEM_EXPANDING, wxTreeEventHandler(LocalsTableBase::OnItemExpanding),
                            NULL, this);
}
