add support for persistent controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -51,6 +51,9 @@
 | 
			
		||||
#include "wx/imaglist.h"
 | 
			
		||||
#include "wx/wupdlock.h"
 | 
			
		||||
 | 
			
		||||
#include "wx/persist/toplevel.h"
 | 
			
		||||
#include "wx/persist/treebook.h"
 | 
			
		||||
 | 
			
		||||
#include "widgets.h"
 | 
			
		||||
 | 
			
		||||
#include "../sample.xpm"
 | 
			
		||||
@@ -325,6 +328,8 @@ bool WidgetsApp::OnInit()
 | 
			
		||||
    if ( !wxApp::OnInit() )
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    SetVendorName("wxWidgets_Samples");
 | 
			
		||||
 | 
			
		||||
    // the reason for having these ifdef's is that I often run two copies of
 | 
			
		||||
    // this sample side by side and it is useful to see which one is which
 | 
			
		||||
    wxString title;
 | 
			
		||||
@@ -351,10 +356,6 @@ bool WidgetsApp::OnInit()
 | 
			
		||||
    wxFrame *frame = new WidgetsFrame(title + _T(" widgets demo"));
 | 
			
		||||
    frame->Show();
 | 
			
		||||
 | 
			
		||||
    //wxLog::AddTraceMask(_T("listbox"));
 | 
			
		||||
    //wxLog::AddTraceMask(_T("scrollbar"));
 | 
			
		||||
    //wxLog::AddTraceMask(_T("focus"));
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -365,15 +366,18 @@ bool WidgetsApp::OnInit()
 | 
			
		||||
WidgetsFrame::WidgetsFrame(const wxString& title)
 | 
			
		||||
            : wxFrame(NULL, wxID_ANY, title)
 | 
			
		||||
{
 | 
			
		||||
    SetName("Main");
 | 
			
		||||
    const bool sizeSet = wxPersistenceManager::Get().RegisterAndRestore(this);
 | 
			
		||||
 | 
			
		||||
    // set the frame icon
 | 
			
		||||
    SetIcon(wxICON(sample));
 | 
			
		||||
 | 
			
		||||
    // init everything
 | 
			
		||||
#if USE_LOG
 | 
			
		||||
    m_lboxLog = (wxListBox *)NULL;
 | 
			
		||||
    m_logTarget = (wxLog *)NULL;
 | 
			
		||||
    m_lboxLog = NULL;
 | 
			
		||||
    m_logTarget = NULL;
 | 
			
		||||
#endif // USE_LOG
 | 
			
		||||
    m_book = (WidgetsBookCtrl *)NULL;
 | 
			
		||||
    m_book = NULL;
 | 
			
		||||
 | 
			
		||||
#if wxUSE_MENUS
 | 
			
		||||
    // create the menubar
 | 
			
		||||
@@ -435,13 +439,10 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
 | 
			
		||||
    // Uncomment to suppress page theme (draw in solid colour)
 | 
			
		||||
    //style |= wxNB_NOPAGETHEME;
 | 
			
		||||
 | 
			
		||||
    m_book = new WidgetsBookCtrl(m_panel, Widgets_BookCtrl, wxDefaultPosition,
 | 
			
		||||
#ifdef __WXMOTIF__
 | 
			
		||||
        wxSize(500, wxDefaultCoord), // under Motif, height is a function of the width...
 | 
			
		||||
#else
 | 
			
		||||
        wxDefaultSize,
 | 
			
		||||
#endif
 | 
			
		||||
        style);
 | 
			
		||||
    m_book = new WidgetsBookCtrl(m_panel, Widgets_BookCtrl,
 | 
			
		||||
                                 wxDefaultPosition, wxDefaultSize,
 | 
			
		||||
                                 style, "Widgets");
 | 
			
		||||
 | 
			
		||||
    InitBook();
 | 
			
		||||
 | 
			
		||||
#ifndef __WXHANDHELD__
 | 
			
		||||
@@ -482,7 +483,10 @@ WidgetsFrame::WidgetsFrame(const wxString& title)
 | 
			
		||||
 | 
			
		||||
    m_panel->SetSizer(sizerTop);
 | 
			
		||||
 | 
			
		||||
    sizerTop->SetSizeHints(this);
 | 
			
		||||
    const wxSize sizeMin = m_panel->GetBestSize();
 | 
			
		||||
    if ( !sizeSet )
 | 
			
		||||
        SetClientSize(sizeMin);
 | 
			
		||||
    SetMinClientSize(sizeMin);
 | 
			
		||||
 | 
			
		||||
#if USE_LOG && !defined(__WXCOCOA__)
 | 
			
		||||
    // wxCocoa's listbox is too flakey to use for logging right now
 | 
			
		||||
@@ -613,10 +617,13 @@ void WidgetsFrame::InitBook()
 | 
			
		||||
             wxEVT_COMMAND_WIDGETS_PAGE_CHANGED,
 | 
			
		||||
             wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) );
 | 
			
		||||
 | 
			
		||||
    const bool pageSet = wxPersistenceManager::Get().RegisterAndRestore(m_book);
 | 
			
		||||
 | 
			
		||||
#if USE_TREEBOOK
 | 
			
		||||
    // for treebook page #0 is empty parent page only so select the first page
 | 
			
		||||
    // with some contents
 | 
			
		||||
    m_book->SetSelection(1);
 | 
			
		||||
    if ( !pageSet )
 | 
			
		||||
        m_book->SetSelection(1);
 | 
			
		||||
 | 
			
		||||
    // but ensure that the top of the tree is shown nevertheless
 | 
			
		||||
    wxTreeCtrl * const tree = m_book->GetTreeCtrl();
 | 
			
		||||
@@ -624,10 +631,13 @@ void WidgetsFrame::InitBook()
 | 
			
		||||
    wxTreeItemIdValue cookie;
 | 
			
		||||
    tree->EnsureVisible(tree->GetFirstChild(tree->GetRootItem(), cookie));
 | 
			
		||||
#else
 | 
			
		||||
    // for other books set selection twice to force connected event handler
 | 
			
		||||
    // to force lazy creation of initial visible content
 | 
			
		||||
    m_book->SetSelection(1);
 | 
			
		||||
    m_book->SetSelection(0);
 | 
			
		||||
    if ( !pageSet )
 | 
			
		||||
    {
 | 
			
		||||
        // for other books set selection twice to force connected event handler
 | 
			
		||||
        // to force lazy creation of initial visible content
 | 
			
		||||
        m_book->SetSelection(1);
 | 
			
		||||
        m_book->SetSelection(0);
 | 
			
		||||
    }
 | 
			
		||||
#endif // USE_TREEBOOK
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user