Added a customisable formatting dialog for wxRichTextCtrl. Control the
visible tabs with flags passed to the constructor. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
199
include/wx/richtext/richtextbulletspage.h
Normal file
199
include/wx/richtext/richtextbulletspage.h
Normal file
@@ -0,0 +1,199 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextbulletspage.h
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/4/2006 10:32:31 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _RICHTEXTBULLETSPAGE_H_
|
||||
#define _RICHTEXTBULLETSPAGE_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
#include "wx/statline.h"
|
||||
#include "wx/spinctrl.h"
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
class wxSpinCtrl;
|
||||
class wxRichTextCtrl;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define SYMBOL_WXRICHTEXTBULLETSPAGE_STYLE wxRESIZE_BORDER|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXRICHTEXTBULLETSPAGE_TITLE _("wxRichTextBulletsPage")
|
||||
#define SYMBOL_WXRICHTEXTBULLETSPAGE_IDNAME ID_RICHTEXTBULLETSPAGE
|
||||
#define SYMBOL_WXRICHTEXTBULLETSPAGE_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WXRICHTEXTBULLETSPAGE_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* wxRichTextBulletsPage class declaration
|
||||
*/
|
||||
|
||||
class WXDLLIMPEXP_RICHTEXT wxRichTextBulletsPage: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxRichTextBulletsPage )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
wxRichTextBulletsPage( );
|
||||
wxRichTextBulletsPage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTBULLETSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTBULLETSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTBULLETSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTBULLETSPAGE_STYLE );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTBULLETSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTBULLETSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTBULLETSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTBULLETSPAGE_STYLE );
|
||||
|
||||
/// Initialise members
|
||||
void Init();
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
/// Updates the bullets preview
|
||||
void UpdatePreview();
|
||||
|
||||
/// Transfer data from/to window
|
||||
virtual bool TransferDataFromWindow();
|
||||
virtual bool TransferDataToWindow();
|
||||
|
||||
/// Gets the attributes associated with the main formatting dialog
|
||||
wxTextAttrEx* GetAttributes();
|
||||
|
||||
/// Update for symbol-related controls
|
||||
void OnSymbolUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// Update for number-related controls
|
||||
void OnNumberUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
////@begin wxRichTextBulletsPage event handler declarations
|
||||
|
||||
/// wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
|
||||
void OnStylelistboxSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
|
||||
void OnSymbolstaticUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
void OnSymbolctrlSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
void OnSymbolctrlUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
void OnSymbolctrlUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
|
||||
void OnChooseSymbolClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
|
||||
void OnChooseSymbolUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
void OnSymbolfontctrlSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
void OnSymbolfontctrlUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
void OnSymbolfontctrlUIUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
|
||||
void OnNumberstaticUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
void OnNumberctrlUpdated( wxSpinEvent& event );
|
||||
|
||||
/// wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
void OnNumberctrlUp( wxSpinEvent& event );
|
||||
|
||||
/// wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
void OnNumberctrlDown( wxSpinEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
void OnNumberctrlTextUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
void OnNumberctrlUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
|
||||
void OnParenthesesctrlClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
|
||||
void OnParenthesesctrlUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
|
||||
void OnPeriodctrlClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
|
||||
void OnPeriodctrlUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
////@end wxRichTextBulletsPage event handler declarations
|
||||
|
||||
////@begin wxRichTextBulletsPage member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end wxRichTextBulletsPage member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
////@begin wxRichTextBulletsPage member variables
|
||||
wxListBox* m_styleListBox;
|
||||
wxComboBox* m_symbolCtrl;
|
||||
wxComboBox* m_symbolFontCtrl;
|
||||
wxSpinCtrl* m_numberCtrl;
|
||||
wxCheckBox* m_parenthesesCtrl;
|
||||
wxCheckBox* m_periodCtrl;
|
||||
wxRichTextCtrl* m_previewCtrl;
|
||||
/// Control identifiers
|
||||
enum {
|
||||
ID_RICHTEXTBULLETSPAGE = 10300,
|
||||
ID_RICHTEXTBULLETSPAGE_STYLELISTBOX = 10305,
|
||||
ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC = 10301,
|
||||
ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL = 10307,
|
||||
ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL = 10308,
|
||||
ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL = 10309,
|
||||
ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC = 10302,
|
||||
ID_RICHTEXTBULLETSPAGE_NUMBERCTRL = 10310,
|
||||
ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL = 10311,
|
||||
ID_RICHTEXTBULLETSPAGE_PERIODCTRL = 10313,
|
||||
ID_RICHTEXTBULLETSPAGE_PREVIEW_CTRL = 10314
|
||||
};
|
||||
////@end wxRichTextBulletsPage member variables
|
||||
|
||||
bool m_hasBulletStyle;
|
||||
bool m_hasBulletNumber;
|
||||
bool m_hasBulletSymbol;
|
||||
bool m_dontUpdate;
|
||||
};
|
||||
|
||||
#endif
|
||||
// _RICHTEXTBULLETSPAGE_H_
|
144
include/wx/richtext/richtextfontpage.h
Normal file
144
include/wx/richtext/richtextfontpage.h
Normal file
@@ -0,0 +1,144 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/richtext/richeditfontpage.h
|
||||
// Purpose: Font page for wxRichTextFormattingDialog
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 2006-10-02
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _RICHTEXTFONTPAGE_H_
|
||||
#define _RICHTEXTFONTPAGE_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
class wxRichTextFontListBox;
|
||||
class wxRichTextColourSwatchCtrl;
|
||||
class wxRichTextFontPreviewCtrl;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define SYMBOL_WXRICHTEXTFONTPAGE_STYLE wxRESIZE_BORDER|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXRICHTEXTFONTPAGE_TITLE _("wxRichTextFontPage")
|
||||
#define SYMBOL_WXRICHTEXTFONTPAGE_IDNAME ID_RICHTEXTFONTPAGE
|
||||
#define SYMBOL_WXRICHTEXTFONTPAGE_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WXRICHTEXTFONTPAGE_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* wxRichTextFontPage class declaration
|
||||
*/
|
||||
|
||||
class WXDLLIMPEXP_RICHTEXT wxRichTextFontPage: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxRichTextFontPage )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
wxRichTextFontPage( );
|
||||
wxRichTextFontPage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTFONTPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTFONTPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTFONTPAGE_SIZE, long style = SYMBOL_WXRICHTEXTFONTPAGE_STYLE );
|
||||
|
||||
/// Initialise members
|
||||
void Init();
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTFONTPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTFONTPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTFONTPAGE_SIZE, long style = SYMBOL_WXRICHTEXTFONTPAGE_STYLE );
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
/// Transfer data from/to window
|
||||
virtual bool TransferDataFromWindow();
|
||||
virtual bool TransferDataToWindow();
|
||||
|
||||
/// Updates the font preview
|
||||
void UpdatePreview();
|
||||
|
||||
void OnFaceListBoxSelected( wxCommandEvent& event );
|
||||
void OnColourClicked( wxCommandEvent& event );
|
||||
|
||||
/// Gets the attributes associated with the main formatting dialog
|
||||
wxTextAttrEx* GetAttributes();
|
||||
|
||||
////@begin wxRichTextFontPage event handler declarations
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_FACETEXTCTRL
|
||||
void OnFaceTextCtrlUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_SIZETEXTCTRL
|
||||
void OnSizeTextCtrlUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_SIZELISTBOX
|
||||
void OnSizeListBoxSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_STYLECTRL
|
||||
void OnStyleCtrlSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_WEIGHTCTRL
|
||||
void OnWeightCtrlSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL
|
||||
void OnUnderliningCtrlSelected( wxCommandEvent& event );
|
||||
|
||||
////@end wxRichTextFontPage event handler declarations
|
||||
|
||||
////@begin wxRichTextFontPage member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end wxRichTextFontPage member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
////@begin wxRichTextFontPage member variables
|
||||
wxTextCtrl* m_faceTextCtrl;
|
||||
wxRichTextFontListBox* m_faceListBox;
|
||||
wxTextCtrl* m_sizeTextCtrl;
|
||||
wxListBox* m_sizeListBox;
|
||||
wxComboBox* m_styleCtrl;
|
||||
wxComboBox* m_weightCtrl;
|
||||
wxComboBox* m_underliningCtrl;
|
||||
wxRichTextColourSwatchCtrl* m_colourCtrl;
|
||||
wxRichTextFontPreviewCtrl* m_previewCtrl;
|
||||
/// Control identifiers
|
||||
enum {
|
||||
ID_RICHTEXTFONTPAGE = 10000,
|
||||
ID_RICHTEXTFONTPAGE_FACETEXTCTRL = 10001,
|
||||
ID_RICHTEXTFONTPAGE_FACELISTBOX = 10002,
|
||||
ID_RICHTEXTFONTPAGE_SIZETEXTCTRL = 10005,
|
||||
ID_RICHTEXTFONTPAGE_SIZELISTBOX = 10006,
|
||||
ID_RICHTEXTFONTPAGE_STYLECTRL = 10007,
|
||||
ID_RICHTEXTFONTPAGE_WEIGHTCTRL = 10004,
|
||||
ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL = 10008,
|
||||
ID_RICHTEXTFONTPAGE_COLOURCTRL = 10009,
|
||||
ID_RICHTEXTFONTPAGE_PREVIEWCTRL = 10003
|
||||
};
|
||||
////@end wxRichTextFontPage member variables
|
||||
|
||||
bool m_dontUpdate;
|
||||
bool m_colourPresent;
|
||||
};
|
||||
|
||||
#endif
|
||||
// _RICHTEXTFONTPAGE_H_
|
280
include/wx/richtext/richtextformatdlg.h
Normal file
280
include/wx/richtext/richtextformatdlg.h
Normal file
@@ -0,0 +1,280 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/richtext/richtextformatdlg.h
|
||||
// Purpose: Formatting dialog for wxRichTextCtrl
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 2006-10-01
|
||||
// RCS-ID: $Id$
|
||||
// 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"
|
||||
#if wxUSE_HTML
|
||||
#include "wx/htmllbox.h"
|
||||
#endif
|
||||
|
||||
#include "wx/richtext/richtextbuffer.h"
|
||||
#include "wx/richtext/richtextstyles.h"
|
||||
|
||||
class WXDLLEXPORT wxNotebookEvent;
|
||||
class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog;
|
||||
|
||||
/*!
|
||||
* Flags determining the pages 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
|
||||
|
||||
/*!
|
||||
* 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 = _("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, wxWindowID id,
|
||||
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(wxNotebookEvent& 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);
|
||||
|
||||
protected:
|
||||
|
||||
wxImageList* m_imageList;
|
||||
wxTextAttrEx m_attributes;
|
||||
wxRichTextStyleDefinition* m_styleDefinition;
|
||||
wxRichTextStyleSheet* m_styleSheet;
|
||||
|
||||
static wxRichTextFormattingDialogFactory* ms_FormattingDialogFactory;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private:
|
||||
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 OnPaint(wxPaintEvent& event);
|
||||
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_
|
||||
|
168
include/wx/richtext/richtextindentspage.h
Normal file
168
include/wx/richtext/richtextindentspage.h
Normal file
@@ -0,0 +1,168 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextindentspage.h
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/3/2006 2:28:21 PM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _RICHTEXTINDENTSPAGE_H_
|
||||
#define _RICHTEXTINDENTSPAGE_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
#include "wx/statline.h"
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
class wxRichTextCtrl;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_STYLE wxRESIZE_BORDER|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_TITLE _("wxRichTextFontPage")
|
||||
#define SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_IDNAME ID_RICHTEXTINDENTSSPACINGPAGE
|
||||
#define SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* wxRichTextIndentsSpacingPage class declaration
|
||||
*/
|
||||
|
||||
class WXDLLIMPEXP_RICHTEXT wxRichTextIndentsSpacingPage: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxRichTextIndentsSpacingPage )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
wxRichTextIndentsSpacingPage( );
|
||||
wxRichTextIndentsSpacingPage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_SIZE, long style = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_STYLE );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_SIZE, long style = SYMBOL_WXRICHTEXTINDENTSSPACINGPAGE_STYLE );
|
||||
|
||||
/// Initialise members
|
||||
void Init();
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
/// Transfer data from/to window
|
||||
virtual bool TransferDataFromWindow();
|
||||
virtual bool TransferDataToWindow();
|
||||
|
||||
/// Updates the paragraph preview
|
||||
void UpdatePreview();
|
||||
|
||||
/// Gets the attributes associated with the main formatting dialog
|
||||
wxTextAttrEx* GetAttributes();
|
||||
|
||||
////@begin wxRichTextIndentsSpacingPage event handler declarations
|
||||
|
||||
/// wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
|
||||
void OnAlignmentLeftSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
|
||||
void OnAlignmentRightSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
|
||||
void OnAlignmentJustifiedSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
|
||||
void OnAlignmentCentredSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
|
||||
void OnAlignmentIndeterminateSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
|
||||
void OnIndentLeftUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
|
||||
void OnIndentLeftFirstUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
|
||||
void OnIndentRightUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
|
||||
void OnSpacingBeforeUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
|
||||
void OnSpacingAfterUpdated( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
|
||||
void OnSpacingLineSelected( wxCommandEvent& event );
|
||||
|
||||
////@end wxRichTextIndentsSpacingPage event handler declarations
|
||||
|
||||
////@begin wxRichTextIndentsSpacingPage member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end wxRichTextIndentsSpacingPage member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
////@begin wxRichTextIndentsSpacingPage member variables
|
||||
wxRadioButton* m_alignmentLeft;
|
||||
wxRadioButton* m_alignmentRight;
|
||||
wxRadioButton* m_alignmentJustified;
|
||||
wxRadioButton* m_alignmentCentred;
|
||||
wxRadioButton* m_alignmentIndeterminate;
|
||||
wxTextCtrl* m_indentLeft;
|
||||
wxTextCtrl* m_indentLeftFirst;
|
||||
wxTextCtrl* m_indentRight;
|
||||
wxTextCtrl* m_spacingBefore;
|
||||
wxTextCtrl* m_spacingAfter;
|
||||
wxComboBox* m_spacingLine;
|
||||
wxRichTextCtrl* m_previewCtrl;
|
||||
/// Control identifiers
|
||||
enum {
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE = 10100,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT = 10102,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT = 10110,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED = 10111,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED = 10112,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE = 10101,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT = 10103,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST = 10104,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT = 10113,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE = 10114,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER = 10116,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE = 10115,
|
||||
ID_RICHTEXTINDENTSSPACINGPAGE_PREVIEW_CTRL = 10109
|
||||
};
|
||||
////@end wxRichTextIndentsSpacingPage member variables
|
||||
|
||||
bool m_dontUpdate;
|
||||
};
|
||||
|
||||
#endif
|
||||
// _RICHTEXTINDENTSPAGE_H_
|
113
include/wx/richtext/richtextstylepage.h
Normal file
113
include/wx/richtext/richtextstylepage.h
Normal file
@@ -0,0 +1,113 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextstylepage.h
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/5/2006 11:34:55 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _RICHTEXTSTYLEPAGE_H_
|
||||
#define _RICHTEXTSTYLEPAGE_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define SYMBOL_WXRICHTEXTSTYLEPAGE_STYLE wxRESIZE_BORDER|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXRICHTEXTSTYLEPAGE_TITLE _("wxRichTextStylePage")
|
||||
#define SYMBOL_WXRICHTEXTSTYLEPAGE_IDNAME ID_RICHTEXTSTYLEPAGE
|
||||
#define SYMBOL_WXRICHTEXTSTYLEPAGE_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WXRICHTEXTSTYLEPAGE_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* wxRichTextStylePage class declaration
|
||||
*/
|
||||
|
||||
class wxRichTextStylePage: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxRichTextStylePage )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
wxRichTextStylePage( );
|
||||
wxRichTextStylePage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTSTYLEPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTSTYLEPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTSTYLEPAGE_SIZE, long style = SYMBOL_WXRICHTEXTSTYLEPAGE_STYLE );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTSTYLEPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTSTYLEPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTSTYLEPAGE_SIZE, long style = SYMBOL_WXRICHTEXTSTYLEPAGE_STYLE );
|
||||
|
||||
/// Initialise members
|
||||
void Init();
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
/// Transfer data from/to window
|
||||
virtual bool TransferDataFromWindow();
|
||||
virtual bool TransferDataToWindow();
|
||||
|
||||
/// Gets the attributes associated with the main formatting dialog
|
||||
wxTextAttrEx* GetAttributes();
|
||||
|
||||
////@begin wxRichTextStylePage event handler declarations
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
|
||||
void OnNextStyleUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
////@end wxRichTextStylePage event handler declarations
|
||||
|
||||
////@begin wxRichTextStylePage member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end wxRichTextStylePage member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
////@begin wxRichTextStylePage member variables
|
||||
wxTextCtrl* m_styleName;
|
||||
wxComboBox* m_basedOn;
|
||||
wxComboBox* m_nextStyle;
|
||||
/// Control identifiers
|
||||
enum {
|
||||
ID_RICHTEXTSTYLEPAGE = 10403,
|
||||
ID_RICHTEXTSTYLEPAGE_STYLE_NAME = 10404,
|
||||
ID_RICHTEXTSTYLEPAGE_BASED_ON = 10405,
|
||||
ID_RICHTEXTSTYLEPAGE_NEXT_STYLE = 10406
|
||||
};
|
||||
////@end wxRichTextStylePage member variables
|
||||
};
|
||||
|
||||
#endif
|
||||
// _RICHTEXTSTYLEPAGE_H_
|
137
include/wx/richtext/richtexttabspage.h
Normal file
137
include/wx/richtext/richtexttabspage.h
Normal file
@@ -0,0 +1,137 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtexttabspage.h
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/4/2006 8:03:20 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _RICHTEXTTABSPAGE_H_
|
||||
#define _RICHTEXTTABSPAGE_H_
|
||||
|
||||
/*!
|
||||
* Includes
|
||||
*/
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
* Control identifiers
|
||||
*/
|
||||
|
||||
////@begin control identifiers
|
||||
#define SYMBOL_WXRICHTEXTTABSPAGE_STYLE wxRESIZE_BORDER|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXRICHTEXTTABSPAGE_TITLE _("wxRichTextFontPage")
|
||||
#define SYMBOL_WXRICHTEXTTABSPAGE_IDNAME ID_RICHTEXTTABSPAGE
|
||||
#define SYMBOL_WXRICHTEXTTABSPAGE_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WXRICHTEXTTABSPAGE_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
* Compatibility
|
||||
*/
|
||||
|
||||
#ifndef wxCLOSE_BOX
|
||||
#define wxCLOSE_BOX 0x1000
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* wxRichTextTabsPage class declaration
|
||||
*/
|
||||
|
||||
class WXDLLIMPEXP_RICHTEXT wxRichTextTabsPage: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxRichTextTabsPage )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
/// Constructors
|
||||
wxRichTextTabsPage( );
|
||||
wxRichTextTabsPage( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTTABSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTTABSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTTABSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTTABSPAGE_STYLE );
|
||||
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXRICHTEXTTABSPAGE_IDNAME, const wxPoint& pos = SYMBOL_WXRICHTEXTTABSPAGE_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTTABSPAGE_SIZE, long style = SYMBOL_WXRICHTEXTTABSPAGE_STYLE );
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
/// Initialise members
|
||||
void Init();
|
||||
|
||||
/// Transfer data from/to window
|
||||
virtual bool TransferDataFromWindow();
|
||||
virtual bool TransferDataToWindow();
|
||||
|
||||
/// Sorts the tab array
|
||||
virtual void SortTabs();
|
||||
|
||||
/// Gets the attributes associated with the main formatting dialog
|
||||
wxTextAttrEx* GetAttributes();
|
||||
|
||||
////@begin wxRichTextTabsPage event handler declarations
|
||||
|
||||
/// wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTTABSPAGE_TABLIST
|
||||
void OnTablistSelected( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
|
||||
void OnNewTabClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
|
||||
void OnNewTabUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
|
||||
void OnDeleteTabClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
|
||||
void OnDeleteTabUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
|
||||
void OnDeleteAllTabsClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
|
||||
void OnDeleteAllTabsUpdate( wxUpdateUIEvent& event );
|
||||
|
||||
////@end wxRichTextTabsPage event handler declarations
|
||||
|
||||
////@begin wxRichTextTabsPage member function declarations
|
||||
|
||||
/// Retrieves bitmap resources
|
||||
wxBitmap GetBitmapResource( const wxString& name );
|
||||
|
||||
/// Retrieves icon resources
|
||||
wxIcon GetIconResource( const wxString& name );
|
||||
////@end wxRichTextTabsPage member function declarations
|
||||
|
||||
/// Should we show tooltips?
|
||||
static bool ShowToolTips();
|
||||
|
||||
////@begin wxRichTextTabsPage member variables
|
||||
wxTextCtrl* m_tabEditCtrl;
|
||||
wxListBox* m_tabListCtrl;
|
||||
/// Control identifiers
|
||||
enum {
|
||||
ID_RICHTEXTTABSPAGE = 10200,
|
||||
ID_RICHTEXTTABSPAGE_TABEDIT = 10213,
|
||||
ID_RICHTEXTTABSPAGE_TABLIST = 10214,
|
||||
ID_RICHTEXTTABSPAGE_NEW_TAB = 10201,
|
||||
ID_RICHTEXTTABSPAGE_DELETE_TAB = 10202,
|
||||
ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS = 10203
|
||||
};
|
||||
////@end wxRichTextTabsPage member variables
|
||||
|
||||
bool m_tabsPresent;
|
||||
};
|
||||
|
||||
#endif
|
||||
// _RICHTEXTTABSPAGE_H_
|
691
src/richtext/richtextbulletspage.cpp
Normal file
691
src/richtext/richtextbulletspage.cpp
Normal file
@@ -0,0 +1,691 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextbulletspage.cpp
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/4/2006 10:32:31 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "../../include/wx/richtext/richtextbulletspage.h"
|
||||
#include "wx/richtext/richtextsymboldlg.h"
|
||||
#include "wx/fontenum.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* wxRichTextBulletsPage type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxRichTextBulletsPage, wxPanel )
|
||||
|
||||
/*!
|
||||
* wxRichTextBulletsPage event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxRichTextBulletsPage, wxPanel )
|
||||
|
||||
////@begin wxRichTextBulletsPage event table entries
|
||||
EVT_LISTBOX( ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxRichTextBulletsPage::OnStylelistboxSelected )
|
||||
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, wxRichTextBulletsPage::OnSymbolstaticUpdate )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlSelected )
|
||||
EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdated )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdate )
|
||||
|
||||
EVT_BUTTON( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolUpdate )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlSelected )
|
||||
EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUpdated )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate )
|
||||
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, wxRichTextBulletsPage::OnNumberstaticUpdate )
|
||||
|
||||
EVT_SPINCTRL( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdated )
|
||||
EVT_SPIN_UP( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUp )
|
||||
EVT_SPIN_DOWN( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlDown )
|
||||
EVT_TEXT( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlTextUpdated )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdate )
|
||||
|
||||
EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlUpdate )
|
||||
|
||||
EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlUpdate )
|
||||
|
||||
////@end wxRichTextBulletsPage event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* wxRichTextBulletsPage constructors
|
||||
*/
|
||||
|
||||
wxRichTextBulletsPage::wxRichTextBulletsPage( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRichTextBulletsPage::wxRichTextBulletsPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Initialise members
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::Init()
|
||||
{
|
||||
m_hasBulletStyle = false;
|
||||
m_hasBulletNumber = false;
|
||||
m_hasBulletSymbol = false;
|
||||
m_dontUpdate = false;
|
||||
|
||||
////@begin wxRichTextBulletsPage member initialisation
|
||||
m_styleListBox = NULL;
|
||||
m_symbolCtrl = NULL;
|
||||
m_symbolFontCtrl = NULL;
|
||||
m_numberCtrl = NULL;
|
||||
m_parenthesesCtrl = NULL;
|
||||
m_periodCtrl = NULL;
|
||||
m_previewCtrl = NULL;
|
||||
////@end wxRichTextBulletsPage member initialisation
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxRichTextBulletsPage creator
|
||||
*/
|
||||
|
||||
bool wxRichTextBulletsPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin wxRichTextBulletsPage creation
|
||||
wxPanel::Create( parent, id, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end wxRichTextBulletsPage creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for wxRichTextBulletsPage
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::CreateControls()
|
||||
{
|
||||
////@begin wxRichTextBulletsPage content construction
|
||||
wxRichTextBulletsPage* itemPanel1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemPanel1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Bullet style:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_styleListBoxStrings = NULL;
|
||||
m_styleListBox = new wxListBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxDefaultPosition, wxDefaultSize, 0, m_styleListBoxStrings, wxLB_SINGLE );
|
||||
itemBoxSizer5->Add(m_styleListBox, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxStaticLine* itemStaticLine9 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
itemBoxSizer4->Add(itemStaticLine9, 0, wxGROW|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer11, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText12 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("&Symbol:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer11->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer11->Add(itemBoxSizer13, 0, wxGROW, 5);
|
||||
|
||||
wxString* m_symbolCtrlStrings = NULL;
|
||||
m_symbolCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, _T(""), wxDefaultPosition, wxSize(60, -1), 0, m_symbolCtrlStrings, wxCB_DROPDOWN );
|
||||
itemBoxSizer13->Add(m_symbolCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxFIXED_MINSIZE, 5);
|
||||
|
||||
wxButton* itemButton15 = new wxButton( itemPanel1, ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, _("Ch&oose..."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer13->Add(itemButton15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
itemBoxSizer11->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText17 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("Symbol &font:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer11->Add(itemStaticText17, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_symbolFontCtrlStrings = NULL;
|
||||
m_symbolFontCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_symbolFontCtrlStrings, wxCB_DROPDOWN );
|
||||
itemBoxSizer11->Add(m_symbolFontCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxStaticLine* itemStaticLine20 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
itemBoxSizer4->Add(itemStaticLine20, 0, wxGROW|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer22, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText23 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, _("&Number:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer22->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_numberCtrl = new wxSpinCtrl( itemPanel1, ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, _T("0"), wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 0, 100000, 0 );
|
||||
itemBoxSizer22->Add(m_numberCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
itemBoxSizer22->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_parenthesesCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, _("&Parentheses"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_parenthesesCtrl->SetValue(false);
|
||||
itemBoxSizer22->Add(m_parenthesesCtrl, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_periodCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_PERIODCTRL, _("Peri&od"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_periodCtrl->SetValue(false);
|
||||
itemBoxSizer22->Add(m_periodCtrl, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_previewCtrl = new wxRichTextCtrl( itemPanel1, ID_RICHTEXTBULLETSPAGE_PREVIEW_CTRL, wxEmptyString, wxDefaultPosition, wxSize(350, 180), wxSUNKEN_BORDER );
|
||||
m_previewCtrl->SetHelpText(_("Shows a preview of the bullet settings."));
|
||||
if (ShowToolTips())
|
||||
m_previewCtrl->SetToolTip(_("Shows a preview of the bullet settings."));
|
||||
itemBoxSizer3->Add(m_previewCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
////@end wxRichTextBulletsPage content construction
|
||||
|
||||
m_styleListBox->Append(_("(None)"));
|
||||
m_styleListBox->Append(_("Arabic"));
|
||||
m_styleListBox->Append(_("Upper case letters"));
|
||||
m_styleListBox->Append(_("Lower case letters"));
|
||||
m_styleListBox->Append(_("Upper case roman numerals"));
|
||||
m_styleListBox->Append(_("Lower case roman numerals"));
|
||||
m_styleListBox->Append(_("Symbol"));
|
||||
m_styleListBox->Append(_("Bitmap"));
|
||||
|
||||
m_symbolCtrl->Append(_("*"));
|
||||
m_symbolCtrl->Append(_("-"));
|
||||
m_symbolCtrl->Append(_(">"));
|
||||
m_symbolCtrl->Append(_("+"));
|
||||
m_symbolCtrl->Append(_("~"));
|
||||
|
||||
wxFontEnumerator enumerator;
|
||||
enumerator.EnumerateFacenames();
|
||||
wxArrayString facenames = enumerator.GetFacenames();
|
||||
facenames.Sort();
|
||||
|
||||
m_symbolFontCtrl->Append(facenames);
|
||||
}
|
||||
|
||||
/// Transfer data from/to window
|
||||
bool wxRichTextBulletsPage::TransferDataFromWindow()
|
||||
{
|
||||
wxPanel::TransferDataFromWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (m_hasBulletStyle)
|
||||
{
|
||||
long bulletStyle = 0;
|
||||
|
||||
int index = m_styleListBox->GetSelection();
|
||||
if (index == 1)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ARABIC;
|
||||
else if (index == 2)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER;
|
||||
else if (index == 3)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER;
|
||||
else if (index == 4)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER;
|
||||
else if (index == 5)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER;
|
||||
else if (index == 6)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_SYMBOL;
|
||||
else if (index == 7)
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_BITMAP;
|
||||
|
||||
if (m_parenthesesCtrl->GetValue())
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PARENTHESES;
|
||||
if (m_periodCtrl->GetValue())
|
||||
bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PERIOD;
|
||||
|
||||
attr->SetBulletStyle(bulletStyle);
|
||||
}
|
||||
|
||||
if (m_hasBulletNumber)
|
||||
{
|
||||
attr->SetBulletNumber(m_numberCtrl->GetValue());
|
||||
}
|
||||
|
||||
if (m_hasBulletSymbol)
|
||||
{
|
||||
wxChar c(wxT('*'));
|
||||
if (m_symbolCtrl->GetValue().Length() > 0)
|
||||
c = m_symbolCtrl->GetValue()[0];
|
||||
attr->SetBulletSymbol(c);
|
||||
attr->SetBulletFont(m_symbolFontCtrl->GetValue());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextBulletsPage::TransferDataToWindow()
|
||||
{
|
||||
m_dontUpdate = true;
|
||||
|
||||
wxPanel::TransferDataToWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (attr->HasBulletStyle())
|
||||
{
|
||||
int index = -1;
|
||||
if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ARABIC)
|
||||
index = 1;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER)
|
||||
index = 2;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER)
|
||||
index = 3;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER)
|
||||
index = 4;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER)
|
||||
index = 5;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
|
||||
index = 6;
|
||||
else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_BITMAP)
|
||||
index = 7;
|
||||
m_styleListBox->SetSelection(index);
|
||||
|
||||
if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PARENTHESES)
|
||||
m_parenthesesCtrl->SetValue(true);
|
||||
else
|
||||
m_parenthesesCtrl->SetValue(false);
|
||||
|
||||
if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PERIOD)
|
||||
m_periodCtrl->SetValue(true);
|
||||
else
|
||||
m_periodCtrl->SetValue(false);
|
||||
}
|
||||
else
|
||||
m_styleListBox->SetSelection(-1);
|
||||
|
||||
if (attr->HasBulletSymbol())
|
||||
{
|
||||
wxChar c = attr->GetBulletSymbol();
|
||||
wxString s;
|
||||
s << c;
|
||||
m_symbolCtrl->SetValue(s);
|
||||
m_symbolFontCtrl->SetValue(attr->GetBulletFont());
|
||||
}
|
||||
else
|
||||
m_symbolCtrl->SetValue(wxEmptyString);
|
||||
|
||||
if (attr->HasBulletNumber())
|
||||
m_numberCtrl->SetValue(attr->GetBulletNumber());
|
||||
else
|
||||
m_numberCtrl->SetValue(0);
|
||||
|
||||
UpdatePreview();
|
||||
|
||||
m_dontUpdate = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Updates the bullet preview
|
||||
void wxRichTextBulletsPage::UpdatePreview()
|
||||
{
|
||||
static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
|
||||
Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.");
|
||||
|
||||
static const wxChar* s_para2 = wxT("\nDuis pharetra consequat dui. Cum sociis natoque penatibus \
|
||||
et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.");
|
||||
|
||||
static const wxChar* s_para3 = wxT("\nInteger convallis dolor at augue \
|
||||
iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
|
||||
|
||||
TransferDataFromWindow();
|
||||
wxTextAttrEx attr(*GetAttributes());
|
||||
attr.SetFlags(attr.GetFlags() &
|
||||
(wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_SYMBOL|
|
||||
wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|
|
||||
wxTEXT_ATTR_LINE_SPACING));
|
||||
|
||||
wxFont font(m_previewCtrl->GetFont());
|
||||
font.SetPointSize(9);
|
||||
m_previewCtrl->SetFont(font);
|
||||
|
||||
font.SetWeight(wxBOLD);
|
||||
attr.SetFont(font);
|
||||
|
||||
m_previewCtrl->Clear();
|
||||
|
||||
m_previewCtrl->WriteText(s_para1);
|
||||
m_previewCtrl->BeginStyle(attr);
|
||||
m_previewCtrl->WriteText(s_para2);
|
||||
m_previewCtrl->EndStyle();
|
||||
m_previewCtrl->WriteText(s_para3);
|
||||
}
|
||||
|
||||
wxTextAttrEx* wxRichTextBulletsPage::GetAttributes()
|
||||
{
|
||||
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool wxRichTextBulletsPage::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap wxRichTextBulletsPage::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin wxRichTextBulletsPage bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end wxRichTextBulletsPage bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon wxRichTextBulletsPage::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin wxRichTextBulletsPage icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end wxRichTextBulletsPage icon retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnStylelistboxSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletStyle = true;
|
||||
|
||||
if (m_styleListBox->GetSelection() == 6)
|
||||
m_hasBulletSymbol = true;
|
||||
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolctrlSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletSymbol = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolctrlUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletSymbol = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolctrlUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnSymbolUpdate(event);
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberctrlUpdated( wxSpinEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletNumber = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberctrlUp( wxSpinEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletNumber = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberctrlDown( wxSpinEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletNumber = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberctrlTextUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletNumber = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberctrlUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnNumberUpdate(event);
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnParenthesesctrlClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletStyle = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnParenthesesctrlUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
int sel = m_styleListBox->GetSelection();
|
||||
event.Enable(m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 0));
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnPeriodctrlClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
{
|
||||
m_hasBulletStyle = true;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnPeriodctrlUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
int sel = m_styleListBox->GetSelection();
|
||||
event.Enable(m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 0));
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnChooseSymbolClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
int sel = m_styleListBox->GetSelection();
|
||||
if (m_hasBulletStyle && sel == 6)
|
||||
{
|
||||
wxString symbol = m_symbolCtrl->GetValue();
|
||||
wxString fontName = m_symbolFontCtrl->GetValue();
|
||||
wxSymbolPickerDialog dlg(symbol, fontName, fontName, this);
|
||||
|
||||
if (dlg.ShowModal() == wxID_OK)
|
||||
{
|
||||
m_dontUpdate = true;
|
||||
|
||||
m_symbolCtrl->SetValue(dlg.GetSymbol());
|
||||
m_symbolFontCtrl->SetValue(dlg.GetFontName());
|
||||
|
||||
UpdatePreview();
|
||||
|
||||
m_dontUpdate = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnChooseSymbolUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnSymbolUpdate(event);
|
||||
}
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolfontctrlSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_dontUpdate)
|
||||
return;
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolfontctrlUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_dontUpdate)
|
||||
return;
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnSymbolUpdate(event);
|
||||
}
|
||||
|
||||
/// Update for symbol-related controls
|
||||
void wxRichTextBulletsPage::OnSymbolUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
int sel = m_styleListBox->GetSelection();
|
||||
event.Enable(m_hasBulletStyle && (sel == 6));
|
||||
}
|
||||
|
||||
/// Update for number-related controls
|
||||
void wxRichTextBulletsPage::OnNumberUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
int sel = m_styleListBox->GetSelection();
|
||||
event.Enable( m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 0));
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnSymbolstaticUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnSymbolUpdate(event);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
|
||||
*/
|
||||
|
||||
void wxRichTextBulletsPage::OnNumberstaticUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
OnNumberUpdate(event);
|
||||
}
|
||||
|
||||
|
636
src/richtext/richtextfontpage.cpp
Normal file
636
src/richtext/richtextfontpage.cpp
Normal file
@@ -0,0 +1,636 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/richtext/richeditfontpage.cpp
|
||||
// Purpose: Font page for wxRichTextFormattingDialog
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 2006-10-02
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "../../include/wx/richtext/richtextfontpage.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* wxRichTextFontPage type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxRichTextFontPage, wxPanel )
|
||||
|
||||
/*!
|
||||
* wxRichTextFontPage event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxRichTextFontPage, wxPanel )
|
||||
EVT_LISTBOX( ID_RICHTEXTFONTPAGE_FACELISTBOX, wxRichTextFontPage::OnFaceListBoxSelected )
|
||||
EVT_BUTTON( ID_RICHTEXTFONTPAGE_COLOURCTRL, wxRichTextFontPage::OnColourClicked )
|
||||
|
||||
////@begin wxRichTextFontPage event table entries
|
||||
EVT_TEXT( ID_RICHTEXTFONTPAGE_FACETEXTCTRL, wxRichTextFontPage::OnFaceTextCtrlUpdated )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, wxRichTextFontPage::OnSizeTextCtrlUpdated )
|
||||
|
||||
EVT_LISTBOX( ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxRichTextFontPage::OnSizeListBoxSelected )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_STYLECTRL, wxRichTextFontPage::OnStyleCtrlSelected )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_WEIGHTCTRL, wxRichTextFontPage::OnWeightCtrlSelected )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, wxRichTextFontPage::OnUnderliningCtrlSelected )
|
||||
|
||||
////@end wxRichTextFontPage event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* wxRichTextFontPage constructors
|
||||
*/
|
||||
|
||||
wxRichTextFontPage::wxRichTextFontPage( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRichTextFontPage::wxRichTextFontPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Initialise members
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::Init()
|
||||
{
|
||||
m_dontUpdate = false;
|
||||
m_colourPresent = false;
|
||||
|
||||
////@begin wxRichTextFontPage member initialisation
|
||||
m_faceTextCtrl = NULL;
|
||||
m_faceListBox = NULL;
|
||||
m_sizeTextCtrl = NULL;
|
||||
m_sizeListBox = NULL;
|
||||
m_styleCtrl = NULL;
|
||||
m_weightCtrl = NULL;
|
||||
m_underliningCtrl = NULL;
|
||||
m_colourCtrl = NULL;
|
||||
m_previewCtrl = NULL;
|
||||
////@end wxRichTextFontPage member initialisation
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxRichTextFontPage creator
|
||||
*/
|
||||
|
||||
bool wxRichTextFontPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin wxRichTextFontPage creation
|
||||
wxPanel::Create( parent, id, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end wxRichTextFontPage creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for wxRichTextFontPage
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::CreateControls()
|
||||
{
|
||||
////@begin wxRichTextFontPage content construction
|
||||
wxRichTextFontPage* itemPanel1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemPanel1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer4, 1, wxGROW, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer5, 1, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Font:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_faceTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_FACETEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_faceTextCtrl->SetHelpText(_("Type a font name."));
|
||||
if (ShowToolTips())
|
||||
m_faceTextCtrl->SetToolTip(_("Type a font name."));
|
||||
itemBoxSizer5->Add(m_faceTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
||||
|
||||
m_faceListBox = new wxRichTextFontListBox( itemPanel1, ID_RICHTEXTFONTPAGE_FACELISTBOX, wxDefaultPosition, wxSize(200, 140), wxSIMPLE_BORDER );
|
||||
m_faceListBox->SetHelpText(_("Lists the available fonts."));
|
||||
if (ShowToolTips())
|
||||
m_faceListBox->SetToolTip(_("Lists the available fonts."));
|
||||
itemBoxSizer5->Add(m_faceListBox, 1, wxGROW|wxALL|wxFIXED_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer9 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer9, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText10 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer9->Add(itemStaticText10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_sizeTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
m_sizeTextCtrl->SetHelpText(_("Type a size in points."));
|
||||
if (ShowToolTips())
|
||||
m_sizeTextCtrl->SetToolTip(_("Type a size in points."));
|
||||
itemBoxSizer9->Add(m_sizeTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
||||
|
||||
wxString* m_sizeListBoxStrings = NULL;
|
||||
m_sizeListBox = new wxListBox( itemPanel1, ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxDefaultPosition, wxSize(50, -1), 0, m_sizeListBoxStrings, wxLB_SINGLE );
|
||||
m_sizeListBox->SetHelpText(_("Lists font sizes in points."));
|
||||
if (ShowToolTips())
|
||||
m_sizeListBox->SetToolTip(_("Lists font sizes in points."));
|
||||
itemBoxSizer9->Add(m_sizeListBox, 1, wxALIGN_CENTER_HORIZONTAL|wxALL|wxFIXED_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer13, 0, wxGROW, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer13->Add(itemBoxSizer14, 1, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText15 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font st&yle:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_styleCtrlStrings = NULL;
|
||||
m_styleCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_STYLECTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_styleCtrlStrings, wxCB_READONLY );
|
||||
m_styleCtrl->SetHelpText(_("Select regular or italic style."));
|
||||
if (ShowToolTips())
|
||||
m_styleCtrl->SetToolTip(_("Select regular or italic style."));
|
||||
itemBoxSizer14->Add(m_styleCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer13->Add(itemBoxSizer17, 1, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText18 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font &weight:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_weightCtrlStrings = NULL;
|
||||
m_weightCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_WEIGHTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_weightCtrlStrings, wxCB_READONLY );
|
||||
m_weightCtrl->SetHelpText(_("Select regular or bold."));
|
||||
if (ShowToolTips())
|
||||
m_weightCtrl->SetToolTip(_("Select regular or bold."));
|
||||
itemBoxSizer17->Add(m_weightCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer13->Add(itemBoxSizer20, 1, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText21 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Underlining:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer20->Add(itemStaticText21, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_underliningCtrlStrings = NULL;
|
||||
m_underliningCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_underliningCtrlStrings, wxCB_READONLY );
|
||||
m_underliningCtrl->SetHelpText(_("Select underlining or no underlining."));
|
||||
if (ShowToolTips())
|
||||
m_underliningCtrl->SetToolTip(_("Select underlining or no underlining."));
|
||||
itemBoxSizer20->Add(m_underliningCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer13->Add(itemBoxSizer23, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText24 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Colour:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer23->Add(itemStaticText24, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_colourCtrl = new wxRichTextColourSwatchCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_COLOURCTRL, wxDefaultPosition, wxSize(40, 20), wxSIMPLE_BORDER );
|
||||
m_colourCtrl->SetHelpText(_("Click to change the text colour."));
|
||||
if (ShowToolTips())
|
||||
m_colourCtrl->SetToolTip(_("Click to change the text colour."));
|
||||
itemBoxSizer23->Add(m_colourCtrl, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_previewCtrl = new wxRichTextFontPreviewCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_PREVIEWCTRL, wxDefaultPosition, wxSize(100, 80), wxSIMPLE_BORDER );
|
||||
m_previewCtrl->SetHelpText(_("Shows a preview of the font settings."));
|
||||
if (ShowToolTips())
|
||||
m_previewCtrl->SetToolTip(_("Shows a preview of the font settings."));
|
||||
itemBoxSizer3->Add(m_previewCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
////@end wxRichTextFontPage content construction
|
||||
|
||||
m_faceListBox->UpdateFonts();
|
||||
|
||||
m_styleCtrl->Append(_("Regular"));
|
||||
m_styleCtrl->Append(_("Italic"));
|
||||
|
||||
m_weightCtrl->Append(_("Regular"));
|
||||
m_weightCtrl->Append(_("Bold"));
|
||||
|
||||
m_underliningCtrl->Append(_("Not underlined"));
|
||||
m_underliningCtrl->Append(_("Underlined"));
|
||||
|
||||
wxString nStr;
|
||||
int i;
|
||||
for (i = 8; i < 40; i++)
|
||||
{
|
||||
nStr.Printf(wxT("%d"), i);
|
||||
m_sizeListBox->Append(nStr);
|
||||
}
|
||||
m_sizeListBox->Append(wxT("48"));
|
||||
m_sizeListBox->Append(wxT("72"));
|
||||
}
|
||||
|
||||
/// Transfer data from/to window
|
||||
bool wxRichTextFontPage::TransferDataFromWindow()
|
||||
{
|
||||
wxPanel::TransferDataFromWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (m_faceListBox->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
|
||||
if (!faceName.IsEmpty())
|
||||
{
|
||||
wxFont font(attr->GetFont().Ok() ? attr->GetFont() : *wxNORMAL_FONT);
|
||||
font.SetFaceName(faceName);
|
||||
wxSetFontPreservingStyles(*attr, font);
|
||||
attr->SetFlags(attr->GetFlags() | wxTEXT_ATTR_FONT_FACE);
|
||||
}
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_FACE));
|
||||
|
||||
wxString strSize = m_sizeTextCtrl->GetValue();
|
||||
if (!strSize.IsEmpty())
|
||||
{
|
||||
int sz = wxAtoi(strSize);
|
||||
if (sz > 0)
|
||||
{
|
||||
wxFont font(attr->GetFont().Ok() ? attr->GetFont() : *wxNORMAL_FONT);
|
||||
font.SetPointSize(sz);
|
||||
wxSetFontPreservingStyles(*attr, font);
|
||||
attr->SetFlags(attr->GetFlags() | wxTEXT_ATTR_FONT_SIZE);
|
||||
}
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_SIZE));
|
||||
|
||||
if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
int style;
|
||||
if (m_styleCtrl->GetStringSelection() == _("Italic"))
|
||||
style = wxITALIC;
|
||||
else
|
||||
style = wxNORMAL;
|
||||
|
||||
wxFont font(attr->GetFont().Ok() ? attr->GetFont() : *wxNORMAL_FONT);
|
||||
font.SetStyle(style);
|
||||
wxSetFontPreservingStyles(*attr, font);
|
||||
attr->SetFlags(attr->GetFlags() | wxTEXT_ATTR_FONT_ITALIC);
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_ITALIC));
|
||||
|
||||
if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
int weight;
|
||||
if (m_weightCtrl->GetStringSelection() == _("Bold"))
|
||||
weight = wxBOLD;
|
||||
else
|
||||
weight = wxNORMAL;
|
||||
|
||||
wxFont font(attr->GetFont().Ok() ? attr->GetFont() : *wxNORMAL_FONT);
|
||||
font.SetWeight(weight);
|
||||
wxSetFontPreservingStyles(*attr, font);
|
||||
attr->SetFlags(attr->GetFlags() | wxTEXT_ATTR_FONT_WEIGHT);
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_WEIGHT));
|
||||
|
||||
if (m_underliningCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
bool underlined;
|
||||
if (m_underliningCtrl->GetStringSelection() == _("Underlined"))
|
||||
underlined = true;
|
||||
else
|
||||
underlined = false;
|
||||
|
||||
wxFont font(attr->GetFont().Ok() ? attr->GetFont() : *wxNORMAL_FONT);
|
||||
font.SetUnderlined(underlined);
|
||||
wxSetFontPreservingStyles(*attr, font);
|
||||
attr->SetFlags(attr->GetFlags() | wxTEXT_ATTR_FONT_UNDERLINE);
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_UNDERLINE));
|
||||
|
||||
if (m_colourPresent)
|
||||
{
|
||||
attr->SetTextColour(m_colourCtrl->GetBackgroundColour());
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_TEXT_COLOUR));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextFontPage::TransferDataToWindow()
|
||||
{
|
||||
wxPanel::TransferDataToWindow();
|
||||
|
||||
m_dontUpdate = true;
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (attr->HasFont() && attr->HasFaceName())
|
||||
{
|
||||
m_faceTextCtrl->SetValue(attr->GetFont().GetFaceName());
|
||||
m_faceListBox->SetFaceNameSelection(attr->GetFont().GetFaceName());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_faceTextCtrl->SetValue(wxEmptyString);
|
||||
m_faceListBox->SetFaceNameSelection(wxEmptyString);
|
||||
}
|
||||
|
||||
if (attr->HasFont() && attr->HasSize())
|
||||
{
|
||||
wxString strSize = wxString::Format(wxT("%d"), attr->GetFont().GetPointSize());
|
||||
m_sizeTextCtrl->SetValue(strSize);
|
||||
if (m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
|
||||
m_sizeListBox->SetStringSelection(strSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sizeTextCtrl->SetValue(wxEmptyString);
|
||||
m_sizeListBox->SetSelection(wxNOT_FOUND);
|
||||
}
|
||||
|
||||
if (attr->HasFont() && attr->HasWeight())
|
||||
{
|
||||
if (attr->GetFont().GetWeight() == wxBOLD)
|
||||
m_weightCtrl->SetSelection(1);
|
||||
else
|
||||
m_weightCtrl->SetSelection(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_weightCtrl->SetSelection(wxNOT_FOUND);
|
||||
}
|
||||
|
||||
if (attr->HasFont() && attr->HasItalic())
|
||||
{
|
||||
if (attr->GetFont().GetStyle() == wxITALIC)
|
||||
m_styleCtrl->SetSelection(1);
|
||||
else
|
||||
m_styleCtrl->SetSelection(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_styleCtrl->SetSelection(wxNOT_FOUND);
|
||||
}
|
||||
|
||||
if (attr->HasFont() && attr->HasUnderlined())
|
||||
{
|
||||
if (attr->GetFont().GetUnderlined())
|
||||
m_underliningCtrl->SetSelection(1);
|
||||
else
|
||||
m_underliningCtrl->SetSelection(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_underliningCtrl->SetSelection(wxNOT_FOUND);
|
||||
}
|
||||
|
||||
if (attr->HasTextColour())
|
||||
{
|
||||
m_colourCtrl->SetBackgroundColour(attr->GetTextColour());
|
||||
m_colourPresent = true;
|
||||
}
|
||||
|
||||
UpdatePreview();
|
||||
|
||||
m_dontUpdate = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
wxTextAttrEx* wxRichTextFontPage::GetAttributes()
|
||||
{
|
||||
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
||||
}
|
||||
|
||||
/// Updates the font preview
|
||||
void wxRichTextFontPage::UpdatePreview()
|
||||
{
|
||||
wxFont font(*wxNORMAL_FONT);
|
||||
|
||||
if (m_colourPresent)
|
||||
m_previewCtrl->SetForegroundColour(m_colourCtrl->GetBackgroundColour());
|
||||
|
||||
if (m_faceListBox->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
|
||||
font.SetFaceName(faceName);
|
||||
}
|
||||
|
||||
wxString strSize = m_sizeTextCtrl->GetValue();
|
||||
if (!strSize.IsEmpty())
|
||||
{
|
||||
int sz = wxAtoi(strSize);
|
||||
if (sz > 0)
|
||||
font.SetPointSize(sz);
|
||||
}
|
||||
|
||||
if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
int style;
|
||||
if (m_styleCtrl->GetStringSelection() == _("Italic"))
|
||||
style = wxITALIC;
|
||||
else
|
||||
style = wxNORMAL;
|
||||
|
||||
font.SetStyle(style);
|
||||
}
|
||||
|
||||
if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
int weight;
|
||||
if (m_weightCtrl->GetStringSelection() == _("Bold"))
|
||||
weight = wxBOLD;
|
||||
else
|
||||
weight = wxNORMAL;
|
||||
|
||||
font.SetWeight(weight);
|
||||
}
|
||||
|
||||
if (m_underliningCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
bool underlined;
|
||||
if (m_underliningCtrl->GetStringSelection() == _("Underlined"))
|
||||
underlined = true;
|
||||
else
|
||||
underlined = false;
|
||||
|
||||
font.SetUnderlined(underlined);
|
||||
}
|
||||
|
||||
m_previewCtrl->SetFont(font);
|
||||
m_previewCtrl->Refresh();
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool wxRichTextFontPage::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap wxRichTextFontPage::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin wxRichTextFontPage bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end wxRichTextFontPage bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon wxRichTextFontPage::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin wxRichTextFontPage icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end wxRichTextFontPage icon retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_FACETEXTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnFaceTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_dontUpdate)
|
||||
return;
|
||||
|
||||
wxString facename = m_faceTextCtrl->GetValue();
|
||||
if (!facename.IsEmpty())
|
||||
{
|
||||
if (m_faceListBox->HasFaceName(facename))
|
||||
{
|
||||
m_faceListBox->SetFaceNameSelection(facename);
|
||||
UpdatePreview();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Try to find a partial match
|
||||
const wxArrayString& arr = m_faceListBox->GetFaceNames();
|
||||
size_t i;
|
||||
for (i = 0; i < arr.GetCount(); i++)
|
||||
{
|
||||
if (arr[i].Mid(0, facename.Length()).Lower() == facename.Lower())
|
||||
{
|
||||
m_faceListBox->ScrollToLine(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_SIZETEXTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnSizeTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_dontUpdate)
|
||||
return;
|
||||
|
||||
wxString strSize = m_sizeTextCtrl->GetValue();
|
||||
if (!strSize.IsEmpty() && m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
|
||||
m_sizeListBox->SetStringSelection(strSize);
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_SIZELISTBOX
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnSizeListBoxSelected( wxCommandEvent& event )
|
||||
{
|
||||
m_dontUpdate = true;
|
||||
|
||||
m_sizeTextCtrl->SetValue(event.GetString());
|
||||
|
||||
m_dontUpdate = false;
|
||||
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_FACELISTBOX
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnFaceListBoxSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
m_dontUpdate = true;
|
||||
|
||||
m_faceTextCtrl->SetValue(m_faceListBox->GetFaceName(m_faceListBox->GetSelection()));
|
||||
|
||||
m_dontUpdate = false;
|
||||
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_STYLECTRL
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnStyleCtrlSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnUnderliningCtrlSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_WEIGHTCTRL
|
||||
*/
|
||||
|
||||
void wxRichTextFontPage::OnWeightCtrlSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
void wxRichTextFontPage::OnColourClicked( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
m_colourPresent = true;
|
||||
|
||||
UpdatePreview();
|
||||
}
|
579
src/richtext/richtextformatdlg.cpp
Normal file
579
src/richtext/richtextformatdlg.cpp
Normal file
@@ -0,0 +1,579 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/richtext/richtextformatdlg.cpp
|
||||
// Purpose: Formatting dialog for wxRichTextCtrl
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 2006-10-01
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/listbox.h"
|
||||
#include "wx/combobox.h"
|
||||
#include "wx/textctrl.h"
|
||||
#include "wx/sizer.h"
|
||||
#include "wx/stattext.h"
|
||||
#include "wx/statline.h"
|
||||
#include "wx/radiobut.h"
|
||||
#include "wx/icon.h"
|
||||
#include "wx/bitmap.h"
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/frame.h"
|
||||
#include "wx/imaglist.h"
|
||||
#include "wx/checkbox.h"
|
||||
#include "wx/button.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#if wxUSE_RICHTEXT
|
||||
|
||||
#include "wx/bookctrl.h"
|
||||
#include "wx/colordlg.h"
|
||||
#include "wx/fontenum.h"
|
||||
#include "wx/settings.h"
|
||||
#include "wx/module.h"
|
||||
|
||||
#include "wx/richtext/richtextformatdlg.h"
|
||||
#include "wx/richtext/richtextctrl.h"
|
||||
#include "wx/richtext/richtextstyles.h"
|
||||
|
||||
#include "richtextfontpage.cpp"
|
||||
#include "richtextindentspage.cpp"
|
||||
#include "richtexttabspage.cpp"
|
||||
#include "richtextbulletspage.cpp"
|
||||
#include "richtextstylepage.cpp"
|
||||
|
||||
#ifdef __WXMAC__
|
||||
#define wxRICHTEXT_USE_TOOLBOOK true
|
||||
#else
|
||||
#define wxRICHTEXT_USE_TOOLBOOK false
|
||||
#endif
|
||||
|
||||
IMPLEMENT_CLASS(wxRichTextFormattingDialog, wxPropertySheetDialog)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxRichTextFormattingDialog, wxPropertySheetDialog)
|
||||
EVT_NOTEBOOK_PAGE_CHANGED(-1, wxRichTextFormattingDialog::OnTabChanged)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxRichTextFormattingDialogFactory* wxRichTextFormattingDialog::ms_FormattingDialogFactory = NULL;
|
||||
|
||||
void wxRichTextFormattingDialog::Init()
|
||||
{
|
||||
m_imageList = NULL;
|
||||
m_styleDefinition = NULL;
|
||||
m_styleSheet = NULL;
|
||||
}
|
||||
|
||||
wxRichTextFormattingDialog::~wxRichTextFormattingDialog()
|
||||
{
|
||||
delete m_imageList;
|
||||
delete m_styleDefinition;
|
||||
}
|
||||
|
||||
bool wxRichTextFormattingDialog::Create(long flags, wxWindow* parent, const wxString& title, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& sz, long style)
|
||||
{
|
||||
SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
|
||||
|
||||
int resizeBorder = wxRESIZE_BORDER;
|
||||
|
||||
GetFormattingDialogFactory()->SetSheetStyle(this);
|
||||
|
||||
wxPropertySheetDialog::Create(parent, id, title, pos, sz,
|
||||
style | (int)wxPlatform::IfNot(wxWinCE, resizeBorder)
|
||||
);
|
||||
|
||||
GetFormattingDialogFactory()->CreateButtons(this);
|
||||
GetFormattingDialogFactory()->CreatePages(flags, this);
|
||||
|
||||
LayoutDialog();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Get attributes from the given range
|
||||
bool wxRichTextFormattingDialog::GetStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range)
|
||||
{
|
||||
if (ctrl->GetBuffer().GetStyleForRange(range.ToInternal(), m_attributes))
|
||||
return UpdateDisplay();
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Apply attributes to the given range, only applying if necessary (wxRICHTEXT_SETSTYLE_OPTIMIZE)
|
||||
bool wxRichTextFormattingDialog::ApplyStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range, int flags)
|
||||
{
|
||||
return ctrl->SetStyleEx(range, m_attributes, flags);
|
||||
}
|
||||
|
||||
/// Set the attributes and optionally update the display
|
||||
bool wxRichTextFormattingDialog::SetStyle(const wxTextAttrEx& style, bool update)
|
||||
{
|
||||
m_attributes = style;
|
||||
if (update)
|
||||
UpdateDisplay();
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Set the style definition and optionally update the display
|
||||
bool wxRichTextFormattingDialog::SetStyleDefinition(const wxRichTextStyleDefinition& styleDef, wxRichTextStyleSheet* sheet, bool update)
|
||||
{
|
||||
m_styleSheet = sheet;
|
||||
|
||||
if (m_styleDefinition)
|
||||
delete m_styleDefinition;
|
||||
m_styleDefinition = styleDef.Clone();
|
||||
|
||||
return SetStyle(m_styleDefinition->GetStyle(), update);
|
||||
}
|
||||
|
||||
/// Transfers the data and from to the window
|
||||
bool wxRichTextFormattingDialog::TransferDataToWindow()
|
||||
{
|
||||
if (m_styleDefinition)
|
||||
m_attributes = m_styleDefinition->GetStyle();
|
||||
|
||||
if (!wxPropertySheetDialog::TransferDataToWindow())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextFormattingDialog::TransferDataFromWindow()
|
||||
{
|
||||
if (!wxPropertySheetDialog::TransferDataFromWindow())
|
||||
return false;
|
||||
|
||||
if (m_styleDefinition)
|
||||
m_styleDefinition->GetStyle() = m_attributes;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Update the display
|
||||
bool wxRichTextFormattingDialog::UpdateDisplay()
|
||||
{
|
||||
return TransferDataToWindow();
|
||||
}
|
||||
|
||||
/// Apply the styles when a different tab is selected, so the previews are
|
||||
/// up to date
|
||||
void wxRichTextFormattingDialog::OnTabChanged(wxNotebookEvent& event)
|
||||
{
|
||||
if (GetBookCtrl() != event.GetEventObject())
|
||||
{
|
||||
event.Skip();
|
||||
return;
|
||||
}
|
||||
|
||||
int oldPageId = event.GetOldSelection();
|
||||
if (oldPageId != -1)
|
||||
{
|
||||
wxWindow* page = GetBookCtrl()->GetPage(oldPageId);
|
||||
if (page)
|
||||
page->TransferDataFromWindow();
|
||||
}
|
||||
|
||||
int pageId = event.GetSelection();
|
||||
if (pageId != -1)
|
||||
{
|
||||
wxWindow* page = GetBookCtrl()->GetPage(pageId);
|
||||
if (page)
|
||||
page->TransferDataToWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void wxRichTextFormattingDialog::SetFormattingDialogFactory(wxRichTextFormattingDialogFactory* factory)
|
||||
{
|
||||
if (ms_FormattingDialogFactory)
|
||||
delete ms_FormattingDialogFactory;
|
||||
ms_FormattingDialogFactory = factory;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Factory for formatting dialog
|
||||
*/
|
||||
|
||||
/// Create all pages, under the dialog's book control, also calling AddPage
|
||||
bool wxRichTextFormattingDialogFactory::CreatePages(long pages, wxRichTextFormattingDialog* dialog)
|
||||
{
|
||||
if (dialog->GetImageList())
|
||||
dialog->GetBookCtrl()->SetImageList(dialog->GetImageList());
|
||||
|
||||
int availablePageCount = GetPageIdCount();
|
||||
int i;
|
||||
for (i = 0; i < availablePageCount; i ++)
|
||||
{
|
||||
int pageId = GetPageId(i);
|
||||
if (pageId != -1 && (pages & pageId))
|
||||
{
|
||||
wxString title;
|
||||
wxPanel* panel = CreatePage(pageId, title, dialog);
|
||||
wxASSERT( panel != NULL );
|
||||
if (panel)
|
||||
{
|
||||
int imageIndex = GetPageImage(pageId);
|
||||
dialog->GetBookCtrl()->AddPage(panel, title, false, imageIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Create a page, given a page identifier
|
||||
wxPanel* wxRichTextFormattingDialogFactory::CreatePage(int page, wxString& title, wxRichTextFormattingDialog* dialog)
|
||||
{
|
||||
if (page == wxRICHTEXT_FORMAT_STYLE_EDITOR)
|
||||
{
|
||||
wxRichTextStylePage* page = new wxRichTextStylePage(dialog->GetBookCtrl(), wxID_ANY);
|
||||
title = _("Style");
|
||||
return page;
|
||||
}
|
||||
else if (page == wxRICHTEXT_FORMAT_FONT)
|
||||
{
|
||||
wxRichTextFontPage* page = new wxRichTextFontPage(dialog->GetBookCtrl(), wxID_ANY);
|
||||
title = _("Font");
|
||||
return page;
|
||||
}
|
||||
else if (page == wxRICHTEXT_FORMAT_INDENTS_SPACING)
|
||||
{
|
||||
wxRichTextIndentsSpacingPage* page = new wxRichTextIndentsSpacingPage(dialog->GetBookCtrl(), wxID_ANY);
|
||||
title = _("Indents && Spacing");
|
||||
return page;
|
||||
}
|
||||
else if (page == wxRICHTEXT_FORMAT_TABS)
|
||||
{
|
||||
wxRichTextTabsPage* page = new wxRichTextTabsPage(dialog->GetBookCtrl(), wxID_ANY);
|
||||
title = _("Tabs");
|
||||
return page;
|
||||
}
|
||||
else if (page == wxRICHTEXT_FORMAT_BULLETS)
|
||||
{
|
||||
wxRichTextBulletsPage* page = new wxRichTextBulletsPage(dialog->GetBookCtrl(), wxID_ANY);
|
||||
title = _("Bullets");
|
||||
return page;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/// Enumerate all available page identifiers
|
||||
int wxRichTextFormattingDialogFactory::GetPageId(int i) const
|
||||
{
|
||||
int pages[] = {
|
||||
wxRICHTEXT_FORMAT_STYLE_EDITOR,
|
||||
wxRICHTEXT_FORMAT_FONT,
|
||||
wxRICHTEXT_FORMAT_INDENTS_SPACING,
|
||||
wxRICHTEXT_FORMAT_BULLETS,
|
||||
wxRICHTEXT_FORMAT_TABS };
|
||||
|
||||
if (i < 0 || i > 4)
|
||||
return -1;
|
||||
|
||||
return pages[i];
|
||||
}
|
||||
|
||||
/// Get the number of available page identifiers
|
||||
int wxRichTextFormattingDialogFactory::GetPageIdCount() const
|
||||
{
|
||||
return 5;
|
||||
}
|
||||
|
||||
/// Set the sheet style, called at the start of wxRichTextFormattingDialog::Create
|
||||
bool wxRichTextFormattingDialogFactory::SetSheetStyle(wxRichTextFormattingDialog* dialog)
|
||||
{
|
||||
bool useToolBook = wxRICHTEXT_USE_TOOLBOOK;
|
||||
if (useToolBook)
|
||||
{
|
||||
int sheetStyle = wxPROPSHEET_SHRINKTOFIT;
|
||||
#ifdef __WXMAC__
|
||||
sheetStyle |= wxPROPSHEET_BUTTONTOOLBOOK;
|
||||
#else
|
||||
sheetStyle |= wxPROPSHEET_TOOLBOOK;
|
||||
#endif
|
||||
|
||||
dialog->SetSheetStyle(sheetStyle);
|
||||
dialog->SetSheetInnerBorder(0);
|
||||
dialog->SetSheetOuterBorder(0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// Create the main dialog buttons
|
||||
bool wxRichTextFormattingDialogFactory::CreateButtons(wxRichTextFormattingDialog* dialog)
|
||||
{
|
||||
bool useToolBook = wxRICHTEXT_USE_TOOLBOOK;
|
||||
|
||||
// If using a toolbook, also follow Mac style and don't create buttons
|
||||
int flags = wxOK|wxCANCEL;
|
||||
#ifndef __WXWINCE__
|
||||
flags |= wxHELP;
|
||||
#endif
|
||||
|
||||
if (!useToolBook)
|
||||
dialog->CreateButtons(flags);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Module to initialise and clean up handlers
|
||||
*/
|
||||
|
||||
class wxRichTextFormattingDialogModule: public wxModule
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxRichTextFormattingDialogModule)
|
||||
public:
|
||||
wxRichTextFormattingDialogModule() {}
|
||||
bool OnInit() { wxRichTextFormattingDialog::SetFormattingDialogFactory(new wxRichTextFormattingDialogFactory); return true; };
|
||||
void OnExit() { wxRichTextFormattingDialog::SetFormattingDialogFactory(NULL); };
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxRichTextFormattingDialogModule, wxModule)
|
||||
|
||||
/*
|
||||
* Font preview control
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE(wxRichTextFontPreviewCtrl, wxWindow)
|
||||
EVT_PAINT(wxRichTextFontPreviewCtrl::OnPaint)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
void wxRichTextFontPreviewCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
|
||||
wxSize size = GetSize();
|
||||
wxFont font = GetFont();
|
||||
|
||||
if ( font.Ok() )
|
||||
{
|
||||
dc.SetFont(font);
|
||||
// Calculate vertical and horizontal centre
|
||||
long w = 0, h = 0;
|
||||
|
||||
wxString text(_("ABCDEFGabcdefg12345"));
|
||||
|
||||
dc.GetTextExtent( text, &w, &h);
|
||||
int cx = wxMax(2, (size.x/2) - (w/2));
|
||||
int cy = wxMax(2, (size.y/2) - (h/2));
|
||||
|
||||
dc.SetTextForeground(GetForegroundColour());
|
||||
dc.SetClippingRegion(2, 2, size.x-4, size.y-4);
|
||||
dc.DrawText(text, cx, cy);
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
}
|
||||
|
||||
// Helper for pages to get the top-level dialog
|
||||
wxRichTextFormattingDialog* wxRichTextFormattingDialog::GetDialog(wxWindow* win)
|
||||
{
|
||||
wxWindow* p = win->GetParent();
|
||||
while (p && !p->IsKindOf(CLASSINFO(wxRichTextFormattingDialog)))
|
||||
p = p->GetParent();
|
||||
wxRichTextFormattingDialog* dialog = wxDynamicCast(p, wxRichTextFormattingDialog);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
|
||||
// Helper for pages to get the attributes
|
||||
wxTextAttrEx* wxRichTextFormattingDialog::GetDialogAttributes(wxWindow* win)
|
||||
{
|
||||
wxRichTextFormattingDialog* dialog = GetDialog(win);
|
||||
if (dialog)
|
||||
return & dialog->GetAttributes();
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Helper for pages to get the style
|
||||
wxRichTextStyleDefinition* wxRichTextFormattingDialog::GetDialogStyleDefinition(wxWindow* win)
|
||||
{
|
||||
wxRichTextFormattingDialog* dialog = GetDialog(win);
|
||||
if (dialog)
|
||||
return dialog->GetStyleDefinition();
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* A control for displaying a small preview of a colour or bitmap
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE(wxRichTextColourSwatchCtrl, wxControl)
|
||||
EVT_MOUSE_EVENTS(wxRichTextColourSwatchCtrl::OnMouseEvent)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_CLASS(wxRichTextColourSwatchCtrl, wxControl)
|
||||
|
||||
wxRichTextColourSwatchCtrl::wxRichTextColourSwatchCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style):
|
||||
wxControl(parent, id, pos, size, style)
|
||||
{
|
||||
SetColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||
SetBackgroundStyle(wxBG_STYLE_COLOUR);
|
||||
}
|
||||
|
||||
wxRichTextColourSwatchCtrl::~wxRichTextColourSwatchCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
void wxRichTextColourSwatchCtrl::OnMouseEvent(wxMouseEvent& event)
|
||||
{
|
||||
if (event.LeftDown())
|
||||
{
|
||||
wxWindow* parent = GetParent();
|
||||
while (parent != NULL && !parent->IsKindOf(CLASSINFO(wxDialog)) && !parent->IsKindOf(CLASSINFO(wxFrame)))
|
||||
parent = parent->GetParent();
|
||||
|
||||
wxColourData data;
|
||||
data.SetChooseFull(true);
|
||||
data.SetColour(m_colour);
|
||||
wxColourDialog *dialog = new wxColourDialog(parent, &data);
|
||||
// Crashes on wxMac (no m_peer)
|
||||
#ifndef __WXMAC__
|
||||
dialog->SetTitle(_("Background colour"));
|
||||
#endif
|
||||
if (dialog->ShowModal() == wxID_OK)
|
||||
{
|
||||
wxColourData retData = dialog->GetColourData();
|
||||
m_colour = retData.GetColour();
|
||||
SetBackgroundColour(m_colour);
|
||||
}
|
||||
dialog->Destroy();
|
||||
Refresh();
|
||||
|
||||
wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, GetId());
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
#if wxUSE_HTML
|
||||
|
||||
/*!
|
||||
* wxRichTextFontListBox class declaration
|
||||
* A listbox to display styles.
|
||||
*/
|
||||
|
||||
IMPLEMENT_CLASS(wxRichTextFontListBox, wxHtmlListBox)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxRichTextFontListBox, wxHtmlListBox)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxRichTextFontListBox::wxRichTextFontListBox(wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
||||
const wxSize& size, long style)
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
bool wxRichTextFontListBox::Create(wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
||||
const wxSize& size, long style)
|
||||
{
|
||||
return wxHtmlListBox::Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
wxRichTextFontListBox::~wxRichTextFontListBox()
|
||||
{
|
||||
}
|
||||
|
||||
/// Returns the HTML for this item
|
||||
wxString wxRichTextFontListBox::OnGetItem(size_t n) const
|
||||
{
|
||||
if (m_faceNames.GetCount() == 0)
|
||||
return wxEmptyString;
|
||||
|
||||
wxString str = CreateHTML(m_faceNames[n]);
|
||||
return str;
|
||||
}
|
||||
|
||||
/// Get font name for index
|
||||
wxString wxRichTextFontListBox::GetFaceName(size_t i) const
|
||||
{
|
||||
return m_faceNames[i];
|
||||
}
|
||||
|
||||
/// Set selection for string, returning the index.
|
||||
int wxRichTextFontListBox::SetFaceNameSelection(const wxString& name)
|
||||
{
|
||||
int i = m_faceNames.Index(name);
|
||||
SetSelection(i);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/// Updates the font list
|
||||
void wxRichTextFontListBox::UpdateFonts()
|
||||
{
|
||||
wxFontEnumerator enumerator;
|
||||
enumerator.EnumerateFacenames();
|
||||
wxArrayString facenames = enumerator.GetFacenames();
|
||||
m_faceNames = facenames;
|
||||
m_faceNames.Sort();
|
||||
|
||||
SetItemCount(m_faceNames.GetCount());
|
||||
Refresh();
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Convert a colour to a 6-digit hex string
|
||||
static wxString ColourToHexString(const wxColour& col)
|
||||
{
|
||||
wxString hex;
|
||||
|
||||
hex += wxDecToHex(col.Red());
|
||||
hex += wxDecToHex(col.Green());
|
||||
hex += wxDecToHex(col.Blue());
|
||||
|
||||
return hex;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Creates a suitable HTML fragment for a definition
|
||||
wxString wxRichTextFontListBox::CreateHTML(const wxString& facename) const
|
||||
{
|
||||
wxString str = wxT("<font");
|
||||
|
||||
str << wxT(" size=\"+2\"");;
|
||||
|
||||
if (!facename.IsEmpty() && facename != _("(none)"))
|
||||
str << wxT(" face=\"") << facename << wxT("\"");
|
||||
/*
|
||||
if (def->GetStyle().GetTextColour().Ok())
|
||||
str << wxT(" color=\"#") << ColourToHexString(def->GetStyle().GetTextColour()) << wxT("\"");
|
||||
*/
|
||||
|
||||
str << wxT(">");
|
||||
|
||||
bool hasBold = false;
|
||||
|
||||
if (hasBold)
|
||||
str << wxT("<b>");
|
||||
|
||||
str += facename;
|
||||
|
||||
if (hasBold)
|
||||
str << wxT("</b>");
|
||||
|
||||
str << wxT("</font>");
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
#endif
|
||||
// wxUSE_HTML
|
||||
|
||||
|
||||
#endif
|
||||
// wxUSE_RICHTEXT
|
||||
|
638
src/richtext/richtextindentspage.cpp
Normal file
638
src/richtext/richtextindentspage.cpp
Normal file
@@ -0,0 +1,638 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextindentspage.cpp
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/3/2006 2:28:21 PM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "../../include/wx/richtext/richtextindentspage.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* wxRichTextIndentsSpacingPage type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxRichTextIndentsSpacingPage, wxPanel )
|
||||
|
||||
/*!
|
||||
* wxRichTextIndentsSpacingPage event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxRichTextIndentsSpacingPage, wxPanel )
|
||||
|
||||
////@begin wxRichTextIndentsSpacingPage event table entries
|
||||
EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT, wxRichTextIndentsSpacingPage::OnAlignmentLeftSelected )
|
||||
|
||||
EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT, wxRichTextIndentsSpacingPage::OnAlignmentRightSelected )
|
||||
|
||||
EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED, wxRichTextIndentsSpacingPage::OnAlignmentJustifiedSelected )
|
||||
|
||||
EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED, wxRichTextIndentsSpacingPage::OnAlignmentCentredSelected )
|
||||
|
||||
EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE, wxRichTextIndentsSpacingPage::OnAlignmentIndeterminateSelected )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT, wxRichTextIndentsSpacingPage::OnIndentLeftUpdated )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST, wxRichTextIndentsSpacingPage::OnIndentLeftFirstUpdated )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT, wxRichTextIndentsSpacingPage::OnIndentRightUpdated )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE, wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated )
|
||||
|
||||
EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER, wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated )
|
||||
|
||||
EVT_COMBOBOX( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE, wxRichTextIndentsSpacingPage::OnSpacingLineSelected )
|
||||
|
||||
////@end wxRichTextIndentsSpacingPage event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* wxRichTextIndentsSpacingPage constructors
|
||||
*/
|
||||
|
||||
wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Initialise members
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::Init()
|
||||
{
|
||||
m_dontUpdate = false;
|
||||
|
||||
////@begin wxRichTextIndentsSpacingPage member initialisation
|
||||
m_alignmentLeft = NULL;
|
||||
m_alignmentRight = NULL;
|
||||
m_alignmentJustified = NULL;
|
||||
m_alignmentCentred = NULL;
|
||||
m_alignmentIndeterminate = NULL;
|
||||
m_indentLeft = NULL;
|
||||
m_indentLeftFirst = NULL;
|
||||
m_indentRight = NULL;
|
||||
m_spacingBefore = NULL;
|
||||
m_spacingAfter = NULL;
|
||||
m_spacingLine = NULL;
|
||||
m_previewCtrl = NULL;
|
||||
////@end wxRichTextIndentsSpacingPage member initialisation
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxRichTextIndentsSpacingPage creator
|
||||
*/
|
||||
|
||||
bool wxRichTextIndentsSpacingPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin wxRichTextIndentsSpacingPage creation
|
||||
wxPanel::Create( parent, id, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end wxRichTextIndentsSpacingPage creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for wxRichTextIndentsSpacingPage
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::CreateControls()
|
||||
{
|
||||
////@begin wxRichTextIndentsSpacingPage content construction
|
||||
wxRichTextIndentsSpacingPage* itemPanel1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemPanel1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Alignment"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer5->Add(itemBoxSizer7, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
itemBoxSizer7->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer9 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer7->Add(itemBoxSizer9, 0, wxALIGN_CENTER_VERTICAL|wxTOP, 5);
|
||||
|
||||
m_alignmentLeft = new wxRadioButton( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT, _("&Left"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
|
||||
m_alignmentLeft->SetValue(false);
|
||||
itemBoxSizer9->Add(m_alignmentLeft, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_alignmentRight = new wxRadioButton( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT, _("&Right"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_alignmentRight->SetValue(false);
|
||||
itemBoxSizer9->Add(m_alignmentRight, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_alignmentJustified = new wxRadioButton( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED, _("&Justified"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_alignmentJustified->SetValue(false);
|
||||
itemBoxSizer9->Add(m_alignmentJustified, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_alignmentCentred = new wxRadioButton( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED, _("Cen&tred"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_alignmentCentred->SetValue(false);
|
||||
itemBoxSizer9->Add(m_alignmentCentred, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_alignmentIndeterminate = new wxRadioButton( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE, _("&Indeterminate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_alignmentIndeterminate->SetValue(false);
|
||||
itemBoxSizer9->Add(m_alignmentIndeterminate, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxStaticLine* itemStaticLine16 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
itemBoxSizer4->Add(itemStaticLine16, 0, wxGROW|wxLEFT|wxBOTTOM, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer18, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText19 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Indentation (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer18->Add(itemStaticText19, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer18->Add(itemBoxSizer20, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
itemBoxSizer20->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer22 = new wxFlexGridSizer(2, 2, 0, 0);
|
||||
itemBoxSizer20->Add(itemFlexGridSizer22, 0, wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxStaticText* itemStaticText23 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Left:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer22->Add(itemStaticText23, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer22->Add(itemBoxSizer24, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
m_indentLeft = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
itemBoxSizer24->Add(m_indentLeft, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText26 = new wxStaticText( itemPanel1, wxID_STATIC, _("Left (&first line):"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer22->Add(itemStaticText26, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer27 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer22->Add(itemBoxSizer27, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
m_indentLeftFirst = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
itemBoxSizer27->Add(m_indentLeftFirst, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText29 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Right:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer22->Add(itemStaticText29, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer22->Add(itemBoxSizer30, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
m_indentRight = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
itemBoxSizer30->Add(m_indentRight, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxStaticLine* itemStaticLine33 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
itemBoxSizer4->Add(itemStaticLine33, 0, wxGROW|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer35 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer35, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText36 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Spacing (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer35->Add(itemStaticText36, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer37 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer35->Add(itemBoxSizer37, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
itemBoxSizer37->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer39 = new wxFlexGridSizer(2, 2, 0, 0);
|
||||
itemBoxSizer37->Add(itemFlexGridSizer39, 0, wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxStaticText* itemStaticText40 = new wxStaticText( itemPanel1, wxID_STATIC, _("Before a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer39->Add(itemStaticText40, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer41 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer39->Add(itemBoxSizer41, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
m_spacingBefore = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
itemBoxSizer41->Add(m_spacingBefore, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText43 = new wxStaticText( itemPanel1, wxID_STATIC, _("After a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer39->Add(itemStaticText43, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer44 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer39->Add(itemBoxSizer44, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
m_spacingAfter = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
||||
itemBoxSizer44->Add(m_spacingAfter, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText46 = new wxStaticText( itemPanel1, wxID_STATIC, _("Line spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemFlexGridSizer39->Add(itemStaticText46, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer47 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemFlexGridSizer39->Add(itemBoxSizer47, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
wxString m_spacingLineStrings[] = {
|
||||
_("Single"),
|
||||
_("1.5"),
|
||||
_("2")
|
||||
};
|
||||
m_spacingLine = new wxComboBox( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE, _("Single"), wxDefaultPosition, wxDefaultSize, 3, m_spacingLineStrings, wxCB_READONLY );
|
||||
m_spacingLine->SetStringSelection(_("Single"));
|
||||
itemBoxSizer47->Add(m_spacingLine, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_previewCtrl = new wxRichTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_PREVIEW_CTRL, wxEmptyString, wxDefaultPosition, wxSize(350, 180), wxSUNKEN_BORDER );
|
||||
m_previewCtrl->SetHelpText(_("Shows a preview of the paragraph settings."));
|
||||
if (ShowToolTips())
|
||||
m_previewCtrl->SetToolTip(_("Shows a preview of the paragraph settings."));
|
||||
itemBoxSizer3->Add(m_previewCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
////@end wxRichTextIndentsSpacingPage content construction
|
||||
}
|
||||
|
||||
wxTextAttrEx* wxRichTextIndentsSpacingPage::GetAttributes()
|
||||
{
|
||||
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
||||
}
|
||||
|
||||
/// Updates the font preview
|
||||
void wxRichTextIndentsSpacingPage::UpdatePreview()
|
||||
{
|
||||
static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
|
||||
Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.");
|
||||
|
||||
static const wxChar* s_para2 = wxT("\nDuis pharetra consequat dui. Cum sociis natoque penatibus \
|
||||
et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.");
|
||||
|
||||
static const wxChar* s_para3 = wxT("\nInteger convallis dolor at augue \
|
||||
iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
|
||||
|
||||
TransferDataFromWindow();
|
||||
wxTextAttrEx attr(*GetAttributes());
|
||||
attr.SetFlags(attr.GetFlags() &
|
||||
(wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|
|
||||
wxTEXT_ATTR_LINE_SPACING|
|
||||
wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_SYMBOL));
|
||||
|
||||
wxFont font(m_previewCtrl->GetFont());
|
||||
font.SetPointSize(9);
|
||||
m_previewCtrl->SetFont(font);
|
||||
|
||||
font.SetWeight(wxBOLD);
|
||||
attr.SetFont(font);
|
||||
|
||||
m_previewCtrl->Clear();
|
||||
|
||||
m_previewCtrl->WriteText(s_para1);
|
||||
m_previewCtrl->BeginStyle(attr);
|
||||
m_previewCtrl->WriteText(s_para2);
|
||||
m_previewCtrl->EndStyle();
|
||||
m_previewCtrl->WriteText(s_para3);
|
||||
}
|
||||
|
||||
/// Transfer data from/to window
|
||||
bool wxRichTextIndentsSpacingPage::TransferDataFromWindow()
|
||||
{
|
||||
wxPanel::TransferDataFromWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (m_alignmentLeft->GetValue())
|
||||
attr->SetAlignment(wxTEXT_ALIGNMENT_LEFT);
|
||||
else if (m_alignmentCentred->GetValue())
|
||||
attr->SetAlignment(wxTEXT_ALIGNMENT_CENTRE);
|
||||
else if (m_alignmentRight->GetValue())
|
||||
attr->SetAlignment(wxTEXT_ALIGNMENT_RIGHT);
|
||||
else if (m_alignmentJustified->GetValue())
|
||||
attr->SetAlignment(wxTEXT_ALIGNMENT_JUSTIFIED);
|
||||
else
|
||||
{
|
||||
attr->SetAlignment(wxTEXT_ALIGNMENT_DEFAULT);
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_ALIGNMENT));
|
||||
}
|
||||
|
||||
wxString leftIndent(m_indentLeft->GetValue());
|
||||
wxString leftFirstIndent(m_indentLeftFirst->GetValue());
|
||||
if (!leftIndent.IsEmpty())
|
||||
{
|
||||
int visualLeftIndent = wxAtoi(leftIndent);
|
||||
int visualLeftFirstIndent = wxAtoi(leftFirstIndent);
|
||||
int actualLeftIndent = visualLeftFirstIndent;
|
||||
int actualLeftSubIndent = visualLeftIndent - visualLeftFirstIndent;
|
||||
|
||||
attr->SetLeftIndent(actualLeftIndent, actualLeftSubIndent);
|
||||
}
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_LEFT_INDENT));
|
||||
|
||||
wxString rightIndent(m_indentRight->GetValue());
|
||||
if (!rightIndent.IsEmpty())
|
||||
attr->SetRightIndent(wxAtoi(rightIndent));
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_RIGHT_INDENT));
|
||||
|
||||
wxString spacingAfter(m_spacingAfter->GetValue());
|
||||
if (!spacingAfter.IsEmpty())
|
||||
attr->SetParagraphSpacingAfter(wxAtoi(spacingAfter));
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_AFTER));
|
||||
|
||||
wxString spacingBefore(m_spacingBefore->GetValue());
|
||||
if (!spacingBefore.IsEmpty())
|
||||
attr->SetParagraphSpacingBefore(wxAtoi(spacingBefore));
|
||||
else
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_BEFORE));
|
||||
|
||||
int spacingIndex = m_spacingLine->GetSelection();
|
||||
int lineSpacing = 0;
|
||||
if (spacingIndex == 0)
|
||||
lineSpacing = 10;
|
||||
else if (spacingIndex == 1)
|
||||
lineSpacing = 15;
|
||||
else if (spacingIndex == 2)
|
||||
lineSpacing = 20;
|
||||
|
||||
if (lineSpacing == 0)
|
||||
attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING));
|
||||
else
|
||||
attr->SetLineSpacing(lineSpacing);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextIndentsSpacingPage::TransferDataToWindow()
|
||||
{
|
||||
m_dontUpdate = true;
|
||||
|
||||
wxPanel::TransferDataToWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (attr->HasAlignment())
|
||||
{
|
||||
if (attr->GetAlignment() == wxTEXT_ALIGNMENT_LEFT)
|
||||
m_alignmentLeft->SetValue(true);
|
||||
else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_RIGHT)
|
||||
m_alignmentRight->SetValue(true);
|
||||
else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_CENTRE)
|
||||
m_alignmentCentred->SetValue(true);
|
||||
else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED)
|
||||
m_alignmentJustified->SetValue(true);
|
||||
else
|
||||
m_alignmentIndeterminate->SetValue(true);
|
||||
}
|
||||
else
|
||||
m_alignmentIndeterminate->SetValue(true);
|
||||
|
||||
if (attr->HasLeftIndent())
|
||||
{
|
||||
wxString leftIndent(wxString::Format(wxT("%d"), attr->GetLeftIndent() + attr->GetLeftSubIndent()));
|
||||
wxString leftFirstIndent(wxString::Format(wxT("%d"), attr->GetLeftIndent()));
|
||||
|
||||
m_indentLeft->SetValue(leftIndent);
|
||||
m_indentLeftFirst->SetValue(leftFirstIndent);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_indentLeft->SetValue(wxEmptyString);
|
||||
m_indentLeftFirst->SetValue(wxEmptyString);
|
||||
}
|
||||
|
||||
if (attr->HasRightIndent())
|
||||
{
|
||||
wxString rightIndent(wxString::Format(wxT("%d"), attr->GetRightIndent()));
|
||||
|
||||
m_indentRight->SetValue(rightIndent);
|
||||
}
|
||||
else
|
||||
m_indentRight->SetValue(wxEmptyString);
|
||||
|
||||
if (attr->HasParagraphSpacingAfter())
|
||||
{
|
||||
wxString spacingAfter(wxString::Format(wxT("%d"), attr->GetParagraphSpacingAfter()));
|
||||
|
||||
m_spacingAfter->SetValue(spacingAfter);
|
||||
}
|
||||
else
|
||||
m_spacingAfter->SetValue(wxEmptyString);
|
||||
|
||||
if (attr->HasParagraphSpacingBefore())
|
||||
{
|
||||
wxString spacingBefore(wxString::Format(wxT("%d"), attr->GetParagraphSpacingBefore()));
|
||||
|
||||
m_spacingBefore->SetValue(spacingBefore);
|
||||
}
|
||||
else
|
||||
m_spacingBefore->SetValue(wxEmptyString);
|
||||
|
||||
if (attr->HasLineSpacing())
|
||||
{
|
||||
int index = 0;
|
||||
|
||||
int lineSpacing = attr->GetLineSpacing();
|
||||
if (lineSpacing == 10)
|
||||
index = 0;
|
||||
else if (lineSpacing == 15)
|
||||
index = 1;
|
||||
else if (lineSpacing == 20)
|
||||
index = 2;
|
||||
else
|
||||
index = -1;
|
||||
|
||||
m_spacingLine->SetSelection(index);
|
||||
}
|
||||
else
|
||||
m_spacingLine->SetSelection(-1);
|
||||
|
||||
UpdatePreview();
|
||||
|
||||
m_dontUpdate = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool wxRichTextIndentsSpacingPage::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap wxRichTextIndentsSpacingPage::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin wxRichTextIndentsSpacingPage bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end wxRichTextIndentsSpacingPage bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon wxRichTextIndentsSpacingPage::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin wxRichTextIndentsSpacingPage icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end wxRichTextIndentsSpacingPage icon retrieval
|
||||
}
|
||||
/*!
|
||||
* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnAlignmentLeftSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnAlignmentRightSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnAlignmentJustifiedSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnAlignmentCentredSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnAlignmentIndeterminateSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnIndentLeftUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnIndentLeftFirstUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnIndentRightUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
|
||||
*/
|
||||
|
||||
void wxRichTextIndentsSpacingPage::OnSpacingLineSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dontUpdate)
|
||||
UpdatePreview();
|
||||
}
|
||||
|
||||
|
255
src/richtext/richtextstylepage.cpp
Normal file
255
src/richtext/richtextstylepage.cpp
Normal file
@@ -0,0 +1,255 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtextstylepage.cpp
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/5/2006 11:34:55 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "../../include/wx/richtext/richtextstylepage.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* wxRichTextStylePage type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxRichTextStylePage, wxPanel )
|
||||
|
||||
/*!
|
||||
* wxRichTextStylePage event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxRichTextStylePage, wxPanel )
|
||||
|
||||
////@begin wxRichTextStylePage event table entries
|
||||
EVT_UPDATE_UI( ID_RICHTEXTSTYLEPAGE_NEXT_STYLE, wxRichTextStylePage::OnNextStyleUpdate )
|
||||
|
||||
////@end wxRichTextStylePage event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* wxRichTextStylePage constructors
|
||||
*/
|
||||
|
||||
wxRichTextStylePage::wxRichTextStylePage( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRichTextStylePage::wxRichTextStylePage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Initialise members
|
||||
*/
|
||||
|
||||
void wxRichTextStylePage::Init()
|
||||
{
|
||||
////@begin wxRichTextStylePage member initialisation
|
||||
m_styleName = NULL;
|
||||
m_basedOn = NULL;
|
||||
m_nextStyle = NULL;
|
||||
////@end wxRichTextStylePage member initialisation
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxRichTextStylePage creator
|
||||
*/
|
||||
|
||||
bool wxRichTextStylePage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin wxRichTextStylePage creation
|
||||
wxPanel::Create( parent, id, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end wxRichTextStylePage creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for wxRichTextStylePage
|
||||
*/
|
||||
|
||||
void wxRichTextStylePage::CreateControls()
|
||||
{
|
||||
////@begin wxRichTextStylePage content construction
|
||||
wxRichTextStylePage* itemPanel1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemPanel1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer4, 0, wxALIGN_CENTER_HORIZONTAL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Style:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_styleName = new wxTextCtrl( itemPanel1, ID_RICHTEXTSTYLEPAGE_STYLE_NAME, _T(""), wxDefaultPosition, wxSize(300, -1), 0 );
|
||||
itemBoxSizer5->Add(m_styleName, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText8 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Based on:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText8, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_basedOnStrings = NULL;
|
||||
m_basedOn = new wxComboBox( itemPanel1, ID_RICHTEXTSTYLEPAGE_BASED_ON, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_basedOnStrings, wxCB_DROPDOWN );
|
||||
itemBoxSizer5->Add(m_basedOn, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxStaticText* itemStaticText10 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Next style:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxString* m_nextStyleStrings = NULL;
|
||||
m_nextStyle = new wxComboBox( itemPanel1, ID_RICHTEXTSTYLEPAGE_NEXT_STYLE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_nextStyleStrings, wxCB_DROPDOWN );
|
||||
itemBoxSizer5->Add(m_nextStyle, 0, wxGROW|wxALL, 5);
|
||||
|
||||
itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
////@end wxRichTextStylePage content construction
|
||||
}
|
||||
|
||||
/// Transfer data from/to window
|
||||
bool wxRichTextStylePage::TransferDataFromWindow()
|
||||
{
|
||||
wxPanel::TransferDataFromWindow();
|
||||
|
||||
wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
|
||||
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
|
||||
if (paraDef)
|
||||
paraDef->SetNextStyle(m_nextStyle->GetValue());
|
||||
|
||||
def->SetName(m_styleName->GetValue());
|
||||
def->SetBaseStyle(m_basedOn->GetValue());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextStylePage::TransferDataToWindow()
|
||||
{
|
||||
wxPanel::TransferDataToWindow();
|
||||
|
||||
wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
|
||||
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
|
||||
wxRichTextStyleSheet* sheet = wxRichTextFormattingDialog::GetDialog(this)->GetStyleSheet();
|
||||
|
||||
m_styleName->SetValue(def->GetName());
|
||||
|
||||
if (paraDef)
|
||||
{
|
||||
if (m_nextStyle->GetCount() == 0)
|
||||
{
|
||||
if (sheet)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < sheet->GetParagraphStyleCount(); i++)
|
||||
{
|
||||
wxRichTextParagraphStyleDefinition* p = wxDynamicCast(sheet->GetParagraphStyle(i), wxRichTextParagraphStyleDefinition);
|
||||
if (p)
|
||||
m_nextStyle->Append(p->GetName());
|
||||
}
|
||||
}
|
||||
}
|
||||
m_nextStyle->SetValue(paraDef->GetNextStyle());
|
||||
}
|
||||
|
||||
if (m_basedOn->GetCount() == 0)
|
||||
{
|
||||
if (sheet)
|
||||
{
|
||||
if (paraDef)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < sheet->GetParagraphStyleCount(); i++)
|
||||
{
|
||||
wxRichTextParagraphStyleDefinition* p = wxDynamicCast(sheet->GetParagraphStyle(i), wxRichTextParagraphStyleDefinition);
|
||||
if (p)
|
||||
m_basedOn->Append(p->GetName());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < sheet->GetCharacterStyleCount(); i++)
|
||||
{
|
||||
wxRichTextCharacterStyleDefinition* p = wxDynamicCast(sheet->GetCharacterStyle(i), wxRichTextCharacterStyleDefinition);
|
||||
if (p)
|
||||
m_basedOn->Append(p->GetName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_basedOn->SetValue(def->GetBaseStyle());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
wxTextAttrEx* wxRichTextStylePage::GetAttributes()
|
||||
{
|
||||
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool wxRichTextStylePage::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap wxRichTextStylePage::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin wxRichTextStylePage bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end wxRichTextStylePage bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon wxRichTextStylePage::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin wxRichTextStylePage icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end wxRichTextStylePage icon retrieval
|
||||
}
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
|
||||
*/
|
||||
|
||||
void wxRichTextStylePage::OnNextStyleUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
|
||||
event.Enable(def->IsKindOf(CLASSINFO(wxRichTextParagraphStyleDefinition)));
|
||||
}
|
350
src/richtext/richtexttabspage.cpp
Normal file
350
src/richtext/richtexttabspage.cpp
Normal file
@@ -0,0 +1,350 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: richtexttabspage.cpp
|
||||
// Purpose:
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 10/4/2006 8:03:20 AM
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////@begin includes
|
||||
////@end includes
|
||||
|
||||
#include "../../include/wx/richtext/richtexttabspage.h"
|
||||
|
||||
////@begin XPM images
|
||||
////@end XPM images
|
||||
|
||||
/*!
|
||||
* wxRichTextTabsPage type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxRichTextTabsPage, wxPanel )
|
||||
|
||||
/*!
|
||||
* wxRichTextTabsPage event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxRichTextTabsPage, wxPanel )
|
||||
|
||||
////@begin wxRichTextTabsPage event table entries
|
||||
EVT_LISTBOX( ID_RICHTEXTTABSPAGE_TABLIST, wxRichTextTabsPage::OnTablistSelected )
|
||||
|
||||
EVT_BUTTON( ID_RICHTEXTTABSPAGE_NEW_TAB, wxRichTextTabsPage::OnNewTabClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_NEW_TAB, wxRichTextTabsPage::OnNewTabUpdate )
|
||||
|
||||
EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_TAB, wxRichTextTabsPage::OnDeleteTabClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_TAB, wxRichTextTabsPage::OnDeleteTabUpdate )
|
||||
|
||||
EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, wxRichTextTabsPage::OnDeleteAllTabsClick )
|
||||
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, wxRichTextTabsPage::OnDeleteAllTabsUpdate )
|
||||
|
||||
////@end wxRichTextTabsPage event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
/*!
|
||||
* wxRichTextTabsPage constructors
|
||||
*/
|
||||
|
||||
wxRichTextTabsPage::wxRichTextTabsPage( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRichTextTabsPage::wxRichTextTabsPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Initialise members
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::Init()
|
||||
{
|
||||
m_tabsPresent = false;
|
||||
|
||||
////@begin wxRichTextTabsPage member initialisation
|
||||
m_tabEditCtrl = NULL;
|
||||
m_tabListCtrl = NULL;
|
||||
////@end wxRichTextTabsPage member initialisation
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxRichTextTabsPage creator
|
||||
*/
|
||||
|
||||
bool wxRichTextTabsPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
////@begin wxRichTextTabsPage creation
|
||||
wxPanel::Create( parent, id, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
if (GetSizer())
|
||||
{
|
||||
GetSizer()->SetSizeHints(this);
|
||||
}
|
||||
Centre();
|
||||
////@end wxRichTextTabsPage creation
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Control creation for wxRichTextTabsPage
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::CreateControls()
|
||||
{
|
||||
////@begin wxRichTextTabsPage content construction
|
||||
wxRichTextTabsPage* itemPanel1 = this;
|
||||
|
||||
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
||||
itemPanel1->SetSizer(itemBoxSizer2);
|
||||
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
itemBoxSizer3->Add(itemBoxSizer4, 1, wxGROW, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Position (tenths of a mm):"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
|
||||
|
||||
m_tabEditCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTTABSPAGE_TABEDIT, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer5->Add(m_tabEditCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxString* m_tabListCtrlStrings = NULL;
|
||||
m_tabListCtrl = new wxListBox( itemPanel1, ID_RICHTEXTTABSPAGE_TABLIST, wxDefaultPosition, wxSize(80, 200), 0, m_tabListCtrlStrings, wxLB_SINGLE );
|
||||
itemBoxSizer5->Add(m_tabListCtrl, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
|
||||
|
||||
wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer4->Add(itemBoxSizer10, 0, wxGROW, 5);
|
||||
|
||||
wxStaticText* itemStaticText11 = new wxStaticText( itemPanel1, wxID_STATIC, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer10->Add(itemStaticText11, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxADJUST_MINSIZE, 5);
|
||||
|
||||
wxButton* itemButton12 = new wxButton( itemPanel1, ID_RICHTEXTTABSPAGE_NEW_TAB, _("&New"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer10->Add(itemButton12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxButton* itemButton13 = new wxButton( itemPanel1, ID_RICHTEXTTABSPAGE_DELETE_TAB, _("&Delete"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer10->Add(itemButton13, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
wxButton* itemButton14 = new wxButton( itemPanel1, ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, _("Delete A&ll"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemBoxSizer10->Add(itemButton14, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
////@end wxRichTextTabsPage content construction
|
||||
}
|
||||
|
||||
/// Transfer data from/to window
|
||||
bool wxRichTextTabsPage::TransferDataFromWindow()
|
||||
{
|
||||
wxPanel::TransferDataFromWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
if (m_tabsPresent)
|
||||
{
|
||||
wxArrayInt tabs;
|
||||
size_t i;
|
||||
for (i = 0; i < m_tabListCtrl->GetCount(); i++)
|
||||
{
|
||||
tabs.Add(wxAtoi(m_tabListCtrl->GetString(i)));
|
||||
}
|
||||
attr->SetTabs(tabs);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxRichTextTabsPage::TransferDataToWindow()
|
||||
{
|
||||
wxPanel::TransferDataToWindow();
|
||||
|
||||
wxTextAttrEx* attr = GetAttributes();
|
||||
|
||||
m_tabListCtrl->Clear();
|
||||
m_tabEditCtrl->SetValue(wxEmptyString);
|
||||
|
||||
if (attr->HasTabs())
|
||||
{
|
||||
m_tabsPresent = true;
|
||||
size_t i;
|
||||
for (i = 0; i < attr->GetTabs().GetCount(); i++)
|
||||
{
|
||||
wxString s(wxString::Format(wxT("%d"), attr->GetTabs()[i]));
|
||||
m_tabListCtrl->Append(s);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int wxTabSortFunc(int* a, int* b)
|
||||
{
|
||||
if ((*a) < (*b))
|
||||
return -1;
|
||||
else if ((*b) < (*a))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// Sorts the tab array
|
||||
void wxRichTextTabsPage::SortTabs()
|
||||
{
|
||||
wxArrayInt tabs;
|
||||
size_t i;
|
||||
for (i = 0; i < m_tabListCtrl->GetCount(); i++)
|
||||
{
|
||||
tabs.Add(wxAtoi(m_tabListCtrl->GetString(i)));
|
||||
}
|
||||
tabs.Sort(& wxTabSortFunc);
|
||||
|
||||
m_tabListCtrl->Clear();
|
||||
for (i = 0; i < tabs.GetCount(); i++)
|
||||
{
|
||||
wxString s(wxString::Format(wxT("%d"), tabs[i]));
|
||||
m_tabListCtrl->Append(s);
|
||||
}
|
||||
}
|
||||
|
||||
wxTextAttrEx* wxRichTextTabsPage::GetAttributes()
|
||||
{
|
||||
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Should we show tooltips?
|
||||
*/
|
||||
|
||||
bool wxRichTextTabsPage::ShowToolTips()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get bitmap resources
|
||||
*/
|
||||
|
||||
wxBitmap wxRichTextTabsPage::GetBitmapResource( const wxString& name )
|
||||
{
|
||||
// Bitmap retrieval
|
||||
////@begin wxRichTextTabsPage bitmap retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullBitmap;
|
||||
////@end wxRichTextTabsPage bitmap retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get icon resources
|
||||
*/
|
||||
|
||||
wxIcon wxRichTextTabsPage::GetIconResource( const wxString& name )
|
||||
{
|
||||
// Icon retrieval
|
||||
////@begin wxRichTextTabsPage icon retrieval
|
||||
wxUnusedVar(name);
|
||||
return wxNullIcon;
|
||||
////@end wxRichTextTabsPage icon retrieval
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnNewTabClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
wxString str = m_tabEditCtrl->GetValue();
|
||||
if (!str.IsEmpty() && str.IsNumber())
|
||||
{
|
||||
wxString s(wxString::Format(wxT("%d"), wxAtoi(str)));
|
||||
|
||||
m_tabListCtrl->Append(s);
|
||||
m_tabsPresent = true;
|
||||
|
||||
SortTabs();
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnNewTabUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
// This may be a bit expensive - consider updating New button when text
|
||||
// changes in edit control
|
||||
wxString str = m_tabEditCtrl->GetValue();
|
||||
if (!str.IsEmpty() && str.IsNumber())
|
||||
{
|
||||
wxString s(wxString::Format(wxT("%d"), wxAtoi(str)));
|
||||
event.Enable(m_tabListCtrl->FindString(s) == wxNOT_FOUND);
|
||||
}
|
||||
else
|
||||
event.Enable(false);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnDeleteTabClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_tabsPresent && m_tabListCtrl->GetCount() > 0 && m_tabListCtrl->GetSelection() != wxNOT_FOUND)
|
||||
{
|
||||
m_tabListCtrl->Delete(m_tabListCtrl->GetSelection());
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnDeleteTabUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_tabsPresent && m_tabListCtrl->GetCount() > 0 && m_tabListCtrl->GetSelection() != wxNOT_FOUND );
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnDeleteAllTabsClick( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
if (m_tabsPresent && m_tabListCtrl->GetCount() > 0)
|
||||
{
|
||||
m_tabListCtrl->Clear();
|
||||
m_tabEditCtrl->SetValue(wxEmptyString);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnDeleteAllTabsUpdate( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( m_tabsPresent && m_tabListCtrl->GetCount() > 0 );
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTTABSPAGE_TABLIST
|
||||
*/
|
||||
|
||||
void wxRichTextTabsPage::OnTablistSelected( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
wxString str = m_tabListCtrl->GetStringSelection();
|
||||
if (!str.IsEmpty())
|
||||
m_tabEditCtrl->SetValue(str);
|
||||
}
|
Reference in New Issue
Block a user