Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / cpp / wxsizer.h
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 (executable)
index 0000000..e84e9d3
--- /dev/null
@@ -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 <wx/bookctrl.h>
+
+// 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 <wx/notebook.h>
+
+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