Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			328 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			328 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/richtext/richtextformatdlg.h
 | 
						|
// Purpose:     Formatting dialog for wxRichTextCtrl
 | 
						|
// Author:      Julian Smart
 | 
						|
// Modified by:
 | 
						|
// Created:     2006-10-01
 | 
						|
// RCS-ID:      $Id: richtextformatdlg.h 49946 2007-11-14 14:22:56Z JS $
 | 
						|
// Copyright:   (c) Julian Smart
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_RICHTEXTFORMATDLG_H_
 | 
						|
#define _WX_RICHTEXTFORMATDLG_H_
 | 
						|
 | 
						|
/*!
 | 
						|
 * Includes
 | 
						|
 */
 | 
						|
 | 
						|
#include "wx/defs.h"
 | 
						|
 | 
						|
#if wxUSE_RICHTEXT
 | 
						|
 | 
						|
#include "wx/propdlg.h"
 | 
						|
#include "wx/bookctrl.h"
 | 
						|
 | 
						|
#if wxUSE_HTML
 | 
						|
#include "wx/htmllbox.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#include "wx/richtext/richtextbuffer.h"
 | 
						|
#include "wx/richtext/richtextstyles.h"
 | 
						|
 | 
						|
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextFormattingDialog;
 | 
						|
class WXDLLIMPEXP_FWD_CORE wxImageList;
 | 
						|
 | 
						|
/*!
 | 
						|
 * Flags determining the pages and buttons to be created in the dialog
 | 
						|
 */
 | 
						|
 | 
						|
#define wxRICHTEXT_FORMAT_STYLE_EDITOR      0x0001
 | 
						|
#define wxRICHTEXT_FORMAT_FONT              0x0002
 | 
						|
#define wxRICHTEXT_FORMAT_TABS              0x0004
 | 
						|
#define wxRICHTEXT_FORMAT_BULLETS           0x0008
 | 
						|
#define wxRICHTEXT_FORMAT_INDENTS_SPACING   0x0010
 | 
						|
#define wxRICHTEXT_FORMAT_LIST_STYLE        0x0020
 | 
						|
 | 
						|
#define wxRICHTEXT_FORMAT_HELP_BUTTON       0x0100
 | 
						|
 | 
						|
/*!
 | 
						|
 * Indices for bullet styles in list control
 | 
						|
 */
 | 
						|
 | 
						|
enum {
 | 
						|
    wxRICHTEXT_BULLETINDEX_NONE = 0,
 | 
						|
    wxRICHTEXT_BULLETINDEX_ARABIC,
 | 
						|
    wxRICHTEXT_BULLETINDEX_UPPER_CASE,
 | 
						|
    wxRICHTEXT_BULLETINDEX_LOWER_CASE,
 | 
						|
    wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN,
 | 
						|
    wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN,
 | 
						|
    wxRICHTEXT_BULLETINDEX_OUTLINE,
 | 
						|
    wxRICHTEXT_BULLETINDEX_SYMBOL,
 | 
						|
    wxRICHTEXT_BULLETINDEX_BITMAP,
 | 
						|
    wxRICHTEXT_BULLETINDEX_STANDARD
 | 
						|
};
 | 
						|
 | 
						|
/*!
 | 
						|
 * Shorthand for common combinations of pages
 | 
						|
 */
 | 
						|
 | 
						|
#define wxRICHTEXT_FORMAT_PARAGRAPH         (wxRICHTEXT_FORMAT_INDENTS_SPACING | wxRICHTEXT_FORMAT_BULLETS | wxRICHTEXT_FORMAT_TABS | wxRICHTEXT_FORMAT_FONT)
 | 
						|
#define wxRICHTEXT_FORMAT_CHARACTER         (wxRICHTEXT_FORMAT_FONT)
 | 
						|
#define wxRICHTEXT_FORMAT_STYLE             (wxRICHTEXT_FORMAT_PARAGRAPH | wxRICHTEXT_FORMAT_STYLE_EDITOR)
 | 
						|
 | 
						|
/*!
 | 
						|
 * Factory for formatting dialog
 | 
						|
 */
 | 
						|
 | 
						|
class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialogFactory: public wxObject
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxRichTextFormattingDialogFactory() {}
 | 
						|
    virtual ~wxRichTextFormattingDialogFactory() {}
 | 
						|
 | 
						|
// Overrideables
 | 
						|
 | 
						|
    /// Create all pages, under the dialog's book control, also calling AddPage
 | 
						|
    virtual bool CreatePages(long pages, wxRichTextFormattingDialog* dialog);
 | 
						|
 | 
						|
    /// Create a page, given a page identifier
 | 
						|
    virtual wxPanel* CreatePage(int page, wxString& title, wxRichTextFormattingDialog* dialog);
 | 
						|
 | 
						|
    /// Enumerate all available page identifiers
 | 
						|
    virtual int GetPageId(int i) const;
 | 
						|
 | 
						|
    /// Get the number of available page identifiers
 | 
						|
    virtual int GetPageIdCount() const;
 | 
						|
 | 
						|
    /// Get the image index for the given page identifier
 | 
						|
    virtual int GetPageImage(int WXUNUSED(id)) const { return -1; }
 | 
						|
 | 
						|
    /// Invoke help for the dialog
 | 
						|
    virtual bool ShowHelp(int WXUNUSED(page), wxRichTextFormattingDialog* WXUNUSED(dialog)) { return false; }
 | 
						|
 | 
						|
    /// Set the sheet style, called at the start of wxRichTextFormattingDialog::Create
 | 
						|
    virtual bool SetSheetStyle(wxRichTextFormattingDialog* dialog);
 | 
						|
 | 
						|
    /// Create the main dialog buttons
 | 
						|
    virtual bool CreateButtons(wxRichTextFormattingDialog* dialog);
 | 
						|
};
 | 
						|
 | 
						|
/*!
 | 
						|
 * Formatting dialog for a wxRichTextCtrl
 | 
						|
 */
 | 
						|
 | 
						|
class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog: public wxPropertySheetDialog
 | 
						|
{
 | 
						|
DECLARE_CLASS(wxRichTextFormattingDialog)
 | 
						|
public:
 | 
						|
    wxRichTextFormattingDialog() { Init(); }
 | 
						|
 | 
						|
    wxRichTextFormattingDialog(long flags, wxWindow* parent, const wxString& title = wxGetTranslation(wxT("Formatting")), wxWindowID id = wxID_ANY,
 | 
						|
        const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize,
 | 
						|
        long style = wxDEFAULT_DIALOG_STYLE)
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
        Create(flags, parent, title, id, pos, sz, style);
 | 
						|
    }
 | 
						|
 | 
						|
    ~wxRichTextFormattingDialog();
 | 
						|
 | 
						|
    void Init();
 | 
						|
 | 
						|
    bool Create(long flags, wxWindow* parent, const wxString& title = wxGetTranslation(wxT("Formatting")), wxWindowID id = wxID_ANY,
 | 
						|
        const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize,
 | 
						|
        long style = wxDEFAULT_DIALOG_STYLE);
 | 
						|
 | 
						|
    /// Get attributes from the given range
 | 
						|
    virtual bool GetStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range);
 | 
						|
 | 
						|
    /// Set the attributes and optionally update the display
 | 
						|
    virtual bool SetStyle(const wxTextAttrEx& style, bool update = true);
 | 
						|
 | 
						|
    /// Set the style definition and optionally update the display
 | 
						|
    virtual bool SetStyleDefinition(const wxRichTextStyleDefinition& styleDef, wxRichTextStyleSheet* sheet, bool update = true);
 | 
						|
 | 
						|
    /// Get the style definition, if any
 | 
						|
    virtual wxRichTextStyleDefinition* GetStyleDefinition() const { return m_styleDefinition; }
 | 
						|
 | 
						|
    /// Get the style sheet, if any
 | 
						|
    virtual wxRichTextStyleSheet* GetStyleSheet() const { return m_styleSheet; }
 | 
						|
 | 
						|
    /// Update the display
 | 
						|
    virtual bool UpdateDisplay();
 | 
						|
 | 
						|
    /// Apply attributes to the given range
 | 
						|
    virtual bool ApplyStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE);
 | 
						|
 | 
						|
    /// Gets and sets the attributes
 | 
						|
    const wxTextAttrEx& GetAttributes() const { return m_attributes; }
 | 
						|
    wxTextAttrEx& GetAttributes() { return m_attributes; }
 | 
						|
    void SetAttributes(const wxTextAttrEx& attr) { m_attributes = attr; }
 | 
						|
 | 
						|
    /// Transfers the data and from to the window
 | 
						|
    virtual bool TransferDataToWindow();
 | 
						|
    virtual bool TransferDataFromWindow();
 | 
						|
 | 
						|
    /// Apply the styles when a different tab is selected, so the previews are
 | 
						|
    /// up to date
 | 
						|
    void OnTabChanged(wxBookCtrlEvent& event);
 | 
						|
 | 
						|
    /// Respond to help command
 | 
						|
    void OnHelp(wxCommandEvent& event);
 | 
						|
 | 
						|
    /// Set/get image list
 | 
						|
    void SetImageList(wxImageList* imageList) { m_imageList = imageList; }
 | 
						|
    wxImageList* GetImageList() const { return m_imageList; }
 | 
						|
 | 
						|
    /// Get/set formatting factory object
 | 
						|
    static void SetFormattingDialogFactory(wxRichTextFormattingDialogFactory* factory);
 | 
						|
    static wxRichTextFormattingDialogFactory* GetFormattingDialogFactory() { return ms_FormattingDialogFactory; }
 | 
						|
 | 
						|
    /// Helper for pages to get the top-level dialog
 | 
						|
    static wxRichTextFormattingDialog* GetDialog(wxWindow* win);
 | 
						|
 | 
						|
    /// Helper for pages to get the attributes
 | 
						|
    static wxTextAttrEx* GetDialogAttributes(wxWindow* win);
 | 
						|
 | 
						|
    /// Helper for pages to get the style
 | 
						|
    static wxRichTextStyleDefinition* GetDialogStyleDefinition(wxWindow* win);
 | 
						|
 | 
						|
    /// Should we show tooltips?
 | 
						|
    static bool ShowToolTips() { return sm_showToolTips; }
 | 
						|
 | 
						|
    /// Determines whether tooltips will be shown
 | 
						|
    static void SetShowToolTips(bool show) { sm_showToolTips = show; }
 | 
						|
 | 
						|
    /// Map book control page index to our page id
 | 
						|
    void AddPageId(int id) { m_pageIds.Add(id); }
 | 
						|
 | 
						|
protected:
 | 
						|
 | 
						|
    wxImageList*                                m_imageList;
 | 
						|
    wxTextAttrEx                                m_attributes;
 | 
						|
    wxRichTextStyleDefinition*                  m_styleDefinition;
 | 
						|
    wxRichTextStyleSheet*                       m_styleSheet;
 | 
						|
    wxArrayInt                                  m_pageIds; // mapping of book control indexes to page ids
 | 
						|
 | 
						|
    static wxRichTextFormattingDialogFactory*   ms_FormattingDialogFactory;
 | 
						|
    static bool                                 sm_showToolTips;
 | 
						|
 | 
						|
DECLARE_EVENT_TABLE()
 | 
						|
};
 | 
						|
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
// helper class - wxRichTextFontPreviewCtrl
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
 | 
						|
class WXDLLIMPEXP_RICHTEXT wxRichTextFontPreviewCtrl : public wxWindow
 | 
						|
{
 | 
						|
public:
 | 
						|
    wxRichTextFontPreviewCtrl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = 0)
 | 
						|
    {
 | 
						|
        if ((style & wxBORDER_MASK) == wxBORDER_DEFAULT)
 | 
						|
#ifdef __WXMSW__
 | 
						|
            style |= GetThemedBorderStyle();
 | 
						|
#else
 | 
						|
            style |= wxBORDER_SUNKEN;
 | 
						|
#endif
 | 
						|
        wxWindow::Create(parent, id, pos, sz, style);
 | 
						|
 | 
						|
        SetBackgroundColour(*wxWHITE);
 | 
						|
        m_textEffects = 0;
 | 
						|
    }
 | 
						|
 | 
						|
    void SetTextEffects(int effects) { m_textEffects = effects; }
 | 
						|
    int GetTextEffects() const { return m_textEffects; }
 | 
						|
 | 
						|
private:
 | 
						|
    int m_textEffects;
 | 
						|
 | 
						|
    void OnPaint(wxPaintEvent& event);
 | 
						|
    DECLARE_EVENT_TABLE()
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * A control for displaying a small preview of a colour or bitmap
 | 
						|
 */
 | 
						|
 | 
						|
class WXDLLIMPEXP_RICHTEXT wxRichTextColourSwatchCtrl: public wxControl
 | 
						|
{
 | 
						|
    DECLARE_CLASS(wxRichTextColourSwatchCtrl)
 | 
						|
public:
 | 
						|
    wxRichTextColourSwatchCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0);
 | 
						|
    ~wxRichTextColourSwatchCtrl();
 | 
						|
 | 
						|
    void OnMouseEvent(wxMouseEvent& event);
 | 
						|
 | 
						|
    void SetColour(const wxColour& colour) { m_colour = colour; SetBackgroundColour(m_colour); }
 | 
						|
 | 
						|
    wxColour& GetColour() { return m_colour; }
 | 
						|
 | 
						|
    virtual wxSize DoGetBestSize() const { return GetSize(); }
 | 
						|
 | 
						|
protected:
 | 
						|
    wxColour    m_colour;
 | 
						|
 | 
						|
DECLARE_EVENT_TABLE()
 | 
						|
};
 | 
						|
 | 
						|
/*!
 | 
						|
 * wxRichTextFontListBox class declaration
 | 
						|
 * A listbox to display fonts.
 | 
						|
 */
 | 
						|
 | 
						|
class WXDLLIMPEXP_RICHTEXT wxRichTextFontListBox: public wxHtmlListBox
 | 
						|
{
 | 
						|
    DECLARE_CLASS(wxRichTextFontListBox)
 | 
						|
    DECLARE_EVENT_TABLE()
 | 
						|
 | 
						|
public:
 | 
						|
    wxRichTextFontListBox()
 | 
						|
    {
 | 
						|
        Init();
 | 
						|
    }
 | 
						|
    wxRichTextFontListBox(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
 | 
						|
        const wxSize& size = wxDefaultSize, long style = 0);
 | 
						|
    virtual ~wxRichTextFontListBox();
 | 
						|
 | 
						|
    void Init()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
 | 
						|
        const wxSize& size = wxDefaultSize, long style = 0);
 | 
						|
 | 
						|
    /// Creates a suitable HTML fragment for a font
 | 
						|
    wxString CreateHTML(const wxString& facename) const;
 | 
						|
 | 
						|
    /// Get font name for index
 | 
						|
    wxString GetFaceName(size_t i) const ;
 | 
						|
 | 
						|
    /// Set selection for string, returning the index.
 | 
						|
    int SetFaceNameSelection(const wxString& name);
 | 
						|
 | 
						|
    /// Updates the font list
 | 
						|
    void UpdateFonts();
 | 
						|
 | 
						|
    /// Does this face name exist?
 | 
						|
    bool HasFaceName(const wxString& faceName) const { return m_faceNames.Index(faceName) != wxNOT_FOUND; }
 | 
						|
 | 
						|
    /// Returns the array of face names
 | 
						|
    const wxArrayString& GetFaceNames() const { return m_faceNames; }
 | 
						|
 | 
						|
protected:
 | 
						|
    /// Returns the HTML for this item
 | 
						|
    virtual wxString OnGetItem(size_t n) const;
 | 
						|
 | 
						|
private:
 | 
						|
 | 
						|
    wxArrayString           m_faceNames;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 | 
						|
    // wxUSE_RICHTEXT
 | 
						|
 | 
						|
#endif
 | 
						|
    // _WX_RICHTEXTFORMATDLG_H_
 |