Merge pull request #2177 from skidau/debugger-split-window

Added the ability to split the Debugger window horizontally and vertically
This commit is contained in:
skidau 2015-03-09 10:58:16 +11:00
commit 07251b7c57
5 changed files with 75 additions and 9 deletions

View File

@ -510,7 +510,13 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& core_startup_parameter
pPerspectives->AppendSubMenu(Parent->m_SavedPerspectives, _("Saved perspectives")); pPerspectives->AppendSubMenu(Parent->m_SavedPerspectives, _("Saved perspectives"));
Parent->PopulateSavedPerspectives(); Parent->PopulateSavedPerspectives();
pPerspectives->AppendSeparator(); pPerspectives->AppendSeparator();
pPerspectives->Append(IDM_PERSPECTIVES_ADD_PANE, _("Add new pane")); wxMenu* pAddPane = new wxMenu;
pPerspectives->AppendSubMenu(pAddPane, _("Add new pane to"));
pAddPane->Append(IDM_PERSPECTIVES_ADD_PANE_TOP, _("Top"));
pAddPane->Append(IDM_PERSPECTIVES_ADD_PANE_BOTTOM, _("Bottom"));
pAddPane->Append(IDM_PERSPECTIVES_ADD_PANE_LEFT, _("Left"));
pAddPane->Append(IDM_PERSPECTIVES_ADD_PANE_RIGHT, _("Right"));
pAddPane->Append(IDM_PERSPECTIVES_ADD_PANE_CENTER, _("Center"));
pPerspectives->Append(IDM_TAB_SPLIT, _("Tab split"), "", wxITEM_CHECK); pPerspectives->Append(IDM_TAB_SPLIT, _("Tab split"), "", wxITEM_CHECK);
pPerspectives->Append(IDM_NO_DOCKING, _("Disable docking"), "Disable docking of perspective panes to main window", wxITEM_CHECK); pPerspectives->Append(IDM_NO_DOCKING, _("Disable docking"), "Disable docking of perspective panes to main window", wxITEM_CHECK);

View File

@ -278,7 +278,11 @@ EVT_MENU(IDM_CONFIG_MENU_COMMANDS, CFrame::OnConfigMenuCommands)
EVT_MENU(IDM_SAVE_PERSPECTIVE, CFrame::OnPerspectiveMenu) EVT_MENU(IDM_SAVE_PERSPECTIVE, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_EDIT_PERSPECTIVES, CFrame::OnPerspectiveMenu) EVT_MENU(IDM_EDIT_PERSPECTIVES, CFrame::OnPerspectiveMenu)
// Drop down // Drop down
EVT_MENU(IDM_PERSPECTIVES_ADD_PANE, CFrame::OnPerspectiveMenu) EVT_MENU(IDM_PERSPECTIVES_ADD_PANE_TOP, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_PERSPECTIVES_ADD_PANE_BOTTOM, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_PERSPECTIVES_ADD_PANE_LEFT, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_PERSPECTIVES_ADD_PANE_RIGHT, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_PERSPECTIVES_ADD_PANE_CENTER, CFrame::OnPerspectiveMenu)
EVT_MENU_RANGE(IDM_PERSPECTIVES_0, IDM_PERSPECTIVES_100, CFrame::OnSelectPerspective) EVT_MENU_RANGE(IDM_PERSPECTIVES_0, IDM_PERSPECTIVES_100, CFrame::OnSelectPerspective)
EVT_MENU(IDM_ADD_PERSPECTIVE, CFrame::OnPerspectiveMenu) EVT_MENU(IDM_ADD_PERSPECTIVE, CFrame::OnPerspectiveMenu)
EVT_MENU(IDM_TAB_SPLIT, CFrame::OnPerspectiveMenu) EVT_MENU(IDM_TAB_SPLIT, CFrame::OnPerspectiveMenu)

View File

@ -196,6 +196,23 @@ private:
EToolbar_Max EToolbar_Max
}; };
enum
{
Toolbar_Delete,
Toolbar_Add_BP,
Toolbar_Add_MC,
Num_Bitmaps
};
enum
{
ADD_PANE_TOP,
ADD_PANE_BOTTOM,
ADD_PANE_LEFT,
ADD_PANE_RIGHT,
ADD_PANE_CENTER
};
wxTimer m_poll_hotkey_timer; wxTimer m_poll_hotkey_timer;
wxBitmap m_Bitmaps[EToolbar_Max]; wxBitmap m_Bitmaps[EToolbar_Max];
@ -239,7 +256,7 @@ private:
const wxString& title = "", const wxString& title = "",
wxWindow * = nullptr); wxWindow * = nullptr);
wxString AuiFullscreen, AuiCurrent; wxString AuiFullscreen, AuiCurrent;
void AddPane(); void AddPane(int dir);
void UpdateCurrentPerspective(); void UpdateCurrentPerspective();
void SaveIniPerspectives(); void SaveIniPerspectives();
void LoadIniPerspectives(); void LoadIniPerspectives();

View File

@ -527,8 +527,20 @@ void CFrame::OnPerspectiveMenu(wxCommandEvent& event)
GetStatusBar()->SetStatusText(StrToWxStr(std::string GetStatusBar()->SetStatusText(StrToWxStr(std::string
("Saved " + Perspectives[ActivePerspective].Name)), 0); ("Saved " + Perspectives[ActivePerspective].Name)), 0);
break; break;
case IDM_PERSPECTIVES_ADD_PANE: case IDM_PERSPECTIVES_ADD_PANE_TOP:
AddPane(); AddPane(ADD_PANE_TOP);
break;
case IDM_PERSPECTIVES_ADD_PANE_BOTTOM:
AddPane(ADD_PANE_BOTTOM);
break;
case IDM_PERSPECTIVES_ADD_PANE_LEFT:
AddPane(ADD_PANE_LEFT);
break;
case IDM_PERSPECTIVES_ADD_PANE_RIGHT:
AddPane(ADD_PANE_RIGHT);
break;
case IDM_PERSPECTIVES_ADD_PANE_CENTER:
AddPane(ADD_PANE_CENTER);
break; break;
case IDM_EDIT_PERSPECTIVES: case IDM_EDIT_PERSPECTIVES:
m_bEdit = event.IsChecked(); m_bEdit = event.IsChecked();
@ -877,14 +889,37 @@ void CFrame::SaveIniPerspectives()
TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES); TogglePaneStyle(m_bEdit, IDM_EDIT_PERSPECTIVES);
} }
void CFrame::AddPane() void CFrame::AddPane(int dir)
{ {
int PaneNum = GetNotebookCount() + 1; int PaneNum = GetNotebookCount() + 1;
wxString PaneName = wxString::Format("Pane %i", PaneNum); wxString PaneName = wxString::Format("Pane %i", PaneNum);
m_Mgr->AddPane(CreateEmptyNotebook(), wxAuiPaneInfo() wxAuiPaneInfo PaneInfo = wxAuiPaneInfo()
.CaptionVisible(m_bEdit).Dockable(!m_bNoDocking) .CaptionVisible(m_bEdit).Dockable(!m_bNoDocking)
.Name(PaneName).Caption(PaneName) .Name(PaneName).Caption(PaneName)
.Position(GetNotebookCount())); .Position(GetNotebookCount());
switch (dir)
{
case ADD_PANE_TOP:
PaneInfo = PaneInfo.Top();
break;
case ADD_PANE_BOTTOM:
PaneInfo = PaneInfo.Bottom();
break;
case ADD_PANE_LEFT:
PaneInfo = PaneInfo.Left();
break;
case ADD_PANE_RIGHT:
PaneInfo = PaneInfo.Right();
break;
case ADD_PANE_CENTER:
PaneInfo = PaneInfo.Center();
break;
default:
break;
}
m_Mgr->AddPane(CreateEmptyNotebook(), PaneInfo);
AddRemoveBlankPage(); AddRemoveBlankPage();
m_Mgr->Update(); m_Mgr->Update();

View File

@ -250,7 +250,11 @@ enum
ID_TOOLBAR_AUI, ID_TOOLBAR_AUI,
IDM_SAVE_PERSPECTIVE, IDM_SAVE_PERSPECTIVE,
IDM_ADD_PERSPECTIVE, IDM_ADD_PERSPECTIVE,
IDM_PERSPECTIVES_ADD_PANE, IDM_PERSPECTIVES_ADD_PANE_TOP,
IDM_PERSPECTIVES_ADD_PANE_BOTTOM,
IDM_PERSPECTIVES_ADD_PANE_LEFT,
IDM_PERSPECTIVES_ADD_PANE_RIGHT,
IDM_PERSPECTIVES_ADD_PANE_CENTER,
IDM_EDIT_PERSPECTIVES, IDM_EDIT_PERSPECTIVES,
IDM_TAB_SPLIT, IDM_TAB_SPLIT,
IDM_NO_DOCKING, IDM_NO_DOCKING,