// Author: Jaakko Salli
// Modified by:
// Created: 2008-08-23
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#include "wx/wx.h"
#include "wx/propgrid/propgrid.h"
+#include "wx/propgrid/advprops.h"
class MyFrame : public wxFrame
{
void OnAction(wxCommandEvent& event);
void OnPropertyGridChange(wxPropertyGridEvent& event);
+ void OnPropertyGridChanging(wxPropertyGridEvent& event);
private:
wxPropertyGrid* m_pg;
DECLARE_EVENT_TABLE()
};
-//
-// Called from propgridsample.cpp
-//
-void DisplayMinimalFrame(wxWindow* parent)
-{
- MyFrame *frame = new MyFrame(parent);
- frame->Show(true);
-}
-
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(wxID_HIGHEST+1, MyFrame::OnAction)
EVT_PG_CHANGED( -1, MyFrame::OnPropertyGridChange )
+ EVT_PG_CHANGING( -1, MyFrame::OnPropertyGridChanging )
END_EVENT_TABLE()
MyFrame::MyFrame(wxWindow* parent)
wxPG_BOLD_MODIFIED );
m_pg = pg;
- for ( int i=0; i< 20; i++ )
- pg->Append(new wxStringProperty(wxString::Format(wxT("Item %i"),i), wxPG_LABEL));
-
- wxPGProperty* topId;
- wxPGProperty* medId;
- wxPGProperty* botId;
-
- topId = pg->Append( new wxStringProperty(wxT("Top Item"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(topId, true);
- medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item A"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(medId, true);
- botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(botId, true);
- pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) );
- pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) );
- medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item B"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(medId, true);
- botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(botId, true);
- pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) );
- pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) );
- medId = pg->AppendIn( topId, new wxStringProperty(wxT("Medium Level Item C"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(medId, true);
- botId = pg->AppendIn( medId, new wxStringProperty(wxT("Position"), wxPG_LABEL, wxT("<composed>")) );
- pg->LimitPropertyEditing(botId, true);
- pg->AppendIn( botId, new wxFloatProperty(wxT("x"), wxPG_LABEL, 1.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("y"), wxPG_LABEL, 2.0) );
- pg->AppendIn( botId, new wxFloatProperty(wxT("z"), wxPG_LABEL, 3.0) );
- pg->AppendIn( medId, new wxStringProperty(wxT("Name"), wxPG_LABEL, wxT("name")) );
+ pg->Append( new wxStringProperty("String Property", wxPG_LABEL) );
+ pg->Append( new wxIntProperty("Int Property", wxPG_LABEL) );
+ pg->Append( new wxBoolProperty("Bool Property", wxPG_LABEL) );
SetSize(400, 600);
}
{
wxPGProperty* p = event.GetProperty();
- wxLogDebug(wxT("OnPropertyGridChange(%s)"), p->GetName().c_str());
+ if ( p )
+ wxLogDebug("OnPropertyGridChange(%s, value=%s)",
+ p->GetName().c_str(), p->GetValueAsString().c_str());
+ else
+ wxLogDebug("OnPropertyGridChange(NULL)");
+}
- if ( p->GetBaseName() == wxT("x") )
- {
- wxLogDebug(wxT("double values=%.2f)"), m_pg->GetPropertyValueAsDouble(p));
- }
+void MyFrame::OnPropertyGridChanging(wxPropertyGridEvent &event)
+{
+ wxPGProperty* p = event.GetProperty();
+
+ wxLogDebug("OnPropertyGridChanging(%s)", p->GetName().c_str());
}
void MyFrame::OnAction(wxCommandEvent &)
{
}
+
+// Called from propgridsample.cpp
+//
+void DisplayMinimalFrame(wxWindow* parent)
+{
+ MyFrame *frame = new MyFrame(parent);
+ frame->Show(true);
+}