]>
git.saurik.com Git - wxWidgets.git/blob - contrib/samples/gizmos/dynsash/dynsash.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Test the wxDynamicSash class by creating a dynamic sash which
4 // contains an HTML view
5 // Author: Matt Kimball
9 // Copyright: (c) 2001 Matt Kimball
10 // Licence: wxWindows licence
11 /////////////////////////////////////////////////////////////////////////////
15 #include <wx/gizmos/dynamicsash.h>
16 #include <wx/html/htmlwin.h>
19 class Demo
: public wxApp
{
24 class SashHtmlWindow
: public wxHtmlWindow
{
26 SashHtmlWindow(wxWindow
*parent
, wxWindowID id
= -1,
27 const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
28 long style
= wxHW_SCROLLBAR_NEVER
, const wxString
& name
= "sashHtmlWindow");
30 wxSize
DoGetBestSize() const;
33 void OnSplit(wxDynamicSashSplitEvent
& event
);
41 "<P><H1>wxDynamicSashWindow demo</H1>"
42 "<P>Here is an example of how you can use <TT>wxDynamicSashWindow</TT> to allow your users to "
43 "dynamically split and unify the views of your windows. Try dragging out a few splits "
44 "and then reunifying the window."
45 "<P>Also, see the <TT>dynsash_switch</TT> sample for an example of an application which "
46 "manages the scrollbars provided by <TT>wxDynamicSashWindow</TT> itself."
50 wxInitAllImageHandlers();
52 wxFrame
*frame
= new wxFrame(NULL
, -1, "Dynamic Sash Demo");
53 frame
->SetSize(480, 480);
55 wxDynamicSashWindow
*sash
= new wxDynamicSashWindow(frame
, -1);
56 wxHtmlWindow
*html
= new SashHtmlWindow(sash
, -1);
57 html
->SetPage(HTML_content
);
65 SashHtmlWindow::SashHtmlWindow(wxWindow
*parent
, wxWindowID id
,
66 const wxPoint
& pos
, const wxSize
& size
, long style
, const wxString
& name
) :
67 wxHtmlWindow(parent
, id
, pos
, size
, style
, name
) {
68 Connect(-1, wxEVT_DYNAMIC_SASH_SPLIT
, (wxObjectEventFunction
)&SashHtmlWindow::OnSplit
);
73 wxSize
SashHtmlWindow::DoGetBestSize() const {
74 wxHtmlContainerCell
*cell
= GetInternalRepresentation();
75 wxSize size
= GetSize();
78 cell
->Layout(size
.GetWidth());
79 return wxSize(cell
->GetWidth(), cell
->GetHeight());
81 return wxHtmlWindow::GetBestSize();
84 void SashHtmlWindow::OnSplit(wxDynamicSashSplitEvent
& event
) {
85 wxHtmlWindow
*html
= new SashHtmlWindow(m_dyn_sash
, -1);
86 html
->SetPage(HTML_content
);