///////////////////////////////////////////////////////////////////////////// // Name: dynsash.cpp // Purpose: Test the wxDynamicSash class by creating a dynamic sash which // contains an HTML view // Author: Matt Kimball // Modified by: // Created: 7/15/2001 // RCS-ID: $Id$ // Copyright: (c) 2001 Matt Kimball // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif // for all others, include the necessary headers (this file is usually all you // need because it includes almost all "standard" wxWidgets headers) #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include #include #include #include #include #include class Demo : public wxApp { public: bool OnInit(); }; class SashHtmlWindow : public wxHtmlWindow { public: SashHtmlWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxHW_SCROLLBAR_NEVER, const wxString& name = wxT("sashHtmlWindow")); wxSize DoGetBestSize() const; private: void OnSplit(wxDynamicSashSplitEvent& event); wxWindow *m_dyn_sash; }; IMPLEMENT_APP(Demo) wxChar *HTML_content = wxT("

wxDynamicSashWindow demo

") wxT("

Here is an example of how you can use wxDynamicSashWindow to allow your users to ") wxT("dynamically split and unify the views of your windows. Try dragging out a few splits ") wxT("and then reunifying the window.") wxT("

Also, see the dynsash_switch sample for an example of an application which ") wxT("manages the scrollbars provided by wxDynamicSashWindow itself."); bool Demo::OnInit() { wxInitAllImageHandlers(); wxFrame *frame = new wxFrame(NULL, wxID_ANY, wxT("Dynamic Sash Demo")); frame->SetSize(480, 480); wxDynamicSashWindow *sash = new wxDynamicSashWindow(frame, wxID_ANY); wxHtmlWindow *html = new SashHtmlWindow(sash, wxID_ANY); html->SetPage(HTML_content); frame->Show(); return true; } SashHtmlWindow::SashHtmlWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) : wxHtmlWindow(parent, id, pos, size, style, name) { Connect(wxID_ANY, wxEVT_DYNAMIC_SASH_SPLIT, (wxObjectEventFunction) (wxEventFunction) (wxDynamicSashSplitEventFunction)&SashHtmlWindow::OnSplit); m_dyn_sash = parent; } wxSize SashHtmlWindow::DoGetBestSize() const { wxHtmlContainerCell *cell = GetInternalRepresentation(); wxSize size = GetSize(); if (cell) { cell->Layout(size.GetWidth()); return wxSize(cell->GetWidth(), cell->GetHeight()); } else return wxHtmlWindow::GetBestSize(); } void SashHtmlWindow::OnSplit(wxDynamicSashSplitEvent& WXUNUSED(event)) { wxHtmlWindow *html = new SashHtmlWindow(m_dyn_sash, wxID_ANY); html->SetPage(HTML_content); }