Corrected some precompiled header issues for dynsash samples Corrected IMPLEMENT_ABSTRACT_CLASS in multicell.cpp Added an event function typedef and used it in dynsash sample git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // 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" wxWindows headers)
 | |
| #ifndef WX_PRECOMP
 | |
|     #include "wx/wx.h"
 | |
| #endif
 | |
| 
 | |
| #include <wx/app.h>
 | |
| #include <wx/frame.h>
 | |
| #include <wx/gizmos/dynamicsash.h>
 | |
| #include <wx/html/htmlwin.h>
 | |
| #include <wx/image.h>
 | |
| #include <wx/cmdline.h>
 | |
| 
 | |
| class Demo : public wxApp {
 | |
| public:
 | |
|     bool OnInit();
 | |
| };
 | |
| 
 | |
| class SashHtmlWindow : public wxHtmlWindow {
 | |
| public:
 | |
|     SashHtmlWindow(wxWindow *parent, wxWindowID id = -1,
 | |
|                    const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
 | |
|                    long style = wxHW_SCROLLBAR_NEVER, const wxString& name = "sashHtmlWindow");
 | |
| 
 | |
|     wxSize DoGetBestSize() const;
 | |
| 
 | |
| private:
 | |
|     void OnSplit(wxDynamicSashSplitEvent& event);
 | |
| 
 | |
|     wxWindow *m_dyn_sash;
 | |
| };
 | |
| 
 | |
| IMPLEMENT_APP(Demo)
 | |
| 
 | |
| char *HTML_content =
 | |
| "<P><H1>wxDynamicSashWindow demo</H1>"
 | |
| "<P>Here is an example of how you can use <TT>wxDynamicSashWindow</TT> to allow your users to "
 | |
| "dynamically split and unify the views of your windows.  Try dragging out a few splits "
 | |
| "and then reunifying the window."
 | |
| "<P>Also, see the <TT>dynsash_switch</TT> sample for an example of an application which "
 | |
| "manages the scrollbars provided by <TT>wxDynamicSashWindow</TT> itself."
 | |
| ;
 | |
| 
 | |
| bool Demo::OnInit() {
 | |
|     wxInitAllImageHandlers();
 | |
| 
 | |
|     wxFrame *frame = new wxFrame(NULL, -1, "Dynamic Sash Demo");
 | |
|     frame->SetSize(480, 480);
 | |
| 
 | |
|     wxDynamicSashWindow *sash = new wxDynamicSashWindow(frame, -1);
 | |
|     wxHtmlWindow *html = new SashHtmlWindow(sash, -1);
 | |
|     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(-1, wxEVT_DYNAMIC_SASH_SPLIT,
 | |
|         (wxObjectEventFunction)(wxCommandEventFunction)(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& event) {
 | |
|     wxHtmlWindow *html = new SashHtmlWindow(m_dyn_sash, -1);
 | |
|     html->SetPage(HTML_content);
 | |
| }
 |