📄 richtextformatdlg.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: wx/richtext/richtextformatdlg.h// Purpose: Formatting dialog for wxRichTextCtrl// Author: Julian Smart// Modified by:// Created: 2006-10-01// RCS-ID: $Id: richtextformatdlg.h,v 1.10 2006/11/25 13:52:12 MBN Exp $// 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_RICHTEXT wxRichTextFormattingDialog;class WXDLLIMPEXP_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) : wxWindow(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_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -