wxwidgets/samples/propgrid/propgrid_minimal.cpp
Vadim Zeitlin a228377b7d Don't make propgrid sample so big on startup
This doesn't look great and also doesn't work correctly in high DPI.

Instead of trying to fix it, just hard code the size of the main frame
and also apply FromDIP() to the size of the child frame.
2024-01-30 01:55:14 +01:00

92 lines
2.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: samples/propgrid/propgrid_minimal.cpp
// Purpose: Minimal portion of wxPropertyGrid sample
// Author: Jaakko Salli
// Created: 2008-08-23
// Copyright: (c) Jaakko Salli
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wx.h"
#include "wx/propgrid/propgrid.h"
#include "wx/propgrid/advprops.h"
class MyFrame : public wxFrame
{
public:
MyFrame(wxWindow* parent);
void OnAction(wxCommandEvent& event);
void OnPropertyGridChange(wxPropertyGridEvent& event);
void OnPropertyGridChanging(wxPropertyGridEvent& event);
private:
wxPropertyGrid* m_pg;
wxDECLARE_EVENT_TABLE();
};
enum
{
ID_ACTION = wxID_HIGHEST
};
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_ACTION, MyFrame::OnAction)
EVT_PG_CHANGED( -1, MyFrame::OnPropertyGridChange )
EVT_PG_CHANGING( -1, MyFrame::OnPropertyGridChanging )
wxEND_EVENT_TABLE()
MyFrame::MyFrame(wxWindow* parent)
: wxFrame(parent, wxID_ANY, "PropertyGrid Test")
{
wxMenu *Menu = new wxMenu;
Menu->Append(ID_ACTION, "Action");
wxMenuBar *MenuBar = new wxMenuBar();
MenuBar->Append(Menu, "Action");
SetMenuBar(MenuBar);
wxPropertyGrid *pg = new wxPropertyGrid(this,wxID_ANY,wxDefaultPosition,wxSize(400,400),
wxPG_SPLITTER_AUTO_CENTER |
wxPG_BOLD_MODIFIED );
m_pg = pg;
pg->Append( new wxStringProperty("String Property", wxPG_LABEL) );
pg->Append( new wxIntProperty("Int Property", wxPG_LABEL) );
pg->Append( new wxBoolProperty("Bool Property", wxPG_LABEL) );
SetClientSize(FromDIP(wxSize(400, 300)));
}
void MyFrame::OnPropertyGridChange(wxPropertyGridEvent &event)
{
wxPGProperty* p = event.GetProperty();
if ( p )
{
wxLogVerbose("OnPropertyGridChange(%s, value=%s)",
p->GetName(), p->GetValueAsString());
}
else
{
wxLogVerbose("OnPropertyGridChange(nullptr)");
}
}
void MyFrame::OnPropertyGridChanging(wxPropertyGridEvent &event)
{
wxPGProperty* p = event.GetProperty();
wxLogVerbose("OnPropertyGridChanging(%s)", p->GetName());
}
void MyFrame::OnAction(wxCommandEvent &)
{
}
// Called from propgridsample.cpp
//
void DisplayMinimalFrame(wxWindow* parent)
{
MyFrame *frame = new MyFrame(parent);
frame->Show(true);
}