From 441b14b09c54236f7c538ec801ee3b74fa92335e Mon Sep 17 00:00:00 2001 From: Benjamin Williams Date: Sat, 23 Aug 2008 06:35:01 +0000 Subject: [PATCH] updated aui sample with new toolbar git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@55196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/aui/auidemo.cpp | 195 +++++++++++++++++++++++++++++----------- 1 file changed, 142 insertions(+), 53 deletions(-) diff --git a/samples/aui/auidemo.cpp b/samples/aui/auidemo.cpp index 7cbb829e60..65b12ec09f 100644 --- a/samples/aui/auidemo.cpp +++ b/samples/aui/auidemo.cpp @@ -85,6 +85,8 @@ class MyFrame : public wxFrame ID_VerticalGradient, ID_HorizontalGradient, ID_Settings, + ID_CustomizeToolbar, + ID_DropDownToolbarItem, ID_NotebookNoCloseButton, ID_NotebookCloseButton, ID_NotebookCloseButtonAll, @@ -99,6 +101,9 @@ class MyFrame : public wxFrame ID_NotebookArtSimple, ID_NotebookAlignTop, ID_NotebookAlignBottom, + + ID_SampleItem, + ID_FirstPerspective = ID_CreatePerspective+1000 }; @@ -138,10 +143,12 @@ private: void OnCreateText(wxCommandEvent& evt); void OnCreateSizeReport(wxCommandEvent& evt); void OnChangeContentPane(wxCommandEvent& evt); + void OnDropDownToolbarItem(wxAuiToolBarEvent& evt); void OnCreatePerspective(wxCommandEvent& evt); void OnCopyPerspectiveCode(wxCommandEvent& evt); void OnRestorePerspective(wxCommandEvent& evt); void OnSettings(wxCommandEvent& evt); + void OnCustomizeToolbar(wxCommandEvent& evt); void OnAllowNotebookDnD(wxAuiNotebookEvent& evt); void OnNotebookPageClose(wxAuiNotebookEvent& evt); void OnExit(wxCommandEvent& evt); @@ -600,6 +607,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_VerticalGradient, MyFrame::OnGradient) EVT_MENU(ID_HorizontalGradient, MyFrame::OnGradient) EVT_MENU(ID_Settings, MyFrame::OnSettings) + EVT_MENU(ID_CustomizeToolbar, MyFrame::OnCustomizeToolbar) EVT_MENU(ID_GridContent, MyFrame::OnChangeContentPane) EVT_MENU(ID_TreeContent, MyFrame::OnChangeContentPane) EVT_MENU(ID_TextContent, MyFrame::OnChangeContentPane) @@ -631,6 +639,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_UPDATE_UI(ID_HorizontalGradient, MyFrame::OnUpdateUI) EVT_MENU_RANGE(MyFrame::ID_FirstPerspective, MyFrame::ID_FirstPerspective+1000, MyFrame::OnRestorePerspective) + EVT_AUITOOLBAR_TOOL_DROPDOWN(ID_DropDownToolbarItem, MyFrame::OnDropDownToolbarItem) EVT_AUI_PANE_CLOSE(MyFrame::OnPaneClose) EVT_AUINOTEBOOK_ALLOW_DND(wxID_ANY, MyFrame::OnAllowNotebookDnD) EVT_AUINOTEBOOK_PAGE_CLOSE(wxID_ANY, MyFrame::OnNotebookPageClose) @@ -741,78 +750,102 @@ MyFrame::MyFrame(wxWindow* parent, // code. For now, just hard code a frame minimum size SetMinSize(wxSize(400,300)); + + + // prepare a few custom overflow elements for the toolbars' overflow buttons + + wxAuiToolBarItemArray prepend_items; + wxAuiToolBarItemArray append_items; + wxAuiToolBarItem item; + item.kind = wxITEM_SEPARATOR; + append_items.Add(item); + item.kind = wxITEM_NORMAL; + item.id = ID_CustomizeToolbar; + item.label = _("Customize..."); + append_items.Add(item); + + // create some toolbars - wxToolBar* tb1 = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTB_FLAT | wxTB_NODIVIDER); + wxAuiToolBar* tb1 = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW); tb1->SetToolBitmapSize(wxSize(48,48)); - tb1->AddTool(101, wxT("Test"), wxArtProvider::GetBitmap(wxART_ERROR)); + tb1->AddTool(ID_SampleItem+1, wxT("Test"), wxArtProvider::GetBitmap(wxART_ERROR)); tb1->AddSeparator(); - tb1->AddTool(102, wxT("Test"), wxArtProvider::GetBitmap(wxART_QUESTION)); - tb1->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_INFORMATION)); - tb1->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_WARNING)); - tb1->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_MISSING_IMAGE)); + tb1->AddTool(ID_SampleItem+2, wxT("Test"), wxArtProvider::GetBitmap(wxART_QUESTION)); + tb1->AddTool(ID_SampleItem+3, wxT("Test"), wxArtProvider::GetBitmap(wxART_INFORMATION)); + tb1->AddTool(ID_SampleItem+4, wxT("Test"), wxArtProvider::GetBitmap(wxART_WARNING)); + tb1->AddTool(ID_SampleItem+5, wxT("Test"), wxArtProvider::GetBitmap(wxART_MISSING_IMAGE)); + tb1->SetCustomOverflowItems(prepend_items, append_items); tb1->Realize(); - wxToolBar* tb2 = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTB_FLAT | wxTB_NODIVIDER); + wxAuiToolBar* tb2 = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW); tb2->SetToolBitmapSize(wxSize(16,16)); wxBitmap tb2_bmp1 = wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(16,16)); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+6, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+7, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+8, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+9, wxT("Test"), tb2_bmp1); tb2->AddSeparator(); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+10, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+11, wxT("Test"), tb2_bmp1); tb2->AddSeparator(); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); - tb2->AddTool(101, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+12, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+13, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+14, wxT("Test"), tb2_bmp1); + tb2->AddTool(ID_SampleItem+15, wxT("Test"), tb2_bmp1); + tb2->SetCustomOverflowItems(prepend_items, append_items); tb2->Realize(); - wxToolBar* tb3 = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTB_FLAT | wxTB_NODIVIDER); + wxAuiToolBar* tb3 = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW); tb3->SetToolBitmapSize(wxSize(16,16)); wxBitmap tb3_bmp1 = wxArtProvider::GetBitmap(wxART_FOLDER, wxART_OTHER, wxSize(16,16)); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+16, wxT("Test2"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+17, wxT("Test"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+18, wxT("Test"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+19, wxT("Test"), tb3_bmp1); tb3->AddSeparator(); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); - tb3->AddTool(101, wxT("Test"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+20, wxT("Test"), tb3_bmp1); + tb3->AddTool(ID_SampleItem+21, wxT("Test"), tb3_bmp1); + tb3->SetCustomOverflowItems(prepend_items, append_items); tb3->Realize(); - wxToolBar* tb4 = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTB_FLAT | wxTB_NODIVIDER | wxTB_HORZ_TEXT); + wxAuiToolBar* tb4 = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | + wxAUI_TB_OVERFLOW | + wxAUI_TB_TEXT | + wxAUI_TB_HORZ_TEXT); tb4->SetToolBitmapSize(wxSize(16,16)); wxBitmap tb4_bmp1 = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, wxSize(16,16)); - tb4->AddTool(101, wxT("Item 1"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 2"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 3"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 4"), tb4_bmp1); + tb4->AddTool(ID_DropDownToolbarItem, wxT("Item 1"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+23, wxT("Item 2"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+24, wxT("Item 3"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+25, wxT("Item 4"), tb4_bmp1); tb4->AddSeparator(); - tb4->AddTool(101, wxT("Item 5"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 6"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 7"), tb4_bmp1); - tb4->AddTool(101, wxT("Item 8"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+26, wxT("Item 5"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+27, wxT("Item 6"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+28, wxT("Item 7"), tb4_bmp1); + tb4->AddTool(ID_SampleItem+29, wxT("Item 8"), tb4_bmp1); + tb4->SetToolDropDown(ID_DropDownToolbarItem, true); + tb4->SetCustomOverflowItems(prepend_items, append_items); tb4->Realize(); - // create some toolbars - wxToolBar* tb5 = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTB_FLAT | wxTB_NODIVIDER | wxTB_VERTICAL); + + wxAuiToolBar* tb5 = new wxAuiToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW | wxAUI_TB_VERTICAL); tb5->SetToolBitmapSize(wxSize(48,48)); - tb5->AddTool(101, wxT("Test"), wxArtProvider::GetBitmap(wxART_ERROR)); + tb5->AddTool(ID_SampleItem+30, wxT("Test"), wxArtProvider::GetBitmap(wxART_ERROR)); tb5->AddSeparator(); - tb5->AddTool(102, wxT("Test"), wxArtProvider::GetBitmap(wxART_QUESTION)); - tb5->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_INFORMATION)); - tb5->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_WARNING)); - tb5->AddTool(103, wxT("Test"), wxArtProvider::GetBitmap(wxART_MISSING_IMAGE)); + tb5->AddTool(ID_SampleItem+31, wxT("Test"), wxArtProvider::GetBitmap(wxART_QUESTION)); + tb5->AddTool(ID_SampleItem+32, wxT("Test"), wxArtProvider::GetBitmap(wxART_INFORMATION)); + tb5->AddTool(ID_SampleItem+33, wxT("Test"), wxArtProvider::GetBitmap(wxART_WARNING)); + tb5->AddTool(ID_SampleItem+34, wxT("Test"), wxArtProvider::GetBitmap(wxART_MISSING_IMAGE)); + tb5->SetCustomOverflowItems(prepend_items, append_items); tb5->Realize(); // add a bunch of panes @@ -973,7 +1006,7 @@ void MyFrame::OnSize(wxSizeEvent& event) event.Skip(); } -void MyFrame::OnSettings(wxCommandEvent& WXUNUSED(event)) +void MyFrame::OnSettings(wxCommandEvent& WXUNUSED(evt)) { // show the settings pane, and float it wxAuiPaneInfo& floating_pane = m_mgr.GetPane(wxT("settings")).Float().Show(); @@ -984,6 +1017,11 @@ void MyFrame::OnSettings(wxCommandEvent& WXUNUSED(event)) m_mgr.Update(); } +void MyFrame::OnCustomizeToolbar(wxCommandEvent& WXUNUSED(evt)) +{ + wxMessageBox(_("Customize Toolbar clicked")); +} + void MyFrame::OnGradient(wxCommandEvent& event) { int gradient = 0; @@ -1340,17 +1378,61 @@ void MyFrame::OnCreateSizeReport(wxCommandEvent& WXUNUSED(event)) m_mgr.Update(); } -void MyFrame::OnChangeContentPane(wxCommandEvent& event) +void MyFrame::OnChangeContentPane(wxCommandEvent& evt) { - m_mgr.GetPane(wxT("grid_content")).Show(event.GetId() == ID_GridContent); - m_mgr.GetPane(wxT("text_content")).Show(event.GetId() == ID_TextContent); - m_mgr.GetPane(wxT("tree_content")).Show(event.GetId() == ID_TreeContent); - m_mgr.GetPane(wxT("sizereport_content")).Show(event.GetId() == ID_SizeReportContent); - m_mgr.GetPane(wxT("html_content")).Show(event.GetId() == ID_HTMLContent); - m_mgr.GetPane(wxT("notebook_content")).Show(event.GetId() == ID_NotebookContent); + m_mgr.GetPane(wxT("grid_content")).Show(evt.GetId() == ID_GridContent); + m_mgr.GetPane(wxT("text_content")).Show(evt.GetId() == ID_TextContent); + m_mgr.GetPane(wxT("tree_content")).Show(evt.GetId() == ID_TreeContent); + m_mgr.GetPane(wxT("sizereport_content")).Show(evt.GetId() == ID_SizeReportContent); + m_mgr.GetPane(wxT("html_content")).Show(evt.GetId() == ID_HTMLContent); + m_mgr.GetPane(wxT("notebook_content")).Show(evt.GetId() == ID_NotebookContent); m_mgr.Update(); } +void MyFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& evt) +{ + if (evt.IsDropDownClicked()) + { + wxAuiToolBar* tb = static_cast(evt.GetEventObject()); + + tb->SetToolSticky(evt.GetId(), true); + + // create the popup menu + wxMenu menuPopup; + + wxBitmap bmp = wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(16,16)); + + wxMenuItem* m1 = new wxMenuItem(&menuPopup, 101, _("Drop Down Item 1")); + m1->SetBitmap(bmp); + menuPopup.Append(m1); + + wxMenuItem* m2 = new wxMenuItem(&menuPopup, 101, _("Drop Down Item 2")); + m2->SetBitmap(bmp); + menuPopup.Append(m2); + + wxMenuItem* m3 = new wxMenuItem(&menuPopup, 101, _("Drop Down Item 3")); + m3->SetBitmap(bmp); + menuPopup.Append(m3); + + wxMenuItem* m4 = new wxMenuItem(&menuPopup, 101, _("Drop Down Item 4")); + m4->SetBitmap(bmp); + menuPopup.Append(m4); + + // line up our menu with the button + wxRect rect = tb->GetToolRect(evt.GetId()); + wxPoint pt = tb->ClientToScreen(rect.GetBottomLeft()); + pt = ScreenToClient(pt); + + + PopupMenu(&menuPopup, pt); + + + // make sure the button is "un-stuck" + tb->SetToolSticky(evt.GetId(), false); + } +} + + void MyFrame::OnTabAlignment(wxCommandEvent &evt) { size_t i, count; @@ -1545,6 +1627,13 @@ wxString MyFrame::GetIntroText() "
  • Optional transparent window effects (while dragging or docking)
  • " "
  • Splittable notebook control
  • " "" + "

    What's new in 0.9.4?

    " + "

    wxAUI 0.9.4, which is bundled with wxWidgets, adds the following features:" + "

    " "

    What's new in 0.9.3?

    " "

    wxAUI 0.9.3, which is now bundled with wxWidgets, adds the following features:" "