X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d61d8cffa928c7b25cfada5618b987be2ec5e052..c437b3f4e47b74715a2f2385d4862972babd7802:/samples/propgrid/tests.cpp diff --git a/samples/propgrid/tests.cpp b/samples/propgrid/tests.cpp index bbecd179b0..d12a7bb22a 100644 --- a/samples/propgrid/tests.cpp +++ b/samples/propgrid/tests.cpp @@ -31,58 +31,6 @@ // wxTestCustomFlagsProperty // ----------------------------------------------------------------------- -// -// Constant definitions required by wxFlagsProperty examples. -// - -static const wxChar* _fs_framestyle_labels[] = { - wxT("wxCAPTION"), - wxT("wxMINIMIZE"), - wxT("wxMAXIMIZE"), - wxT("wxCLOSE_BOX"), - wxT("wxSTAY_ON_TOP"), - wxT("wxSYSTEM_MENU"), - wxT("wxRESIZE_BORDER"), - wxT("wxFRAME_TOOL_WINDOW"), - wxT("wxFRAME_NO_TASKBAR"), - wxT("wxFRAME_FLOAT_ON_PARENT"), - wxT("wxFRAME_SHAPED"), - (const wxChar*) NULL -}; - -static const long _fs_framestyle_values[] = { - wxCAPTION, - wxMINIMIZE, - wxMAXIMIZE, - wxCLOSE_BOX, - wxSTAY_ON_TOP, - wxSYSTEM_MENU, - wxRESIZE_BORDER, - wxFRAME_TOOL_WINDOW, - wxFRAME_NO_TASKBAR, - wxFRAME_FLOAT_ON_PARENT, - wxFRAME_SHAPED -}; - -// Colour labels. Last (before NULL, if any) must be Custom. -static const wxChar* mycolprop_labels[] = { - wxT("Black"), - wxT("Blue"), - wxT("Brown"), - wxT("Custom"), - (const wxChar*) NULL -}; - -// Relevant colour values as unsigned longs. -static unsigned long mycolprop_colours[] = { - wxPG_COLOUR(0,0,0), - wxPG_COLOUR(0,0,255), - wxPG_COLOUR(166,124,81), - wxPG_COLOUR(0,0,0) -}; - -// ----------------------------------------------------------------------- - // // Test customizing wxColourProperty via subclassing // @@ -358,6 +306,15 @@ wxArrayPGProperty GetPropertiesInRandomOrder( wxPropertyGridInterface* props, in return arr; } +// Callback for testing property sorting +int MyPropertySortFunction(wxPropertyGrid* WXUNUSED(propGrid), + wxPGProperty* p1, + wxPGProperty* p2) +{ + // Reverse alphabetical order + return p2->GetLabel().CmpNoCase( p1->GetBaseName() ); +} + bool FormMain::RunTests( bool fullTest, bool interactive ) { wxString t; @@ -754,11 +711,11 @@ bool FormMain::RunTests( bool fullTest, bool interactive ) RT_FAILURE(); // Make sure children of composite parent get updated as well - // Original string value: "Lamborghini Diablo SV; 5707; [300; 3.9; 8.6] 300000" + // Original string value: "Lamborghini Diablo SV; 5707; [300; 3.9; 8.6] 300000; Not Convertible" // // This updates children as well - wxString nvs = "Lamborghini Diablo XYZ; 5707; [100; 3.9; 8.6] 3000002"; + wxString nvs = "Lamborghini Diablo XYZ; 5707; [100; 3.9; 8.6] 3000002; Convertible"; pgman->SetPropertyValue("Car", nvs); if ( pgman->GetPropertyValueAsString("Car.Model") != "Lamborghini Diablo XYZ" ) @@ -778,6 +735,12 @@ bool FormMain::RunTests( bool fullTest, bool interactive ) wxLogDebug("Did not match: Car.Price ($)=%s", pgman->GetPropertyValueAsString("Car.Price ($)").c_str()); RT_FAILURE(); } + + if ( !pgman->GetPropertyValueAsBool("Car.Convertible") ) + { + wxLogDebug("Did not match: Car.Convertible=%s", pgman->GetPropertyValueAsString("Car.Convertible").c_str()); + RT_FAILURE(); + } } { @@ -970,6 +933,68 @@ bool FormMain::RunTests( bool fullTest, bool interactive ) pgman->EnsureVisible(wxT("Cell Colour")); } + { + RT_START_TEST(RemoveProperty) + + wxPGProperty* p; + + wxPGProperty* origParent = + pgman->GetProperty(wxT("Window Styles"))->GetParent(); + + p = pgman->RemoveProperty(wxT("Window Styles")); + pgman->Refresh(); + pgman->Update(); + + pgman->AppendIn(origParent, p); + pgman->Refresh(); + pgman->Update(); + } + + { + RT_START_TEST(SortFunction) + + wxPGProperty* p; + + // Make sure indexes are as supposed + + p = pgman->GetProperty(wxT("User Name")); + if ( p->GetIndexInParent() != 3 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("User Id")); + if ( p->GetIndexInParent() != 2 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("User Home")); + if ( p->GetIndexInParent() != 1 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("Operating System")); + if ( p->GetIndexInParent() != 0 ) + RT_FAILURE(); + + pgman->GetGrid()->SetSortFunction(MyPropertySortFunction); + + pgman->GetGrid()->SortChildren(wxT("Environment")); + + // Make sure indexes have been reversed + p = pgman->GetProperty(wxT("User Name")); + if ( p->GetIndexInParent() != 0 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("User Id")); + if ( p->GetIndexInParent() != 1 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("User Home")); + if ( p->GetIndexInParent() != 2 ) + RT_FAILURE(); + + p = pgman->GetProperty(wxT("Operating System")); + if ( p->GetIndexInParent() != 3 ) + RT_FAILURE(); + } + { RT_START_TEST(SetPropertyBackgroundColour) wxCommandEvent evt; @@ -980,12 +1005,29 @@ bool FormMain::RunTests( bool fullTest, bool interactive ) } { - RT_START_TEST(ManagerClear) + RT_START_TEST(Clear) + + // Manager clear + pgman->SelectProperty("Label"); pgman->Clear(); if ( pgman->GetPageCount() ) RT_FAILURE(); + if ( pgman->GetGrid()->GetRoot()->GetChildCount() ) + RT_FAILURE(); + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + + // Grid clear + pgman->SelectProperty("Label"); + pgman->GetGrid()->Clear(); + + if ( pgman->GetGrid()->GetRoot()->GetChildCount() ) + RT_FAILURE(); + // Recreate the original grid CreateGrid( -1, -1 ); pgman = m_pPropGridManager;