]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/propgrid/propgrid.cpp
Use template class instead of template function in wxVectorSort().
[wxWidgets.git] / samples / propgrid / propgrid.cpp
index 1762bbfa8a3572971b04e288d5930889951a91d9..b546314ab4f83a61f3e8ba8bbcf5bd7c6dda7dc2 100644 (file)
@@ -644,6 +644,7 @@ enum
     ID_INSERTPROP,
     ID_INSERTCAT,
     ID_ENABLE,
+    ID_SETREADONLY,
     ID_HIDE,
     ID_DELETE,
     ID_DELETER,
@@ -748,7 +749,8 @@ BEGIN_EVENT_TABLE(FormMain, wxFrame)
     EVT_MENU( ID_UNSPECIFY, FormMain::OnMisc )
     EVT_MENU( ID_DELETEALL, FormMain::OnClearClick )
     EVT_MENU( ID_ENABLE, FormMain::OnEnableDisable )
-    EVT_MENU( ID_HIDE, FormMain::OnHideShow )
+    EVT_MENU( ID_SETREADONLY, FormMain::OnSetReadOnly )
+    EVT_MENU( ID_HIDE, FormMain::OnHide )
 
     EVT_MENU( ID_ITERATE1, FormMain::OnIterate1Click )
     EVT_MENU( ID_ITERATE2, FormMain::OnIterate2Click )
@@ -1843,6 +1845,15 @@ void FormMain::PopulateWithLibraryConfig ()
     wxPropertyGridManager* pgman = m_pPropGridManager;
     wxPropertyGridPage* pg = pgman->GetPage(wxT("wxWidgets Library Config"));
 
+    // Set custom column proportions (here in the sample app we need
+    // to check if the grid has wxPG_SPLITTER_AUTO_CENTER style. You usually
+    // need not to do it in your application).
+    if ( pgman->HasFlag(wxPG_SPLITTER_AUTO_CENTER) )
+    {
+        pg->SetColumnProportion(0, 3);
+        pg->SetColumnProportion(1, 1);
+    }
+
     wxPGProperty* cat;
 
     wxBitmap bmp = wxArtProvider::GetBitmap(wxART_REPORT_VIEW);
@@ -2283,7 +2294,9 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size
     m_itemEnable = menuTools1->Append(ID_ENABLE, wxT("Enable"),
         wxT("Toggles item's enabled state.") );
     m_itemEnable->Enable( FALSE );
-    menuTools1->Append(ID_HIDE, wxT("Hide"), wxT("Shows or hides a property") );
+    menuTools1->Append(ID_HIDE, "Hide", "Hides a property" );
+    menuTools1->Append(ID_SETREADONLY, "Set as Read-Only",
+                       "Set property as read-only" );
 
     menuTools2->Append(ID_ITERATE1, wxT("Iterate Over Properties") );
     menuTools2->Append(ID_ITERATE2, wxT("Iterate Over Visible Items") );
@@ -2731,36 +2744,29 @@ void FormMain::OnEnableDisable( wxCommandEvent& )
 
 // -----------------------------------------------------------------------
 
-void FormMain::OnHideShow( wxCommandEvent& WXUNUSED(event) )
+void FormMain::OnSetReadOnly( wxCommandEvent& WXUNUSED(event) )
 {
-    wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection();
-    if ( !id )
+    wxPGProperty* p = m_pPropGridManager->GetGrid()->GetSelection();
+    if ( !p )
     {
         wxMessageBox(wxT("First select a property."));
         return;
     }
+    m_pPropGridManager->SetPropertyReadOnly(p);
+}
 
-    if ( m_pPropGridManager->IsPropertyShown( id ) )
-    {
-        m_pPropGridManager->HideProperty( id, true );
-        m_itemEnable->SetItemLabel( wxT("Show") );
-    }
-    else
-    {
-        m_pPropGridManager->HideProperty( id, false );
-        m_itemEnable->SetItemLabel( wxT("Hide") );
-    }
-
-    wxPropertyGridPage* curPage = m_pPropGridManager->GetCurrentPage();
-
-    // Check for bottomY precalculation validity
-    unsigned int byPre = curPage->GetVirtualHeight();
-    unsigned int byAct = curPage->GetActualVirtualHeight();
+// -----------------------------------------------------------------------
 
-    if ( byPre != byAct )
+void FormMain::OnHide( wxCommandEvent& WXUNUSED(event) )
+{
+    wxPGProperty* id = m_pPropGridManager->GetGrid()->GetSelection();
+    if ( !id )
     {
-        wxLogDebug(wxT("VirtualHeight is %u, should be %u"), byPre, byAct);
+        wxMessageBox(wxT("First select a property."));
+        return;
     }
+
+    m_pPropGridManager->HideProperty( id, true );
 }
 
 // -----------------------------------------------------------------------