]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/propgrid/tests.cpp
Support using GetTextExtent() with empty string to get descent in wxOSX.
[wxWidgets.git] / samples / propgrid / tests.cpp
index 28d553b068f1aaf9b848957c9b62bc9d937b8d46..d432334cb5b832d7dbce2cc5f05d29f0a6ffc48d 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     2007-05-16
 // RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Created:     2007-05-16
 // RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
@@ -88,12 +88,14 @@ public:
         return wxColour();
     }
 
         return wxColour();
     }
 
-    virtual wxString ColourToString( const wxColour& col, int index ) const
+    virtual wxString ColourToString( const wxColour& col,
+                                     int index,
+                                     int argFlags = 0 ) const
     {
         if ( index == (int)(m_choices.GetCount()-1) )
             return wxT("");
 
     {
         if ( index == (int)(m_choices.GetCount()-1) )
             return wxT("");
 
-        return wxColourProperty::ColourToString(col, index);
+        return wxColourProperty::ColourToString(col, index, argFlags);
     }
 
     virtual int GetCustomColourIndex() const
     }
 
     virtual int GetCustomColourIndex() const
@@ -106,7 +108,7 @@ public:
 void FormMain::AddTestProperties( wxPropertyGridPage* pg )
 {
     pg->Append( new MyColourProperty(wxT("CustomColourProperty"), wxPG_LABEL, *wxGREEN) );
 void FormMain::AddTestProperties( wxPropertyGridPage* pg )
 {
     pg->Append( new MyColourProperty(wxT("CustomColourProperty"), wxPG_LABEL, *wxGREEN) );
-    pg->GetProperty(wxT("CustomColourProperty"))->SetFlag(wxPG_PROP_AUTO_UNSPECIFIED);
+    pg->GetProperty(wxT("CustomColourProperty"))->SetAutoUnspecified(true);
     pg->SetPropertyEditor( wxT("CustomColourProperty"), wxPGEditor_ComboBox );
 
     pg->SetPropertyHelpString(wxT("CustomColourProperty"),
     pg->SetPropertyEditor( wxT("CustomColourProperty"), wxPGEditor_ComboBox );
 
     pg->SetPropertyHelpString(wxT("CustomColourProperty"),
@@ -162,8 +164,9 @@ void FormMain::OnDumpList( wxCommandEvent& WXUNUSED(event) )
     const int spacing = 8;
     wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
     wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL );
     const int spacing = 8;
     wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
     wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL );
-    wxTextCtrl* ed = new wxTextCtrl(dlg,11,text,
-        wxDefaultPosition,wxDefaultSize,wxTE_MULTILINE|wxTE_READONLY);
+    wxTextCtrl* ed = new wxTextCtrl(dlg, 11, text,
+                                    wxDefaultPosition, wxDefaultSize,
+                                    wxTE_MULTILINE);
     rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing );
     topsizer->Add( rowsizer, 1, wxEXPAND, 0 );
     rowsizer = new wxBoxSizer( wxHORIZONTAL );
     rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing );
     topsizer->Add( rowsizer, 1, wxEXPAND, 0 );
     rowsizer = new wxBoxSizer( wxHORIZONTAL );
@@ -342,8 +345,9 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
     const int spacing = 8;
     wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
     wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL );
     const int spacing = 8;
     wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
     wxBoxSizer* rowsizer = new wxBoxSizer( wxHORIZONTAL );
-    wxTextCtrl* ed = new wxTextCtrl(dlg,11,wxEmptyString,
-        wxDefaultPosition,wxDefaultSize,wxTE_MULTILINE|wxTE_READONLY);
+    wxTextCtrl* ed = new wxTextCtrl(dlg, 11, wxEmptyString,
+                                    wxDefaultPosition, wxDefaultSize,
+                                    wxTE_MULTILINE);
     rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing );
     topsizer->Add( rowsizer, 1, wxEXPAND, 0 );
     rowsizer = new wxBoxSizer( wxHORIZONTAL );
     rowsizer->Add( ed, 1, wxEXPAND|wxALL, spacing );
     topsizer->Add( rowsizer, 1, wxEXPAND, 0 );
     rowsizer = new wxBoxSizer( wxHORIZONTAL );
@@ -499,6 +503,59 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         pgman = m_pPropGridManager;
     }
 
         pgman = m_pPropGridManager;
     }
 
+    {
+        //
+        // Test wxAny<->wxVariant conversion
+        RT_START_TEST(WXVARIANT_TO_WXANY_CONVERSION)
+
+        wxPGProperty* prop;
+        wxAny any;
+
+#if wxUSE_DATETIME
+        prop = pgman->GetProperty("DateProperty");
+        wxDateTime testTime = wxDateTime::Now();
+        any = testTime;
+        prop->SetValue(any);
+        if ( wxANY_AS(prop->GetValue().GetAny(), wxDateTime) != testTime )
+            RT_FAILURE();
+#endif
+
+        prop = pgman->GetProperty("IntProperty");
+        int testInt = 25537983;
+        any = testInt;
+        prop->SetValue(any);
+        if ( wxANY_AS(prop->GetValue().GetAny(), int) != testInt )
+            RT_FAILURE();
+#ifdef wxLongLong_t
+        if ( wxANY_AS(prop->GetValue().GetAny(), wxLongLong_t) != testInt )
+            RT_FAILURE();
+#endif
+
+        prop = pgman->GetProperty("StringProperty");
+        wxString testString = "asd934jfyn3";
+        any = testString;
+        prop->SetValue(any);
+        if ( wxANY_AS(prop->GetValue().GetAny(), wxString) != testString )
+            RT_FAILURE();
+
+        // Test with a type generated with IMPLEMENT_VARIANT_OBJECT()
+        prop = pgman->GetProperty("ColourProperty");
+        wxColour testCol = *wxCYAN;
+        any = testCol;
+        prop->SetValue(any);
+        if ( wxANY_AS(prop->GetValue().GetAny(), wxColour) != testCol )
+            RT_FAILURE();
+
+        // Test with a type with custom wxVariantData defined by
+        // wxPG headers.
+        prop = pgman->GetProperty("Position");
+        wxPoint testPoint(199, 199);
+        any = testPoint;
+        prop->SetValue(any);
+        if ( wxANY_AS(prop->GetValue().GetAny(), wxPoint) != testPoint )
+            RT_FAILURE();
+    }
+
     {
         RT_START_TEST(GetPropertyValues)
 
     {
         RT_START_TEST(GetPropertyValues)
 
@@ -561,6 +618,9 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         dt2.SetYear(dt2.GetYear()-10);
 #endif
 
         dt2.SetYear(dt2.GetYear()-10);
 #endif
 
+        wxColour colWithAlpha(1, 128, 254, 100);
+        wxString colWithAlphaStr(colWithAlpha.GetAsString(wxC2S_CSS_SYNTAX));
+
 #define FLAG_TEST_SET1 (wxCAPTION|wxCLOSE_BOX|wxSYSTEM_MENU|wxRESIZE_BORDER)
 #define FLAG_TEST_SET2 (wxSTAY_ON_TOP|wxCAPTION|wxICONIZE|wxSYSTEM_MENU)
 
 #define FLAG_TEST_SET1 (wxCAPTION|wxCLOSE_BOX|wxSYSTEM_MENU|wxRESIZE_BORDER)
 #define FLAG_TEST_SET2 (wxSTAY_ON_TOP|wxCAPTION|wxICONIZE|wxSYSTEM_MENU)
 
@@ -697,6 +757,25 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
             wxLogDebug("Did not match: Car.Convertible=%s", pgman->GetPropertyValueAsString("Car.Convertible").c_str());
             RT_FAILURE();
         }
             wxLogDebug("Did not match: Car.Convertible=%s", pgman->GetPropertyValueAsString("Car.Convertible").c_str());
             RT_FAILURE();
         }
+
+        // SetPropertyValueString for special cases such as wxColour
+        pgman->SetPropertyValueString("ColourProperty", "(123,4,255)");
+        col << pgman->GetPropertyValue("ColourProperty");
+        if ( col != wxColour(123, 4, 255) )
+            RT_FAILURE();
+        pgman->SetPropertyValueString("ColourProperty", "#FE860B");
+        col << pgman->GetPropertyValue("ColourProperty");
+        if ( col != wxColour(254, 134, 11) )
+            RT_FAILURE();
+
+        pgman->SetPropertyValueString("ColourPropertyWithAlpha",
+                                      "(10, 20, 30, 128)");
+        col << pgman->GetPropertyValue("ColourPropertyWithAlpha");
+        if ( col != wxColour(10, 20, 30, 128) )
+            RT_FAILURE();
+        if ( pgman->GetPropertyValueAsString("ColourPropertyWithAlpha")
+                != "(10,20,30,128)" )
+            RT_FAILURE();
     }
 
     {
     }
 
     {
@@ -775,6 +854,29 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         RT_ASSERT( !pg->IsPropertySelected(prop3) )
     }
 
         RT_ASSERT( !pg->IsPropertySelected(prop3) )
     }
 
+    {
+        //
+        // Test label editing
+        RT_START_TEST(LABEL_EDITING)
+
+        wxPropertyGrid* pg = pgman->GetGrid();
+
+        // Just mostly test that these won't crash
+        pg->MakeColumnEditable(0, true);
+        pg->MakeColumnEditable(2, true);
+        pg->MakeColumnEditable(0, false);
+        pg->MakeColumnEditable(2, false);
+        pg->SelectProperty(wxT("Height"));
+        pg->BeginLabelEdit(0);
+        pg->BeginLabelEdit(0);
+        pg->EndLabelEdit(0);
+        pg->EndLabelEdit(0);
+
+        // Recreate grid
+        CreateGrid( -1, -1 );
+        pgman = m_pPropGridManager;
+    }
+
     {
         RT_START_TEST(Attributes)
 
     {
         RT_START_TEST(Attributes)
 
@@ -790,6 +892,27 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
             RT_FAILURE();
     }
 
             RT_FAILURE();
     }
 
+    {
+        RT_START_TEST(DoubleToString)
+
+        // Locale-specific decimal separator
+        wxString sep = wxString::Format("%g", 1.1)[1];
+
+        wxString s;
+
+        if ( wxPropertyGrid::DoubleToString(s, 123.123, 2, true) !=
+                wxString::Format("123%s12", sep.c_str()) )
+            RT_FAILURE();
+        if ( wxPropertyGrid::DoubleToString(s, -123.123, 4, false) !=
+                wxString::Format("-123%s1230", sep.c_str()) )
+            RT_FAILURE();
+        if ( wxPropertyGrid::DoubleToString(s, -0.02, 1, false) !=
+                wxString::Format("0%s0", sep) )
+            RT_FAILURE();
+        if ( wxPropertyGrid::DoubleToString(s, -0.000123, 3, true) != "0" )
+            RT_FAILURE();
+    }
+
     {
         wxPropertyGridPage* page1;
         wxPropertyGridPage* page2;
     {
         wxPropertyGridPage* page1;
         wxPropertyGridPage* page2;
@@ -952,13 +1075,17 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         wxPGProperty* p;
 
         wxPGProperty* origParent =
         wxPGProperty* p;
 
         wxPGProperty* origParent =
-            pgman->GetProperty(wxT("Window Styles"))->GetParent();
+            pgman->GetProperty("Window Styles")->GetParent();
 
 
-        p = pgman->RemoveProperty(wxT("Window Styles"));
+        // For testing purposes, let's set some custom cell colours
+        p = pgman->GetProperty("Window Styles");
+        p->SetCell(2, wxPGCell("style"));
+        p = pgman->RemoveProperty("Window Styles");
         pgman->Refresh();
         pgman->Update();
 
         pgman->AppendIn(origParent, p);
         pgman->Refresh();
         pgman->Update();
 
         pgman->AppendIn(origParent, p);
+        wxASSERT( p->GetCell(2).GetText() == "style");
         pgman->Refresh();
         pgman->Update();
     }
         pgman->Refresh();
         pgman->Update();
     }
@@ -1053,7 +1180,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
         InitPanel();
 
         const int trySplitterPos = 50;
         InitPanel();
 
         const int trySplitterPos = 50;
-    
+
         int style = wxPG_AUTO_SORT;  // wxPG_SPLITTER_AUTO_CENTER;
         pgman = m_pPropGridManager =
             new wxPropertyGridManager(m_panel, wxID_ANY,
         int style = wxPG_AUTO_SORT;  // wxPG_SPLITTER_AUTO_CENTER;
         pgman = m_pPropGridManager =
             new wxPropertyGridManager(m_panel, wxID_ANY,
@@ -1267,7 +1394,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
             s = wxString::Format(wxT("%i tests failed!!!"), failures);
 #ifdef __WXDEBUG__
         else
             s = wxString::Format(wxT("%i tests failed!!!"), failures);
 #ifdef __WXDEBUG__
         else
-            s = wxString::Format(wxT("All tests were succesfull, but there were %i warnings!"), wxPGGlobalVars->m_warnings);
+            s = wxString::Format(wxT("All tests were successful, but there were %i warnings!"), wxPGGlobalVars->m_warnings);
 #endif
         RT_MSG(s)
         for ( i=0; i<errorMessages.size(); i++ )
 #endif
         RT_MSG(s)
         for ( i=0; i<errorMessages.size(); i++ )
@@ -1276,7 +1403,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
     }
     else
     {
     }
     else
     {
-        RT_MSG(wxT("All tests succesfull"))
+        RT_MSG(wxT("All tests successfull"))
         retVal = true;
 
         if ( !interactive )
         retVal = true;
 
         if ( !interactive )