#include "sampleprops.h"
-// -----------------------------------------------------------------------
-// Declare custom test properties
-// -----------------------------------------------------------------------
-
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty)
-
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty)
-
-
// -----------------------------------------------------------------------
// wxTestCustomFlagsProperty
// -----------------------------------------------------------------------
wxFRAME_SHAPED
};
-
-WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty,
- _fs_framestyle_labels,
- _fs_framestyle_values,
- wxDEFAULT_FRAME_STYLE)
-
-WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty,
- _fs_framestyle_labels,
- _fs_framestyle_values,
- wxCAPTION)
-
-
// Colour labels. Last (before NULL, if any) must be Custom.
static const wxChar* mycolprop_labels[] = {
wxT("Black"),
void FormMain::AddTestProperties( wxPropertyGridPage* pg )
{
- pg->Append( new wxTestCustomFlagsProperty(wxT("Custom FlagsProperty"), wxPG_LABEL ) );
- pg->SetPropertyEditor( wxT("Custom FlagsProperty"), wxPG_EDITOR(TextCtrlAndButton) );
-
- pg->Append( new wxTestCustomEnumProperty(wxT("Custom EnumProperty"), wxPG_LABEL ) );
-
pg->Append( new wxMyColourProperty(wxT("CustomColourProperty1")) );
pg->SetPropertyHelpString(wxT("CustomColourProperty1"),
pg->Append( new MyColourProperty3(wxT("CustomColourProperty3"), wxPG_LABEL, *wxGREEN) );
pg->GetProperty(wxT("CustomColourProperty3"))->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED);
- pg->SetPropertyEditor( wxT("CustomColourProperty3"), wxPG_EDITOR(ComboBox) );
+ pg->SetPropertyEditor( wxT("CustomColourProperty3"), wxPGEditor_ComboBox );
pg->SetPropertyHelpString(wxT("CustomColourProperty3"),
wxT("This is a MyColourProperty3 from the sample app. ")
{
RT_START_TEST(SetPropertyValue_and_GetPropertyValue)
+ // In this section, mixed up usage of wxT("propname") and "propname"
+ // in wxPropertyGridInterface functions is intentional.
+ // Purpose is to test wxPGPropArgCls ctors.
+
//pg = (wxPropertyGrid*) NULL;
wxArrayString test_arrstr_1;
pgman->SetPropertyValue(wxT("FloatProperty"),1024.0000000001);
pgman->SetPropertyValue(wxT("BoolProperty"),FALSE);
pgman->SetPropertyValue(wxT("EnumProperty"),120);
- pgman->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET1);
pgman->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_1);
wxColour emptyCol;
pgman->SetPropertyValue(wxT("ColourProperty"),emptyCol);
pgman->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxBLACK);
- pgman->SetPropertyValue(wxT("Size"),wxSize(150,150));
- pgman->SetPropertyValue(wxT("Position"),wxPoint(150,150));
+ pgman->SetPropertyValue(wxT("Size"),WXVARIANT(wxSize(150,150)));
+ pgman->SetPropertyValue(wxT("Position"),WXVARIANT(wxPoint(150,150)));
pgman->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_1);
#if wxUSE_DATETIME
pgman->SetPropertyValue(wxT("DateProperty"),dt1);
RT_FAILURE();
if ( pg->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_1 )
RT_FAILURE();
- if ( pg->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET1 )
- RT_FAILURE();
wxColour col;
col << pgman->GetPropertyValue(wxT("ColourProperty"));
if ( col != *wxBLACK )
RT_FAILURE();
- if ( pg->GetPropertyValueAsSize(wxT("Size")) != wxSize(150,150) )
+ if ( wxSizeRefFromVariant(pg->GetPropertyValue(wxT("Size"))) != wxSize(150,150) )
RT_FAILURE();
- if ( pg->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(150,150) )
+ if ( wxPointRefFromVariant(pg->GetPropertyValue(wxT("Position"))) != wxPoint(150,150) )
RT_FAILURE();
if ( !(pg->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_1) )
RT_FAILURE();
pg->SetPropertyValue(wxT("BoolProperty"),TRUE);
pg->SetPropertyValue(wxT("EnumProperty"),80);
pg->SetPropertyValue(wxT("ArrayStringProperty"),test_arrstr_2);
- pg->SetPropertyValue(wxT("Custom FlagsProperty"),FLAG_TEST_SET2);
pg->SetPropertyValue(wxT("ColourProperty"),(wxObject*)wxWHITE);
- pg->SetPropertyValue(wxT("Size"),wxSize(300,300));
- pg->SetPropertyValue(wxT("Position"),wxPoint(300,300));
+ pg->SetPropertyValue(wxT("Size"),WXVARIANT(wxSize(300,300)));
+ pg->SetPropertyValue(wxT("Position"),WXVARIANT(wxPoint(300,300)));
pg->SetPropertyValue(wxT("MultiChoiceProperty"),test_arrint_2);
#if wxUSE_DATETIME
pg->SetPropertyValue(wxT("DateProperty"),dt2);
RT_FAILURE();
if ( pgman->GetPropertyValueAsArrayString(wxT("ArrayStringProperty")) != test_arrstr_2 )
RT_FAILURE();
- if ( pgman->GetPropertyValueAsLong(wxT("Custom FlagsProperty")) != FLAG_TEST_SET2 )
- RT_FAILURE();
col << pgman->GetPropertyValue(wxT("ColourProperty"));
if ( col != *wxWHITE )
RT_FAILURE();
- if ( pgman->GetPropertyValueAsSize(wxT("Size")) != wxSize(300,300) )
+ if ( wxSizeRefFromVariant(pgman->GetPropertyValue(wxT("Size"))) != wxSize(300,300) )
RT_FAILURE();
- if ( pgman->GetPropertyValueAsPoint(wxT("Position")) != wxPoint(300,300) )
+ if ( wxPointRefFromVariant(pgman->GetPropertyValue(wxT("Position"))) != wxPoint(300,300) )
RT_FAILURE();
if ( !(pgman->GetPropertyValueAsArrayInt(wxT("MultiChoiceProperty")) == test_arrint_2) )
RT_FAILURE();
pgman->SetPropertyValue(wxT("IntProperty"),wxLL(-80000000000));
if ( pgman->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(-80000000000) )
RT_FAILURE();
+
+ //
+ // Flexible wx(U)LongLong << operator safety conformance tests
+ wxPGProperty* prop;
+ wxLongLong ll;
+ wxULongLong ull;
+
+ prop = pgman->GetProperty(wxT("IntProperty"));
+ prop->SetValue(128);
+ ll << prop->GetValue();
+ if ( ll != 128 )
+ RT_FAILURE();
+
+ prop->SetValue(WXVARIANT(wxLL(68719476736)));
+ ll << prop->GetValue();
+ if ( ll.GetValue() != wxLL(68719476736) )
+ RT_FAILURE();
+
+#if wxUSE_LONGLONG_NATIVE
+ wxLongLong_t ll_t;
+ ll_t << prop->GetValue();
+ if ( ll_t != wxLL(68719476736) )
+ RT_FAILURE();
+#endif
+
+ prop->SetValue(256);
+ ll << prop->GetValue();
+ if ( ll != 256 )
+ RT_FAILURE();
+
+ prop = pgman->GetProperty(wxT("UIntProperty"));
+ prop->SetValue(128);
+ ull << prop->GetValue();
+ if ( ull != 128 )
+ RT_FAILURE();
+
+ prop->SetValue(WXVARIANT(wxULL(68719476739)));
+ ull << prop->GetValue();
+ if ( ull.GetValue() != wxULL(68719476739) )
+ RT_FAILURE();
+
+#if wxUSE_LONGLONG_NATIVE
+ wxULongLong_t ull_t;
+ ull_t << prop->GetValue();
+ if ( ull_t != wxLL(68719476739) )
+ RT_FAILURE();
+#endif
+
+ prop->SetValue(256);
+ ull << prop->GetValue();
+ if ( ull != 256 )
+ 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"
+
+ //
+ // This updates children as well
+ wxString nvs = "Lamborghini Diablo XYZ; 5707; [100; 3.9; 8.6] 3000002";
+ pgman->SetPropertyValue("Car", nvs);
+
+ if ( pgman->GetPropertyValueAsString("Car.Model") != "Lamborghini Diablo XYZ" )
+ {
+ wxLogDebug("Did not match: Car.Model=%s", pgman->GetPropertyValueAsString("Car.Model").c_str());
+ RT_FAILURE();
+ }
+
+ if ( pgman->GetPropertyValueAsInt("Car.Speeds.Max. Speed (mph)") != 100 )
+ {
+ wxLogDebug("Did not match: Car.Speeds.Max. Speed (mph)=%s", pgman->GetPropertyValueAsString("Car.Speeds.Max. Speed (mph)").c_str());
+ RT_FAILURE();
+ }
+
+ if ( pgman->GetPropertyValueAsInt("Car.Price ($)") != 3000002 )
+ {
+ wxLogDebug("Did not match: Car.Price ($)=%s", pgman->GetPropertyValueAsString("Car.Price ($)").c_str());
+ RT_FAILURE();
+ }
}
{
pgman->SetPropertyValueUnspecified(wxT("BoolProperty"));
pgman->SetPropertyValueUnspecified(wxT("EnumProperty"));
pgman->SetPropertyValueUnspecified(wxT("ArrayStringProperty"));
- pgman->SetPropertyValueUnspecified(wxT("Custom FlagsProperty"));
pgman->SetPropertyValueUnspecified(wxT("ColourProperty"));
pgman->SetPropertyValueUnspecified(wxT("Size"));
pgman->SetPropertyValueUnspecified(wxT("Position"));
#endif
}
+ {
+ RT_START_TEST(Attributes)
+
+ wxPGProperty* prop = pgman->GetProperty(wxT("StringProperty"));
+ prop->SetAttribute(wxT("Dummy Attribute"), (long)15);
+
+ if ( prop->GetAttribute(wxT("Dummy Attribute")).GetLong() != 15 )
+ RT_FAILURE();
+
+ prop->SetAttribute(wxT("Dummy Attribute"), wxVariant());
+
+ if ( !prop->GetAttribute(wxT("Dummy Attribute")).IsNull() )
+ RT_FAILURE();
+ }
+
{
wxPropertyGridPage* page1;
wxPropertyGridPage* page2;
}
}
+ {
+ RT_START_TEST(Choice_Manipulation)
+
+ wxPGProperty* enumProp = pgman->GetProperty(wxT("EnumProperty"));
+
+ pgman->SelectPage(2);
+ pgman->SelectProperty(enumProp);
+ wxASSERT(pgman->GetGrid()->GetSelection() == enumProp);
+
+ const wxPGChoices& choices = enumProp->GetChoices();
+ int ind = enumProp->InsertChoice(wxT("New Choice"), choices.GetCount()/2);
+ enumProp->DeleteChoice(ind);
+
+ // Recreate the original grid
+ CreateGrid( -1, -1 );
+ pgman = m_pPropGridManager;
+ }
+
//if ( !(pgman->GetWindowStyleFlag()&wxPG_HIDE_CATEGORIES) )
{
RT_START_TEST(RandomCollapse)
//
// Ok, this time only hide half of them
arr1 = GetPropertiesInRandomOrder(page);
-#if wxCHECK_VERSION(2,8,0)
arr1.resize(arr1.size()/2);
-#else
- arr1.SetCount(arr1.size()/2);
-#endif
if ( !_failed_ )
{