git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
298 lines
9.4 KiB
C++
298 lines
9.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/richtext/richtextstylepage.cpp
|
|
// Purpose:
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 10/5/2006 11:34:55 AM
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#if wxUSE_RICHTEXT
|
|
|
|
#include "wx/richtext/richtextstylepage.h"
|
|
|
|
/*!
|
|
* 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, 5);
|
|
|
|
m_styleName = new wxTextCtrl( itemPanel1, ID_RICHTEXTSTYLEPAGE_STYLE_NAME, wxEmptyString, wxDefaultPosition, wxSize(300, -1), wxTE_READONLY );
|
|
m_styleName->SetHelpText(_("The style name."));
|
|
if (ShowToolTips())
|
|
m_styleName->SetToolTip(_("The style name."));
|
|
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, 5);
|
|
|
|
wxString* m_basedOnStrings = NULL;
|
|
m_basedOn = new wxComboBox( itemPanel1, ID_RICHTEXTSTYLEPAGE_BASED_ON, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, m_basedOnStrings, wxCB_DROPDOWN );
|
|
m_basedOn->SetHelpText(_("The style on which this style is based."));
|
|
if (ShowToolTips())
|
|
m_basedOn->SetToolTip(_("The style on which this style is based."));
|
|
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, 5);
|
|
|
|
wxString* m_nextStyleStrings = NULL;
|
|
m_nextStyle = new wxComboBox( itemPanel1, ID_RICHTEXTSTYLEPAGE_NEXT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, m_nextStyleStrings, wxCB_DROPDOWN );
|
|
m_nextStyle->SetHelpText(_("The default style for the next paragraph."));
|
|
if (ShowToolTips())
|
|
m_nextStyle->SetToolTip(_("The default style for the next paragraph."));
|
|
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);
|
|
if (def)
|
|
{
|
|
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);
|
|
if (def)
|
|
{
|
|
wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
|
|
wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
|
|
// wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition);
|
|
wxRichTextStyleSheet* sheet = wxRichTextFormattingDialog::GetDialog(this)->GetStyleSheet();
|
|
|
|
m_styleName->SetValue(def->GetName());
|
|
|
|
if (listDef)
|
|
{
|
|
if (m_nextStyle->GetCount() == 0)
|
|
{
|
|
if (sheet)
|
|
{
|
|
size_t i;
|
|
for (i = 0; i < sheet->GetListStyleCount(); i++)
|
|
{
|
|
wxRichTextListStyleDefinition* p = wxDynamicCast(sheet->GetListStyle(i), wxRichTextListStyleDefinition);
|
|
if (p)
|
|
m_nextStyle->Append(p->GetName());
|
|
}
|
|
}
|
|
}
|
|
m_nextStyle->SetValue(listDef->GetNextStyle());
|
|
}
|
|
else 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 (listDef)
|
|
{
|
|
size_t i;
|
|
for (i = 0; i < sheet->GetListStyleCount(); i++)
|
|
{
|
|
wxRichTextListStyleDefinition* p = wxDynamicCast(sheet->GetListStyle(i), wxRichTextListStyleDefinition);
|
|
if (p)
|
|
m_basedOn->Append(p->GetName());
|
|
}
|
|
}
|
|
else 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 wxRichTextFormattingDialog::ShowToolTips();
|
|
}
|
|
|
|
/*!
|
|
* 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)));
|
|
}
|
|
|
|
#endif // wxUSE_RICHTEXT
|