]> git.saurik.com Git - wxWidgets.git/commitdiff
added owner drawn checkbox to listbox page and the possibility to test changing the...
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 13 Apr 2005 15:03:50 +0000 (15:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 13 Apr 2005 15:03:50 +0000 (15:03 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/widgets/listbox.cpp
samples/widgets/widgets.cpp

index 686cbe402143a739dda7d6134938b779edc86e0b..9c83a9a4677c5a7ca19459ced9c3a0702789663f 100644 (file)
@@ -134,10 +134,11 @@ protected:
     wxRadioBox *m_radioSelMode;
 
     // the checkboxes
-    wxCheckBox *m_chkSort,
-               *m_chkCheck,
+    wxCheckBox *m_chkVScroll,
                *m_chkHScroll,
-               *m_chkVScroll;
+               *m_chkCheck,
+               *m_chkSort,
+               *m_chkOwnerDraw;
 
     // the listbox itself and the sizer it is in
     wxListBox *m_lbox;
@@ -205,7 +206,8 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxBookCtrl *book,
     m_chkVScroll =
     m_chkHScroll =
     m_chkCheck =
-    m_chkSort = (wxCheckBox *)NULL;
+    m_chkSort =
+    m_chkOwnerDraw = (wxCheckBox *)NULL;
 
     m_lbox = (wxListBox *)NULL;
     m_sizerLbox = (wxSizer *)NULL;
@@ -247,6 +249,7 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxBookCtrl *book,
                    );
     m_chkCheck = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Check list box"));
     m_chkSort = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Sort items"));
+    m_chkOwnerDraw = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Owner drawn"));
 
     sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
     sizerLeft->Add(m_radioSelMode, 0, wxGROW | wxALL, 5);
@@ -322,10 +325,11 @@ ListboxWidgetsPage::ListboxWidgetsPage(wxBookCtrl *book,
 void ListboxWidgetsPage::Reset()
 {
     m_radioSelMode->SetSelection(LboxSel_Single);
-    m_chkSort->SetValue(false);
-    m_chkCheck->SetValue(false);
-    m_chkHScroll->SetValue(true);
     m_chkVScroll->SetValue(false);
+    m_chkHScroll->SetValue(true);
+    m_chkCheck->SetValue(false);
+    m_chkSort->SetValue(false);
+    m_chkOwnerDraw->SetValue(false);
 }
 
 void ListboxWidgetsPage::CreateLbox()
@@ -347,6 +351,8 @@ void ListboxWidgetsPage::CreateLbox()
         flags |= wxLB_HSCROLL;
     if ( m_chkSort->GetValue() )
         flags |= wxLB_SORT;
+    if ( m_chkOwnerDraw->GetValue() )
+        flags |= wxLB_OWNERDRAW;
 
     wxArrayString items;
     if ( m_lbox )
@@ -468,6 +474,7 @@ void ListboxWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
 {
     event.Enable( (m_radioSelMode->GetSelection() != LboxSel_Single) ||
                   m_chkSort->GetValue() ||
+                  m_chkOwnerDraw->GetValue() ||
                   !m_chkHScroll->GetValue() ||
                   m_chkVScroll->GetValue() );
 }
index b82505a4200cf7c30c37eba512ff43f0ac9ed9b6..813e9f06f8515a6cef99fa022334e41f6d5aeebb 100644 (file)
@@ -43,6 +43,7 @@
 #include "wx/bookctrl.h"
 #include "wx/sizer.h"
 #include "wx/colordlg.h"
+#include "wx/fontdlg.h"
 #include "wx/textdlg.h"
 
 #include "widgets.h"
@@ -60,7 +61,8 @@ enum
     Widgets_SetTooltip,
 #endif // wxUSE_TOOLTIPS
     Widgets_SetFgColour,
-    Widgets_SetBgColour
+    Widgets_SetBgColour,
+    Widgets_SetFont
 };
 
 // ----------------------------------------------------------------------------
@@ -100,6 +102,7 @@ protected:
 #endif // wxUSE_TOOLTIPS
     void OnSetFgCol(wxCommandEvent& event);
     void OnSetBgCol(wxCommandEvent& event);
+    void OnSetFont(wxCommandEvent& event);
 #endif // wxUSE_MENUS
 
     // initialize the book: add all pages to it
@@ -124,9 +127,10 @@ private:
     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
@@ -217,6 +221,7 @@ 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(wxID_EXIT, WidgetsFrame::OnExit)
 END_EVENT_TABLE()
@@ -293,6 +298,7 @@ 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->AppendSeparator();
     menuWidget->Append(wxID_EXIT, _T("&Quit\tCtrl-Q"));
     mbar->Append(menuWidget, _T("&Widget"));
@@ -462,13 +468,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();
 
@@ -486,13 +496,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();
 
@@ -507,6 +520,33 @@ 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
+}
+
 #endif // wxUSE_MENUS
 
 // ----------------------------------------------------------------------------