983 lines
36 KiB
C++
983 lines
36 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/richtext/richtextstyledlg.cpp
|
|
// Purpose:
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 10/5/2006 12:05:31 PM
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// For compilers that support precompilation, includes "wx/wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#if wxUSE_RICHTEXT
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif
|
|
|
|
#include "wx/richtext/richtextstyledlg.h"
|
|
#include "wx/richtext/richtextformatdlg.h"
|
|
|
|
/*!
|
|
* wxRichTextStyleOrganiserDialog type definition
|
|
*/
|
|
|
|
bool wxRichTextStyleOrganiserDialog::sm_showToolTips = false;
|
|
|
|
wxIMPLEMENT_DYNAMIC_CLASS(wxRichTextStyleOrganiserDialog, wxDialog);
|
|
|
|
/*!
|
|
* wxRichTextStyleOrganiserDialog event table definition
|
|
*/
|
|
|
|
wxBEGIN_EVENT_TABLE(wxRichTextStyleOrganiserDialog, wxDialog)
|
|
|
|
EVT_LISTBOX(wxID_ANY, wxRichTextStyleOrganiserDialog::OnListSelection)
|
|
|
|
////@begin wxRichTextStyleOrganiserDialog event table entries
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR, wxRichTextStyleOrganiserDialog::OnNewCharClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR, wxRichTextStyleOrganiserDialog::OnNewCharUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA, wxRichTextStyleOrganiserDialog::OnNewParaClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA, wxRichTextStyleOrganiserDialog::OnNewParaUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST, wxRichTextStyleOrganiserDialog::OnNewListClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST, wxRichTextStyleOrganiserDialog::OnNewListUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_BOX, wxRichTextStyleOrganiserDialog::OnNewBoxClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_BOX, wxRichTextStyleOrganiserDialog::OnNewBoxUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY, wxRichTextStyleOrganiserDialog::OnApplyClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY, wxRichTextStyleOrganiserDialog::OnApplyUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME, wxRichTextStyleOrganiserDialog::OnRenameClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME, wxRichTextStyleOrganiserDialog::OnRenameUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT, wxRichTextStyleOrganiserDialog::OnEditClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT, wxRichTextStyleOrganiserDialog::OnEditUpdate )
|
|
EVT_BUTTON( ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE, wxRichTextStyleOrganiserDialog::OnDeleteClick )
|
|
EVT_UPDATE_UI( ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE, wxRichTextStyleOrganiserDialog::OnDeleteUpdate )
|
|
EVT_BUTTON( wxID_HELP, wxRichTextStyleOrganiserDialog::OnHelpClick )
|
|
////@end wxRichTextStyleOrganiserDialog event table entries
|
|
|
|
wxEND_EVENT_TABLE()
|
|
|
|
IMPLEMENT_HELP_PROVISION(wxRichTextStyleOrganiserDialog)
|
|
|
|
/*!
|
|
* wxRichTextStyleOrganiserDialog constructors
|
|
*/
|
|
|
|
wxRichTextStyleOrganiserDialog::wxRichTextStyleOrganiserDialog( )
|
|
{
|
|
Init();
|
|
}
|
|
|
|
wxRichTextStyleOrganiserDialog::wxRichTextStyleOrganiserDialog( int flags, wxRichTextStyleSheet* sheet, wxRichTextCtrl* ctrl, wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
|
{
|
|
Init();
|
|
Create(flags, sheet, ctrl, parent, id, caption, pos, size, style);
|
|
}
|
|
|
|
/*!
|
|
* Member initialisation for wxSymbolPickerDialog
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::Init()
|
|
{
|
|
m_richTextStyleSheet = NULL;
|
|
m_richTextCtrl = NULL;
|
|
m_dontUpdate = false;
|
|
m_flags = 0;
|
|
m_restartNumbering = true;
|
|
|
|
////@begin wxRichTextStyleOrganiserDialog member initialisation
|
|
m_innerSizer = NULL;
|
|
m_buttonSizerParent = NULL;
|
|
m_stylesListBox = NULL;
|
|
m_previewCtrl = NULL;
|
|
m_buttonSizer = NULL;
|
|
m_newCharacter = NULL;
|
|
m_newParagraph = NULL;
|
|
m_newList = NULL;
|
|
m_newBox = NULL;
|
|
m_applyStyle = NULL;
|
|
m_renameStyle = NULL;
|
|
m_editStyle = NULL;
|
|
m_deleteStyle = NULL;
|
|
m_closeButton = NULL;
|
|
m_bottomButtonSizer = NULL;
|
|
m_restartNumberingCtrl = NULL;
|
|
m_stdButtonSizer = NULL;
|
|
m_okButton = NULL;
|
|
m_cancelButton = NULL;
|
|
////@end wxRichTextStyleOrganiserDialog member initialisation
|
|
}
|
|
|
|
/*!
|
|
* wxRichTextStyleOrganiserDialog creator
|
|
*/
|
|
|
|
bool wxRichTextStyleOrganiserDialog::Create( int flags, wxRichTextStyleSheet* sheet, wxRichTextCtrl* ctrl, wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
|
|
{
|
|
m_richTextStyleSheet = sheet;
|
|
m_richTextCtrl = ctrl;
|
|
m_flags = flags;
|
|
|
|
////@begin wxRichTextStyleOrganiserDialog creation
|
|
SetExtraStyle(wxWS_EX_BLOCK_EVENTS|wxDIALOG_EX_CONTEXTHELP);
|
|
wxDialog::Create( parent, id, caption, pos, size, style );
|
|
|
|
CreateControls();
|
|
if (GetSizer())
|
|
{
|
|
GetSizer()->SetSizeHints(this);
|
|
}
|
|
Centre();
|
|
////@end wxRichTextStyleOrganiserDialog creation
|
|
return true;
|
|
}
|
|
|
|
/*!
|
|
* Control creation for wxRichTextStyleOrganiserDialog
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::CreateControls()
|
|
{
|
|
#ifdef __WXMAC__
|
|
SetWindowVariant(wxWINDOW_VARIANT_SMALL);
|
|
#endif
|
|
|
|
bool hideTypeSelector = false;
|
|
wxRichTextStyleListBox::wxRichTextStyleType typesToShow = wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL;
|
|
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_SHOW_CHARACTER) != 0)
|
|
{
|
|
typesToShow = wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER;
|
|
hideTypeSelector = true;
|
|
}
|
|
else if ((m_flags & wxRICHTEXT_ORGANISER_SHOW_PARAGRAPH) != 0)
|
|
{
|
|
typesToShow = wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH;
|
|
hideTypeSelector = true;
|
|
}
|
|
else if ((m_flags & wxRICHTEXT_ORGANISER_SHOW_BOX) != 0)
|
|
{
|
|
typesToShow = wxRichTextStyleListBox::wxRICHTEXT_STYLE_BOX;
|
|
hideTypeSelector = true;
|
|
}
|
|
else if ((m_flags & wxRICHTEXT_ORGANISER_SHOW_LIST) != 0)
|
|
{
|
|
typesToShow = wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST;
|
|
hideTypeSelector = true;
|
|
}
|
|
else
|
|
{
|
|
// wxRICHTEXT_ORGANISER_SHOW_ALL is implied if the other styles aren't included
|
|
}
|
|
|
|
long listCtrlStyle = 0;
|
|
if (hideTypeSelector)
|
|
listCtrlStyle = wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR;
|
|
|
|
////@begin wxRichTextStyleOrganiserDialog content construction
|
|
wxRichTextStyleOrganiserDialog* itemDialog1 = this;
|
|
|
|
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
|
|
itemDialog1->SetSizer(itemBoxSizer2);
|
|
|
|
m_innerSizer = new wxBoxSizer(wxVERTICAL);
|
|
itemBoxSizer2->Add(m_innerSizer, 1, wxGROW|wxALL, 5);
|
|
|
|
m_buttonSizerParent = new wxBoxSizer(wxHORIZONTAL);
|
|
m_innerSizer->Add(m_buttonSizerParent, 1, wxGROW, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
|
m_buttonSizerParent->Add(itemBoxSizer5, 1, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText6 = new wxStaticText( itemDialog1, wxID_STATIC, _("&Styles:"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
m_stylesListBox = new wxRichTextStyleListCtrl( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_STYLES, wxDefaultPosition, wxSize(280, 260), listCtrlStyle );
|
|
m_stylesListBox->SetHelpText(_("The available styles."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_stylesListBox->SetToolTip(_("The available styles."));
|
|
itemBoxSizer5->Add(m_stylesListBox, 1, wxGROW|wxALL, 5);
|
|
|
|
wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL);
|
|
m_buttonSizerParent->Add(itemBoxSizer8, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText9 = new wxStaticText( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_CURRENT_STYLE, _(" "), wxDefaultPosition, wxDefaultSize, 0 );
|
|
itemBoxSizer8->Add(itemStaticText9, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
m_previewCtrl = new wxRichTextCtrl( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_PREVIEW, wxEmptyString, wxDefaultPosition, wxSize(250, 200), wxBORDER_THEME|wxVSCROLL|wxTE_READONLY );
|
|
m_previewCtrl->SetHelpText(_("The style preview."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_previewCtrl->SetToolTip(_("The style preview."));
|
|
itemBoxSizer8->Add(m_previewCtrl, 1, wxGROW|wxALL, 5);
|
|
|
|
m_buttonSizer = new wxBoxSizer(wxVERTICAL);
|
|
m_buttonSizerParent->Add(m_buttonSizer, 0, wxGROW, 5);
|
|
|
|
wxStaticText* itemStaticText12 = new wxStaticText( itemDialog1, wxID_STATIC, _(" "), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_buttonSizer->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
|
|
|
|
m_newCharacter = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR, _("New &Character Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_newCharacter->SetHelpText(_("Click to create a new character style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_newCharacter->SetToolTip(_("Click to create a new character style."));
|
|
m_buttonSizer->Add(m_newCharacter, 0, wxGROW|wxALL, 5);
|
|
|
|
m_newParagraph = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA, _("New &Paragraph Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_newParagraph->SetHelpText(_("Click to create a new paragraph style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_newParagraph->SetToolTip(_("Click to create a new paragraph style."));
|
|
m_buttonSizer->Add(m_newParagraph, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_newList = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST, _("New &List Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_newList->SetHelpText(_("Click to create a new list style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_newList->SetToolTip(_("Click to create a new list style."));
|
|
m_buttonSizer->Add(m_newList, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_newBox = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_BOX, _("New &Box Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_newBox->SetHelpText(_("Click to create a new box style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_newBox->SetToolTip(_("Click to create a new box style."));
|
|
m_buttonSizer->Add(m_newBox, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_buttonSizer->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
|
|
|
m_applyStyle = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY, _("&Apply Style"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_applyStyle->SetHelpText(_("Click to apply the selected style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_applyStyle->SetToolTip(_("Click to apply the selected style."));
|
|
m_buttonSizer->Add(m_applyStyle, 0, wxGROW|wxALL, 5);
|
|
|
|
m_renameStyle = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME, _("&Rename Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_renameStyle->SetHelpText(_("Click to rename the selected style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_renameStyle->SetToolTip(_("Click to rename the selected style."));
|
|
m_buttonSizer->Add(m_renameStyle, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_editStyle = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT, _("&Edit Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_editStyle->SetHelpText(_("Click to edit the selected style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_editStyle->SetToolTip(_("Click to edit the selected style."));
|
|
m_buttonSizer->Add(m_editStyle, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_deleteStyle = new wxButton( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE, _("&Delete Style..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_deleteStyle->SetHelpText(_("Click to delete the selected style."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_deleteStyle->SetToolTip(_("Click to delete the selected style."));
|
|
m_buttonSizer->Add(m_deleteStyle, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
|
|
|
m_buttonSizer->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
|
|
|
m_closeButton = new wxButton( itemDialog1, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_closeButton->SetDefault();
|
|
m_closeButton->SetHelpText(_("Click to close this window."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_closeButton->SetToolTip(_("Click to close this window."));
|
|
m_buttonSizer->Add(m_closeButton, 0, wxGROW|wxALL, 5);
|
|
|
|
m_bottomButtonSizer = new wxBoxSizer(wxHORIZONTAL);
|
|
m_innerSizer->Add(m_bottomButtonSizer, 0, wxGROW, 5);
|
|
|
|
m_restartNumberingCtrl = new wxCheckBox( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_RESTART_NUMBERING, _("&Restart numbering"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_restartNumberingCtrl->SetValue(false);
|
|
m_restartNumberingCtrl->SetHelpText(_("Check to restart numbering."));
|
|
if (wxRichTextStyleOrganiserDialog::ShowToolTips())
|
|
m_restartNumberingCtrl->SetToolTip(_("Check to restart numbering."));
|
|
m_bottomButtonSizer->Add(m_restartNumberingCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
|
|
m_stdButtonSizer = new wxStdDialogButtonSizer;
|
|
|
|
m_bottomButtonSizer->Add(m_stdButtonSizer, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
|
m_okButton = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_stdButtonSizer->AddButton(m_okButton);
|
|
|
|
m_cancelButton = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_stdButtonSizer->AddButton(m_cancelButton);
|
|
|
|
wxButton* itemButton29 = new wxButton( itemDialog1, wxID_HELP, _("&Help"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
m_stdButtonSizer->AddButton(itemButton29);
|
|
|
|
m_stdButtonSizer->Realize();
|
|
|
|
////@end wxRichTextStyleOrganiserDialog content construction
|
|
|
|
if (GetHelpId() == -1)
|
|
{
|
|
wxWindow* button = FindWindowById(wxID_HELP);
|
|
if (button)
|
|
m_stdButtonSizer->Show(button, false);
|
|
}
|
|
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_CREATE_STYLES) == 0)
|
|
{
|
|
m_buttonSizer->Show(m_newCharacter, false);
|
|
m_buttonSizer->Show(m_newParagraph, false);
|
|
m_buttonSizer->Show(m_newList, false);
|
|
m_buttonSizer->Show(m_newBox, false);
|
|
}
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_DELETE_STYLES) == 0)
|
|
{
|
|
m_buttonSizer->Show(m_deleteStyle, false);
|
|
}
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_APPLY_STYLES) == 0)
|
|
{
|
|
m_buttonSizer->Show(m_applyStyle, false);
|
|
}
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_EDIT_STYLES) == 0)
|
|
{
|
|
m_buttonSizer->Show(m_editStyle, false);
|
|
}
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_RENAME_STYLES) == 0)
|
|
{
|
|
m_buttonSizer->Show(m_renameStyle, false);
|
|
}
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_RENUMBER) == 0)
|
|
{
|
|
m_bottomButtonSizer->Show(m_restartNumberingCtrl, false);
|
|
}
|
|
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_OK_CANCEL) == 0)
|
|
{
|
|
m_stdButtonSizer->Show(m_okButton, false);
|
|
m_stdButtonSizer->Show(m_cancelButton, false);
|
|
}
|
|
else
|
|
{
|
|
// Avoid the Escape key logic falling back on OK after finding
|
|
// a hidden wxID_CANCEL contol
|
|
m_closeButton->SetId(wxID_HIGHEST);
|
|
m_buttonSizer->Show(m_closeButton, false);
|
|
}
|
|
|
|
// No buttons in the vertical group are shown, so hide the whole sizer
|
|
if ((m_flags & wxRICHTEXT_ORGANISER_ORGANISE) == 0)
|
|
{
|
|
m_buttonSizerParent->Show(m_buttonSizer, false);
|
|
}
|
|
|
|
// No buttons in the horizontal group are shown, so hide the whole sizer
|
|
if ((m_flags & (wxRICHTEXT_ORGANISER_OK_CANCEL|wxRICHTEXT_ORGANISER_RENUMBER)) == 0)
|
|
{
|
|
m_innerSizer->Show(m_bottomButtonSizer, false);
|
|
}
|
|
|
|
if (hideTypeSelector)
|
|
{
|
|
m_stylesListBox->GetStyleListBox()->SetStyleType(typesToShow);
|
|
}
|
|
|
|
m_stylesListBox->SetStyleSheet(m_richTextStyleSheet);
|
|
m_stylesListBox->SetRichTextCtrl(m_richTextCtrl);
|
|
m_stylesListBox->UpdateStyles();
|
|
m_stylesListBox->GetStyleListBox()->SetAutoSetSelection(false); // stop idle-time auto selection
|
|
if (m_stylesListBox->GetStyleListBox()->GetItemCount() > 0)
|
|
{
|
|
m_stylesListBox->GetStyleListBox()->SetSelection(0);
|
|
ShowPreview();
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Should we show tooltips?
|
|
*/
|
|
|
|
/// Get selected style name or definition
|
|
wxString wxRichTextStyleOrganiserDialog::GetSelectedStyle() const
|
|
{
|
|
wxRichTextStyleDefinition* def = GetSelectedStyleDefinition();
|
|
if (def)
|
|
return def->GetName();
|
|
else
|
|
return wxEmptyString;
|
|
}
|
|
|
|
wxRichTextStyleDefinition* wxRichTextStyleOrganiserDialog::GetSelectedStyleDefinition() const
|
|
{
|
|
int sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
return m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
}
|
|
|
|
|
|
/// Transfer data from/to window
|
|
bool wxRichTextStyleOrganiserDialog::TransferDataFromWindow()
|
|
{
|
|
if (!wxDialog::TransferDataFromWindow())
|
|
return false;
|
|
|
|
m_restartNumbering = m_restartNumberingCtrl->GetValue();
|
|
|
|
return true;
|
|
}
|
|
|
|
bool wxRichTextStyleOrganiserDialog::TransferDataToWindow()
|
|
{
|
|
if (!wxDialog::TransferDataToWindow())
|
|
return false;
|
|
|
|
m_restartNumberingCtrl->SetValue(m_restartNumbering);
|
|
|
|
return true;
|
|
}
|
|
|
|
/// Show preview for given or selected preview
|
|
void wxRichTextStyleOrganiserDialog::ShowPreview(int sel)
|
|
{
|
|
static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
|
|
Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.\n");
|
|
|
|
static const wxChar* s_para2List = wxT("Duis pharetra consequat dui. Nullam vitae justo id mauris lobortis interdum.\n");
|
|
|
|
static const wxChar* s_para2 = wxT("Duis pharetra consequat dui. Cum sociis natoque penatibus \
|
|
et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.\n");
|
|
|
|
static const wxChar* s_para3 = wxT("Integer convallis dolor at augue \
|
|
iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
|
|
|
|
if (sel == -1)
|
|
{
|
|
sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
if (sel == -1)
|
|
return;
|
|
}
|
|
|
|
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
|
|
wxRichTextBoxStyleDefinition* boxDef = wxDynamicCast(def, wxRichTextBoxStyleDefinition);
|
|
|
|
wxStaticText* labelCtrl = (wxStaticText*) FindWindow(ID_RICHTEXTSTYLEORGANISERDIALOG_CURRENT_STYLE);
|
|
if (labelCtrl)
|
|
labelCtrl->SetLabel(def->GetName() + wxT(":"));
|
|
|
|
wxRichTextAttr attr(def->GetStyleMergedWithBase(GetStyleSheet()));
|
|
|
|
wxFont font(m_previewCtrl->GetFont());
|
|
font.SetPointSize(9);
|
|
m_previewCtrl->SetFont(font);
|
|
|
|
wxRichTextAttr normalParaAttr;
|
|
normalParaAttr.SetFont(font);
|
|
normalParaAttr.SetTextColour(wxColour(wxT("LIGHT GREY")));
|
|
|
|
m_previewCtrl->Freeze();
|
|
m_previewCtrl->Clear();
|
|
|
|
m_previewCtrl->BeginStyle(normalParaAttr);
|
|
m_previewCtrl->WriteText(s_para1);
|
|
m_previewCtrl->EndStyle();
|
|
|
|
if (listDef)
|
|
{
|
|
m_previewCtrl->BeginStyle(attr);
|
|
long listStart = m_previewCtrl->GetInsertionPoint() + 1;
|
|
int i;
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
wxRichTextAttr levelAttr = * listDef->GetLevelAttributes(i);
|
|
levelAttr.SetBulletNumber(1);
|
|
m_previewCtrl->BeginStyle(levelAttr);
|
|
m_previewCtrl->WriteText(wxString::Format(wxT("List level %d. "), i+1) + s_para2List);
|
|
m_previewCtrl->EndStyle();
|
|
}
|
|
long listEnd = m_previewCtrl->GetInsertionPoint();
|
|
m_previewCtrl->NumberList(wxRichTextRange(listStart, listEnd), listDef);
|
|
m_previewCtrl->EndStyle();
|
|
}
|
|
else if (boxDef)
|
|
{
|
|
wxRichTextAttr cellParaAttr;
|
|
cellParaAttr.SetFont(font);
|
|
cellParaAttr.SetTextColour(*wxBLACK);
|
|
|
|
wxRichTextBox* textBox = m_previewCtrl->WriteTextBox(attr);
|
|
m_previewCtrl->SetFocusObject(textBox);
|
|
m_previewCtrl->BeginStyle(cellParaAttr);
|
|
wxString text(s_para2);
|
|
text.Replace(wxT("\n"), wxEmptyString);
|
|
m_previewCtrl->WriteText(text);
|
|
m_previewCtrl->EndStyle();
|
|
m_previewCtrl->SetFocusObject(NULL); // Set the focus back to the main buffer
|
|
m_previewCtrl->SetInsertionPointEnd();
|
|
m_previewCtrl->SetDefaultStyle(wxRichTextAttr());
|
|
}
|
|
else
|
|
{
|
|
m_previewCtrl->BeginStyle(attr);
|
|
m_previewCtrl->WriteText(s_para2);
|
|
m_previewCtrl->EndStyle();
|
|
}
|
|
|
|
m_previewCtrl->BeginStyle(normalParaAttr);
|
|
m_previewCtrl->WriteText(s_para3);
|
|
m_previewCtrl->EndStyle();
|
|
|
|
m_previewCtrl->Thaw();
|
|
}
|
|
|
|
/// Clears the preview
|
|
void wxRichTextStyleOrganiserDialog::ClearPreview()
|
|
{
|
|
m_previewCtrl->Clear();
|
|
wxStaticText* labelCtrl = (wxStaticText*) FindWindow(ID_RICHTEXTSTYLEORGANISERDIALOG_CURRENT_STYLE);
|
|
if (labelCtrl)
|
|
labelCtrl->SetLabel(wxEmptyString);
|
|
}
|
|
|
|
bool wxRichTextStyleOrganiserDialog::ApplyStyle(wxRichTextCtrl* ctrl)
|
|
{
|
|
int sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
if (sel == -1)
|
|
return false;
|
|
if (!ctrl)
|
|
ctrl = GetRichTextCtrl();
|
|
if (!ctrl)
|
|
return false;
|
|
|
|
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
|
|
|
|
if (listDef && m_restartNumberingCtrl->GetValue() && ctrl->HasSelection())
|
|
{
|
|
wxRichTextRange range = ctrl->GetSelectionRange();
|
|
return ctrl->SetListStyle(range, listDef, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_RENUMBER);
|
|
}
|
|
else
|
|
{
|
|
return ctrl->ApplyStyle(def);
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Get bitmap resources
|
|
*/
|
|
|
|
wxBitmap wxRichTextStyleOrganiserDialog::GetBitmapResource( const wxString& name )
|
|
{
|
|
// Bitmap retrieval
|
|
////@begin wxRichTextStyleOrganiserDialog bitmap retrieval
|
|
wxUnusedVar(name);
|
|
return wxNullBitmap;
|
|
////@end wxRichTextStyleOrganiserDialog bitmap retrieval
|
|
}
|
|
|
|
/*!
|
|
* Get icon resources
|
|
*/
|
|
|
|
wxIcon wxRichTextStyleOrganiserDialog::GetIconResource( const wxString& name )
|
|
{
|
|
// Icon retrieval
|
|
////@begin wxRichTextStyleOrganiserDialog icon retrieval
|
|
wxUnusedVar(name);
|
|
return wxNullIcon;
|
|
////@end wxRichTextStyleOrganiserDialog icon retrieval
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnApplyClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
ApplyStyle();
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnApplyUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable(((GetFlags() & wxRICHTEXT_ORGANISER_APPLY_STYLES) != 0) && m_stylesListBox->GetStyleListBox()->GetSelection() != wxNOT_FOUND);
|
|
}
|
|
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewCharClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
wxString styleName = wxGetTextFromUser(_("Enter a character style name"), _("New Style"));
|
|
if (!styleName.IsEmpty())
|
|
{
|
|
if (GetStyleSheet()->FindCharacterStyle(styleName))
|
|
{
|
|
wxMessageBox(_("Sorry, that name is taken. Please choose another."), _("New Style"), wxICON_EXCLAMATION|wxOK, this);
|
|
return;
|
|
}
|
|
|
|
wxRichTextCharacterStyleDefinition* style = new wxRichTextCharacterStyleDefinition(styleName);
|
|
|
|
int pages = wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_STYLE_EDITOR;
|
|
wxRichTextFormattingDialog formatDlg;
|
|
formatDlg.SetStyleDefinition(*style, GetStyleSheet());
|
|
formatDlg.Create(pages, this);
|
|
|
|
if (formatDlg.ShowModal() == wxID_OK)
|
|
{
|
|
wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextCharacterStyleDefinition);
|
|
|
|
(*((wxRichTextCharacterStyleDefinition* ) style)) = (*charDef);
|
|
|
|
GetStyleSheet()->AddCharacterStyle(style);
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
ShowPreview();
|
|
}
|
|
else
|
|
delete style;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewCharUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable((GetFlags() & wxRICHTEXT_ORGANISER_CREATE_STYLES) != 0);
|
|
}
|
|
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewParaClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
wxString styleName = wxGetTextFromUser(_("Enter a paragraph style name"), _("New Style"));
|
|
if (!styleName.IsEmpty())
|
|
{
|
|
if (GetStyleSheet()->FindParagraphStyle(styleName))
|
|
{
|
|
wxMessageBox(_("Sorry, that name is taken. Please choose another."), _("New Style"), wxICON_EXCLAMATION|wxOK, this);
|
|
return;
|
|
}
|
|
|
|
wxRichTextParagraphStyleDefinition* style = new wxRichTextParagraphStyleDefinition(styleName);
|
|
|
|
int pages = wxRICHTEXT_FORMAT_STYLE_EDITOR|wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_INDENTS_SPACING|wxRICHTEXT_FORMAT_TABS|wxRICHTEXT_FORMAT_BULLETS;
|
|
wxRichTextFormattingDialog formatDlg;
|
|
formatDlg.SetStyleDefinition(*style, GetStyleSheet());
|
|
formatDlg.Create(pages, this);
|
|
|
|
if (formatDlg.ShowModal() == wxID_OK)
|
|
{
|
|
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextParagraphStyleDefinition);
|
|
|
|
(*((wxRichTextParagraphStyleDefinition* ) style)) = (*paraDef);
|
|
|
|
GetStyleSheet()->AddParagraphStyle(style);
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
ShowPreview();
|
|
}
|
|
else
|
|
delete style;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewParaUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable((GetFlags() & wxRICHTEXT_ORGANISER_CREATE_STYLES) != 0);
|
|
}
|
|
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnEditClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
int sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
if (sel != wxNOT_FOUND)
|
|
{
|
|
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
|
|
int pages = wxRICHTEXT_FORMAT_STYLE_EDITOR;
|
|
|
|
if (wxDynamicCast(def, wxRichTextCharacterStyleDefinition))
|
|
{
|
|
pages |= wxRICHTEXT_FORMAT_FONT;
|
|
}
|
|
else if (wxDynamicCast(def, wxRichTextListStyleDefinition))
|
|
{
|
|
pages |= wxRICHTEXT_FORMAT_LIST_STYLE|wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_INDENTS_SPACING;
|
|
}
|
|
else if (wxDynamicCast(def, wxRichTextParagraphStyleDefinition))
|
|
{
|
|
pages |= wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_INDENTS_SPACING|wxRICHTEXT_FORMAT_TABS|wxRICHTEXT_FORMAT_BULLETS;
|
|
}
|
|
else if (wxDynamicCast(def, wxRichTextBoxStyleDefinition))
|
|
{
|
|
pages |= wxRICHTEXT_FORMAT_MARGINS|wxRICHTEXT_FORMAT_SIZE|wxRICHTEXT_FORMAT_BORDERS|wxRICHTEXT_FORMAT_BACKGROUND;
|
|
}
|
|
|
|
wxRichTextFormattingDialog formatDlg;
|
|
formatDlg.SetStyleDefinition(*def, GetStyleSheet());
|
|
formatDlg.Create(pages, this);
|
|
|
|
if (formatDlg.ShowModal() == wxID_OK)
|
|
{
|
|
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextParagraphStyleDefinition);
|
|
wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextCharacterStyleDefinition);
|
|
wxRichTextListStyleDefinition* listDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextListStyleDefinition);
|
|
wxRichTextBoxStyleDefinition* boxDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextBoxStyleDefinition);
|
|
|
|
if (listDef)
|
|
{
|
|
(*((wxRichTextListStyleDefinition* ) def)) = (*listDef);
|
|
}
|
|
else if (paraDef)
|
|
{
|
|
(*((wxRichTextParagraphStyleDefinition* ) def)) = (*paraDef);
|
|
}
|
|
else if (boxDef)
|
|
{
|
|
(*((wxRichTextBoxStyleDefinition* ) def)) = (*boxDef);
|
|
}
|
|
else
|
|
{
|
|
(*((wxRichTextCharacterStyleDefinition* ) def)) = (*charDef);
|
|
}
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
m_stylesListBox->GetStyleListBox()->SetSelection(sel);
|
|
ShowPreview();
|
|
}
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnEditUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable(((GetFlags() & wxRICHTEXT_ORGANISER_EDIT_STYLES) != 0) && m_stylesListBox->GetStyleListBox()->GetSelection() != wxNOT_FOUND);
|
|
}
|
|
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnDeleteClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
int sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
if (sel != wxNOT_FOUND)
|
|
{
|
|
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
wxString name(def->GetName());
|
|
if (wxYES == wxMessageBox(wxString::Format(_("Delete style %s?"), name), _("Delete Style"), wxYES_NO|wxICON_QUESTION, this))
|
|
{
|
|
m_stylesListBox->GetStyleListBox()->SetItemCount(0);
|
|
|
|
if (wxDynamicCast(def, wxRichTextListStyleDefinition))
|
|
GetStyleSheet()->RemoveListStyle((wxRichTextListStyleDefinition*) def, true);
|
|
else if (wxDynamicCast(def, wxRichTextParagraphStyleDefinition))
|
|
GetStyleSheet()->RemoveParagraphStyle((wxRichTextParagraphStyleDefinition*) def, true);
|
|
else if (wxDynamicCast(def, wxRichTextCharacterStyleDefinition))
|
|
GetStyleSheet()->RemoveCharacterStyle((wxRichTextCharacterStyleDefinition*) def, true);
|
|
else if (wxDynamicCast(def, wxRichTextBoxStyleDefinition))
|
|
GetStyleSheet()->RemoveBoxStyle((wxRichTextBoxStyleDefinition*) def, true);
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
|
|
if (m_stylesListBox->GetStyleListBox()->GetSelection() != -1)
|
|
ShowPreview();
|
|
else
|
|
ClearPreview();
|
|
}
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnDeleteUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable(((GetFlags() & wxRICHTEXT_ORGANISER_DELETE_STYLES) != 0) && m_stylesListBox->GetStyleListBox()->GetSelection() != wxNOT_FOUND);
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewListClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
wxString styleName = wxGetTextFromUser(_("Enter a list style name"), _("New Style"));
|
|
if (!styleName.IsEmpty())
|
|
{
|
|
if (GetStyleSheet()->FindListStyle(styleName))
|
|
{
|
|
wxMessageBox(_("Sorry, that name is taken. Please choose another."), _("New Style"), wxICON_EXCLAMATION|wxOK, this);
|
|
return;
|
|
}
|
|
|
|
wxRichTextListStyleDefinition* style = new wxRichTextListStyleDefinition(styleName);
|
|
|
|
// Initialize the style to make it easier to edit
|
|
int i;
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
wxString bulletSymbol;
|
|
if (i == 0)
|
|
bulletSymbol = wxT("*");
|
|
else if (i == 1)
|
|
bulletSymbol = wxT("-");
|
|
else if (i == 2)
|
|
bulletSymbol = wxT("*");
|
|
else if (i == 3)
|
|
bulletSymbol = wxT("-");
|
|
else
|
|
bulletSymbol = wxT("*");
|
|
|
|
style->SetAttributes(i, (i+1)*60, 60, wxTEXT_ATTR_BULLET_STYLE_SYMBOL, bulletSymbol);
|
|
}
|
|
|
|
int pages = wxRICHTEXT_FORMAT_LIST_STYLE|wxRICHTEXT_FORMAT_STYLE_EDITOR|wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_INDENTS_SPACING;
|
|
wxRichTextFormattingDialog formatDlg;
|
|
formatDlg.SetStyleDefinition(*style, GetStyleSheet());
|
|
formatDlg.Create(pages, this);
|
|
|
|
if (formatDlg.ShowModal() == wxID_OK)
|
|
{
|
|
wxRichTextListStyleDefinition* listDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextListStyleDefinition);
|
|
|
|
(*((wxRichTextListStyleDefinition* ) style)) = (*listDef);
|
|
|
|
GetStyleSheet()->AddListStyle(style);
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
ShowPreview();
|
|
}
|
|
else
|
|
delete style;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewListUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable((GetFlags() & wxRICHTEXT_ORGANISER_CREATE_STYLES) != 0);
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnRenameClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
int sel = m_stylesListBox->GetStyleListBox()->GetSelection();
|
|
if (sel == -1)
|
|
return;
|
|
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
|
|
if (!def)
|
|
return;
|
|
|
|
wxString styleName = wxGetTextFromUser(_("Enter a new style name"), _("New Style"), def->GetName());
|
|
if (!styleName.IsEmpty())
|
|
{
|
|
if (styleName == def->GetName())
|
|
return;
|
|
|
|
if (GetStyleSheet()->FindParagraphStyle(styleName) || GetStyleSheet()->FindCharacterStyle(styleName) || GetStyleSheet()->FindListStyle(styleName) || GetStyleSheet()->FindBoxStyle(styleName))
|
|
{
|
|
wxMessageBox(_("Sorry, that name is taken. Please choose another."), _("New Style"), wxICON_EXCLAMATION|wxOK, this);
|
|
return;
|
|
}
|
|
|
|
def->SetName(styleName);
|
|
m_stylesListBox->UpdateStyles();
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnRenameUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable(((GetFlags() & wxRICHTEXT_ORGANISER_RENAME_STYLES) != 0) && m_stylesListBox->GetStyleListBox()->GetSelection() != wxNOT_FOUND);
|
|
}
|
|
|
|
/// List selection
|
|
void wxRichTextStyleOrganiserDialog::OnListSelection(wxCommandEvent& event)
|
|
{
|
|
if (event.GetEventObject() == m_stylesListBox->GetStyleListBox())
|
|
ShowPreview();
|
|
else
|
|
event.Skip();
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_BOX
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewBoxClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
wxString styleName = wxGetTextFromUser(_("Enter a box style name"), _("New Style"));
|
|
if (!styleName.IsEmpty())
|
|
{
|
|
if (GetStyleSheet()->FindBoxStyle(styleName))
|
|
{
|
|
wxMessageBox(_("Sorry, that name is taken. Please choose another."), _("New Style"), wxICON_EXCLAMATION|wxOK, this);
|
|
return;
|
|
}
|
|
|
|
wxRichTextBoxStyleDefinition* style = new wxRichTextBoxStyleDefinition(styleName);
|
|
|
|
int pages = wxRICHTEXT_FORMAT_MARGINS|wxRICHTEXT_FORMAT_SIZE|wxRICHTEXT_FORMAT_BORDERS|wxRICHTEXT_FORMAT_BACKGROUND;
|
|
wxRichTextFormattingDialog formatDlg;
|
|
formatDlg.SetStyleDefinition(*style, GetStyleSheet());
|
|
formatDlg.Create(pages, this);
|
|
|
|
if (formatDlg.ShowModal() == wxID_OK)
|
|
{
|
|
wxRichTextBoxStyleDefinition* boxDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextBoxStyleDefinition);
|
|
|
|
(*((wxRichTextBoxStyleDefinition* ) style)) = (*boxDef);
|
|
|
|
GetStyleSheet()->AddBoxStyle(style);
|
|
|
|
m_stylesListBox->UpdateStyles();
|
|
ShowPreview();
|
|
}
|
|
else
|
|
delete style;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_BOX
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnNewBoxUpdate( wxUpdateUIEvent& event )
|
|
{
|
|
event.Enable((GetFlags() & wxRICHTEXT_ORGANISER_CREATE_STYLES) != 0);
|
|
}
|
|
|
|
/*!
|
|
* wxEVT_BUTTON event handler for wxID_HELP
|
|
*/
|
|
|
|
void wxRichTextStyleOrganiserDialog::OnHelpClick( wxCommandEvent& WXUNUSED(event) )
|
|
{
|
|
if ((GetHelpId() != -1) && GetUICustomization())
|
|
ShowHelp(this);
|
|
}
|
|
|
|
#endif
|
|
// wxUSE_RICHTEXT
|