git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
848 lines
28 KiB
C++
848 lines
28 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// 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
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/richtext/richtextfontpage.h"
|
|
|
|
/*!
|
|
* 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 )
|
|
EVT_BUTTON( ID_RICHTEXTFONTPAGE_BGCOLOURCTRL, 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 )
|
|
|
|
EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, wxRichTextFontPage::OnStrikethroughctrlClick )
|
|
|
|
EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_CAPSCTRL, wxRichTextFontPage::OnCapsctrlClick )
|
|
|
|
EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_SUPERSCRIPT, wxRichTextFontPage::OnRichtextfontpageSuperscriptClick )
|
|
|
|
EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_SUBSCRIPT, wxRichTextFontPage::OnRichtextfontpageSubscriptClick )
|
|
|
|
////@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;
|
|
m_bgColourPresent = 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_bgColourCtrl = NULL;
|
|
m_strikethroughCtrl = NULL;
|
|
m_capitalsCtrl = NULL;
|
|
m_superscriptCtrl = NULL;
|
|
m_subscriptCtrl = 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, 5);
|
|
|
|
m_faceTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_FACETEXTCTRL, wxT(""), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_faceTextCtrl->SetHelpText(_("Type a font name."));
|
|
if (wxRichTextFontPage::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, 100), 0 );
|
|
m_faceListBox->SetHelpText(_("Lists the available fonts."));
|
|
if (wxRichTextFontPage::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, 5);
|
|
|
|
m_sizeTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, wxT(""), wxDefaultPosition, wxSize(50, -1), 0 );
|
|
m_sizeTextCtrl->SetHelpText(_("Type a size in points."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_sizeTextCtrl->SetToolTip(_("Type a size in points."));
|
|
itemBoxSizer9->Add(m_sizeTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
wxArrayString m_sizeListBoxStrings;
|
|
m_sizeListBox = new wxListBox( itemPanel1, ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxDefaultPosition, wxSize(50, -1), m_sizeListBoxStrings, wxLB_SINGLE );
|
|
m_sizeListBox->SetHelpText(_("Lists font sizes in points."));
|
|
if (wxRichTextFontPage::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, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText15 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font st&yle:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
wxArrayString m_styleCtrlStrings;
|
|
m_styleCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_STYLECTRL, wxT(""), wxDefaultPosition, wxSize(110, -1), m_styleCtrlStrings, wxCB_READONLY );
|
|
m_styleCtrl->SetHelpText(_("Select regular or italic style."));
|
|
if (wxRichTextFontPage::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, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText18 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font &weight:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
wxArrayString m_weightCtrlStrings;
|
|
m_weightCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_WEIGHTCTRL, wxT(""), wxDefaultPosition, wxSize(110, -1), m_weightCtrlStrings, wxCB_READONLY );
|
|
m_weightCtrl->SetHelpText(_("Select regular or bold."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_weightCtrl->SetToolTip(_("Select regular or bold."));
|
|
itemBoxSizer17->Add(m_weightCtrl, 0, wxGROW|wxALL, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
|
|
itemBoxSizer13->Add(itemBoxSizer20, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText21 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Underlining:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer20->Add(itemStaticText21, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
wxArrayString m_underliningCtrlStrings;
|
|
m_underliningCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, wxT(""), wxDefaultPosition, wxSize(110, -1), m_underliningCtrlStrings, wxCB_READONLY );
|
|
m_underliningCtrl->SetHelpText(_("Select underlining or no underlining."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_underliningCtrl->SetToolTip(_("Select underlining or no underlining."));
|
|
itemBoxSizer20->Add(m_underliningCtrl, 0, wxGROW|wxALL, 5);
|
|
|
|
itemBoxSizer13->Add(0, 0, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxVERTICAL);
|
|
itemBoxSizer13->Add(itemBoxSizer24, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText25 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Colour:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer24->Add(itemStaticText25, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
m_colourCtrl = new wxRichTextColourSwatchCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_COLOURCTRL, wxDefaultPosition, wxSize(40, 20), 0 );
|
|
m_colourCtrl->SetHelpText(_("Click to change the text colour."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_colourCtrl->SetToolTip(_("Click to change the text colour."));
|
|
itemBoxSizer24->Add(m_colourCtrl, 0, wxGROW|wxALL, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer27 = new wxBoxSizer(wxVERTICAL);
|
|
itemBoxSizer13->Add(itemBoxSizer27, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText28 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Bg colour:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer27->Add(itemStaticText28, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
m_bgColourCtrl = new wxRichTextColourSwatchCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_BGCOLOURCTRL, wxDefaultPosition, wxSize(40, 20), 0 );
|
|
m_bgColourCtrl->SetHelpText(_("Click to change the text background colour."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_bgColourCtrl->SetToolTip(_("Click to change the text background colour."));
|
|
itemBoxSizer27->Add(m_bgColourCtrl, 0, wxGROW|wxALL, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxHORIZONTAL);
|
|
itemBoxSizer3->Add(itemBoxSizer30, 0, wxGROW, 5);
|
|
|
|
m_strikethroughCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, _("&Strikethrough"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
|
|
m_strikethroughCtrl->SetValue(false);
|
|
m_strikethroughCtrl->SetHelpText(_("Check to show a line through the text."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_strikethroughCtrl->SetToolTip(_("Check to show a line through the text."));
|
|
itemBoxSizer30->Add(m_strikethroughCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
|
|
m_capitalsCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_CAPSCTRL, _("Ca&pitals"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
|
|
m_capitalsCtrl->SetValue(false);
|
|
m_capitalsCtrl->SetHelpText(_("Check to show the text in capitals."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_capitalsCtrl->SetToolTip(_("Check to show the text in capitals."));
|
|
itemBoxSizer30->Add(m_capitalsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
|
|
m_superscriptCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_SUPERSCRIPT, _("Supe&rscript"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
|
|
m_superscriptCtrl->SetValue(false);
|
|
m_superscriptCtrl->SetHelpText(_("Check to show the text in superscript."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_superscriptCtrl->SetToolTip(_("Check to show the text in superscript."));
|
|
itemBoxSizer30->Add(m_superscriptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
|
|
m_subscriptCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_SUBSCRIPT, _("Subscrip&t"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
|
|
m_subscriptCtrl->SetValue(false);
|
|
m_subscriptCtrl->SetHelpText(_("Check to show the text in subscript."));
|
|
if (wxRichTextFontPage::ShowToolTips())
|
|
m_subscriptCtrl->SetToolTip(_("Check to show the text in subscript."));
|
|
itemBoxSizer30->Add(m_subscriptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
|
|
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
|
|
|
|
m_previewCtrl = new wxRichTextFontPreviewCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_PREVIEWCTRL, wxDefaultPosition, wxSize(100, 60), 0 );
|
|
m_previewCtrl->SetHelpText(_("Shows a preview of the font settings."));
|
|
if (wxRichTextFontPage::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();
|
|
|
|
wxTextAttr* attr = GetAttributes();
|
|
|
|
if (m_faceListBox->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
|
|
if (!faceName.IsEmpty())
|
|
{
|
|
attr->SetFontFaceName(faceName);
|
|
}
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_FACE));
|
|
|
|
wxString strSize = m_sizeTextCtrl->GetValue();
|
|
if (!strSize.IsEmpty())
|
|
{
|
|
int sz = wxAtoi(strSize);
|
|
if (sz > 0)
|
|
{
|
|
attr->SetFontSize(sz);
|
|
}
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_SIZE));
|
|
|
|
if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxFontStyle style;
|
|
if (m_styleCtrl->GetStringSelection() == _("Italic"))
|
|
style = wxFONTSTYLE_ITALIC;
|
|
else
|
|
style = wxFONTSTYLE_NORMAL;
|
|
|
|
attr->SetFontStyle(style);
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_ITALIC));
|
|
|
|
if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxFontWeight weight;
|
|
if (m_weightCtrl->GetStringSelection() == _("Bold"))
|
|
weight = wxFONTWEIGHT_BOLD;
|
|
else
|
|
weight = wxFONTWEIGHT_NORMAL;
|
|
|
|
attr->SetFontWeight(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;
|
|
|
|
attr->SetFontUnderlined(underlined);
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_UNDERLINE));
|
|
|
|
if (m_colourPresent)
|
|
{
|
|
attr->SetTextColour(m_colourCtrl->GetColour());
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_TEXT_COLOUR));
|
|
|
|
if (m_bgColourPresent)
|
|
{
|
|
attr->SetBackgroundColour(m_bgColourCtrl->GetColour());
|
|
}
|
|
else
|
|
attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_BACKGROUND_COLOUR));
|
|
|
|
if (m_strikethroughCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
|
|
{
|
|
attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
|
|
|
|
if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
|
|
else
|
|
attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
|
|
}
|
|
|
|
if (m_capitalsCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
|
|
{
|
|
attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_CAPITALS);
|
|
|
|
if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_CAPITALS);
|
|
else
|
|
attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_CAPITALS);
|
|
}
|
|
|
|
if (m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
{
|
|
attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
|
|
attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
|
|
attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SUBSCRIPT);
|
|
}
|
|
else if (m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
{
|
|
attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_SUBSCRIPT);
|
|
attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_SUBSCRIPT);
|
|
attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
|
|
}
|
|
else
|
|
{
|
|
// If they are undetermined, we don't want to include these flags in the text effects - the objects
|
|
// should retain their original style.
|
|
attr->SetTextEffectFlags(attr->GetTextEffectFlags() & ~(wxTEXT_ATTR_EFFECT_SUBSCRIPT|wxTEXT_ATTR_EFFECT_SUPERSCRIPT) );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool wxRichTextFontPage::TransferDataToWindow()
|
|
{
|
|
wxPanel::TransferDataToWindow();
|
|
|
|
m_dontUpdate = true;
|
|
wxTextAttr* attr = GetAttributes();
|
|
|
|
if (attr->HasFontFaceName())
|
|
{
|
|
m_faceTextCtrl->SetValue(attr->GetFontFaceName());
|
|
m_faceListBox->SetFaceNameSelection(attr->GetFont().GetFaceName());
|
|
}
|
|
else
|
|
{
|
|
m_faceTextCtrl->SetValue(wxEmptyString);
|
|
m_faceListBox->SetFaceNameSelection(wxEmptyString);
|
|
}
|
|
|
|
if (attr->HasFontSize())
|
|
{
|
|
wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
|
|
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->HasFontWeight())
|
|
{
|
|
if (attr->GetFontWeight() == wxBOLD)
|
|
m_weightCtrl->SetSelection(1);
|
|
else
|
|
m_weightCtrl->SetSelection(0);
|
|
}
|
|
else
|
|
{
|
|
m_weightCtrl->SetSelection(wxNOT_FOUND);
|
|
}
|
|
|
|
if (attr->HasFontItalic())
|
|
{
|
|
if (attr->GetFontStyle() == wxITALIC)
|
|
m_styleCtrl->SetSelection(1);
|
|
else
|
|
m_styleCtrl->SetSelection(0);
|
|
}
|
|
else
|
|
{
|
|
m_styleCtrl->SetSelection(wxNOT_FOUND);
|
|
}
|
|
|
|
if (attr->HasFontUnderlined())
|
|
{
|
|
if (attr->GetFontUnderlined())
|
|
m_underliningCtrl->SetSelection(1);
|
|
else
|
|
m_underliningCtrl->SetSelection(0);
|
|
}
|
|
else
|
|
{
|
|
m_underliningCtrl->SetSelection(wxNOT_FOUND);
|
|
}
|
|
|
|
if (attr->HasTextColour())
|
|
{
|
|
m_colourCtrl->SetColour(attr->GetTextColour());
|
|
m_colourPresent = true;
|
|
}
|
|
|
|
if (attr->HasBackgroundColour())
|
|
{
|
|
m_bgColourCtrl->SetColour(attr->GetBackgroundColour());
|
|
m_bgColourPresent = true;
|
|
}
|
|
|
|
if (attr->HasTextEffects())
|
|
{
|
|
if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
|
|
{
|
|
if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
|
|
m_strikethroughCtrl->Set3StateValue(wxCHK_CHECKED);
|
|
else
|
|
m_strikethroughCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
}
|
|
else
|
|
m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
|
|
if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_CAPITALS)
|
|
{
|
|
if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_CAPITALS)
|
|
m_capitalsCtrl->Set3StateValue(wxCHK_CHECKED);
|
|
else
|
|
m_capitalsCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
}
|
|
else
|
|
m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
|
|
if ( attr->GetTextEffectFlags() & (wxTEXT_ATTR_EFFECT_SUPERSCRIPT | wxTEXT_ATTR_EFFECT_SUBSCRIPT) )
|
|
{
|
|
if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_SUPERSCRIPT)
|
|
{
|
|
m_superscriptCtrl->Set3StateValue(wxCHK_CHECKED);
|
|
m_subscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
}
|
|
else if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_SUBSCRIPT)
|
|
{
|
|
m_superscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
m_subscriptCtrl->Set3StateValue(wxCHK_CHECKED);
|
|
}
|
|
else
|
|
{
|
|
m_superscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
m_subscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_superscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
m_subscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
m_superscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
m_subscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
|
|
}
|
|
|
|
UpdatePreview();
|
|
|
|
m_dontUpdate = false;
|
|
|
|
return true;
|
|
}
|
|
|
|
wxTextAttr* wxRichTextFontPage::GetAttributes()
|
|
{
|
|
return wxRichTextFormattingDialog::GetDialogAttributes(this);
|
|
}
|
|
|
|
/// Updates the font preview
|
|
void wxRichTextFontPage::UpdatePreview()
|
|
{
|
|
wxTextAttr attr;
|
|
|
|
if (m_colourPresent)
|
|
m_previewCtrl->SetForegroundColour(m_colourCtrl->GetBackgroundColour());
|
|
|
|
if (m_bgColourPresent)
|
|
m_previewCtrl->SetBackgroundColour(m_bgColourCtrl->GetBackgroundColour());
|
|
|
|
if (m_faceListBox->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
|
|
attr.SetFontFaceName(faceName);
|
|
}
|
|
|
|
wxString strSize = m_sizeTextCtrl->GetValue();
|
|
if (!strSize.IsEmpty())
|
|
{
|
|
int sz = wxAtoi(strSize);
|
|
if (sz > 0)
|
|
attr.SetFontSize(sz);
|
|
}
|
|
|
|
if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxFontStyle style;
|
|
if (m_styleCtrl->GetStringSelection() == _("Italic"))
|
|
style = wxFONTSTYLE_ITALIC;
|
|
else
|
|
style = wxFONTSTYLE_NORMAL;
|
|
|
|
attr.SetFontStyle(style);
|
|
}
|
|
|
|
if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
wxFontWeight weight;
|
|
if (m_weightCtrl->GetStringSelection() == _("Bold"))
|
|
weight = wxFONTWEIGHT_BOLD;
|
|
else
|
|
weight = wxFONTWEIGHT_NORMAL;
|
|
|
|
attr.SetFontWeight(weight);
|
|
}
|
|
|
|
if (m_underliningCtrl->GetSelection() != wxNOT_FOUND)
|
|
{
|
|
bool underlined;
|
|
if (m_underliningCtrl->GetStringSelection() == _("Underlined"))
|
|
underlined = true;
|
|
else
|
|
underlined = false;
|
|
|
|
attr.SetFontUnderlined(underlined);
|
|
}
|
|
|
|
int textEffects = 0;
|
|
|
|
if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
{
|
|
textEffects |= wxTEXT_ATTR_EFFECT_STRIKETHROUGH;
|
|
}
|
|
|
|
if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
{
|
|
textEffects |= wxTEXT_ATTR_EFFECT_CAPITALS;
|
|
}
|
|
|
|
if ( m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED )
|
|
textEffects |= wxTEXT_ATTR_EFFECT_SUPERSCRIPT;
|
|
else if ( m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED )
|
|
textEffects |= wxTEXT_ATTR_EFFECT_SUBSCRIPT;
|
|
|
|
wxFont font = attr.GetFont();
|
|
m_previewCtrl->SetFont(font);
|
|
m_previewCtrl->SetTextEffects(textEffects);
|
|
m_previewCtrl->Refresh();
|
|
}
|
|
|
|
/*!
|
|
* Should we show tooltips?
|
|
*/
|
|
|
|
bool wxRichTextFontPage::ShowToolTips()
|
|
{
|
|
return wxRichTextFormattingDialog::ShowToolTips();
|
|
}
|
|
|
|
/*!
|
|
* 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->ScrollToRow(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& event )
|
|
{
|
|
if (event.GetId() == m_colourCtrl->GetId())
|
|
m_colourPresent = true;
|
|
else if (event.GetId() == m_bgColourCtrl->GetId())
|
|
m_bgColourPresent = true;
|
|
|
|
UpdatePreview();
|
|
}
|
|
/*!
|
|
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL
|
|
*/
|
|
|
|
void wxRichTextFontPage::OnStrikethroughctrlClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
UpdatePreview();
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_CAPSCTRL
|
|
*/
|
|
|
|
void wxRichTextFontPage::OnCapsctrlClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
UpdatePreview();
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_SUPERSCRIPT
|
|
*/
|
|
|
|
void wxRichTextFontPage::OnRichtextfontpageSuperscriptClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
if ( m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
m_subscriptCtrl->Set3StateValue( wxCHK_UNCHECKED );
|
|
|
|
UpdatePreview();
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_SUBSCRIPT
|
|
*/
|
|
|
|
void wxRichTextFontPage::OnRichtextfontpageSubscriptClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
if ( m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
|
|
m_superscriptCtrl->Set3StateValue( wxCHK_UNCHECKED );
|
|
|
|
UpdatePreview();
|
|
}
|