1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextstylepage.cpp
4 // Author: Julian Smart
6 // Created: 10/5/2006 11:34:55 AM
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
21 #include "wx/richtext/richtextstylepage.h"
27 * wxRichTextStylePage type definition
30 IMPLEMENT_DYNAMIC_CLASS( wxRichTextStylePage
, wxPanel
)
33 * wxRichTextStylePage event table definition
36 BEGIN_EVENT_TABLE( wxRichTextStylePage
, wxPanel
)
38 ////@begin wxRichTextStylePage event table entries
39 EVT_UPDATE_UI( ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
, wxRichTextStylePage
::OnNextStyleUpdate
)
41 ////@end wxRichTextStylePage event table entries
46 * wxRichTextStylePage constructors
49 wxRichTextStylePage
::wxRichTextStylePage( )
54 wxRichTextStylePage
::wxRichTextStylePage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
57 Create(parent
, id
, pos
, size
, style
);
64 void wxRichTextStylePage
::Init()
66 ////@begin wxRichTextStylePage member initialisation
70 ////@end wxRichTextStylePage member initialisation
74 * wxRichTextStylePage creator
77 bool wxRichTextStylePage
::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
79 ////@begin wxRichTextStylePage creation
80 wxPanel
::Create( parent
, id
, pos
, size
, style
);
85 GetSizer()->SetSizeHints(this);
88 ////@end wxRichTextStylePage creation
93 * Control creation for wxRichTextStylePage
96 void wxRichTextStylePage
::CreateControls()
98 ////@begin wxRichTextStylePage content construction
99 wxRichTextStylePage
* itemPanel1
= this;
101 wxBoxSizer
* itemBoxSizer2
= new wxBoxSizer(wxVERTICAL
);
102 itemPanel1
->SetSizer(itemBoxSizer2
);
104 wxBoxSizer
* itemBoxSizer3
= new wxBoxSizer(wxVERTICAL
);
105 itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5);
107 wxBoxSizer
* itemBoxSizer4
= new wxBoxSizer(wxHORIZONTAL
);
108 itemBoxSizer3
->Add(itemBoxSizer4
, 0, wxALIGN_CENTER_HORIZONTAL
, 5);
110 wxBoxSizer
* itemBoxSizer5
= new wxBoxSizer(wxVERTICAL
);
111 itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5);
113 wxStaticText
* itemStaticText6
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Style:"), wxDefaultPosition
, wxDefaultSize
, 0 );
114 itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
116 m_styleName
= new wxTextCtrl( itemPanel1
,
117 ID_RICHTEXTSTYLEPAGE_STYLE_NAME
,
120 wxSize(300, wxDefaultCoord
),
122 itemBoxSizer5
->Add(m_styleName
, 0, wxGROW
|wxALL
, 5);
124 wxStaticText
* itemStaticText8
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Based on:"), wxDefaultPosition
, wxDefaultSize
, 0 );
125 itemBoxSizer5
->Add(itemStaticText8
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
127 wxString
* m_basedOnStrings
= NULL
;
128 m_basedOn
= new wxComboBox( itemPanel1
,
129 ID_RICHTEXTSTYLEPAGE_BASED_ON
,
136 itemBoxSizer5
->Add(m_basedOn
, 0, wxGROW
|wxALL
, 5);
138 wxStaticText
* itemStaticText10
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Next style:"), wxDefaultPosition
, wxDefaultSize
, 0 );
139 itemBoxSizer5
->Add(itemStaticText10
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
141 wxString
* m_nextStyleStrings
= NULL
;
142 m_nextStyle
= new wxComboBox( itemPanel1
,
143 ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
,
150 itemBoxSizer5
->Add(m_nextStyle
, 0, wxGROW
|wxALL
, 5);
152 itemBoxSizer3
->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5);
154 ////@end wxRichTextStylePage content construction
157 /// Transfer data from/to window
158 bool wxRichTextStylePage
::TransferDataFromWindow()
160 wxPanel
::TransferDataFromWindow();
162 wxRichTextStyleDefinition
* def
= wxRichTextFormattingDialog
::GetDialogStyleDefinition(this);
163 wxRichTextParagraphStyleDefinition
* paraDef
= wxDynamicCast(def
, wxRichTextParagraphStyleDefinition
);
165 paraDef
->SetNextStyle(m_nextStyle
->GetValue());
167 def
->SetName(m_styleName
->GetValue());
168 def
->SetBaseStyle(m_basedOn
->GetValue());
173 bool wxRichTextStylePage
::TransferDataToWindow()
175 wxPanel
::TransferDataToWindow();
177 wxRichTextStyleDefinition
* def
= wxRichTextFormattingDialog
::GetDialogStyleDefinition(this);
178 wxRichTextParagraphStyleDefinition
* paraDef
= wxDynamicCast(def
, wxRichTextParagraphStyleDefinition
);
179 wxRichTextStyleSheet
* sheet
= wxRichTextFormattingDialog
::GetDialog(this)->GetStyleSheet();
181 m_styleName
->SetValue(def
->GetName());
185 if (m_nextStyle
->GetCount() == 0)
190 for (i
= 0; i
< sheet
->GetParagraphStyleCount(); i
++)
192 wxRichTextParagraphStyleDefinition
* p
= wxDynamicCast(sheet
->GetParagraphStyle(i
), wxRichTextParagraphStyleDefinition
);
194 m_nextStyle
->Append(p
->GetName());
198 m_nextStyle
->SetValue(paraDef
->GetNextStyle());
201 if (m_basedOn
->GetCount() == 0)
208 for (i
= 0; i
< sheet
->GetParagraphStyleCount(); i
++)
210 wxRichTextParagraphStyleDefinition
* p
= wxDynamicCast(sheet
->GetParagraphStyle(i
), wxRichTextParagraphStyleDefinition
);
212 m_basedOn
->Append(p
->GetName());
218 for (i
= 0; i
< sheet
->GetCharacterStyleCount(); i
++)
220 wxRichTextCharacterStyleDefinition
* p
= wxDynamicCast(sheet
->GetCharacterStyle(i
), wxRichTextCharacterStyleDefinition
);
222 m_basedOn
->Append(p
->GetName());
228 m_basedOn
->SetValue(def
->GetBaseStyle());
233 wxTextAttrEx
* wxRichTextStylePage
::GetAttributes()
235 return wxRichTextFormattingDialog
::GetDialogAttributes(this);
239 * Should we show tooltips?
242 bool wxRichTextStylePage
::ShowToolTips()
248 * Get bitmap resources
251 wxBitmap wxRichTextStylePage
::GetBitmapResource( const wxString
& name
)
254 ////@begin wxRichTextStylePage bitmap retrieval
257 ////@end wxRichTextStylePage bitmap retrieval
264 wxIcon wxRichTextStylePage
::GetIconResource( const wxString
& name
)
267 ////@begin wxRichTextStylePage icon retrieval
270 ////@end wxRichTextStylePage icon retrieval
273 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
276 void wxRichTextStylePage
::OnNextStyleUpdate( wxUpdateUIEvent
& event
)
278 wxRichTextStyleDefinition
* def
= wxRichTextFormattingDialog
::GetDialogStyleDefinition(this);
279 event
.Enable(def
->IsKindOf(CLASSINFO(wxRichTextParagraphStyleDefinition
)));
282 #endif // wxUSE_RICHTEXT