// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Robert Roebling
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
MyMainFrame *main_frame = (MyMainFrame*) NULL;
MyMiniFrame *mini_frame = (MyMiniFrame*) NULL;
+bool mini_frame_exists = FALSE;
wxButton *button = (wxButton*) NULL;
// The `main program' equivalent, creating the windows and returning the
// main frame
-bool MyApp::OnInit(void)
+bool MyApp::OnInit()
{
- // Create the mini frame window
- mini_frame = new MyMiniFrame((wxFrame *) NULL, -1, "wxMiniFrame sample",
- wxPoint(100, 100), wxSize(205, 100));
-
- mini_frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT, ID_TOOLBAR);
- InitToolbar(mini_frame->GetToolBar());
-
// Create the main frame window
main_frame = new MyMainFrame((wxFrame *) NULL, -1, "wxFrame sample",
wxPoint(100, 100), wxSize(300, 200));
-
- main_frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL, ID_TOOLBAR);
+
+ main_frame->CreateToolBar(wxNO_BORDER|wxTB_VERTICAL, ID_TOOLBAR);
InitToolbar(main_frame->GetToolBar());
-
+
button = new wxButton( main_frame, ID_REPARENT, "Press to reparent!" );
+ // Create the mini frame window
+ mini_frame = new MyMiniFrame( main_frame, -1, "wxMiniFrame sample",
+ wxPoint(100, 100), wxSize(220, 100));
+ mini_frame_exists = TRUE;
+
+ mini_frame->CreateToolBar(wxNO_BORDER|wxTB_HORIZONTAL|wxTB_FLAT, ID_TOOLBAR);
+ InitToolbar(mini_frame->GetToolBar());
+
#ifdef __WXMSW__
main_frame->SetIcon(wxIcon("mondrian"));
mini_frame->SetIcon(wxIcon("mondrian"));
#endif
SetTopWindow(main_frame);
-
+
main_frame->Show(TRUE);
mini_frame->Show(TRUE);
toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste");
currentX += width + 5;
toolBar->AddSeparator();
- toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print");
+ toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Reparent the button");
currentX += width + 5;
toolBar->AddSeparator();
toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help");
toolBar->Realize();
-
+
toolBar->EnableTool( wxID_HELP, FALSE );
// Can delete the bitmaps since they're reference counted
BEGIN_EVENT_TABLE(MyMiniFrame, wxMiniFrame)
EVT_CLOSE ( MyMiniFrame::OnCloseWindow)
EVT_BUTTON (ID_REPARENT, MyMiniFrame::OnReparent)
+ EVT_MENU (wxID_PRINT, MyMiniFrame::OnReparent)
END_EVENT_TABLE()
MyMiniFrame::MyMiniFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos,
void MyMiniFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
+ // make it known that the miniframe is no more
+ mini_frame_exists = FALSE;
Destroy();
}
BEGIN_EVENT_TABLE(MyMainFrame, wxFrame)
EVT_CLOSE ( MyMainFrame::OnCloseWindow)
EVT_BUTTON (ID_REPARENT, MyMainFrame::OnReparent)
+ EVT_MENU (wxID_PRINT, MyMainFrame::OnReparent)
END_EVENT_TABLE()
MyMainFrame::MyMainFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos,
void MyMainFrame::OnReparent(wxCommandEvent& WXUNUSED(event))
{
- button->Reparent( mini_frame );
+ // practical jokers might find satisfaction in reparenting the button
+ // after closing the mini_frame. We'll have the last laugh.
+ if (! mini_frame_exists)
+ wxMessageBox("The miniframe no longer exists.\n"
+ "You don't want to make this button an orphan, do you?",
+ "You got to be kidding");
+ else
+ button->Reparent( mini_frame );
}