diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 7898661a03..55b68053ff 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -84,7 +84,7 @@ public: MyImageFrame(wxFrame *parent, const wxBitmap& bitmap) : wxFrame(parent, -1, _T("Frame with image"), wxDefaultPosition, wxDefaultSize, - wxCAPTION), + wxCAPTION | wxSYSTEM_MENU), m_bitmap(bitmap) { SetClientSize(bitmap.GetWidth(), bitmap.GetHeight()); @@ -172,12 +172,12 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, #if wxUSE_LIBPNG if ( !image.SaveFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG )) wxLogError("Can't save file"); - + image.Destroy(); image.LoadFile( dir + wxString("test.png") ); my_square = new wxBitmap( image.ConvertToBitmap() ); - + image.Destroy(); if ( !image.LoadFile( dir + wxString("horse.png")) ) @@ -458,7 +458,7 @@ MyFrame::MyFrame() wxPoint(20,20), wxSize(470,360) ) { wxMenu *file_menu = new wxMenu(); - file_menu->Append( ID_NEW, "&New frame"); + file_menu->Append( ID_NEW, "&Show image..."); file_menu->AppendSeparator(); file_menu->Append( ID_ABOUT, "&About..."); file_menu->AppendSeparator(); @@ -493,7 +493,19 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) void MyFrame::OnNewFrame( wxCommandEvent &WXUNUSED(event) ) { - (new MyImageFrame(this, *m_canvas->my_horse_bmp))->Show(); + wxString filename = wxFileSelector(_T("Select image file")); + if ( !filename ) + return; + + wxImage image; + if ( !image.LoadFile(filename) ) + { + wxLogError(_T("Couldn't load image from '%s'."), filename.c_str()); + + return; + } + + (new MyImageFrame(this, image.ConvertToBitmap()))->Show(); } //-----------------------------------------------------------------------------