void OnToolbarStyle(wxCommandEvent& event);
void OnToolbarBgCol(wxCommandEvent& event);
+ void OnToolbarCustomBg(wxCommandEvent& event);
void OnToolbarCustomBitmap(wxCommandEvent& event);
void OnToolLeftClick(wxCommandEvent& event);
{ event.Enable( m_tbar != NULL ); }
private:
+ void OnEraseToolBarBackground(wxEraseEvent& event);
+
void DoEnablePrint();
void DoDeletePrint();
void DoToggleHelp();
IDM_TOOLBAR_SHOW_ICONS,
IDM_TOOLBAR_SHOW_BOTH,
IDM_TOOLBAR_BG_COL,
+ IDM_TOOLBAR_CUSTOM_BG,
IDM_TOOLBAR_CUSTOM_PATH,
IDM_TOOLBAR_TOP_ORIENTATION,
IDM_TOOLBAR_LEFT_ORIENTATION,
EVT_MENU_RANGE(IDM_TOOLBAR_SHOW_TEXT, IDM_TOOLBAR_SHOW_BOTH,
MyFrame::OnToolbarStyle)
EVT_MENU(IDM_TOOLBAR_BG_COL, MyFrame::OnToolbarBgCol)
+ EVT_MENU(IDM_TOOLBAR_CUSTOM_BG, MyFrame::OnToolbarCustomBg)
EVT_MENU(IDM_TOOLBAR_CUSTOM_PATH, MyFrame::OnToolbarCustomBitmap)
// Create the main frame window
MyFrame* frame = new MyFrame((wxFrame *) NULL, wxID_ANY,
wxT("wxToolBar Sample"),
- wxPoint(100, 100), wxSize(550, 300));
+ wxPoint(100, 100), wxSize(650, 300));
frame->Show(true);
toolBar = CreateToolBar(style, ID_TOOLBAR);
#endif
+ if ( GetMenuBar()->IsChecked(IDM_TOOLBAR_CUSTOM_BG) )
+ {
+ toolBar->Connect
+ (
+ wxEVT_ERASE_BACKGROUND,
+ wxEraseEventHandler(MyFrame::OnEraseToolBarBackground),
+ NULL,
+ this
+ );
+ }
+
PopulateToolbar(toolBar);
}
#endif // USE_CONTROLS_IN_TOOLBAR
toolBar->AddTool(wxID_SAVE, wxT("Save"), toolBarBitmaps[Tool_save], wxT("Toggle button 1"), wxITEM_CHECK);
+
+ toolBar->AddSeparator();
toolBar->AddTool(wxID_COPY, wxT("Copy"), toolBarBitmaps[Tool_copy], wxT("Toggle button 2"), wxITEM_CHECK);
toolBar->AddTool(wxID_CUT, wxT("Cut"), toolBarBitmaps[Tool_cut], wxT("Toggle/Untoggle help button"));
toolBar->AddTool(wxID_PASTE, wxT("Paste"), toolBarBitmaps[Tool_paste], wxT("Paste"));
+ toolBar->AddSeparator();
if ( m_useCustomDisabled )
{
wxT("Delete this tool. This is a very long tooltip to test whether it does the right thing when the tooltip is more than Windows can cope with."));
}
- toolBar->AddSeparator();
+ // add a stretchable space before the "Help" button to make it
+ // right-aligned
+ toolBar->AddStretchableSpace();
toolBar->AddTool(wxID_HELP, wxT("Help"), toolBarBitmaps[Tool_help], wxT("Help button"), wxITEM_CHECK);
if ( !m_pathBmp.empty() )
tbarMenu->AppendRadioItem(IDM_TOOLBAR_SHOW_BOTH, wxT("Show &both\tCtrl-Alt-B"));
tbarMenu->AppendSeparator();
tbarMenu->Append(IDM_TOOLBAR_BG_COL, wxT("Choose bac&kground colour..."));
+ tbarMenu->AppendCheckItem(IDM_TOOLBAR_CUSTOM_BG, wxT("Draw custom back&ground"));
tbarMenu->Append(IDM_TOOLBAR_CUSTOM_PATH, wxT("Custom &bitmap...\tCtrl-B"));
wxMenu *toolMenu = new wxMenu;
}
}
+void MyFrame::OnEraseToolBarBackground(wxEraseEvent& event)
+{
+ wxDC& dc = *event.GetDC();
+ const wxSize size = dc.GetSize();
+ dc.SetPen(*wxRED_PEN);
+ dc.DrawLine(0, 0, size.x, size.y);
+ dc.DrawLine(0, size.y, size.x, 0);
+}
+
void MyFrame::OnToggleToolbar(wxCommandEvent& WXUNUSED(event))
{
wxToolBar *tbar = GetToolBar();
void MyFrame::OnToggleSearch(wxCommandEvent& WXUNUSED(event))
{
- static const int searchPos = 3;
-
wxToolBarBase * const tb = GetToolBar();
if ( !m_searchTool )
{
wxSearchCtrl * const srch = new wxSearchCtrl(tb, wxID_ANY, "needle");
srch->SetMinSize(wxSize(80, -1));
- m_searchTool = tb->InsertControl(searchPos, srch);
+ m_searchTool = tb->AddControl(srch);
}
else // tool already exists
{
}
else // tool exists in detached state, attach it back
{
- tb->InsertTool(searchPos, m_searchTool);
+ tb->AddTool(m_searchTool);
win->Show();
}
}
}
}
+void MyFrame::OnToolbarCustomBg(wxCommandEvent& event)
+{
+ wxToolBarBase *tb = GetToolBar();
+
+ if ( event.IsChecked() )
+ {
+ tb->Connect
+ (
+ wxEVT_ERASE_BACKGROUND,
+ wxEraseEventHandler(MyFrame::OnEraseToolBarBackground),
+ NULL,
+ this
+ );
+ }
+ else
+ {
+ tb->Disconnect
+ (
+ wxEVT_ERASE_BACKGROUND,
+ wxEraseEventHandler(MyFrame::OnEraseToolBarBackground),
+ NULL,
+ this
+ );
+ }
+
+ tb->Refresh();
+}
+
void MyFrame::OnToolbarCustomBitmap(wxCommandEvent& WXUNUSED(event))
{
m_pathBmp = wxLoadFileSelector("custom bitmap", "");