#############################################################################
## Name: ext/richtext/XS/RichTextPrinting.xsp
## Purpose: XS++ for Wx::RichTextPrinting
## Author: Mark Dootson
## Modified by:
## Created: 10/04/2010
## RCS-ID: $Id: RichTextPrinting.xsp 3293 2012-05-16 20:02:24Z mdootson $
## Copyright: (c) 2010 Mark Dootson
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
#if WXPERL_W_VERSION_GE( 2, 8, 0 )
#include <wx/richtext/richtextprint.h>
%module{Wx};
%name{Wx::RichTextPrintout} class wxRichTextPrintout : public %name{Wx::Printout} wxPrintout
{
public:
wxRichTextPrintout(const wxString& title = wxT("Printout"));
%name{Destroy} ~wxRichTextPrintout()
%code%{ delete THIS; %};
/// The buffer to print
void SetRichTextBuffer(wxRichTextBuffer* buffer);
wxRichTextBuffer* GetRichTextBuffer() const ;
/// Set/get header/footer data
void SetHeaderFooterData(const wxRichTextHeaderFooterData& data) ;
const wxRichTextHeaderFooterData& GetHeaderFooterData() const ;
/// Sets margins in 10ths of millimetre. Defaults to 1 inch for margins.
void SetMargins(int top = 254, int bottom = 254, int left = 254, int right = 254);
/// Calculate scaling and rectangles, setting the device context scaling
void CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& headerRect, wxRect& footerRect);
// wxPrintout virtual functions
virtual bool OnPrintPage(int page);
virtual bool HasPage(int page);
//virtual void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
virtual bool OnBeginDocument(int startPage, int endPage);
virtual void OnPreparePrinting();
};
%{
void
wxRichTextPrintout::GetPageInfo()
PREINIT:
int minPage, maxPage, pageFrom, pageTo;
PPCODE:
THIS->wxRichTextPrintout::GetPageInfo( &minPage, &maxPage, &pageFrom, &pageTo );
EXTEND( SP, 4 );
PUSHs( sv_2mortal( newSViv( minPage ) ) );
PUSHs( sv_2mortal( newSViv( maxPage ) ) );
PUSHs( sv_2mortal( newSViv( pageFrom ) ) );
PUSHs( sv_2mortal( newSViv( pageTo ) ) );
%}
%name{Wx::RichTextPrinting} class wxRichTextPrinting : public wxObject
{
wxRichTextPrinting( wxString name = wxT("Printing"), wxWindow *parentWindow = NULL );
~wxRichTextPrinting()
%code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::RichTextPrinting", THIS, ST(0) );
delete THIS; %};
%{
static void
wxRichTextPrinting::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
bool PreviewFile(const wxString& richTextFile);
bool PreviewBuffer(const wxRichTextBuffer& buffer);
#if WXPERL_W_VERSION_GE( 2, 9, 4 )
bool PrintFile(const wxString& richTextFile, bool showPrintDialog = true );
bool PrintBuffer(const wxRichTextBuffer& buffer, bool showPrintDialog = true );
#else
bool PrintFile(const wxString& richTextFile);
bool PrintBuffer(const wxRichTextBuffer& buffer);
#endif
void PageSetup();
void SetHeaderFooterData(const wxRichTextHeaderFooterData& data);
const wxRichTextHeaderFooterData& GetHeaderFooterData() const;
void SetHeaderText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
void SetFooterText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
void SetShowOnFirstPage(bool show);
void SetHeaderFooterFont(const wxFont& font);
void SetHeaderFooterTextColour(const wxColour& font);
wxPrintData *GetPrintData();
void SetPrintData(const wxPrintData& printData);
wxPageSetupDialogData *GetPageSetupData() const;
void SetPageSetupData(const wxPageSetupDialogData& pageSetupData);
void SetRichTextBufferPreview(wxRichTextBuffer* buffer)
%code%{ THIS->SetRichTextBufferPreview(buffer); %}
%cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
wxRichTextBuffer* GetRichTextBufferPreview() const
%code%{ RETVAL = THIS->GetRichTextBufferPreview(); %}
%cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
void SetRichTextBufferPrinting(wxRichTextBuffer* buffer)
%code%{ THIS->SetRichTextBufferPrinting(buffer); %}
%cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
wxRichTextBuffer* GetRichTextBufferPrinting() const
%code%{ RETVAL = THIS->GetRichTextBufferPrinting(); %}
%cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
void SetParentWindow(wxWindow* parent);
wxWindow* GetParentWindow() const;
void SetTitle(const wxString& title);
const wxString& GetTitle() const;
void SetPreviewRect(const wxRect& rect);
const wxRect& GetPreviewRect() const;
};
%name{Wx::RichTextHeaderFooterData} class wxRichTextHeaderFooterData : public wxObject
{
%name{newDefault} wxRichTextHeaderFooterData();
%name{newCopy} wxRichTextHeaderFooterData(const wxRichTextHeaderFooterData& data);
~wxRichTextPrinting()
%code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::RichTextHeaderFooterData", THIS, ST(0) );
delete THIS; %};
%{
static void
wxRichTextPrinting::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
// void Init();
// void Copy(const wxRichTextHeaderFooterData& data);
void SetHeaderText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
wxString GetHeaderText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
void SetFooterText(const wxString& text, wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_ALL, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE);
wxString GetFooterText(wxRichTextOddEvenPage page = wxRICHTEXT_PAGE_EVEN, wxRichTextPageLocation location = wxRICHTEXT_PAGE_CENTRE) const;
void SetText(const wxString& text, int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location);
wxString GetText(int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location) const;
void SetMargins(int headerMargin, int footerMargin);
int GetHeaderMargin();
int GetFooterMargin();
void SetShowOnFirstPage(bool showOnFirstPage);
bool GetShowOnFirstPage() const;
void Clear();
void SetFont(const wxFont& font);
const wxFont& GetFont() const;
void SetTextColour(const wxColour& col);
const wxColour& GetTextColour() const;
};
## DECLARE_OVERLOAD( wrth, Wx::RichTextHeaderFooterData )
%{
void
wxRichTextHeaderFooterData::new( ... )
PPCODE:
BEGIN_OVERLOAD()
MATCH_VOIDM_REDISP( newDefault )
MATCH_REDISP( wxPliOvl_wrth, newCopy )
END_OVERLOAD( Wx::RichTextHeaderFooterData::new )
%}
#endif