X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85eb36c267bd325e113ee9e3b84f6b191ed116f2..409c9842c71df526bcfbf1cf5ce80067b09d4d97:/samples/toolbar/test.cpp?ds=sidebyside diff --git a/samples/toolbar/test.cpp b/samples/toolbar/test.cpp index f9720337ab..cc2111486b 100644 --- a/samples/toolbar/test.cpp +++ b/samples/toolbar/test.cpp @@ -42,54 +42,60 @@ IMPLEMENT_APP(MyApp) // The `main program' equivalent, creating the windows and returning the // main frame -bool MyApp::OnInit(void) +bool MyApp::OnInit() { - // Create the main frame window - MyFrame* frame = new MyFrame((wxFrame *) NULL, -1, (const wxString) "wxToolBar Sample", - wxPoint(100, 100), wxSize(450, 300)); + // Create the main frame window + MyFrame* frame = new MyFrame((wxFrame *) NULL, -1, (const wxString) "wxToolBar Sample", + wxPoint(100, 100), wxSize(450, 300)); - // Give it a status line - frame->CreateStatusBar(); + // Give it a status line + frame->CreateStatusBar(); - // Give it an icon - frame->SetIcon(wxICON(mondrian)); + // Give it an icon + frame->SetIcon(wxICON(mondrian)); - // Make a menubar - wxMenu *fileMenu = new wxMenu; - fileMenu->Append(wxID_EXIT, "E&xit", "Quit toolbar sample" ); + // Make a menubar + wxMenu *tbarMenu = new wxMenu; + tbarMenu->Append(IDM_TOOLBAR_TOGGLETOOLBAR, "&Toggle toolbar", "Change the toolbar kind"); + tbarMenu->Append(IDM_TOOLBAR_ENABLEPRINT, "&Enable print button", ""); + tbarMenu->Append(IDM_TOOLBAR_TOGGLEHELP, "Toggle &help button", ""); - wxMenu *helpMenu = new wxMenu; - helpMenu->Append(wxID_HELP, "&About", "About toolbar sample"); + wxMenu *fileMenu = new wxMenu; + fileMenu->Append(wxID_EXIT, "E&xit", "Quit toolbar sample" ); - wxMenuBar* menuBar = new wxMenuBar( wxMB_DOCKABLE ); + wxMenu *helpMenu = new wxMenu; + helpMenu->Append(wxID_HELP, "&About", "About toolbar sample"); - menuBar->Append(fileMenu, "&File"); - menuBar->Append(helpMenu, "&Help"); + wxMenuBar* menuBar = new wxMenuBar( wxMB_DOCKABLE ); - // Associate the menu bar with the frame - frame->SetMenuBar(menuBar); + menuBar->Append(fileMenu, "&File"); + menuBar->Append(tbarMenu, "&Toolbar"); + menuBar->Append(helpMenu, "&Help"); - // Create the toolbar - frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE, ID_TOOLBAR); - - frame->GetToolBar()->SetMargins( 2, 2 ); + // Associate the menu bar with the frame + frame->SetMenuBar(menuBar); - InitToolbar(frame->GetToolBar()); + // Create the toolbar + frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE, ID_TOOLBAR); - // Force a resize. This should probably be replaced by a call to a wxFrame - // function that lays out default decorations and the remaining content window. - wxSizeEvent event(wxSize(-1, -1), frame->GetId()); - frame->OnSize(event); - frame->Show(TRUE); + frame->GetToolBar()->SetMargins( 2, 2 ); - frame->SetStatusText("Hello, wxWindows"); - - SetTopWindow(frame); + InitToolbar(frame->GetToolBar()); - return TRUE; + // Force a resize. This should probably be replaced by a call to a wxFrame + // function that lays out default decorations and the remaining content window. + wxSizeEvent event(wxSize(-1, -1), frame->GetId()); + frame->OnSize(event); + frame->Show(TRUE); + + frame->SetStatusText("Hello, wxWindows"); + + SetTopWindow(frame); + + return TRUE; } -bool MyApp::InitToolbar(wxToolBar* toolBar) +bool MyApp::InitToolbar(wxToolBar* toolBar, bool smallicons) { // Set up toolbar wxBitmap* toolBarBitmaps[8]; @@ -97,22 +103,27 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) #ifdef __WXMSW__ toolBarBitmaps[0] = new wxBitmap("icon1"); toolBarBitmaps[1] = new wxBitmap("icon2"); - toolBarBitmaps[2] = new wxBitmap("icon3"); - toolBarBitmaps[3] = new wxBitmap("icon4"); - toolBarBitmaps[4] = new wxBitmap("icon5"); - toolBarBitmaps[5] = new wxBitmap("icon6"); - toolBarBitmaps[6] = new wxBitmap("icon7"); - toolBarBitmaps[7] = new wxBitmap("icon8"); + if ( !smallicons ) + { + toolBarBitmaps[2] = new wxBitmap("icon3"); + toolBarBitmaps[3] = new wxBitmap("icon4"); + toolBarBitmaps[4] = new wxBitmap("icon5"); + toolBarBitmaps[5] = new wxBitmap("icon6"); + toolBarBitmaps[6] = new wxBitmap("icon7"); + toolBarBitmaps[7] = new wxBitmap("icon8"); + } #else toolBarBitmaps[0] = new wxBitmap( new_xpm ); toolBarBitmaps[1] = new wxBitmap( open_xpm ); - toolBarBitmaps[2] = new wxBitmap( save_xpm ); - toolBarBitmaps[3] = new wxBitmap( copy_xpm ); - toolBarBitmaps[4] = new wxBitmap( cut_xpm ); -// toolBarBitmaps[5] = new wxBitmap( paste_xpm ); - toolBarBitmaps[5] = new wxBitmap( preview_xpm ); - toolBarBitmaps[6] = new wxBitmap( print_xpm ); - toolBarBitmaps[7] = new wxBitmap( help_xpm ); + if ( !smallicons ) + { + toolBarBitmaps[2] = new wxBitmap( save_xpm ); + toolBarBitmaps[3] = new wxBitmap( copy_xpm ); + toolBarBitmaps[4] = new wxBitmap( cut_xpm ); + toolBarBitmaps[5] = new wxBitmap( preview_xpm ); + toolBarBitmaps[6] = new wxBitmap( print_xpm ); + toolBarBitmaps[7] = new wxBitmap( help_xpm ); + } #endif #ifdef __WXMSW__ @@ -125,29 +136,33 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); currentX += width + 5; toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); - currentX += width + 5; - toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); - currentX += width + 5; - toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); - currentX += width + 5; - toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), *(toolBarBitmaps[6]), TRUE, currentX, -1, (wxObject *) NULL, "Help"); - - toolBar->EnableTool( wxID_PRINT, FALSE ); + + if ( !smallicons ) + { + currentX += width + 5; + toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Disable/Enable print button"); + currentX += width + 5; + toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Toggle/Untoggle help button"); + currentX += width + 5; + toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), *(toolBarBitmaps[6]), TRUE, currentX, -1, (wxObject *) NULL, "Help"); + + toolBar->EnableTool( wxID_PRINT, FALSE ); + } toolBar->Realize(); // Can delete the bitmaps since they're reference counted - int i; - for (i = 0; i < 8; i++) + int i, max = smallicons ? 2 : WXSIZEOF(toolBarBitmaps); + for (i = 0; i < max; i++) delete toolBarBitmaps[i]; return TRUE; @@ -158,17 +173,36 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) EVT_MENU(wxID_HELP, MyFrame::OnAbout) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_TOOL_RANGE(wxID_OPEN, wxID_PASTE, MyFrame::OnToolLeftClick) + + EVT_MENU(IDM_TOOLBAR_TOGGLETOOLBAR, MyFrame::OnToggleToolbar) + EVT_MENU(IDM_TOOLBAR_ENABLEPRINT, MyFrame::OnEnablePrint) + EVT_MENU(IDM_TOOLBAR_TOGGLEHELP, MyFrame::OnToggleHelp) + + EVT_MENU(-1, MyFrame::OnToolLeftClick) EVT_TOOL_ENTER(ID_TOOLBAR, MyFrame::OnToolEnter) END_EVENT_TABLE() // Define my frame constructor -MyFrame::MyFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxFrame(parent, id, title, pos, size, style) +MyFrame::MyFrame(wxFrame* parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style) + : wxFrame(parent, id, title, pos, size, style) { - m_textWindow = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); + m_textWindow = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); + m_smallToolbar = FALSE; +} + +void MyFrame::OnToggleToolbar(wxCommandEvent& event) +{ + delete GetToolBar(); + SetToolBar(NULL); + CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT|wxTB_DOCKABLE, ID_TOOLBAR); + + m_smallToolbar = !m_smallToolbar; + wxGetApp().InitToolbar(GetToolBar(), m_smallToolbar); } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) @@ -181,18 +215,44 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) (void)wxMessageBox("wxWindows toolbar sample", "About wxToolBar"); } -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) +void MyFrame::OnToolLeftClick(wxCommandEvent& event) +{ + wxString str; + str.Printf( _T("Clicked on tool %d\n"), event.GetId()); + m_textWindow->WriteText( str ); + + if (event.GetId() == wxID_HELP) + { + if ((bool)event.GetExtraLong()) + m_textWindow->WriteText( _T("Help button down now.\n") ); + else + m_textWindow->WriteText( _T("Help button up now.\n") ); + } + + if (event.GetId() == wxID_COPY) + { + DoEnablePrint(); + } + + if (event.GetId() == wxID_CUT) + { + DoToggleHelp(); + } +} + +void MyFrame::DoEnablePrint() { - Destroy(); + wxToolBar *tb = GetToolBar(); + if (tb->GetToolEnabled(wxID_PRINT)) + tb->EnableTool( wxID_PRINT, FALSE ); + else + tb->EnableTool( wxID_PRINT, TRUE ); } -void MyFrame::OnToolLeftClick(wxCommandEvent& event) +void MyFrame::DoToggleHelp() { - wxString str; - str.Printf( _T("Clicked on tool %d"), event.GetId()); - SetStatusText(str); + wxToolBar *tb = GetToolBar(); + tb->ToggleTool( wxID_HELP, !tb->GetToolState( wxID_HELP ) ); } void MyFrame::OnToolEnter(wxCommandEvent& event)