]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/propgrid/propgrid.cpp
use GetBoundingRect() for the in place text control positioning instead of duplicatin...
[wxWidgets.git] / samples / propgrid / propgrid.cpp
index 1c9ef397a5ca74bc071a235d2b83b8cbc88f037c..c413502b237b15ea26f825702cede3de12d2aefe 100644 (file)
@@ -651,7 +651,8 @@ enum
     ID_COLOURSCHEME2,
     ID_COLOURSCHEME3,
     ID_CATCOLOURS,
-    ID_SETCOLOUR,
+    ID_SETBGCOLOUR,
+    ID_SETBGCOLOURRECUR,
     ID_STATICLAYOUT,
     ID_POPULATE1,
     ID_POPULATE2,
@@ -726,11 +727,13 @@ BEGIN_EVENT_TABLE(FormMain, wxFrame)
     EVT_MENU( ID_DELETEALL, FormMain::OnClearClick )
     EVT_MENU( ID_ENABLE, FormMain::OnEnableDisable )
     EVT_MENU( ID_HIDE, FormMain::OnHideShow )
+
     EVT_MENU( ID_ITERATE1, FormMain::OnIterate1Click )
     EVT_MENU( ID_ITERATE2, FormMain::OnIterate2Click )
     EVT_MENU( ID_ITERATE3, FormMain::OnIterate3Click )
     EVT_MENU( ID_ITERATE4, FormMain::OnIterate4Click )
-    EVT_MENU( ID_SETCOLOUR, FormMain::OnMisc )
+    EVT_MENU( ID_SETBGCOLOUR, FormMain::OnSetBackgroundColour )
+    EVT_MENU( ID_SETBGCOLOURRECUR, FormMain::OnSetBackgroundColour )
     EVT_MENU( ID_CLEARMODIF, FormMain::OnClearModifyStatusClick )
     EVT_MENU( ID_FREEZE, FormMain::OnFreezeClick )
     EVT_MENU( ID_DUMPLIST, FormMain::OnDumpList )
@@ -1366,8 +1369,9 @@ void FormMain::PopulateWithExamples ()
 
     pg->SetPropertyEditor( wxT("SpinCtrl"), wxPGEditor_SpinCtrl );
     pg->SetPropertyAttribute( wxT("SpinCtrl"), wxPG_ATTR_MIN, (long)-10 );  // Use constants instead of string
-    pg->SetPropertyAttribute( wxT("SpinCtrl"), wxPG_ATTR_MAX, (long)10 );   // for reduced binary size.
+    pg->SetPropertyAttribute( wxT("SpinCtrl"), wxPG_ATTR_MAX, (long)16384 );   // for reduced binary size.
     pg->SetPropertyAttribute( wxT("SpinCtrl"), wxT("Step"), (long)2 );
+    pg->SetPropertyAttribute( wxT("SpinCtrl"), wxT("MotionSpin"), true );
     //pg->SetPropertyAttribute( wxT("SpinCtrl"), wxT("Wrap"), true );
 
     pg->SetPropertyHelpString( wxT("SpinCtrl"),
@@ -1589,11 +1593,13 @@ void FormMain::PopulateWithExamples ()
 
 #if wxUSE_DATEPICKCTRL
     pg->SetPropertyAttribute( wxT("DateProperty"), wxPG_DATE_PICKER_STYLE,
-                              (long)(wxDP_DROPDOWN | wxDP_SHOWCENTURY) );
+                              (long)(wxDP_DROPDOWN |
+                                     wxDP_SHOWCENTURY |
+                                     wxDP_ALLOWNONE) );
 
     pg->SetPropertyHelpString( wxT("DateProperty"),
-        wxT("Attribute wxPG_DATE_PICKER_STYLE has been set to (long)(wxDP_DROPDOWN | wxDP_SHOWCENTURY).")
-        wxT("Also note that wxPG_ALLOW_WXADV needs to be defined inorder to use wxDatePickerCtrl.") );
+        wxT("Attribute wxPG_DATE_PICKER_STYLE has been set to (long)")
+        wxT("(wxDP_DROPDOWN | wxDP_SHOWCENTURY | wxDP_ALLOWNONE).") );
 #endif
 
 #endif
@@ -1656,6 +1662,10 @@ void FormMain::PopulateWithExamples ()
                                             wxPG_LABEL,
                                             300000) );
 
+    pg->AppendIn(carProp, new wxBoolProperty(wxT("Convertible"),
+                                             wxPG_LABEL,
+                                             false) );
+
     // Displayed value of "Car" property is now very close to this:
     // "Lamborghini Diablo SV; 5707 [300; 3.9; 8.6] 300000"
 
@@ -2121,7 +2131,8 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size
     menuTools1->Append(ID_DELETER, wxT("Delete Random") );
     menuTools1->Append(ID_DELETEALL, wxT("Delete All") );
     menuTools1->AppendSeparator();
-    menuTools1->Append(ID_SETCOLOUR, wxT("Set Bg Colour") );
+    menuTools1->Append(ID_SETBGCOLOUR, wxT("Set Bg Colour") );
+    menuTools1->Append(ID_SETBGCOLOURRECUR, wxT("Set Bg Colour (Recursively)") );
     menuTools1->Append(ID_UNSPECIFY, wxT("Set to Unspecified") );
     menuTools1->AppendSeparator();
     m_itemEnable = menuTools1->Append(ID_ENABLE, wxT("Enable"),
@@ -2591,6 +2602,30 @@ void FormMain::OnHideShow( wxCommandEvent& WXUNUSED(event) )
 
 // -----------------------------------------------------------------------
 
+#include "wx/colordlg.h"
+
+void
+FormMain::OnSetBackgroundColour( wxCommandEvent& event )
+{
+    wxPropertyGrid* pg = m_pPropGridManager->GetGrid();
+    wxPGProperty* prop = pg->GetSelection();
+    if ( !prop )
+    {
+        wxMessageBox(wxT("First select a property."));
+        return;
+    }
+
+    wxColour col = ::wxGetColourFromUser(this, *wxWHITE, "Choose colour");
+
+    if ( col.IsOk() )
+    {
+        bool recursively = (event.GetId()==ID_SETBGCOLOURRECUR) ? true : false;
+        pg->SetPropertyBackgroundColour(prop, col, recursively);
+    }
+}
+
+// -----------------------------------------------------------------------
+
 void FormMain::OnInsertPage( wxCommandEvent& WXUNUSED(event) )
 {
     m_pPropGridManager->AddPage(wxT("New Page"));
@@ -3018,28 +3053,7 @@ void FormMain::OnMisc ( wxCommandEvent& event )
         if ( prop )
         {
             m_pPropGridManager->SetPropertyValueUnspecified(prop);
-        }
-    }
-    else if ( id == ID_SETCOLOUR )
-    {
-        wxPGProperty* prop = m_pPropGridManager->GetSelection();
-        if ( prop )
-        {
-            wxColourData data;
-            data.SetChooseFull(true);
-            int i;
-            for ( i = 0; i < 16; i++)
-            {
-                wxColour colour(i*16, i*16, i*16);
-                data.SetCustomColour(i, colour);
-            }
-
-            wxColourDialog dialog(this, &data);
-            if ( dialog.ShowModal() == wxID_OK )
-            {
-                wxColourData retData = dialog.GetColourData();
-                m_pPropGridManager->GetGrid()->SetPropertyBackgroundColour(prop,retData.GetColour());
-            }
+            prop->RefreshEditor();
         }
     }
 }