wxWidgets/samples/notebook/notebook.h
Vadim Zeitlin 9be821c71a Create a full page text, rather than a button, in notebook sample
This is much more realistic and looks less weirdly.

Also add the text directly as a page, without wrapping it in a panel,
just to show that this is possible and works too.

No real changes.
2022-04-16 20:01:23 +01:00

201 lines
4.9 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: samples/notebook/notebook.h
// Purpose: a sample demonstrating notebook usage
// Author: Julian Smart
// Modified by: Dimitri Schoolwerth
// Created: 25/10/98
// Copyright: (c) 1998-2002 wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/choicebk.h"
#include "wx/listbook.h"
#include "wx/treebook.h"
#include "wx/notebook.h"
#include "wx/simplebook.h"
#include "wx/toolbook.h"
#include "wx/aui/auibook.h"
#if wxUSE_LOG
#define USE_LOG 1
#else
#define USE_LOG 0
#endif
// Define a new application
class MyApp : public wxApp
{
public:
bool OnInit() wxOVERRIDE;
};
wxDECLARE_APP(MyApp);
class MyFrame : public wxFrame
{
public:
MyFrame();
virtual ~MyFrame();
void OnType(wxCommandEvent& event);
void OnOrient(wxCommandEvent& event);
void OnShowImages(wxCommandEvent& event);
void OnStyle(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAddPage(wxCommandEvent& event);
void OnAddPageNoSelect(wxCommandEvent& event);
void OnInsertPage(wxCommandEvent& event);
void OnDeleteCurPage(wxCommandEvent& event);
void OnDeleteLastPage(wxCommandEvent& event);
void OnNextPage(wxCommandEvent& event);
void OnChangeSelection(wxCommandEvent &event);
void OnSetSelection(wxCommandEvent &event);
void OnGetPageSize(wxCommandEvent &event);
void OnSetPageSize(wxCommandEvent &event);
void OnAddSubPage(wxCommandEvent& event);
void OnAddPageBefore(wxCommandEvent& event);
#if wxUSE_HELP
void OnContextHelp(wxCommandEvent& event);
#endif // wxUSE_HELP
void OnHitTest(wxCommandEvent& event);
void OnBookCtrl(wxBookCtrlBaseEvent& event);
#if wxUSE_NOTEBOOK
void OnNotebook(wxNotebookEvent& event) { OnBookCtrl(event); }
#endif
#if wxUSE_CHOICEBOOK
void OnChoicebook(wxChoicebookEvent& event) { OnBookCtrl(event); }
#endif
#if wxUSE_LISTBOOK
void OnListbook(wxListbookEvent& event) { OnBookCtrl(event); }
#endif
#if wxUSE_TREEBOOK
void OnTreebook(wxTreebookEvent& event) { OnBookCtrl(event); }
#endif
#if wxUSE_TOOLBOOK
void OnToolbook(wxToolbookEvent& event) { OnBookCtrl(event); }
#endif
#if wxUSE_AUI
void OnAuiNotebook(wxAuiNotebookEvent& event) { OnBookCtrl(event); }
#endif
void OnIdle(wxIdleEvent& event);
#if wxUSE_TREEBOOK
void OnUpdateTreeMenu(wxUpdateUIEvent& event);
#endif // wxUSE_TREEBOOK
wxBookCtrlBase *GetCurrentBook() const { return m_bookCtrl; }
private:
wxLog *m_logTargetOld;
void RecreateBook();
wxPanel *CreateNewPage() const;
void AddFlagStrIfFlagPresent(wxString & flagStr, long flags, long flag, const wxString& flagName) const;
// Sample setup
enum BookType
{
Type_Notebook,
Type_Listbook,
Type_Choicebook,
Type_Treebook,
Type_Toolbook,
Type_AuiNotebook,
Type_Simplebook,
Type_Max
} m_type;
int m_orient;
bool m_chkShowImages;
bool m_fixedWidth;
bool m_multi;
bool m_noPageTheme;
bool m_buttonBar;
bool m_horzLayout;
// Controls
wxPanel *m_panel; // Panel containing notebook and other controls
wxBookCtrlBase *m_bookCtrl;
#if USE_LOG
// Log window
wxTextCtrl *m_text;
#endif // USE_LOG
wxBoxSizer *m_sizerFrame;
wxBookCtrlBase::Images m_images;
wxDECLARE_EVENT_TABLE();
};
enum ID_COMMANDS
{
// these should be in the same order as Type_XXX elements above
ID_BOOK_NOTEBOOK = wxID_HIGHEST,
ID_BOOK_LISTBOOK,
ID_BOOK_CHOICEBOOK,
ID_BOOK_TREEBOOK,
ID_BOOK_TOOLBOOK,
ID_BOOK_AUINOTEBOOK,
ID_BOOK_SIMPLEBOOK,
ID_BOOK_MAX,
ID_ORIENT_DEFAULT,
ID_ORIENT_TOP,
ID_ORIENT_BOTTOM,
ID_ORIENT_LEFT,
ID_ORIENT_RIGHT,
ID_ORIENT_MAX,
ID_SHOW_IMAGES,
ID_FIXEDWIDTH,
ID_MULTI,
ID_NOPAGETHEME,
ID_BUTTONBAR,
ID_HORZ_LAYOUT,
ID_ADD_PAGE,
ID_ADD_PAGE_NO_SELECT,
ID_INSERT_PAGE,
ID_DELETE_CUR_PAGE,
ID_DELETE_LAST_PAGE,
ID_NEXT_PAGE,
ID_ADD_PAGE_BEFORE,
ID_ADD_SUB_PAGE,
ID_CHANGE_SELECTION,
ID_SET_SELECTION,
ID_GET_PAGE_SIZE,
ID_SET_PAGE_SIZE,
#if wxUSE_HELP
ID_CONTEXT_HELP,
#endif // wxUSE_HELP
ID_HITTEST
};
/*
Name of each notebook page.
Used as a label for a page, and used when cloning the notebook
to decide what type of page it is.
*/
#define I_WAS_INSERTED_PAGE_NAME "Inserted"
#define RADIOBUTTONS_PAGE_NAME "Radiobuttons"
#define VETO_PAGE_NAME "Veto"
#define TEXT_PAGE_NAME "Text"
// Pages that can be added by the user
#define INSERTED_PAGE_NAME "Inserted "
#define ADDED_PAGE_NAME "Added "
#define ADDED_PAGE_NAME_BEFORE " Inserted before "
#define ADDED_SUB_PAGE_NAME " Inserted sub-page "