/////////////////////////////////////////////////////////////////////////////
-// Name: richtextstyledlg.cpp
-// Purpose:
+// Name: src/richtext/richtextstyledlg.cpp
+// Purpose:
// Author: Julian Smart
-// Modified by:
+// Modified by:
// Created: 10/5/2006 12:05:31 PM
-// RCS-ID:
+// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence:
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#pragma hdrstop
#endif
+#if wxUSE_RICHTEXT
+
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
-////@begin includes
-////@end includes
-
#include "wx/richtext/richtextstyledlg.h"
#include "wx/richtext/richtextformatdlg.h"
-////@begin XPM images
-////@end XPM images
-
/*!
* wxRichTextStyleOrganiserDialog type definition
*/
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 )
END_EVENT_TABLE()
+IMPLEMENT_HELP_PROVISION(wxRichTextStyleOrganiserDialog)
+
/*!
* wxRichTextStyleOrganiserDialog constructors
*/
m_dontUpdate = false;
m_flags = 0;
m_restartNumbering = true;
-
+
////@begin wxRichTextStyleOrganiserDialog member initialisation
m_innerSizer = NULL;
m_buttonSizerParent = NULL;
m_newCharacter = NULL;
m_newParagraph = NULL;
m_newList = NULL;
+ m_newBox = NULL;
m_applyStyle = NULL;
m_renameStyle = NULL;
m_editStyle = NULL;
m_closeButton = NULL;
m_bottomButtonSizer = NULL;
m_restartNumberingCtrl = NULL;
+ m_stdButtonSizer = NULL;
m_okButton = NULL;
m_cancelButton = NULL;
////@end wxRichTextStyleOrganiserDialog member initialisation
m_richTextStyleSheet = sheet;
m_richTextCtrl = ctrl;
m_flags = flags;
-
+
////@begin wxRichTextStyleOrganiserDialog creation
- SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS|wxDIALOG_EX_CONTEXTHELP);
+ SetExtraStyle(wxWS_EX_BLOCK_EVENTS|wxDIALOG_EX_CONTEXTHELP);
wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls();
*/
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;
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;
{
// 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;
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|wxADJUST_MINSIZE, 5);
+ itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
- m_stylesListBox = new wxRichTextStyleListCtrl( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_STYLES, wxDefaultPosition, wxSize(200, 350), wxSIMPLE_BORDER|listCtrlStyle );
+ m_stylesListBox = new wxRichTextStyleListCtrl( itemDialog1, ID_RICHTEXTSTYLEORGANISERDIALOG_STYLES, wxDefaultPosition, wxSize(280, 260), listCtrlStyle );
m_stylesListBox->SetHelpText(_("The available styles."));
- if (ShowToolTips())
+ 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, wxID_STATIC, _(" "), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 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(310, 200), wxSIMPLE_BORDER|wxTE_READONLY );
+ 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 (ShowToolTips())
+ if (wxRichTextStyleOrganiserDialog::ShowToolTips())
m_previewCtrl->SetToolTip(_("The style preview."));
itemBoxSizer8->Add(m_previewCtrl, 1, wxGROW|wxALL, 5);
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|wxADJUST_MINSIZE, 5);
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ 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 (ShowToolTips())
+ if (wxRichTextStyleOrganiserDialog::ShowToolTips())
m_deleteStyle->SetToolTip(_("Click to delete the selected style."));
m_buttonSizer->Add(m_deleteStyle, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_closeButton = new wxButton( itemDialog1, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
m_closeButton->SetDefault();
m_closeButton->SetHelpText(_("Click to close this window."));
- if (ShowToolTips())
+ if (wxRichTextStyleOrganiserDialog::ShowToolTips())
m_closeButton->SetToolTip(_("Click to close this window."));
m_buttonSizer->Add(m_closeButton, 0, wxGROW|wxALL, 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 (ShowToolTips())
+ if (wxRichTextStyleOrganiserDialog::ShowToolTips())
m_restartNumberingCtrl->SetToolTip(_("Check to restart numbering."));
m_bottomButtonSizer->Add(m_restartNumberingCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- m_bottomButtonSizer->Add(5, 5, 1, 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_okButton->SetDefault();
- m_okButton->SetHelpText(_("Click to confirm your selection."));
- if (ShowToolTips())
- m_okButton->SetToolTip(_("Click to confirm your selection."));
- m_bottomButtonSizer->Add(m_okButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ m_stdButtonSizer->AddButton(m_okButton);
m_cancelButton = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
- m_cancelButton->SetHelpText(_("Click to cancel this window."));
- if (ShowToolTips())
- m_cancelButton->SetToolTip(_("Click to cancel this window."));
- m_bottomButtonSizer->Add(m_cancelButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ 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)
{
if ((m_flags & wxRICHTEXT_ORGANISER_OK_CANCEL) == 0)
{
- m_bottomButtonSizer->Show(m_okButton, false);
- m_bottomButtonSizer->Show(m_cancelButton, false);
+ m_stdButtonSizer->Show(m_okButton, false);
+ m_stdButtonSizer->Show(m_cancelButton, false);
}
else
{
{
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();
{
if (!wxDialog::TransferDataFromWindow())
return false;
-
+
m_restartNumbering = m_restartNumberingCtrl->GetValue();
-
+
return true;
}
{
if (!wxDialog::TransferDataToWindow())
return false;
-
+
m_restartNumberingCtrl->SetValue(m_restartNumbering);
-
+
return true;
}
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.");
+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.");
+ 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.");
+et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.\n");
- static const wxChar* s_para3 = wxT("\nInteger convallis dolor at augue \
+ 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;
+ return;
}
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
-
wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
- //wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
- //wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition);
-
- wxTextAttrEx attr(def->GetStyle());
-#if 0
- 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));
-#endif
+ 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);
- wxTextAttrEx normalParaAttr;
+ wxRichTextAttr normalParaAttr;
normalParaAttr.SetFont(font);
normalParaAttr.SetTextColour(wxColour(wxT("LIGHT GREY")));
m_previewCtrl->Freeze();
- m_previewCtrl->Clear();
+ m_previewCtrl->Clear();
m_previewCtrl->BeginStyle(normalParaAttr);
m_previewCtrl->WriteText(s_para1);
m_previewCtrl->EndStyle();
-
- m_previewCtrl->BeginStyle(attr);
-
+
if (listDef)
{
+ m_previewCtrl->BeginStyle(attr);
+ long listStart = m_previewCtrl->GetInsertionPoint() + 1;
int i;
for (i = 0; i < 10; i++)
{
- wxTextAttrEx levelAttr = * listDef->GetLevelAttributes(i);
+ wxRichTextAttr levelAttr = * listDef->GetLevelAttributes(i);
levelAttr.SetBulletNumber(1);
m_previewCtrl->BeginStyle(levelAttr);
- m_previewCtrl->WriteText(wxString::Format(wxT("\nList level %d. "), i+1) + s_para2List);
+ 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->WriteText(wxString(wxT("\n")) + s_para2);
+ m_previewCtrl->BeginStyle(attr);
+ m_previewCtrl->WriteText(s_para2);
+ m_previewCtrl->EndStyle();
}
-
- m_previewCtrl->EndStyle();
m_previewCtrl->BeginStyle(normalParaAttr);
m_previewCtrl->WriteText(s_para3);
m_previewCtrl->Thaw();
}
-
+
/// Clears the preview
void wxRichTextStyleOrganiserDialog::ClearPreview()
{
- m_richTextCtrl->Clear();
+ m_previewCtrl->Clear();
+ wxStaticText* labelCtrl = (wxStaticText*) FindWindow(ID_RICHTEXTSTYLEORGANISERDIALOG_CURRENT_STYLE);
+ if (labelCtrl)
+ labelCtrl->SetLabel(wxEmptyString);
}
bool wxRichTextStyleOrganiserDialog::ApplyStyle(wxRichTextCtrl* ctrl)
ctrl = GetRichTextCtrl();
if (!ctrl)
return false;
- if (!ctrl->HasSelection())
- return false;
-
- wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
+ wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
- if (listDef && m_restartNumberingCtrl->GetValue())
+ if (listDef && m_restartNumberingCtrl->GetValue() && ctrl->HasSelection())
{
wxRichTextRange range = ctrl->GetSelectionRange();
return ctrl->SetListStyle(range, listDef, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_RENUMBER);
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());
if (formatDlg.ShowModal() == wxID_OK)
{
wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextCharacterStyleDefinition);
-
+
(*((wxRichTextCharacterStyleDefinition* ) style)) = (*charDef);
-
+
GetStyleSheet()->AddCharacterStyle(style);
m_stylesListBox->UpdateStyles();
}
else
delete style;
- }
+ }
}
/*!
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());
if (formatDlg.ShowModal() == wxID_OK)
{
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextParagraphStyleDefinition);
-
+
(*((wxRichTextParagraphStyleDefinition* ) style)) = (*paraDef);
-
+
GetStyleSheet()->AddParagraphStyle(style);
m_stylesListBox->UpdateStyles();
}
else
delete style;
- }
+ }
}
/*!
if (sel != wxNOT_FOUND)
{
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
-
+
int pages = wxRICHTEXT_FORMAT_STYLE_EDITOR;
-
- if (def->IsKindOf(CLASSINFO(wxRichTextCharacterStyleDefinition)))
+
+ if (wxDynamicCast(def, wxRichTextCharacterStyleDefinition))
{
pages |= wxRICHTEXT_FORMAT_FONT;
}
- else if (def->IsKindOf(CLASSINFO(wxRichTextListStyleDefinition)))
+ else if (wxDynamicCast(def, wxRichTextListStyleDefinition))
{
pages |= wxRICHTEXT_FORMAT_LIST_STYLE|wxRICHTEXT_FORMAT_FONT|wxRICHTEXT_FORMAT_INDENTS_SPACING;
}
- else if (def->IsKindOf(CLASSINFO(wxRichTextParagraphStyleDefinition)))
+ 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);
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);
{
(*((wxRichTextParagraphStyleDefinition* ) def)) = (*paraDef);
}
+ else if (boxDef)
+ {
+ (*((wxRichTextBoxStyleDefinition* ) def)) = (*boxDef);
+ }
else
{
(*((wxRichTextCharacterStyleDefinition* ) def)) = (*charDef);
}
m_stylesListBox->UpdateStyles();
+ m_stylesListBox->GetStyleListBox()->SetSelection(sel);
ShowPreview();
}
}
{
wxRichTextStyleDefinition* def = m_stylesListBox->GetStyleListBox()->GetStyle(sel);
wxString name(def->GetName());
- if (wxYES == wxMessageBox(wxString::Format(_("Delete style %s?"), (const wxChar*) name), _("Delete Style"), wxYES_NO|wxICON_QUESTION, this))
+ if (wxYES == wxMessageBox(wxString::Format(_("Delete style %s?"), name), _("Delete Style"), wxYES_NO|wxICON_QUESTION, this))
{
m_stylesListBox->GetStyleListBox()->SetItemCount(0);
-
- if (def->IsKindOf(CLASSINFO(wxRichTextListStyleDefinition)))
+
+ if (wxDynamicCast(def, wxRichTextListStyleDefinition))
GetStyleSheet()->RemoveListStyle((wxRichTextListStyleDefinition*) def, true);
- else if (def->IsKindOf(CLASSINFO(wxRichTextParagraphStyleDefinition)))
+ else if (wxDynamicCast(def, wxRichTextParagraphStyleDefinition))
GetStyleSheet()->RemoveParagraphStyle((wxRichTextParagraphStyleDefinition*) def, true);
- else if (def->IsKindOf(CLASSINFO(wxRichTextCharacterStyleDefinition)))
+ 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)
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++)
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());
if (formatDlg.ShowModal() == wxID_OK)
{
wxRichTextListStyleDefinition* listDef = wxDynamicCast(formatDlg.GetStyleDefinition(), wxRichTextListStyleDefinition);
-
+
(*((wxRichTextListStyleDefinition* ) style)) = (*listDef);
-
+
GetStyleSheet()->AddListStyle(style);
m_stylesListBox->UpdateStyles();
}
else
delete style;
- }
+ }
}
/*!
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();
+ }
}
/*!
event.Skip();
}
+/*!
+ * wxEVT_COMMAND_BUTTON_CLICKED 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);
+}
+
+#endif
+ // wxUSE_RICHTEXT