X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2492cd399015224deba12cd79d4206ca0e00b31e..7ea1c917764fb2588fe1aadc75c49ba300f8cb2f:/samples/display/display.cpp?ds=sidebyside diff --git a/samples/display/display.cpp b/samples/display/display.cpp index 47fe984393..9618d5e9e9 100644 --- a/samples/display/display.cpp +++ b/samples/display/display.cpp @@ -29,11 +29,7 @@ #include "wx/wx.h" #endif -#if !wxUSE_DISPLAY - #error "To compile this sample you must build the library with wxUSE_DISPLAY set to 1" -#endif - -#include "wx/notebook.h" +#include "wx/bookctrl.h" #include "wx/display.h" @@ -79,14 +75,18 @@ public: void OnLeftClick(wxMouseEvent& event); +#if wxUSE_DISPLAY void OnDisplayChanged(wxDisplayChangedEvent& event); +#endif private: +#if wxUSE_DISPLAY // convert video mode to textual description wxString VideoModeToText(const wxVideoMode& mode); +#endif // GUI controls - wxNotebook *m_notebook; + wxBookCtrl *m_book; // any class wishing to process wxWidgets events must use this macro DECLARE_EVENT_TABLE() @@ -109,13 +109,11 @@ public: enum { // menu items - Display_Quit = 1, - - Display_FromPoint, + Display_FromPoint = wxID_HIGHEST + 1, Display_FullScreen, // controls - Display_ChangeMode = 1000, + Display_ChangeMode, Display_ResetMode, Display_CurrentMode, @@ -123,6 +121,7 @@ enum // it is important for the id corresponding to the "About" command to have // this standard value as otherwise it won't be handled properly under Mac // (where it is special and put into the "Apple" menu) + Display_Quit = wxID_EXIT, Display_About = wxID_ABOUT }; @@ -144,8 +143,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_LEFT_UP(MyFrame::OnLeftClick) - +#if wxUSE_DISPLAY EVT_DISPLAY_CHANGED(MyFrame::OnDisplayChanged) +#endif END_EVENT_TABLE() // Create a new application object: this macro will allow wxWidgets to create @@ -166,6 +166,11 @@ IMPLEMENT_APP(MyApp) // 'Main program' equivalent: the program execution "starts" here bool MyApp::OnInit() { +#if !wxUSE_DISPLAY + wxMessageBox(_("Please recompile wxWidgets and this sample with wxUSE_DISPLAY set to 1.")); + return false; +#else + #ifdef __WXMSW__ if ( argc == 2 && !wxStricmp(argv[1], _T("/dx")) ) { @@ -185,6 +190,7 @@ bool MyApp::OnInit() // loop and the application will run. If we returned false here, the // application would exit immediately. return true; +#endif } // ---------------------------------------------------------------------------- @@ -220,20 +226,23 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, SetMenuBar(menuBar); #endif // wxUSE_MENUS +#if wxUSE_STATUSBAR // create status bar CreateStatusBar(); +#endif // wxUSE_STATUSBAR +#if wxUSE_DISPLAY // create child controls wxPanel *panel = new wxPanel(this, wxID_ANY); - m_notebook = new wxNotebook(panel, wxID_ANY); + m_book = new wxBookCtrl(panel, wxID_ANY); const size_t count = wxDisplay::GetCount(); for ( size_t nDpy = 0; nDpy < count; nDpy++ ) { wxDisplay display(nDpy); - wxWindow *page = new wxPanel(m_notebook, wxID_ANY); + wxWindow *page = new wxPanel(m_book, wxID_ANY); // create 2 column flex grid sizer with growable 2nd column wxFlexGridSizer *sizer = new wxFlexGridSizer(2, 10, 20); @@ -288,17 +297,20 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, 0, wxALL | wxCENTRE, 5); page->SetSizer(sizerTop); - m_notebook->AddPage(page, - wxString::Format(_T("Display %lu"), - (unsigned long)nDpy)); + m_book->AddPage(page, + wxString::Format(_T("Display %lu"), + (unsigned long)nDpy)); } - wxNotebookSizer *notebookSizer = new wxNotebookSizer(m_notebook); - panel->SetSizer(notebookSizer); - notebookSizer->Fit(this); - notebookSizer->SetSizeHints(this); + wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); + sizer->Add(m_book, 1, wxEXPAND); + panel->SetSizer(sizer); + sizer->Fit(this); + sizer->SetSizeHints(this); +#endif } +#if wxUSE_DISPLAY wxString MyFrame::VideoModeToText(const wxVideoMode& mode) { wxString s; @@ -316,6 +328,7 @@ wxString MyFrame::VideoModeToText(const wxVideoMode& mode) return s; } +#endif // event handlers @@ -335,7 +348,9 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnFromPoint(wxCommandEvent& WXUNUSED(event)) { +#if wxUSE_STATUSBAR SetStatusText(_T("Press the mouse anywhere...")); +#endif // wxUSE_STATUSBAR CaptureMouse(); } @@ -347,7 +362,8 @@ void MyFrame::OnFullScreen(wxCommandEvent& event) void MyFrame::OnChangeMode(wxCommandEvent& event) { - wxDisplay dpy(m_notebook->GetSelection()); +#if wxUSE_DISPLAY + wxDisplay dpy(m_book->GetSelection()); // you wouldn't write this in real code, would you? if ( !dpy.ChangeMode(((MyVideoModeClientData *) @@ -356,17 +372,21 @@ void MyFrame::OnChangeMode(wxCommandEvent& event) { wxLogError(_T("Changing video mode failed!")); } +#endif } void MyFrame::OnResetMode(wxCommandEvent& WXUNUSED(event)) { - wxDisplay dpy(m_notebook->GetSelection()); +#if wxUSE_DISPLAY + wxDisplay dpy(m_book->GetSelection()); dpy.ResetMode(); +#endif } void MyFrame::OnLeftClick(wxMouseEvent& event) { +#if wxUSE_DISPLAY if ( HasCapture() ) { // mouse events are in client coords, wxDisplay works in screen ones @@ -382,14 +402,16 @@ void MyFrame::OnLeftClick(wxMouseEvent& event) ReleaseMouse(); } +#endif } +#if wxUSE_DISPLAY void MyFrame::OnDisplayChanged(wxDisplayChangedEvent& event) { // update the current mode text - for ( size_t n = 0; n < m_notebook->GetPageCount(); n++ ) + for ( size_t n = 0; n < m_book->GetPageCount(); n++ ) { - wxStaticText *label = wxDynamicCast(m_notebook->GetPage(n)-> + wxStaticText *label = wxDynamicCast(m_book->GetPage(n)-> FindWindow(Display_CurrentMode), wxStaticText); if ( label ) @@ -401,4 +423,5 @@ void MyFrame::OnDisplayChanged(wxDisplayChangedEvent& event) event.Skip(); } +#endif