X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c01dd16299b565836009cc60d4e2fedeaa2221e..2296fe5018d42d4e0bf9df07c37d31f60d972b32:/samples/widgets/widgets.cpp diff --git a/samples/widgets/widgets.cpp b/samples/widgets/widgets.cpp index d4abcf4e08..d656113dd7 100644 --- a/samples/widgets/widgets.cpp +++ b/samples/widgets/widgets.cpp @@ -37,12 +37,15 @@ #include "wx/statbox.h" #include "wx/stattext.h" #include "wx/textctrl.h" + #include "wx/msgdlg.h" #endif #include "wx/sysopt.h" #include "wx/bookctrl.h" #include "wx/sizer.h" #include "wx/colordlg.h" +#include "wx/fontdlg.h" +#include "wx/textdlg.h" #include "widgets.h" @@ -59,7 +62,9 @@ enum Widgets_SetTooltip, #endif // wxUSE_TOOLTIPS Widgets_SetFgColour, - Widgets_SetBgColour + Widgets_SetBgColour, + Widgets_SetFont, + Widgets_Enable }; // ---------------------------------------------------------------------------- @@ -93,12 +98,15 @@ protected: void OnButtonClearLog(wxCommandEvent& event); #endif // USE_LOG void OnExit(wxCommandEvent& event); + #if wxUSE_MENUS #if wxUSE_TOOLTIPS void OnSetTooltip(wxCommandEvent& event); #endif // wxUSE_TOOLTIPS void OnSetFgCol(wxCommandEvent& event); void OnSetBgCol(wxCommandEvent& event); + void OnSetFont(wxCommandEvent& event); + void OnEnable(wxCommandEvent& event); #endif // wxUSE_MENUS // initialize the book: add all pages to it @@ -117,15 +125,16 @@ private: #endif // USE_LOG // the book containing the test pages - wxBookCtrl *m_book; + wxBookCtrlBase *m_book; // and the image list for it wxImageList *m_imaglist; #if wxUSE_MENUS - // last chosen fg/bg colours + // last chosen fg/bg colours and font wxColour m_colFg, m_colBg; + wxFont m_font; #endif // wxUSE_MENUS // any class wishing to process wxWidgets events must use this macro @@ -216,6 +225,8 @@ BEGIN_EVENT_TABLE(WidgetsFrame, wxFrame) EVT_MENU(Widgets_SetFgColour, WidgetsFrame::OnSetFgCol) EVT_MENU(Widgets_SetBgColour, WidgetsFrame::OnSetBgCol) + EVT_MENU(Widgets_SetFont, WidgetsFrame::OnSetFont) + EVT_MENU(Widgets_Enable, WidgetsFrame::OnEnable) EVT_MENU(wxID_EXIT, WidgetsFrame::OnExit) END_EVENT_TABLE() @@ -232,7 +243,7 @@ bool WidgetsApp::OnInit() { if ( !wxApp::OnInit() ) return false; - + // the reason for having these ifdef's is that I often run two copies of // this sample side by side and it is useful to see which one is which wxString title; @@ -279,7 +290,7 @@ WidgetsFrame::WidgetsFrame(const wxString& title) m_lboxLog = (wxListBox *)NULL; m_logTarget = (wxLog *)NULL; #endif // USE_LOG - m_book = (wxBookCtrl *)NULL; + m_book = (wxBookCtrlBase *)NULL; m_imaglist = (wxImageList *)NULL; #if wxUSE_MENUS @@ -292,10 +303,14 @@ WidgetsFrame::WidgetsFrame(const wxString& title) #endif // wxUSE_TOOLTIPS menuWidget->Append(Widgets_SetFgColour, _T("Set &foreground...\tCtrl-F")); menuWidget->Append(Widgets_SetBgColour, _T("Set &background...\tCtrl-B")); + menuWidget->Append(Widgets_SetFont, _T("Set f&ont...\tCtrl-O")); + menuWidget->AppendCheckItem(Widgets_Enable, _T("&Enable/disable\tCtrl-E")); menuWidget->AppendSeparator(); menuWidget->Append(wxID_EXIT, _T("&Quit\tCtrl-Q")); mbar->Append(menuWidget, _T("&Widget")); SetMenuBar(mbar); + + mbar->Check(Widgets_Enable, true); #endif // wxUSE_MENUS // create controls @@ -306,13 +321,18 @@ WidgetsFrame::WidgetsFrame(const wxString& title) // we have 2 panes: book with pages demonstrating the controls in the // upper one and the log window with some buttons in the lower - + int style = wxNO_FULL_REPAINT_ON_RESIZE|wxCLIP_CHILDREN|wxBC_DEFAULT; // Uncomment to suppress page theme (draw in solid colour) - // style |= wxNB_NOPAGETHEME; + //style |= wxNB_NOPAGETHEME; m_book = new wxBookCtrl(m_panel, wxID_ANY, wxDefaultPosition, - wxDefaultSize, style); +#ifdef __WXMOTIF__ + wxSize(500, -1), // under Motif, height is a function of the width... +#else + wxDefaultSize, +#endif + style); InitBook(); #ifndef __SMARTPHONE__ @@ -448,8 +468,19 @@ void WidgetsFrame::OnSetTooltip(wxCommandEvent& WXUNUSED(event)) if ( s.empty() ) return; + s_tip = s; + + if( wxMessageBox( _T("Test multiline tooltip text?"), + _T("Widgets sample"), + wxYES_NO, + this + ) == wxYES ) + { + s = _T("#1 ") + s_tip + _T("\n") + _T("#2 ") + s_tip; + } + WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); - page->GetWidget()->SetToolTip(s_tip = s); + page->GetWidget()->SetToolTip(s); wxControl *ctrl2 = page->GetWidget2(); if ( ctrl2 ) @@ -461,13 +492,17 @@ void WidgetsFrame::OnSetTooltip(wxCommandEvent& WXUNUSED(event)) void WidgetsFrame::OnSetFgCol(wxCommandEvent& WXUNUSED(event)) { #if wxUSE_COLOURDLG + // allow for debugging the default colour the first time this is called + WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); + if (!m_colFg.Ok()) + m_colFg = page->GetForegroundColour(); + wxColour col = wxGetColourFromUser(this, m_colFg); if ( !col.Ok() ) return; m_colFg = col; - WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); page->GetWidget()->SetForegroundColour(m_colFg); page->GetWidget()->Refresh(); @@ -485,13 +520,16 @@ void WidgetsFrame::OnSetFgCol(wxCommandEvent& WXUNUSED(event)) void WidgetsFrame::OnSetBgCol(wxCommandEvent& WXUNUSED(event)) { #if wxUSE_COLOURDLG + WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); + if ( !m_colBg.Ok() ) + m_colBg = page->GetBackgroundColour(); + wxColour col = wxGetColourFromUser(this, m_colBg); if ( !col.Ok() ) return; m_colBg = col; - WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); page->GetWidget()->SetBackgroundColour(m_colBg); page->GetWidget()->Refresh(); @@ -506,6 +544,39 @@ void WidgetsFrame::OnSetBgCol(wxCommandEvent& WXUNUSED(event)) #endif } +void WidgetsFrame::OnSetFont(wxCommandEvent& WXUNUSED(event)) +{ +#if wxUSE_FONTDLG + WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); + if (!m_font.Ok()) + m_font = page->GetFont(); + + wxFont font = wxGetFontFromUser(this, m_font); + if ( !font.Ok() ) + return; + + m_font = font; + + page->GetWidget()->SetFont(m_font); + page->GetWidget()->Refresh(); + + wxControl *ctrl2 = page->GetWidget2(); + if ( ctrl2 ) + { + ctrl2->SetFont(m_font); + ctrl2->Refresh(); + } +#else + wxLogMessage(_T("Font selection dialog not available in current build.")); +#endif +} + +void WidgetsFrame::OnEnable(wxCommandEvent& event) +{ + WidgetsPage *page = wxStaticCast(m_book->GetCurrentPage(), WidgetsPage); + page->GetWidget()->Enable(event.IsChecked()); +} + #endif // wxUSE_MENUS // ---------------------------------------------------------------------------- @@ -573,7 +644,7 @@ WidgetsPageInfo::WidgetsPageInfo(Constructor ctor, const wxChar *label) // WidgetsPage // ---------------------------------------------------------------------------- -WidgetsPage::WidgetsPage(wxBookCtrl *book) +WidgetsPage::WidgetsPage(wxBookCtrlBase *book) : wxPanel(book, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_FULL_REPAINT_ON_RESIZE |