/////////////////////////////////////////////////////////////////////////////
-// Program: wxWindows Widgets Sample
+// Program: wxWidgets Widgets Sample
// Name: notebook.cpp
// Purpose: Part of the widgets sample showing wxNotebook
// Author: Vadim Zeitlin
#pragma hdrstop
#endif
+#if wxUSE_NOTEBOOK
+
// for all others, include the necessary headers
#ifndef WX_PRECOMP
#include "wx/app.h"
#include "wx/artprov.h"
#include "widgets.h"
-#if 1
#include "icons/notebook.xpm"
// ----------------------------------------------------------------------------
Orient_Max
};
-// old versions of wxWindows don't define this style
-#ifndef wxNB_TOP
- #define wxNB_TOP (0)
-#endif
-
// ----------------------------------------------------------------------------
// NotebookWidgetsPage
// ----------------------------------------------------------------------------
class NotebookWidgetsPage : public WidgetsPage
{
public:
- NotebookWidgetsPage(wxNotebook *notebook, wxImageList *imaglist);
+ NotebookWidgetsPage(wxBookCtrlBase *book, wxImageList *imaglist);
virtual ~NotebookWidgetsPage();
+ virtual wxControl *GetWidget() const { return m_notebook; }
+ virtual void RecreateWidget() { CreateNotebook(); }
+
protected:
// event handlers
void OnPageChanging(wxNotebookEvent& event);
// is the value in range?
bool IsValidValue(int val) const
- { return (val >= 0) && (val < m_notebook->GetPageCount()); }
+ { return (val >= 0) && (val < (int) m_notebook->GetPageCount()); }
// the controls
// ------------
EVT_UPDATE_UI(NotebookPage_InsertPage, NotebookWidgetsPage::OnUpdateUIInsertButton)
EVT_UPDATE_UI(NotebookPage_RemovePage, NotebookWidgetsPage::OnUpdateUIRemoveButton)
- EVT_NOTEBOOK_PAGE_CHANGING(-1, NotebookWidgetsPage::OnPageChanging)
- EVT_NOTEBOOK_PAGE_CHANGED(-1, NotebookWidgetsPage::OnPageChanged)
+ EVT_NOTEBOOK_PAGE_CHANGING(wxID_ANY, NotebookWidgetsPage::OnPageChanging)
+ EVT_NOTEBOOK_PAGE_CHANGED(wxID_ANY, NotebookWidgetsPage::OnPageChanged)
- EVT_CHECKBOX(-1, NotebookWidgetsPage::OnCheckOrRadioBox)
- EVT_RADIOBOX(-1, NotebookWidgetsPage::OnCheckOrRadioBox)
+ EVT_CHECKBOX(wxID_ANY, NotebookWidgetsPage::OnCheckOrRadioBox)
+ EVT_RADIOBOX(wxID_ANY, NotebookWidgetsPage::OnCheckOrRadioBox)
END_EVENT_TABLE()
// ============================================================================
IMPLEMENT_WIDGETS_PAGE(NotebookWidgetsPage, _T("Notebook"));
-NotebookWidgetsPage::NotebookWidgetsPage(wxNotebook *notebook,
+NotebookWidgetsPage::NotebookWidgetsPage(wxBookCtrlBase *book,
wxImageList *imaglist)
- : WidgetsPage(notebook)
+ : WidgetsPage(book)
{
imaglist->Add(wxBitmap(notebook_xpm));
wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
// left pane
- wxStaticBox *box = new wxStaticBox(this, -1, _T("&Set style"));
+ wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style"));
// must be in sync with Orient enum
- wxString orientations[] =
- {
- _T("&top"),
- _T("&bottom"),
- _T("&left"),
- _T("&right"),
- };
+ wxArrayString orientations;
+ orientations.Add(_T("&top"));
+ orientations.Add(_T("&bottom"));
+ orientations.Add(_T("&left"));
+ orientations.Add(_T("&right"));
- wxASSERT_MSG( WXSIZEOF(orientations) == Orient_Max,
+ wxASSERT_MSG( orientations.GetCount() == Orient_Max,
_T("forgot to update something") );
- m_chkImages = new wxCheckBox(this, -1, _T("Show &images"));
- m_radioOrient = new wxRadioBox(this, -1, _T("&Tab orientation"),
+ m_chkImages = new wxCheckBox(this, wxID_ANY, _T("Show &images"));
+ m_radioOrient = new wxRadioBox(this, wxID_ANY, _T("&Tab orientation"),
wxDefaultPosition, wxDefaultSize,
- WXSIZEOF(orientations), orientations,
- 1, wxRA_SPECIFY_COLS);
+ orientations, 1, wxRA_SPECIFY_COLS);
wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL);
sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
// middle pane
- wxStaticBox *box2 = new wxStaticBox(this, -1, _T("&Contents"));
+ wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, _T("&Contents"));
wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL);
wxTextCtrl *text;
wxSizer *sizerRow = CreateSizerWithTextAndLabel(_T("Number of pages: "),
NotebookPage_NumPagesText,
&text);
- text->SetEditable(FALSE);
+ text->SetEditable(false);
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
sizerRow = CreateSizerWithTextAndLabel(_T("Current selection: "),
NotebookPage_CurSelectText,
&text);
- text->SetEditable(FALSE);
+ text->SetEditable(false);
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
sizerRow = CreateSizerWithTextAndButton(NotebookPage_SelectPage,
Reset();
CreateImageList();
- SetAutoLayout(TRUE);
SetSizer(sizerTop);
sizerTop->Fit(this);
void NotebookWidgetsPage::Reset()
{
- m_chkImages->SetValue(TRUE);
+ m_chkImages->SetValue(true);
m_radioOrient->SetSelection(Orient_Top);
}
void NotebookWidgetsPage::CreateNotebook()
{
- int flags;
+ int flags = ms_defaultFlags;
switch ( m_radioOrient->GetSelection() )
{
default:
- wxFAIL_MSG( _T("unknown notebok orientation") );
+ wxFAIL_MSG( _T("unknown notebook orientation") );
// fall through
case Orient_Top:
- flags = wxNB_TOP;
+ flags |= wxBK_TOP;
break;
case Orient_Bottom:
- flags = wxNB_BOTTOM;
+ flags |= wxBK_BOTTOM;
break;
case Orient_Left:
- flags = wxNB_LEFT;
+ flags |= wxBK_LEFT;
break;
case Orient_Right:
- flags = wxNB_RIGHT;
+ flags |= wxBK_RIGHT;
break;
}
- wxNotebook *notebook = m_notebook;
+ wxNotebook *old_note = m_notebook;
m_notebook = new wxNotebook(this, NotebookPage_Notebook,
wxDefaultPosition, wxDefaultSize,
CreateImageList();
- if ( notebook )
+ if ( old_note )
{
- const int sel = notebook->GetSelection();
+ const int sel = old_note->GetSelection();
- const int count = notebook->GetPageCount();
+ const int count = old_note->GetPageCount();
// recreate the pages
for ( int n = 0; n < count; n++ )
{
m_notebook->AddPage(CreateNewPage(),
- notebook->GetPageText(n),
- FALSE,
- notebook->GetPageImage(n));
+ old_note->GetPageText(n),
+ false,
+ m_chkImages->GetValue() ?
+ GetIconIndex() : -1);
}
- m_sizerNotebook->Remove(notebook);
- delete notebook;
+ m_sizerNotebook->Detach( old_note );
+ delete old_note;
// restore selection
if ( sel != -1 )
wxWindow *NotebookWidgetsPage::CreateNewPage()
{
- return new wxTextCtrl(m_notebook, -1, _T("I'm a notebook page"));
+ return new wxTextCtrl(m_notebook, wxID_ANY, _T("I'm a notebook page"));
}
// ----------------------------------------------------------------------------
m_notebook->DeleteAllPages();
}
-void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& event)
+void NotebookWidgetsPage::OnButtonSelectPage(wxCommandEvent& WXUNUSED(event))
{
int pos = GetTextValue(m_textSelect);
wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") );
void NotebookWidgetsPage::OnButtonAddPage(wxCommandEvent& WXUNUSED(event))
{
- m_notebook->AddPage(CreateNewPage(), _T("Added page"), FALSE,
+ m_notebook->AddPage(CreateNewPage(), _T("Added page"), false,
GetIconIndex());
}
int pos = GetTextValue(m_textInsert);
wxCHECK_RET( IsValidValue(pos), _T("button should be disabled") );
- m_notebook->InsertPage(pos, CreateNewPage(), _T("Inserted page"), FALSE,
+ m_notebook->InsertPage(pos, CreateNewPage(), _T("Inserted page"), false,
GetIconIndex());
}
void NotebookWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
{
event.Enable( !m_chkImages->GetValue() ||
- m_radioOrient->GetSelection() != wxNB_TOP );
+ m_radioOrient->GetSelection() != wxBK_TOP );
}
void NotebookWidgetsPage::OnUpdateUINumPagesText(wxUpdateUIEvent& event)
event.SetText( wxString::Format(_T("%d"), m_notebook->GetSelection()) );
}
-void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
+void NotebookWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
{
CreateNotebook();
}
event.Skip();
}
-#endif
+#endif // wxUSE_NOTEBOOK