X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5301d9333612e6d80f285752d26718475fce6c98..015e69f36dfbc469eef59456f973d0567e865d70:/samples/treectrl/treectrl.cpp diff --git a/samples/treectrl/treectrl.cpp b/samples/treectrl/treectrl.cpp index 15a8cb2a6d..e04b74f314 100644 --- a/samples/treectrl/treectrl.cpp +++ b/samples/treectrl/treectrl.cpp @@ -9,9 +9,12 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// important: the #pragma argument must be different from treectrl.cpp, +// otherwise gcc gets confused (as there is also treectrl.cpp in the library +// which has identical #pragma) and the sample crashes on startup! #ifdef __GNUG__ - #pragma implementation - #pragma interface + #pragma interface "treetest.cpp" + #pragma implementation "treetest.cpp" #endif // For compilers that support precompilation, includes "wx/wx.h". @@ -95,7 +98,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TreeTest_ToggleIcon, MyFrame::OnToggleIcon) END_EVENT_TABLE() +#if USE_GENERIC_TREECTRL +BEGIN_EVENT_TABLE(MyTreeCtrl, wxGenericTreeCtrl) +#else BEGIN_EVENT_TABLE(MyTreeCtrl, wxTreeCtrl) +#endif EVT_TREE_BEGIN_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginDrag) EVT_TREE_BEGIN_RDRAG(TreeTest_Ctrl, MyTreeCtrl::OnBeginRDrag) EVT_TREE_END_DRAG(TreeTest_Ctrl, MyTreeCtrl::OnEndDrag) @@ -208,7 +215,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl, wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | + wxTR_HAS_BUTTONS | // wxTR_NO_LINES | wxTR_EDIT_LABELS | #ifndef NO_VARIABLE_HEIGHT wxTR_HAS_VARIABLE_ROW_HEIGHT | @@ -428,7 +435,18 @@ void MyFrame::OnSetImageSize(wxCommandEvent& event) void MyFrame::OnToggleImages(wxCommandEvent& event) { - wxGetApp().SetShowImages(!wxGetApp().ShowImages()); + if ( wxGetApp().ShowImages() ) + { + m_treeCtrl->CreateImageList(-1); + + wxGetApp().SetShowImages(FALSE); + } + else + { + m_treeCtrl->CreateImageList(); + + wxGetApp().SetShowImages(TRUE); + } OnRecreate(event); } @@ -499,7 +517,11 @@ void MyFrame::OnToggleIcon(wxCommandEvent& WXUNUSED(event)) } // MyTreeCtrl implementation +#if USE_GENERIC_TREECTRL +IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxGenericTreeCtrl) +#else IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl) +#endif MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, @@ -522,42 +544,42 @@ void MyTreeCtrl::CreateImageList(int size) if ( size == -1 ) { m_imageListNormal = NULL; - - return; } + else + { + // Make an image list containing small icons + m_imageListNormal = new wxImageList(size, size, TRUE); - // Make an image list containing small icons - m_imageListNormal = new wxImageList(size, size, TRUE); - - // should correspond to TreeCtrlIcon_xxx enum + // should correspond to TreeCtrlIcon_xxx enum #if defined(__WXMSW__) && defined(__WIN16__) - m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE)); - m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE)); - m_imageListNormal->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE)); - m_imageListNormal->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE)); - m_imageListNormal->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE)); -#else - wxIcon icons[5]; - icons[0] = wxICON(icon1); - icons[1] = wxICON(icon2); - icons[2] = wxICON(icon3); - icons[3] = wxICON(icon4); - icons[4] = wxICON(icon5); - - int sizeOrig = icons[0].GetWidth(); - for ( size_t i = 0; i < WXSIZEOF(icons); i++ ) - { - if ( size == sizeOrig ) - { - m_imageListNormal->Add(icons[i]); - } - else + m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE)); + m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE)); + m_imageListNormal->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE)); + m_imageListNormal->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE)); + m_imageListNormal->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE)); +#else // !MSW + wxIcon icons[5]; + icons[0] = wxICON(icon1); + icons[1] = wxICON(icon2); + icons[2] = wxICON(icon3); + icons[3] = wxICON(icon4); + icons[4] = wxICON(icon5); + + int sizeOrig = icons[0].GetWidth(); + for ( size_t i = 0; i < WXSIZEOF(icons); i++ ) { - m_imageListNormal->Add(wxImage(icons[i]).Rescale(size, size). - ConvertToBitmap()); + if ( size == sizeOrig ) + { + m_imageListNormal->Add(icons[i]); + } + else + { + m_imageListNormal->Add(wxImage(icons[i]).Rescale(size, size). + ConvertToBitmap()); + } } +#endif // MSW/!MSW } -#endif SetImageList(m_imageListNormal); }