X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f10b672bd86cba7e69cf54a125f7f1ef9eab3431..444833b32388f4901ab5bc092b210b28230bebbd:/samples/toolbar/toolbar.cpp diff --git a/samples/toolbar/toolbar.cpp b/samples/toolbar/toolbar.cpp index 8812040c03..687dab791b 100644 --- a/samples/toolbar/toolbar.cpp +++ b/samples/toolbar/toolbar.cpp @@ -47,6 +47,12 @@ #error You need to enable XPM support to use XPM bitmaps with toolbar! #endif // USE_XPM_BITMAPS +// If this is 1, the sample will test an extra toolbar identical to the +// main one, but not managed by the frame. This can test subtle differences +// in the way toolbars are handled, especially on Mac where there is one +// native, 'installed' toolbar. +#define USE_UNMANAGED_TOOLBAR 0 + // ---------------------------------------------------------------------------- // resources // ---------------------------------------------------------------------------- @@ -96,6 +102,7 @@ public: const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE|wxCLIP_CHILDREN|wxNO_FULL_REPAINT_ON_RESIZE); + void PopulateToolbar(wxToolBarBase* toolBar); void RecreateToolbar(); void OnQuit(wxCommandEvent& event); @@ -125,6 +132,7 @@ public: void OnToolLeftClick(wxCommandEvent& event); void OnToolRightClick(wxCommandEvent& event); + void OnToolDropdown(wxCommandEvent& event); void OnCombo(wxCommandEvent& event); @@ -154,6 +162,9 @@ private: wxTextCtrl *m_textWindow; + wxPanel *m_panel; + wxToolBar *m_extraToolBar; + wxToolBar *m_tbar; // the path to the custom bitmap for the test toolbar tool @@ -245,6 +256,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_TOOL_RCLICKED(wxID_ANY, MyFrame::OnToolRightClick) + EVT_TOOL_DROPDOWN(wxID_ANY, MyFrame::OnToolDropdown) + EVT_UPDATE_UI(wxID_COPY, MyFrame::OnUpdateCopyAndCut) EVT_UPDATE_UI(wxID_CUT, MyFrame::OnUpdateCopyAndCut) @@ -334,6 +347,11 @@ void MyFrame::RecreateToolbar() toolBar = CreateToolBar(style, ID_TOOLBAR); #endif + PopulateToolbar(toolBar); +} + +void MyFrame::PopulateToolbar(wxToolBarBase* toolBar) +{ // Set up toolbar enum { @@ -385,8 +403,16 @@ void MyFrame::RecreateToolbar() toolBar->SetToolBitmapSize(wxSize(w, h)); toolBar->AddTool(wxID_NEW, _T("New"), - toolBarBitmaps[Tool_new], wxNullBitmap, wxITEM_NORMAL, + toolBarBitmaps[Tool_new], wxNullBitmap, wxITEM_DROPDOWN, _T("New file"), _T("This is help for new file tool")); + + wxMenu* menu = new wxMenu; + menu->Append(wxID_ANY, _T("&First dummy item")); + menu->Append(wxID_ANY, _T("&Second dummy item")); + menu->AppendSeparator(); + menu->Append(wxID_EXIT, _T("Exit")); + toolBar->SetDropdownMenu(wxID_NEW, menu); + toolBar->AddTool(wxID_OPEN, _T("Open"), toolBarBitmaps[Tool_open], wxNullBitmap, wxITEM_NORMAL, _T("Open file"), _T("This is help for open file tool")); @@ -402,14 +428,14 @@ void MyFrame::RecreateToolbar() combo->Append(_T("combobox")); combo->Append(_T("in a")); combo->Append(_T("toolbar")); - toolBar->AddControl(combo); + toolBar->AddControl(combo, _T("Combo Label")); wxSpinCtrl *spin = new wxSpinCtrl( toolBar, ID_SPIN, wxT("0"), wxDefaultPosition, wxSize(80,wxDefaultCoord), 0, 0, 100 ); toolBar->AddControl( spin ); - + wxTextCtrl *text = new wxTextCtrl( toolBar, -1, wxT("text"), wxDefaultPosition, wxSize(80,wxDefaultCoord) ); toolBar->AddControl( text ); - + wxSearchCtrl *srch = new wxSearchCtrl( toolBar, -1, wxT("xx"), wxDefaultPosition, wxSize(80,wxDefaultCoord), wxSUNKEN_BORDER ); toolBar->AddControl( srch ); } @@ -580,10 +606,25 @@ MyFrame::MyFrame(wxFrame* parent, menuBar->Check(IDM_TOOLBAR_TOP_ORIENTATION, true ); m_toolbarPosition = TOOLBAR_TOP; + // Create the toolbar RecreateToolbar(); - m_textWindow = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); + m_panel = new wxPanel(this, wxID_ANY); +#if USE_UNMANAGED_TOOLBAR + m_extraToolBar = new wxToolBar(m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_TEXT|wxTB_FLAT|wxTB_TOP); + PopulateToolbar(m_extraToolBar); +#else + m_extraToolBar = NULL; +#endif + + m_textWindow = new wxTextCtrl(m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); + + wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); + m_panel->SetSizer(sizer); + if (m_extraToolBar) + sizer->Add(m_extraToolBar, 0, wxEXPAND, 0); + sizer->Add(m_textWindow, 1, wxEXPAND, 0); } void MyFrame::LayoutChildren() @@ -602,7 +643,7 @@ void MyFrame::LayoutChildren() offset = 0; } - m_textWindow->SetSize(offset, 0, size.x - offset, size.y); + m_panel->SetSize(offset, 0, size.x - offset, size.y); } void MyFrame::OnSize(wxSizeEvent& event) @@ -868,3 +909,12 @@ void MyFrame::OnToggleRadioBtn(wxCommandEvent& event) event.GetId() - IDM_TOOLBAR_TOGGLERADIOBTN1, true); } } + +void MyFrame::OnToolDropdown(wxCommandEvent& event) +{ + wxString str; + str.Printf( _T("Dropdown on tool %d\n"), event.GetId()); + m_textWindow->WriteText( str ); + + event.Skip(); +}