X-Git-Url: http://git.maemo.org/git/?p=pkg-perl;a=blobdiff_plain;f=deb-src%2Flibwx-perl%2Flibwx-perl-0.96%2Fcpp%2Fwxsizer.h;fp=deb-src%2Flibwx-perl%2Flibwx-perl-0.96%2Fcpp%2Fwxsizer.h;h=e84e9d3137a7ab6b83f412ff9a104b993c4d8dd8;hp=0000000000000000000000000000000000000000;hb=338ce2df3c50fea0b4148c5ef073e0a101744b67;hpb=3ffacac381f8f5d701cefbffd60f4a9235ea6e06 diff --git a/deb-src/libwx-perl/libwx-perl-0.96/cpp/wxsizer.h b/deb-src/libwx-perl/libwx-perl-0.96/cpp/wxsizer.h new file mode 100755 index 0000000..e84e9d3 --- /dev/null +++ b/deb-src/libwx-perl/libwx-perl-0.96/cpp/wxsizer.h @@ -0,0 +1,136 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: cpp/wxsizer.h +// Purpose: provide wxBookCtrlSizer and wxNotebookSizer class +// Author: Robert Roebling and Robin Dunn +// Modified by: Ron Lee, Vadim Zeitlin (wxSizerFlags) +// Created: +// RCS-ID: $Id: wxsizer.h 2057 2007-06-18 23:03:00Z mbarbon $ +// Copyright: (c) Robin Dunn, Robert Roebling +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// extracted from sizer.h/sizer.cpp from wxWidgets 2.6.1 + +// NB: wxBookCtrlSizer and wxNotebookSizer are deprecated, they +// don't do anything. wxBookCtrlBase::DoGetBestSize does the job now. + +// ---------------------------------------------------------------------------- +// wxBookCtrlSizer +// ---------------------------------------------------------------------------- + +#if wxUSE_BOOKCTRL + +#include + +// this sizer works with wxNotebook/wxListbook/... and sizes the control to +// fit its pages +class wxBookCtrlSizer : public wxSizer +{ +public: + wxBookCtrlSizer(wxBookCtrlBase *bookctrl); + + wxBookCtrlBase *GetControl() const { return m_bookctrl; } + + virtual void RecalcSizes(); + virtual wxSize CalcMin(); + +protected: + + wxBookCtrlBase *m_bookctrl; + +private: + DECLARE_CLASS(wxBookCtrlSizer) + DECLARE_NO_COPY_CLASS(wxBookCtrlSizer) +}; + + +#if wxUSE_NOTEBOOK + +// before wxBookCtrlBase we only had wxNotebookSizer, keep it for backwards +// compatibility +#include + +class wxNotebookSizer : public wxBookCtrlSizer +{ +public: + wxNotebookSizer(wxNotebook *nb); + + wxNotebook *GetNotebook() const { return (wxNotebook *)m_bookctrl; } + +private: + DECLARE_CLASS(wxNotebookSizer) + DECLARE_NO_COPY_CLASS(wxNotebookSizer) +}; + +#endif // wxUSE_NOTEBOOK + +#endif // wxUSE_BOOKCTRL + +#if wxUSE_BOOKCTRL +IMPLEMENT_CLASS(wxBookCtrlSizer, wxSizer) +#if wxUSE_NOTEBOOK +IMPLEMENT_CLASS(wxNotebookSizer, wxBookCtrlSizer) +#endif // wxUSE_NOTEBOOK +#endif // wxUSE_BOOKCTRL + +#if wxUSE_BOOKCTRL + +wxBookCtrlSizer::wxBookCtrlSizer(wxBookCtrlBase *bookctrl) + : m_bookctrl(bookctrl) +{ + wxASSERT_MSG( bookctrl, wxT("wxBookCtrlSizer needs a control") ); +} + +void wxBookCtrlSizer::RecalcSizes() +{ + m_bookctrl->SetSize( m_position.x, m_position.y, m_size.x, m_size.y ); +} + +wxSize wxBookCtrlSizer::CalcMin() +{ + wxSize sizeBorder = m_bookctrl->CalcSizeFromPage(wxSize(0,0)); + + sizeBorder.x += 5; + sizeBorder.y += 5; + + if ( m_bookctrl->GetPageCount() == 0 ) + { + return wxSize(sizeBorder.x + 10, sizeBorder.y + 10); + } + + int maxX = 0; + int maxY = 0; + + wxWindowList::compatibility_iterator + node = m_bookctrl->GetChildren().GetFirst(); + while (node) + { + wxWindow *item = node->GetData(); + wxSizer *itemsizer = item->GetSizer(); + + if (itemsizer) + { + wxSize subsize( itemsizer->CalcMin() ); + + if (subsize.x > maxX) + maxX = subsize.x; + if (subsize.y > maxY) + maxY = subsize.y; + } + + node = node->GetNext(); + } + + return wxSize( maxX, maxY ) + sizeBorder; +} + +#if wxUSE_NOTEBOOK + +wxNotebookSizer::wxNotebookSizer(wxNotebook *nb) + : wxBookCtrlSizer(nb) +{ + wxASSERT_MSG( nb, wxT("wxNotebookSizer needs a control") ); +} + +#endif // wxUSE_NOTEBOOOK +#endif // wxUSE_BOOKCTRL