X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b2b3ccc524ad5024fac46a40cd3639ebe7cc0de4..674ac8b919eecbc201b5f23b470a567cd0565e10:/samples/minifram/test.cpp diff --git a/samples/minifram/test.cpp b/samples/minifram/test.cpp index 55efd8e2b4..7cb4e05da5 100644 --- a/samples/minifram/test.cpp +++ b/samples/minifram/test.cpp @@ -36,30 +36,50 @@ #include "bitmaps/help.xpm" #endif +// start wxWindows + IMPLEMENT_APP(MyApp) +// globas + +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) { + // Create the mini frame window + mini_frame = new MyMiniFrame((wxFrame *) NULL, -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()); + // Create the main frame window - MyFrame* frame = new MyFrame((wxFrame *) NULL, -1, (const wxString) "wxMiniFrame sample", - wxPoint(100, 100), wxSize(200, 42)); + main_frame = new MyMainFrame((wxFrame *) NULL, -1, "wxFrame sample", + wxPoint(100, 100), wxSize(300, 200)); + + main_frame->CreateToolBar(wxNO_BORDER|wxTB_VERTICAL, ID_TOOLBAR); + InitToolbar(main_frame->GetToolBar()); + + button = new wxButton( main_frame, ID_REPARENT, "Press to reparent!" ); #ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); + main_frame->SetIcon(wxIcon("mondrian")); + mini_frame->SetIcon(wxIcon("mondrian")); #else - frame->SetIcon( wxIcon(mondrian_xpm) ); + main_frame->SetIcon( wxIcon(mondrian_xpm) ); + mini_frame->SetIcon( wxIcon(mondrian_xpm) ); #endif - // Create the toolbar - frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT, ID_TOOLBAR); - - InitToolbar(frame->GetToolBar()); - - frame->Show(TRUE); - SetTopWindow(frame); + SetTopWindow(main_frame); + + main_frame->Show(TRUE); + mini_frame->Show(TRUE); return TRUE; } @@ -113,12 +133,14 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) 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 int i; @@ -128,20 +150,61 @@ bool MyApp::InitToolbar(wxToolBar* toolBar) return TRUE; } -BEGIN_EVENT_TABLE(MyFrame, wxMiniFrame) - EVT_CLOSE(MyFrame::OnCloseWindow) +// MyMiniFrame + +BEGIN_EVENT_TABLE(MyMiniFrame, wxMiniFrame) + EVT_CLOSE ( MyMiniFrame::OnCloseWindow) + EVT_BUTTON (ID_REPARENT, MyMiniFrame::OnReparent) + EVT_MENU (wxID_PRINT, MyMiniFrame::OnReparent) END_EVENT_TABLE() -// Define my frame constructor -MyFrame::MyFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, +MyMiniFrame::MyMiniFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size ) : wxMiniFrame(parent, id, title, pos, size ) { } -// - must delete all frames except for the main one. -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) +void MyMiniFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { + // make it known that the miniframe is no more + mini_frame_exists = FALSE; Destroy(); } +void MyMiniFrame::OnReparent(wxCommandEvent& WXUNUSED(event)) +{ + button->Reparent( main_frame ); +} + +// MyMainFrame + +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, + const wxSize& size ) : + wxFrame(parent, id, title, pos, size ) +{ +} + +void MyMainFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) +{ + Destroy(); +} + +void MyMainFrame::OnReparent(wxCommandEvent& WXUNUSED(event)) +{ + // 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 ); +} + +