]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/framuniv.cpp
Updated to new PyCrust
[wxWidgets.git] / src / univ / framuniv.cpp
index b55c96ae4970de15af3a892e20355e7e150adba9..6c38c6201c8435c8bc5dce44e0ba01ccd07cf5d3 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     19.05.01
 // RCS-ID:      $Id$
-// Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// Copyright:   (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
     #include "wx/menu.h"
 #ifndef WX_PRECOMP
     #include "wx/frame.h"
+    #include "wx/statusbr.h"
 #endif // WX_PRECOMP
 
 // ============================================================================
 // implementation
 // ============================================================================
 
-BEGIN_EVENT_TABLE(wxFrame, wxFrameNative)
+BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
     EVT_SIZE(wxFrame::OnSize)
 END_EVENT_TABLE()
 
-#if defined(__WXMSW__)
-    IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW)
-#elif defined(__WXGTK__)
-    IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameGTK)
-#endif
+IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow)
 
 // ----------------------------------------------------------------------------
 // ctors
 // ----------------------------------------------------------------------------
 
-wxFrame::wxFrame()
+bool wxFrame::Create(wxWindow *parent,
+                wxWindowID id,
+                const wxString& title,
+                const wxPoint& pos,
+                const wxSize& size,
+                long style,
+                const wxString& name)
 {
+    return wxTopLevelWindow::Create(parent, id, title, pos, size, style, name);
 }
 
-wxFrame::wxFrame(wxWindow *parent,
-                 wxWindowID id,
-                 const wxString& title,
-                 const wxPoint& pos,
-                 const wxSize& size,
-                 long style,
-                 const wxString& name)
-       : wxFrameNative(parent, id, title, pos, size, style, name)
-{
-    m_renderer = NULL;
-}
 
 // ----------------------------------------------------------------------------
-// geometry
+// menu support
 // ----------------------------------------------------------------------------
 
 void wxFrame::OnSize(wxSizeEvent& event)
 {
+#if wxUSE_MENUS
     PositionMenuBar();
+#endif // wxUSE_MENUS
+#if wxUSE_STATUSBAR
+    PositionStatusBar();
+#endif // wxUSE_STATUSBAR
 
     event.Skip();
 }
 
-void wxFrame::PositionMenuBar()
+void wxFrame::SendSizeEvent()
 {
+    wxSizeEvent event(GetSize(), GetId());
+    event.SetEventObject(this);
+    GetEventHandler()->ProcessEvent(event);
+}
+
 #if wxUSE_MENUS
+
+void wxFrame::PositionMenuBar()
+{
     if ( m_frameMenuBar )
     {
         // the menubar is positioned above the client size, hence the negative
         // y coord
-        m_frameMenuBar->SetSize(0, -m_frameMenuBar->GetSize().y,
-                                GetClientSize().x, -1);
+        wxCoord heightMbar = m_frameMenuBar->GetSize().y;
+        m_frameMenuBar->SetSize(0, 
+#ifdef __WXPM__        
+                                GetClientSize().y - heightMbar,
+#else
+                               -heightMbar,
+#endif                         
+                                GetClientSize().x, heightMbar);
     }
+}
+
+void wxFrame::DetachMenuBar()
+{
+    wxFrameBase::DetachMenuBar();
+    SendSizeEvent();
+}
+
+void wxFrame::AttachMenuBar(wxMenuBar *menubar)
+{
+    wxFrameBase::AttachMenuBar(menubar);
+    SendSizeEvent();
+}
+
 #endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+
+void wxFrame::PositionStatusBar()
+{
+    if ( m_frameStatusBar )
+    {
+        wxSize size = GetClientSize();
+        m_frameStatusBar->SetSize(0, size.y, size.x, -1);
+    }
 }
 
+wxStatusBar* wxFrame::CreateStatusBar(int number, long style,
+                                      wxWindowID id, const wxString& name)
+{
+    wxStatusBar *bar = wxFrameBase::CreateStatusBar(number, style, id, name);
+    SendSizeEvent();
+    return bar;
+}
+
+#endif // wxUSE_STATUSBAR
+
 wxPoint wxFrame::GetClientAreaOrigin() const
 {
-    wxPoint pt = wxFrameNative::GetClientAreaOrigin();
+    wxPoint pt = wxFrameBase::GetClientAreaOrigin();
 
-#if wxUSE_MENUS
+#if wxUSE_MENUS && !defined(__WXPM__)
     if ( m_frameMenuBar )
     {
         pt.y += m_frameMenuBar->GetSize().y;
@@ -105,3 +151,51 @@ wxPoint wxFrame::GetClientAreaOrigin() const
     return pt;
 }
 
+void wxFrame::DoGetClientSize(int *width, int *height) const
+{
+    wxFrameBase::DoGetClientSize(width, height);
+
+#if wxUSE_MENUS
+    if ( m_frameMenuBar && height )
+    {
+        (*height) -= m_frameMenuBar->GetSize().y;
+    }
+#endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+    if ( m_frameStatusBar && height )
+    {
+        (*height) -= m_frameStatusBar->GetSize().y;
+    }
+#endif // wxUSE_STATUSBAR
+}
+
+void wxFrame::DoSetClientSize(int width, int height)
+{
+#if wxUSE_MENUS
+    if ( m_frameMenuBar )
+    {
+        height += m_frameMenuBar->GetSize().y;
+    }
+#endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+    if ( m_frameStatusBar )
+    {
+        height += m_frameStatusBar->GetSize().y;
+    }
+#endif // wxUSE_STATUSBAR
+
+    wxFrameBase::DoSetClientSize(width, height);
+}
+
+bool wxFrame::Enable(bool enable)
+{
+    if (!wxFrameBase::Enable(enable))
+       return FALSE;
+#ifdef __WXMICROWIN__
+    if (m_frameMenuBar)
+        m_frameMenuBar->Enable(enable);
+#endif
+    return TRUE;
+}