]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/checklst/checklst.cpp
Test for XIM support in gdk added, relevant code for window.cpp follows this
[wxWidgets.git] / samples / checklst / checklst.cpp
index 9846d2008b46bdb6f38766bb9c8f991403beb597..039e1402265600f41a636b377de44245fbf74cd5 100644 (file)
@@ -30,6 +30,7 @@
 
 #include  "wx/log.h"
 
+#include  "wx/sizer.h"
 #include  "wx/menuitem.h"
 #include  "wx/checklst.h"
 
@@ -61,6 +62,8 @@ public:
 private:
     void OnButtonMove(bool up);
 
+    void AdjustColour(size_t index);
+
     wxCheckListBox *m_pListBox;
 
     DECLARE_EVENT_TABLE()
@@ -156,20 +159,37 @@ CheckListBoxFrame::CheckListBoxFrame(wxFrame *frame,
 
     delete [] astrChoices;
 
-    // not implemented in other ports yet
-#ifdef __WXMSW__
     // set grey background for every second entry
     for ( ui = 0; ui < WXSIZEOF(aszChoices); ui += 2 ) {
-        m_pListBox->GetItem(ui)->SetBackgroundColour(wxColor(200, 200, 200));
+        AdjustColour(ui);
     }
-#endif // wxGTK
 
     m_pListBox->Check(2);
 
     // create buttons for moving the items around
-    (void)new wxButton(panel, Btn_Up, "   &Up  ", wxPoint(420, 90));
-    (void)new wxButton(panel, Btn_Down, "&Down", wxPoint(420, 120));
+    wxButton *button1 = new wxButton(panel, Btn_Up, "   &Up  ", wxPoint(420, 90));
+    wxButton *button2 = new wxButton(panel, Btn_Down, "&Down", wxPoint(420, 120));
+
+
+    wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL );
+  
+    mainsizer->Add( m_pListBox, 1, wxGROW|wxALL, 10 );
+    
+    wxBoxSizer *bottomsizer = new wxBoxSizer( wxHORIZONTAL );
+    
+    bottomsizer->Add( button1, 0, wxALL, 10 );
+    bottomsizer->Add( button2, 0, wxALL, 10 );
+
+    mainsizer->Add( bottomsizer, 0, wxCENTER );
+  
+    // tell frame to make use of sizer (or constraints, if any)
+    panel->SetAutoLayout( TRUE );
+    panel->SetSizer( mainsizer );
+
+    // don't allow frame to get smaller than what the sizers tell ye
+    mainsizer->SetSizeHints( this );  
 
+  
     Show(TRUE);
 }
 
@@ -231,7 +251,7 @@ void CheckListBoxFrame::OnButtonMove(bool up)
         wxString label = m_pListBox->GetString(selection);
 
         int positionNew = up ? selection - 1 : selection + 2;
-        if ( positionNew < 0 || positionNew > m_pListBox->Number() )
+        if ( positionNew < 0 || positionNew > m_pListBox->GetCount() )
         {
             wxLogStatus(this, _T("Can't move this item %s"), up ? _T("up") : _T("down"));
         }
@@ -251,6 +271,9 @@ void CheckListBoxFrame::OnButtonMove(bool up)
             m_pListBox->Check(selectionNew, wasChecked);
             m_pListBox->SetSelection(selectionNew);
 
+            AdjustColour(selection);
+            AdjustColour(selectionNew);
+
             wxLogStatus(this, _T("Item moved %s"), up ? _T("up") : _T("down"));
         }
     }
@@ -259,3 +282,13 @@ void CheckListBoxFrame::OnButtonMove(bool up)
         wxLogStatus(this, _T("Please select an item"));
     }
 }
+
+void CheckListBoxFrame::AdjustColour(size_t index)
+{
+    // not implemented in other ports yet
+#ifdef __WXMSW__
+    // even items have grey backround, odd ones - white
+    unsigned char c = index % 2 ? 255 : 200;
+    m_pListBox->GetItem(index)->SetBackgroundColour(wxColor(c, c, c));
+#endif // wxMSW
+}