wxImageList* m_imageList;
wxList m_pages;
+ int m_lastSelection; /* hack */
DECLARE_DYNAMIC_CLASS(wxNotebook)
DECLARE_EVENT_TABLE()
wxImageList* m_imageList;
wxList m_pages;
+ int m_lastSelection; /* hack */
DECLARE_DYNAMIC_CLASS(wxNotebook)
DECLARE_EVENT_TABLE()
void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window)
{
m_okButton = new wxButton(window, wxID_OK, "Close", wxPoint(-1, -1), wxSize(80, 25));
- m_cancelButton = new wxButton(window, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(80, 25));
+ m_cancelButton = new wxButton(window, ID_DELETE_PAGE, "Delete page", wxPoint(-1, -1), wxSize(80, 25));
m_addPageButton = new wxButton(window, ID_ADD_PAGE, "Add page", wxPoint(-1, -1), wxSize(80, 25));
m_okButton->SetDefault();
wxPanel *panel4 = new wxPanel(notebook, -1);
panel4->SetBackgroundColour(wxColour("YELLOW"));
notebook->AddPage(panel4, "Sheep");
+
+ wxPanel *panel5 = new wxPanel(notebook, -1);
+ panel5->SetBackgroundColour(wxColour("MAGENTA"));
+ (void)new wxStaticText(panel5, -1, "This page has been inserted, not added", wxPoint(10, 10) );
+ notebook->InsertPage(0, panel5, "Sheep");
}
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(wxID_OK, MyFrame::OnOK)
- EVT_BUTTON(wxID_CANCEL, MyFrame::OnOK)
+ EVT_BUTTON(ID_DELETE_PAGE, MyFrame::OnDeletePage)
EVT_BUTTON(ID_ADD_PAGE, MyFrame::OnAddPage)
EVT_SIZE(MyFrame::OnSize)
END_EVENT_TABLE()
m_notebook->SetSelection( m_notebook->GetPageCount()-1 );
}
+void MyFrame::OnDeletePage(wxCommandEvent& WXUNUSED(event))
+{
+ m_notebook->DeletePage( m_notebook->GetPageCount()-1 );
+}
+
void MyFrame::OnOK(wxCommandEvent& WXUNUSED(event) )
{
this->Destroy();
void OnOK(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent& event);
void OnAddPage(wxCommandEvent& event);
+ void OnDeletePage(wxCommandEvent& event);
void OnSize(wxSizeEvent& event);
void Init(void);
protected:
#define ID_NOTEBOOK 1000
#define ID_ADD_PAGE 1200
+#define ID_DELETE_PAGE 1201
{
m_imageList = (wxImageList *) NULL;
m_pages.DeleteContents( TRUE );
+ m_lastSelection = -1;
}
wxNotebook::wxNotebook()
GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
- GtkNotebookPage *page = GTK_NOTEBOOK_PAGE( notebook->cur_page );
+ if (notebook->cur_page == NULL) return m_lastSelection;
- wxCHECK_MSG( page, -1, "no notebook page selected/current" );
-
- return g_list_index( pages, (gpointer)page );
+ return g_list_index( pages, (gpointer)(notebook->cur_page) );
}
int wxNotebook::GetPageCount() const
wxNotebookPage* nb_page = GetNotebookPage(page);
if (!nb_page) return FALSE;
+ /* GTK sets GtkNotebook.cur_page to NULL before sending
+ the switvh page event */
+ m_lastSelection = GetSelection();
+
nb_page->m_client->Destroy();
-
m_pages.DeleteObject( nb_page );
+
+ m_lastSelection = -1;
return TRUE;
}
int border = 0;
- if (GTK_WIDGET_HAS_DEFAULT(m_widget))
+ if (GTK_WIDGET_CAN_DEFAULT(m_widget))
{
/* the default button has a border around it */
border = 5;
{
m_imageList = (wxImageList *) NULL;
m_pages.DeleteContents( TRUE );
+ m_lastSelection = -1;
}
wxNotebook::wxNotebook()
GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
- GtkNotebookPage *page = GTK_NOTEBOOK_PAGE( notebook->cur_page );
+ if (notebook->cur_page == NULL) return m_lastSelection;
- wxCHECK_MSG( page, -1, "no notebook page selected/current" );
-
- return g_list_index( pages, (gpointer)page );
+ return g_list_index( pages, (gpointer)(notebook->cur_page) );
}
int wxNotebook::GetPageCount() const
wxNotebookPage* nb_page = GetNotebookPage(page);
if (!nb_page) return FALSE;
+ /* GTK sets GtkNotebook.cur_page to NULL before sending
+ the switvh page event */
+ m_lastSelection = GetSelection();
+
nb_page->m_client->Destroy();
-
m_pages.DeleteObject( nb_page );
+
+ m_lastSelection = -1;
return TRUE;
}
int border = 0;
- if (GTK_WIDGET_HAS_DEFAULT(m_widget))
+ if (GTK_WIDGET_CAN_DEFAULT(m_widget))
{
/* the default button has a border around it */
border = 5;