Refactor propgrid sample
Simplify implementation by creating panel and sizer holding wxPG instance only once in FormMain ctor.
This commit is contained in:
@@ -1822,45 +1822,6 @@ wxEND_EVENT_TABLE()
|
|||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
void FormMain::InitPanel()
|
|
||||||
{
|
|
||||||
if ( m_panel )
|
|
||||||
m_panel->Destroy();
|
|
||||||
|
|
||||||
wxWindow* panel = new wxPanel(this, wxID_ANY,
|
|
||||||
wxPoint(0, 0), wxSize(400, 400),
|
|
||||||
wxTAB_TRAVERSAL);
|
|
||||||
m_panel = panel;
|
|
||||||
|
|
||||||
// Column
|
|
||||||
wxBoxSizer* topSizer = new wxBoxSizer ( wxVERTICAL );
|
|
||||||
|
|
||||||
m_topSizer = topSizer;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FormMain::FinalizePanel( bool wasCreated )
|
|
||||||
{
|
|
||||||
// Button for tab traversal testing
|
|
||||||
m_topSizer->Add( new wxButton(m_panel, wxID_ANY,
|
|
||||||
"Should be able to move here with Tab"),
|
|
||||||
wxSizerFlags(0).Expand());
|
|
||||||
m_topSizer->Add( new wxButton(m_panel, ID_SHOWPOPUP,
|
|
||||||
"Show Popup"),
|
|
||||||
wxSizerFlags(0).Expand());
|
|
||||||
|
|
||||||
m_panel->SetSizer( m_topSizer );
|
|
||||||
m_topSizer->SetSizeHints( m_panel );
|
|
||||||
|
|
||||||
wxBoxSizer* panelSizer = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
panelSizer->Add( m_panel, wxSizerFlags(1).Expand().FixedMinSize());
|
|
||||||
|
|
||||||
SetSizer( panelSizer );
|
|
||||||
panelSizer->SetSizeHints( this );
|
|
||||||
|
|
||||||
if ( wasCreated )
|
|
||||||
FinalizeFramePosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FormMain::PopulateGrid()
|
void FormMain::PopulateGrid()
|
||||||
{
|
{
|
||||||
wxPropertyGridManager* pgman = m_pPropGridManager;
|
wxPropertyGridManager* pgman = m_pPropGridManager;
|
||||||
@@ -1911,10 +1872,6 @@ void FormMain::CreateGrid( int style, int extraStyle )
|
|||||||
//| wxPG_EX_GREY_LABEL_WHEN_DISABLED
|
//| wxPG_EX_GREY_LABEL_WHEN_DISABLED
|
||||||
//| wxPG_EX_HELP_AS_TOOLTIPS
|
//| wxPG_EX_HELP_AS_TOOLTIPS
|
||||||
|
|
||||||
bool wasCreated = m_panel ? false : true;
|
|
||||||
|
|
||||||
InitPanel();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// This shows how to combine two static choice descriptors
|
// This shows how to combine two static choice descriptors
|
||||||
m_combinedFlags.Add( WXSIZEOF(_fs_windowstyle_labels), _fs_windowstyle_labels, _fs_windowstyle_values );
|
m_combinedFlags.Add( WXSIZEOF(_fs_windowstyle_labels), _fs_windowstyle_labels, _fs_windowstyle_values );
|
||||||
@@ -1960,10 +1917,17 @@ void FormMain::CreateGrid( int style, int extraStyle )
|
|||||||
|
|
||||||
//m_pPropGridManager->SetSplitterLeft(true);
|
//m_pPropGridManager->SetSplitterLeft(true);
|
||||||
//m_pPropGridManager->SetSplitterPosition(137);
|
//m_pPropGridManager->SetSplitterPosition(137);
|
||||||
|
}
|
||||||
|
|
||||||
m_topSizer->Add( m_pPropGridManager, wxSizerFlags(1).Expand());
|
void FormMain::ReplaceGrid(int style, int extraStyle)
|
||||||
|
{
|
||||||
|
wxPropertyGridManager* pgmanOld = m_pPropGridManager;
|
||||||
|
CreateGrid(style, extraStyle);
|
||||||
|
m_topSizer->Replace(pgmanOld, m_pPropGridManager);
|
||||||
|
pgmanOld->Destroy();
|
||||||
|
m_pPropGridManager->SetFocus();
|
||||||
|
|
||||||
FinalizePanel(wasCreated);
|
m_panel->Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
@@ -1976,7 +1940,7 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size
|
|||||||
SetIcon(wxICON(sample));
|
SetIcon(wxICON(sample));
|
||||||
|
|
||||||
m_propGrid = NULL;
|
m_propGrid = NULL;
|
||||||
m_panel = NULL;
|
m_pPropGridManager = NULL;
|
||||||
m_hasHeader = false;
|
m_hasHeader = false;
|
||||||
m_labelEditingEnabled = false;
|
m_labelEditingEnabled = false;
|
||||||
|
|
||||||
@@ -1991,34 +1955,6 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size
|
|||||||
wxInitAllImageHandlers();
|
wxInitAllImageHandlers();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Register all editors (SpinCtrl etc.)
|
|
||||||
wxPropertyGridInterface::RegisterAdditionalEditors();
|
|
||||||
|
|
||||||
// Register our sample custom editors
|
|
||||||
m_pSampleMultiButtonEditor =
|
|
||||||
wxPropertyGrid::RegisterEditorClass(new wxSampleMultiButtonEditor());
|
|
||||||
|
|
||||||
CreateGrid( // style
|
|
||||||
wxPG_BOLD_MODIFIED |
|
|
||||||
wxPG_SPLITTER_AUTO_CENTER |
|
|
||||||
wxPG_AUTO_SORT |
|
|
||||||
//wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER |
|
|
||||||
//wxPG_TOOLTIPS |
|
|
||||||
//wxPG_HIDE_CATEGORIES |
|
|
||||||
//wxPG_LIMITED_EDITING |
|
|
||||||
wxPG_TOOLBAR |
|
|
||||||
wxPG_DESCRIPTION,
|
|
||||||
// extra style
|
|
||||||
#if wxALWAYS_NATIVE_DOUBLE_BUFFER
|
|
||||||
wxPG_EX_NATIVE_DOUBLE_BUFFERING |
|
|
||||||
#endif // wxALWAYS_NATIVE_DOUBLE_BUFFER
|
|
||||||
wxPG_EX_MODE_BUTTONS |
|
|
||||||
wxPG_EX_MULTIPLE_SELECTION
|
|
||||||
//| wxPG_EX_AUTO_UNSPECIFIED_VALUES
|
|
||||||
//| wxPG_EX_GREY_LABEL_WHEN_DISABLED
|
|
||||||
//| wxPG_EX_HELP_AS_TOOLTIPS
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create menu bar
|
// Create menu bar
|
||||||
wxMenu *menuFile = new wxMenu(wxEmptyString, wxMENU_TEAROFF);
|
wxMenu *menuFile = new wxMenu(wxEmptyString, wxMENU_TEAROFF);
|
||||||
@@ -2150,6 +2086,53 @@ FormMain::FormMain(const wxString& title, const wxPoint& pos, const wxSize& size
|
|||||||
SetStatusText(wxEmptyString);
|
SetStatusText(wxEmptyString);
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
|
// Register all editors (SpinCtrl etc.)
|
||||||
|
wxPropertyGridInterface::RegisterAdditionalEditors();
|
||||||
|
|
||||||
|
// Register our sample custom editors
|
||||||
|
m_pSampleMultiButtonEditor =
|
||||||
|
wxPropertyGrid::RegisterEditorClass(new wxSampleMultiButtonEditor());
|
||||||
|
|
||||||
|
m_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
|
|
||||||
|
CreateGrid( // style
|
||||||
|
wxPG_BOLD_MODIFIED |
|
||||||
|
wxPG_SPLITTER_AUTO_CENTER |
|
||||||
|
wxPG_AUTO_SORT |
|
||||||
|
//wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER |
|
||||||
|
//wxPG_TOOLTIPS |
|
||||||
|
//wxPG_HIDE_CATEGORIES |
|
||||||
|
//wxPG_LIMITED_EDITING |
|
||||||
|
wxPG_TOOLBAR |
|
||||||
|
wxPG_DESCRIPTION,
|
||||||
|
// extra style
|
||||||
|
#if wxALWAYS_NATIVE_DOUBLE_BUFFER
|
||||||
|
wxPG_EX_NATIVE_DOUBLE_BUFFERING |
|
||||||
|
#endif // wxALWAYS_NATIVE_DOUBLE_BUFFER
|
||||||
|
wxPG_EX_MODE_BUTTONS |
|
||||||
|
wxPG_EX_MULTIPLE_SELECTION
|
||||||
|
//| wxPG_EX_AUTO_UNSPECIFIED_VALUES
|
||||||
|
//| wxPG_EX_GREY_LABEL_WHEN_DISABLED
|
||||||
|
//| wxPG_EX_HELP_AS_TOOLTIPS
|
||||||
|
);
|
||||||
|
|
||||||
|
m_topSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
m_topSizer->Add(m_pPropGridManager, wxSizerFlags(1).Expand());
|
||||||
|
|
||||||
|
// Button for tab traversal testing
|
||||||
|
m_topSizer->Add(new wxButton(m_panel, wxID_ANY,
|
||||||
|
"Should be able to move here with Tab"),
|
||||||
|
wxSizerFlags(0).Expand());
|
||||||
|
m_topSizer->Add(new wxButton(m_panel, ID_SHOWPOPUP,
|
||||||
|
"Show Popup"),
|
||||||
|
wxSizerFlags(0).Expand());
|
||||||
|
|
||||||
|
m_panel->SetSizer(m_topSizer);
|
||||||
|
m_topSizer->SetSizeHints(m_panel);
|
||||||
|
|
||||||
|
m_panel->Layout();
|
||||||
|
|
||||||
FinalizeFramePosition();
|
FinalizeFramePosition();
|
||||||
|
|
||||||
#if wxUSE_LOGWINDOW
|
#if wxUSE_LOGWINDOW
|
||||||
@@ -2933,9 +2916,7 @@ void FormMain::OnSelectStyle( wxCommandEvent& WXUNUSED(event) )
|
|||||||
extraStyle = flags;
|
extraStyle = flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateGrid( style, extraStyle );
|
ReplaceGrid( style, extraStyle );
|
||||||
|
|
||||||
FinalizeFramePosition();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
@@ -158,13 +158,12 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
void CreateGrid( int style, int extraStyle );
|
void CreateGrid( int style, int extraStyle );
|
||||||
|
void ReplaceGrid(int style, int extraStyle);
|
||||||
void FinalizeFramePosition();
|
void FinalizeFramePosition();
|
||||||
|
|
||||||
// These are used in CreateGrid(), and in tests to compose
|
// These are used in CreateGrid(), and in tests to compose
|
||||||
// grids for testing purposes.
|
// grids for testing purposes.
|
||||||
void InitPanel();
|
|
||||||
void PopulateGrid();
|
void PopulateGrid();
|
||||||
void FinalizePanel( bool wasCreated = true );
|
|
||||||
|
|
||||||
void PopulateWithStandardItems();
|
void PopulateWithStandardItems();
|
||||||
void PopulateWithExamples();
|
void PopulateWithExamples();
|
||||||
|
@@ -482,7 +482,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recreate grid
|
// Recreate grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -502,7 +502,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recreate grid
|
// Recreate grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,7 +812,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
// Test multiple selection
|
// Test multiple selection
|
||||||
RT_START_TEST(MULTIPLE_SELECTION)
|
RT_START_TEST(MULTIPLE_SELECTION)
|
||||||
if ( !(pgman->GetExtraStyle() & wxPG_EX_MULTIPLE_SELECTION) )
|
if ( !(pgman->GetExtraStyle() & wxPG_EX_MULTIPLE_SELECTION) )
|
||||||
CreateGrid( -1, wxPG_EX_MULTIPLE_SELECTION);
|
ReplaceGrid( -1, wxPG_EX_MULTIPLE_SELECTION);
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
|
|
||||||
pg = pgman->GetGrid();
|
pg = pgman->GetGrid();
|
||||||
@@ -942,7 +942,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
pg->EndLabelEdit(0);
|
pg->EndLabelEdit(0);
|
||||||
|
|
||||||
// Recreate grid
|
// Recreate grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1231,7 +1231,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
enumProp->DeleteChoice(ind);
|
enumProp->DeleteChoice(ind);
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1364,7 +1364,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
RT_FAILURE();
|
RT_FAILURE();
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
|
|
||||||
// Grid clear
|
// Grid clear
|
||||||
@@ -1375,33 +1375,24 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
RT_FAILURE();
|
RT_FAILURE();
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
RT_START_TEST(SetSplitterPosition)
|
RT_START_TEST(SetSplitterPosition)
|
||||||
|
|
||||||
InitPanel();
|
|
||||||
|
|
||||||
const int trySplitterPos = 50;
|
const int trySplitterPos = 50;
|
||||||
|
|
||||||
int style = wxPG_AUTO_SORT; // wxPG_SPLITTER_AUTO_CENTER;
|
int style = wxPG_AUTO_SORT; // wxPG_SPLITTER_AUTO_CENTER;
|
||||||
pgman = m_pPropGridManager =
|
ReplaceGrid(style, -1);
|
||||||
new wxPropertyGridManager(m_panel, wxID_ANY,
|
pgman = m_pPropGridManager;
|
||||||
wxDefaultPosition,
|
|
||||||
wxDefaultSize,
|
|
||||||
style );
|
|
||||||
|
|
||||||
PopulateGrid();
|
|
||||||
pgman->SetSplitterPosition(trySplitterPos);
|
pgman->SetSplitterPosition(trySplitterPos);
|
||||||
|
|
||||||
if ( pgman->GetGrid()->GetSplitterPosition() != trySplitterPos )
|
if ( pgman->GetGrid()->GetSplitterPosition() != trySplitterPos )
|
||||||
RT_FAILURE_MSG(wxString::Format("Splitter position was %i (should have been %i)",(int)pgman->GetGrid()->GetSplitterPosition(),trySplitterPos));
|
RT_FAILURE_MSG(wxString::Format("Splitter position was %i (should have been %i)",(int)pgman->GetGrid()->GetSplitterPosition(),trySplitterPos));
|
||||||
|
|
||||||
m_topSizer->Add( m_pPropGridManager, wxSizerFlags(1).Expand());
|
|
||||||
FinalizePanel();
|
|
||||||
|
|
||||||
wxSize origSz = GetSize();
|
wxSize origSz = GetSize();
|
||||||
|
|
||||||
wxSize sz = origSz;
|
wxSize sz = origSz;
|
||||||
@@ -1414,7 +1405,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
SetSize(origSz);
|
SetSize(origSz);
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1525,7 +1516,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1773,7 +1764,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
RT_START_TEST(MultipleColumns)
|
RT_START_TEST(MultipleColumns)
|
||||||
|
|
||||||
// Test with multiple columns
|
// Test with multiple columns
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
FinalizeFramePosition();
|
FinalizeFramePosition();
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
for ( i=3; i<12; i+=2 )
|
for ( i=3; i<12; i+=2 )
|
||||||
@@ -1797,7 +1788,7 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
{
|
{
|
||||||
int flag = 1<<i;
|
int flag = 1<<i;
|
||||||
RT_MSG(wxString::Format("Style: 0x%X",flag));
|
RT_MSG(wxString::Format("Style: 0x%X",flag));
|
||||||
CreateGrid( flag, -1 );
|
ReplaceGrid( flag, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
Update();
|
Update();
|
||||||
wxMilliSleep(500);
|
wxMilliSleep(500);
|
||||||
@@ -1809,14 +1800,14 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
|||||||
{
|
{
|
||||||
int flag = 1<<i;
|
int flag = 1<<i;
|
||||||
RT_MSG(wxString::Format("ExStyle: 0x%X",flag));
|
RT_MSG(wxString::Format("ExStyle: 0x%X",flag));
|
||||||
CreateGrid( -1, flag );
|
ReplaceGrid( -1, flag );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
Update();
|
Update();
|
||||||
wxMilliSleep(500);
|
wxMilliSleep(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recreate the original grid
|
// Recreate the original grid
|
||||||
CreateGrid( -1, -1 );
|
ReplaceGrid( -1, -1 );
|
||||||
pgman = m_pPropGridManager;
|
pgman = m_pPropGridManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user