Make default wxRichTextPrintout title and the name of wxRichTextPrinting object translatable. Closes #13187. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			249 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/richtext/richtextprint.h
 | |
| // Purpose:     Rich text printing classes
 | |
| // Author:      Julian Smart
 | |
| // Created:     2006-10-23
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Julian Smart
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_RICHTEXTPRINT_H_
 | |
| #define _WX_RICHTEXTPRINT_H_
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_RICHTEXT & wxUSE_PRINTING_ARCHITECTURE
 | |
| 
 | |
| #include "wx/richtext/richtextbuffer.h"
 | |
| 
 | |
| #include "wx/print.h"
 | |
| #include "wx/printdlg.h"
 | |
| 
 | |
| #define wxRICHTEXT_PRINT_MAX_PAGES 99999
 | |
| 
 | |
| // Header/footer page identifiers
 | |
| enum wxRichTextOddEvenPage {
 | |
|     wxRICHTEXT_PAGE_ODD,
 | |
|     wxRICHTEXT_PAGE_EVEN,
 | |
|     wxRICHTEXT_PAGE_ALL
 | |
| };
 | |
| 
 | |
| // Header/footer text locations
 | |
| enum wxRichTextPageLocation {
 | |
|     wxRICHTEXT_PAGE_LEFT,
 | |
|     wxRICHTEXT_PAGE_CENTRE,
 | |
|     wxRICHTEXT_PAGE_RIGHT
 | |
| };
 | |
| 
 | |
| /*!
 | |
|  * Header/footer data
 | |
|  */
 | |
| 
 | |
| class WXDLLIMPEXP_RICHTEXT wxRichTextHeaderFooterData: public wxObject
 | |
| {
 | |
| public:
 | |
|     wxRichTextHeaderFooterData() { Init(); }
 | |
|     wxRichTextHeaderFooterData(const wxRichTextHeaderFooterData& data): wxObject() { Copy(data); }
 | |
| 
 | |
|     /// Initialise
 | |
|     void Init() { m_headerMargin = 20; m_footerMargin = 20; m_showOnFirstPage = true; }
 | |
| 
 | |
|     /// Copy
 | |
|     void Copy(const wxRichTextHeaderFooterData& data);
 | |
| 
 | |
|     /// Assignment
 | |
|     void operator= (const wxRichTextHeaderFooterData& data) { Copy(data); }
 | |
| 
 | |
|     /// Set/get header text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
 | |
|     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;
 | |
| 
 | |
|     /// Set/get footer text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
 | |
|     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;
 | |
| 
 | |
|     /// Set/get text
 | |
|     void SetText(const wxString& text, int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location);
 | |
|     wxString GetText(int headerFooter, wxRichTextOddEvenPage page, wxRichTextPageLocation location) const;
 | |
| 
 | |
|     /// Set/get margins between text and header or footer, in tenths of a millimeter
 | |
|     void SetMargins(int headerMargin, int footerMargin) { m_headerMargin = headerMargin; m_footerMargin = footerMargin; }
 | |
|     int GetHeaderMargin() const { return m_headerMargin; }
 | |
|     int GetFooterMargin() const { return m_footerMargin; }
 | |
| 
 | |
|     /// Set/get whether to show header or footer on first page
 | |
|     void SetShowOnFirstPage(bool showOnFirstPage) { m_showOnFirstPage = showOnFirstPage; }
 | |
|     bool GetShowOnFirstPage() const { return m_showOnFirstPage; }
 | |
| 
 | |
|     /// Clear all text
 | |
|     void Clear();
 | |
| 
 | |
|     /// Set/get font
 | |
|     void SetFont(const wxFont& font) { m_font = font; }
 | |
|     const wxFont& GetFont() const { return m_font; }
 | |
| 
 | |
|     /// Set/get colour
 | |
|     void SetTextColour(const wxColour& col) { m_colour = col; }
 | |
|     const wxColour& GetTextColour() const { return m_colour; }
 | |
| 
 | |
|     DECLARE_CLASS(wxRichTextHeaderFooterData)
 | |
| 
 | |
| private:
 | |
| 
 | |
|     // Strings for left, centre, right, top, bottom, odd, even
 | |
|     wxString    m_text[12];
 | |
|     wxFont      m_font;
 | |
|     wxColour    m_colour;
 | |
|     int         m_headerMargin;
 | |
|     int         m_footerMargin;
 | |
|     bool        m_showOnFirstPage;
 | |
| };
 | |
| 
 | |
| /*!
 | |
|  * wxRichTextPrintout
 | |
|  */
 | |
| 
 | |
| class WXDLLIMPEXP_RICHTEXT wxRichTextPrintout : public wxPrintout
 | |
| {
 | |
| public:
 | |
|     wxRichTextPrintout(const wxString& title = _("Printout"));
 | |
|     virtual ~wxRichTextPrintout();
 | |
| 
 | |
|     /// The buffer to print
 | |
|     void SetRichTextBuffer(wxRichTextBuffer* buffer) { m_richTextBuffer = buffer; }
 | |
|     wxRichTextBuffer* GetRichTextBuffer() const { return m_richTextBuffer; }
 | |
| 
 | |
|     /// Set/get header/footer data
 | |
|     void SetHeaderFooterData(const wxRichTextHeaderFooterData& data) { m_headerFooterData = data; }
 | |
|     const wxRichTextHeaderFooterData& GetHeaderFooterData() const { return m_headerFooterData; }
 | |
| 
 | |
|     /// 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();
 | |
| 
 | |
| private:
 | |
| 
 | |
|     /// Renders one page into dc
 | |
|     void RenderPage(wxDC *dc, int page);
 | |
| 
 | |
|     /// Substitute keywords
 | |
|     static bool SubstituteKeywords(wxString& str, const wxString& title, int pageNum, int pageCount);
 | |
| 
 | |
| private:
 | |
| 
 | |
|     wxRichTextBuffer*           m_richTextBuffer;
 | |
|     int                         m_numPages;
 | |
|     wxArrayInt                  m_pageBreaksStart;
 | |
|     wxArrayInt                  m_pageBreaksEnd;
 | |
|     wxArrayInt                  m_pageYOffsets;
 | |
|     int                         m_marginLeft, m_marginTop, m_marginRight, m_marginBottom;
 | |
| 
 | |
|     wxRichTextHeaderFooterData  m_headerFooterData;
 | |
| 
 | |
|     wxDECLARE_NO_COPY_CLASS(wxRichTextPrintout);
 | |
| };
 | |
| 
 | |
| /*
 | |
|  *! wxRichTextPrinting
 | |
|  * A simple interface to perform wxRichTextBuffer printing.
 | |
|  */
 | |
| 
 | |
| class WXDLLIMPEXP_RICHTEXT wxRichTextPrinting : public wxObject
 | |
| {
 | |
| public:
 | |
|     wxRichTextPrinting(const wxString& name = _("Printing"), wxWindow *parentWindow = NULL);
 | |
|     virtual ~wxRichTextPrinting();
 | |
| 
 | |
|     /// Preview the file or buffer
 | |
|     bool PreviewFile(const wxString& richTextFile);
 | |
|     bool PreviewBuffer(const wxRichTextBuffer& buffer);
 | |
| 
 | |
|     /// Print the file or buffer
 | |
|     bool PrintFile(const wxString& richTextFile);
 | |
|     bool PrintBuffer(const wxRichTextBuffer& buffer);
 | |
| 
 | |
|     /// Shows page setup dialog
 | |
|     void PageSetup();
 | |
| 
 | |
|     /// Set/get header/footer data
 | |
|     void SetHeaderFooterData(const wxRichTextHeaderFooterData& data) { m_headerFooterData = data; }
 | |
|     const wxRichTextHeaderFooterData& GetHeaderFooterData() const { return m_headerFooterData; }
 | |
| 
 | |
|     /// Set/get header text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
 | |
|     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;
 | |
| 
 | |
|     /// Set/get footer text, e.g. wxRICHTEXT_PAGE_ODD, wxRICHTEXT_PAGE_LEFT
 | |
|     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;
 | |
| 
 | |
|     /// Show header/footer on first page, or not
 | |
|     void SetShowOnFirstPage(bool show) { m_headerFooterData.SetShowOnFirstPage(show); }
 | |
| 
 | |
|     /// Set the font
 | |
|     void SetHeaderFooterFont(const wxFont& font) { m_headerFooterData.SetFont(font); }
 | |
| 
 | |
|     /// Set the colour
 | |
|     void SetHeaderFooterTextColour(const wxColour& font) { m_headerFooterData.SetTextColour(font); }
 | |
| 
 | |
|     /// Get print and page setup data
 | |
|     wxPrintData *GetPrintData();
 | |
|     wxPageSetupDialogData *GetPageSetupData() { return m_pageSetupData; }
 | |
| 
 | |
|     /// Set print and page setup data
 | |
|     void SetPrintData(const wxPrintData& printData);
 | |
|     void SetPageSetupData(const wxPageSetupData& pageSetupData);
 | |
| 
 | |
|     /// Set the rich text buffer pointer, deleting the existing object if present
 | |
|     void SetRichTextBufferPreview(wxRichTextBuffer* buf);
 | |
|     wxRichTextBuffer* GetRichTextBufferPreview() const { return m_richTextBufferPreview; }
 | |
| 
 | |
|     void SetRichTextBufferPrinting(wxRichTextBuffer* buf);
 | |
|     wxRichTextBuffer* GetRichTextBufferPrinting() const { return m_richTextBufferPrinting; }
 | |
| 
 | |
|     /// Set/get the parent window
 | |
|     void SetParentWindow(wxWindow* parent) { m_parentWindow = parent; }
 | |
|     wxWindow* GetParentWindow() const { return m_parentWindow; }
 | |
| 
 | |
|     /// Set/get the title
 | |
|     void SetTitle(const wxString& title) { m_title = title; }
 | |
|     const wxString& GetTitle() const { return m_title; }
 | |
| 
 | |
|     /// Set/get the preview rect
 | |
|     void SetPreviewRect(const wxRect& rect) { m_previewRect = rect; }
 | |
|     const wxRect& GetPreviewRect() const { return m_previewRect; }
 | |
| 
 | |
| protected:
 | |
|     virtual wxRichTextPrintout *CreatePrintout();
 | |
|     virtual bool DoPreview(wxRichTextPrintout *printout1, wxRichTextPrintout *printout2);
 | |
|     virtual bool DoPrint(wxRichTextPrintout *printout);
 | |
| 
 | |
| private:
 | |
|     wxPrintData*                m_printData;
 | |
|     wxPageSetupDialogData*      m_pageSetupData;
 | |
| 
 | |
|     wxRichTextHeaderFooterData  m_headerFooterData;
 | |
|     wxString                    m_title;
 | |
|     wxWindow*                   m_parentWindow;
 | |
|     wxRichTextBuffer*           m_richTextBufferPreview;
 | |
|     wxRichTextBuffer*           m_richTextBufferPrinting;
 | |
|     wxRect                      m_previewRect;
 | |
| 
 | |
|     wxDECLARE_NO_COPY_CLASS(wxRichTextPrinting);
 | |
| };
 | |
| 
 | |
| #endif  // wxUSE_RICHTEXT & wxUSE_PRINTING_ARCHITECTURE
 | |
| 
 | |
| #endif // _WX_RICHTEXTPRINT_H_
 | |
| 
 |