]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/widgets/itemcontainer.cpp
For wxGTK2, link with X11 explicitly, since we use many X11 functions directly.
[wxWidgets.git] / samples / widgets / itemcontainer.cpp
index c46a738d08ec87dd3bb8cccabc505f26586858ed..850ebbf3c201b3e2ce1c34b9dd2b6a0fbec512e7 100644 (file)
@@ -4,7 +4,7 @@
 // Purpose:     Part of the widgets sample showing wxComboBox
 // Created:     20.07.07
 // Id:          $Id$
-// License:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -59,7 +59,7 @@ private:
     ItemContainerWidgetsPage *m_tracker;
     int m_value;
 
-    DECLARE_NO_COPY_CLASS(TrackedClientData)
+    wxDECLARE_NO_COPY_CLASS(TrackedClientData);
 };
 
 // ============================================================================
@@ -68,15 +68,15 @@ private:
 
 ItemContainerWidgetsPage::ItemContainerWidgetsPage(WidgetsBookCtrl *book,
                                                    wxImageList *image_list,
-                                                   char* icon[])
+                                                   const char *const icon[])
 : WidgetsPage(book, image_list, icon), m_trackedDataObjects(0)
 {
-    m_items.Add(_T("This"));
-    m_items.Add(_T("is"));
-    m_items.Add(_T("a"));
-    m_items.Add(_T("List"));
-    m_items.Add(_T("of"));
-    m_items.Add(_T("strings"));
+    m_items.Add(wxT("This"));
+    m_items.Add(wxT("is"));
+    m_items.Add(wxT("a"));
+    m_items.Add(wxT("List"));
+    m_items.Add(wxT("of"));
+    m_items.Add(wxT("strings"));
     m_itemsSorted = m_items;
 }
 
@@ -103,11 +103,11 @@ bool ItemContainerWidgetsPage::VerifyAllClientDataDestroyed()
 {
     if ( m_trackedDataObjects )
     {
-        wxString message = _T("Bug in managing wxClientData: ");
+        wxString message = wxT("Bug in managing wxClientData: ");
         if ( m_trackedDataObjects > 0 )
-            message << m_trackedDataObjects << _T(" lost objects");
+            message << m_trackedDataObjects << wxT(" lost objects");
         else
-            message << (-m_trackedDataObjects) << _T(" extra deletes");
+            message << (-m_trackedDataObjects) << wxT(" extra deletes");
         wxFAIL_MSG(message);
         return false;
     }
@@ -118,7 +118,7 @@ bool ItemContainerWidgetsPage::VerifyAllClientDataDestroyed()
 void ItemContainerWidgetsPage::StartTest(const wxString& label)
 {
     m_container->Clear();
-    wxLogMessage(_T("Test - %s:"), label.c_str());
+    wxLogMessage(wxT("Test - %s:"), label.c_str());
 }
 
 void ItemContainerWidgetsPage::EndTest(const wxArrayString& items)
@@ -128,7 +128,7 @@ void ItemContainerWidgetsPage::EndTest(const wxArrayString& items)
     bool ok = count == items.GetCount();
     if ( !ok )
     {
-        wxFAIL_MSG(_T("Item count does not match."));
+        wxFAIL_MSG(wxT("Item count does not match."));
     }
     else
     {
@@ -138,7 +138,7 @@ void ItemContainerWidgetsPage::EndTest(const wxArrayString& items)
             if ( str != items[i] )
             {
                 wxFAIL_MSG(wxString::Format(
-                            _T("Wrong string \"%s\" at position %d (expected \"%s\")"),
+                            wxT("Wrong string \"%s\" at position %d (expected \"%s\")"),
                            str.c_str(), i, items[i].c_str()));
                 ok = false;
                 break;
@@ -173,19 +173,19 @@ void ItemContainerWidgetsPage::EndTest(const wxArrayString& items)
     m_container->Clear();
     ok &= VerifyAllClientDataDestroyed();
 
-    wxLogMessage(_T("...%s"), ok ? _T("passed") : _T("failed"));
+    wxLogMessage(wxT("...%s"), ok ? wxT("passed") : wxT("failed"));
 }
 
 wxString
 ItemContainerWidgetsPage::DumpContainerData(const wxArrayString& expected) const
 {
     wxString str;
-    str << _T("Current content:\n");
+    str << wxT("Current content:\n");
 
     unsigned i;
     for ( i = 0; i < m_container->GetCount(); ++i )
     {
-        str << _T(" - ") << m_container->GetString(i) << _T(" [");
+        str << wxT(" - ") << m_container->GetString(i) << wxT(" [");
         if ( m_container->HasClientObjectData() )
         {
             TrackedClientData *
@@ -199,20 +199,20 @@ ItemContainerWidgetsPage::DumpContainerData(const wxArrayString& expected) const
             if ( data )
                 str << (wxUIntPtr)data;
         }
-        str << _T("]\n");
+        str << wxT("]\n");
     }
 
-    str << _T("Expected content:\n");
+    str << wxT("Expected content:\n");
     for ( i = 0; i < expected.GetCount(); ++i )
     {
         const wxString& item = expected[i];
-        str << _T(" - ") << item << _T("[");
+        str << wxT(" - ") << item << wxT("[");
         for( unsigned j = 0; j < m_items.GetCount(); ++j )
         {
             if ( m_items[j] == item )
                 str << j;
         }
-        str << _T("]\n");
+        str << wxT("]\n");
     }
 
     return str;
@@ -222,66 +222,81 @@ bool ItemContainerWidgetsPage::VerifyClientData(wxUIntPtr i, const wxString& str
 {
     if ( i > m_items.GetCount() || m_items[i] != str )
     {
-        wxLogMessage(_T("Client data for '%s' does not match."), str.c_str());
+        wxLogMessage(wxT("Client data for '%s' does not match."), str.c_str());
         return false;
     }
 
     return true;
 }
 
+/* static */
+wxArrayString
+ItemContainerWidgetsPage::MakeArray(const wxSortedArrayString& sorted)
+{
+    wxArrayString a;
+
+    const size_t count = sorted.size();
+    a.reserve(count);
+    for ( size_t n = 0; n < count; n++ )
+        a.push_back(sorted[n]);
+
+    return a;
+}
+
 void ItemContainerWidgetsPage::OnButtonTestItemContainer(wxCommandEvent&)
 {
     m_container = GetContainer();
-    wxASSERT_MSG(m_container, _T("Widget must have a test widget"));
+    wxASSERT_MSG(m_container, wxT("Widget must have a test widget"));
 
-    wxLogMessage(_T("wxItemContainer test for %s, %s:"),
+    wxLogMessage(wxT("wxItemContainer test for %s, %s:"),
                  GetWidget()->GetClassInfo()->GetClassName(),
                  (m_container->IsSorted() ? "Sorted" : "Unsorted"));
 
     const wxArrayString
-        & expected_result = m_container->IsSorted() ? m_itemsSorted
-                                                    : m_items;
+        expected_result = m_container->IsSorted() ? MakeArray(m_itemsSorted)
+                                                  : m_items;
 
-    StartTest(_T("Append one item"));
+    StartTest(wxT("Append one item"));
     wxString item = m_items[0];
     m_container->Append(item);
     EndTest(wxArrayString(1, &item));
 
-    StartTest(_T("Append some items"));
+    StartTest(wxT("Append some items"));
     m_container->Append(m_items);
     EndTest(expected_result);
 
-    StartTest(_T("Append some items with data objects"));
+    StartTest(wxT("Append some items with data objects"));
     wxClientData **objects = new wxClientData *[m_items.GetCount()];
-    for ( unsigned i = 0; i < m_items.GetCount(); ++i )
+    unsigned i;
+    for ( i = 0; i < m_items.GetCount(); ++i )
         objects[i] = CreateClientData(i);
     m_container->Append(m_items, objects);
     EndTest(expected_result);
     delete[] objects;
 
-    StartTest(_T("Append some items with data"));
+    StartTest(wxT("Append some items with data"));
     void **data = new void *[m_items.GetCount()];
-    for ( unsigned i = 0; i < m_items.GetCount(); ++i )
-        data[i] = (void*)i;
+    for ( i = 0; i < m_items.GetCount(); ++i )
+        data[i] = wxUIntToPtr(i);
     m_container->Append(m_items, data);
     EndTest(expected_result);
     delete[] data;
 
-    StartTest(_T("Append some items with data, one by one"));
-    for ( unsigned i = 0; i < m_items.GetCount(); ++i )
-        m_container->Append(m_items[i], (void*)i);
+    StartTest(wxT("Append some items with data, one by one"));
+    for ( i = 0; i < m_items.GetCount(); ++i )
+        m_container->Append(m_items[i], wxUIntToPtr(i));
     EndTest(expected_result);
 
-    StartTest(_T("Append some items with data objects, one by one"));
-    for ( unsigned i = 0; i < m_items.GetCount(); ++i )
+    StartTest(wxT("Append some items with data objects, one by one"));
+    for ( i = 0; i < m_items.GetCount(); ++i )
         m_container->Append(m_items[i], CreateClientData(i));
     EndTest(expected_result);
 
     if ( !m_container->IsSorted() )
     {
-        StartTest(_T("Insert in reverse order with data, one by one"));
+        StartTest(wxT("Insert in reverse order with data, one by one"));
         for ( unsigned i = m_items.GetCount(); i; --i )
-            m_container->Insert(m_items[i - 1], 0, (void*)(i - 1));
+            m_container->Insert(m_items[i - 1], 0, wxUIntToPtr(i - 1));
         EndTest(expected_result);
     }
 }