]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/richtext/richtextstylepage.cpp
Return NULL from wxWindow::GetCapture() when the capture is being lost.
[wxWidgets.git] / src / richtext / richtextstylepage.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: src/richtext/richtextstylepage.cpp
3// Purpose:
4// Author: Julian Smart
5// Modified by:
6// Created: 10/5/2006 11:34:55 AM
7// Copyright: (c) Julian Smart
8// Licence: wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#if wxUSE_RICHTEXT
12
13#include "wx/richtext/richtextstylepage.h"
14
15/*!
16 * wxRichTextStylePage type definition
17 */
18
19IMPLEMENT_DYNAMIC_CLASS( wxRichTextStylePage, wxRichTextDialogPage )
20
21/*!
22 * wxRichTextStylePage event table definition
23 */
24
25BEGIN_EVENT_TABLE( wxRichTextStylePage, wxRichTextDialogPage )
26
27////@begin wxRichTextStylePage event table entries
28 EVT_UPDATE_UI( ID_RICHTEXTSTYLEPAGE_NEXT_STYLE, wxRichTextStylePage::OnNextStyleUpdate )
29
30////@end wxRichTextStylePage event table entries
31
32END_EVENT_TABLE()
33
34IMPLEMENT_HELP_PROVISION(wxRichTextStylePage)
35
36/*!
37 * wxRichTextStylePage constructors
38 */
39
40wxRichTextStylePage::wxRichTextStylePage( )
41{
42 Init();
43}
44
45wxRichTextStylePage::wxRichTextStylePage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
46{
47 Init();
48 Create(parent, id, pos, size, style);
49}
50
51/*!
52 * Initialise members
53 */
54
55void wxRichTextStylePage::Init()
56{
57////@begin wxRichTextStylePage member initialisation
58 m_styleName = NULL;
59 m_basedOn = NULL;
60 m_nextStyle = NULL;
61////@end wxRichTextStylePage member initialisation
62}
63
64/*!
65 * wxRichTextStylePage creator
66 */
67
68bool wxRichTextStylePage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
69{
70////@begin wxRichTextStylePage creation
71 wxRichTextDialogPage::Create( parent, id, pos, size, style );
72
73 CreateControls();
74 if (GetSizer())
75 {
76 GetSizer()->SetSizeHints(this);
77 }
78 Centre();
79////@end wxRichTextStylePage creation
80 return true;
81}
82
83/*!
84 * Control creation for wxRichTextStylePage
85 */
86
87void wxRichTextStylePage::CreateControls()
88{
89////@begin wxRichTextStylePage content construction
90 wxRichTextStylePage* itemRichTextDialogPage1 = this;
91
92 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
93 itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
94
95 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
96 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
97
98 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
99 itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW, 5);
100
101 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
102 itemBoxSizer4->Add(itemBoxSizer5, 1, wxGROW, 5);
103
104 wxStaticText* itemStaticText6 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Style:"), wxDefaultPosition, wxDefaultSize, 0 );
105 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
106
107 m_styleName = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXTSTYLEPAGE_STYLE_NAME, wxEmptyString, wxDefaultPosition, wxSize(300, -1), wxTE_READONLY );
108 m_styleName->SetHelpText(_("The style name."));
109 if (wxRichTextStylePage::ShowToolTips())
110 m_styleName->SetToolTip(_("The style name."));
111 itemBoxSizer5->Add(m_styleName, 0, wxGROW|wxALL, 5);
112
113 wxStaticText* itemStaticText8 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Based on:"), wxDefaultPosition, wxDefaultSize, 0 );
114 itemBoxSizer5->Add(itemStaticText8, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
115
116 wxArrayString m_basedOnStrings;
117 m_basedOn = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTSTYLEPAGE_BASED_ON, wxEmptyString, wxDefaultPosition, wxSize(300, -1), m_basedOnStrings, wxCB_DROPDOWN );
118 m_basedOn->SetHelpText(_("The style on which this style is based."));
119 if (wxRichTextStylePage::ShowToolTips())
120 m_basedOn->SetToolTip(_("The style on which this style is based."));
121 itemBoxSizer5->Add(m_basedOn, 0, wxGROW|wxALL, 5);
122
123 wxStaticText* itemStaticText10 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Next style:"), wxDefaultPosition, wxDefaultSize, 0 );
124 itemBoxSizer5->Add(itemStaticText10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
125
126 wxArrayString m_nextStyleStrings;
127 m_nextStyle = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTSTYLEPAGE_NEXT_STYLE, wxEmptyString, wxDefaultPosition, wxSize(300, -1), m_nextStyleStrings, wxCB_DROPDOWN );
128 m_nextStyle->SetHelpText(_("The default style for the next paragraph."));
129 if (wxRichTextStylePage::ShowToolTips())
130 m_nextStyle->SetToolTip(_("The default style for the next paragraph."));
131 itemBoxSizer5->Add(m_nextStyle, 0, wxGROW|wxALL, 5);
132
133 itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
134
135////@end wxRichTextStylePage content construction
136}
137
138/// Transfer data from/to window
139bool wxRichTextStylePage::TransferDataFromWindow()
140{
141 wxPanel::TransferDataFromWindow();
142
143 wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
144 if (def)
145 {
146 wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
147 if (paraDef)
148 paraDef->SetNextStyle(m_nextStyle->GetValue());
149
150 def->SetName(m_styleName->GetValue());
151 def->SetBaseStyle(m_basedOn->GetValue());
152 }
153
154 return true;
155}
156
157bool wxRichTextStylePage::TransferDataToWindow()
158{
159 wxPanel::TransferDataToWindow();
160
161 wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
162 if (def)
163 {
164 m_basedOn->Freeze();
165 m_nextStyle->Freeze();
166
167 wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition);
168 wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition);
169 wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition);
170 wxRichTextStyleSheet* sheet = wxRichTextFormattingDialog::GetDialog(this)->GetStyleSheet();
171 wxRichTextBoxStyleDefinition* boxDef = wxDynamicCast(def, wxRichTextBoxStyleDefinition);
172
173 m_styleName->SetValue(def->GetName());
174
175 if (listDef)
176 {
177 if (m_nextStyle->GetCount() == 0)
178 {
179 if (sheet)
180 {
181 size_t i;
182 for (i = 0; i < sheet->GetListStyleCount(); i++)
183 {
184 wxRichTextListStyleDefinition* p = wxDynamicCast(sheet->GetListStyle(i), wxRichTextListStyleDefinition);
185 if (p)
186 m_nextStyle->Append(p->GetName());
187 }
188 }
189 }
190 m_nextStyle->SetValue(listDef->GetNextStyle());
191 }
192 else if (paraDef)
193 {
194 if (m_nextStyle->GetCount() == 0)
195 {
196 if (sheet)
197 {
198 size_t i;
199 for (i = 0; i < sheet->GetParagraphStyleCount(); i++)
200 {
201 wxRichTextParagraphStyleDefinition* p = wxDynamicCast(sheet->GetParagraphStyle(i), wxRichTextParagraphStyleDefinition);
202 if (p)
203 m_nextStyle->Append(p->GetName());
204 }
205 }
206 }
207 m_nextStyle->SetValue(paraDef->GetNextStyle());
208 }
209
210 if (m_basedOn->GetCount() == 0)
211 {
212 if (sheet)
213 {
214 if (listDef)
215 {
216 size_t i;
217 for (i = 0; i < sheet->GetListStyleCount(); i++)
218 {
219 wxRichTextListStyleDefinition* p = wxDynamicCast(sheet->GetListStyle(i), wxRichTextListStyleDefinition);
220 if (p)
221 m_basedOn->Append(p->GetName());
222 }
223 }
224 else if (paraDef)
225 {
226 size_t i;
227 for (i = 0; i < sheet->GetParagraphStyleCount(); i++)
228 {
229 wxRichTextParagraphStyleDefinition* p = wxDynamicCast(sheet->GetParagraphStyle(i), wxRichTextParagraphStyleDefinition);
230 if (p)
231 m_basedOn->Append(p->GetName());
232 }
233 }
234 else if (boxDef)
235 {
236 size_t i;
237 for (i = 0; i < sheet->GetBoxStyleCount(); i++)
238 {
239 wxRichTextBoxStyleDefinition* p = wxDynamicCast(sheet->GetBoxStyle(i), wxRichTextBoxStyleDefinition);
240 if (p)
241 m_basedOn->Append(p->GetName());
242 }
243 }
244 else if (charDef)
245 {
246 size_t i;
247 for (i = 0; i < sheet->GetCharacterStyleCount(); i++)
248 {
249 wxRichTextCharacterStyleDefinition* p = wxDynamicCast(sheet->GetCharacterStyle(i), wxRichTextCharacterStyleDefinition);
250 if (p)
251 m_basedOn->Append(p->GetName());
252 }
253 }
254 }
255 }
256
257 m_basedOn->SetValue(def->GetBaseStyle());
258
259 m_nextStyle->Thaw();
260 m_basedOn->Thaw();
261 }
262
263 return true;
264}
265
266wxRichTextAttr* wxRichTextStylePage::GetAttributes()
267{
268 return wxRichTextFormattingDialog::GetDialogAttributes(this);
269}
270
271/*!
272 * Should we show tooltips?
273 */
274
275bool wxRichTextStylePage::ShowToolTips()
276{
277 return wxRichTextFormattingDialog::ShowToolTips();
278}
279
280/*!
281 * Get bitmap resources
282 */
283
284wxBitmap wxRichTextStylePage::GetBitmapResource( const wxString& name )
285{
286 // Bitmap retrieval
287////@begin wxRichTextStylePage bitmap retrieval
288 wxUnusedVar(name);
289 return wxNullBitmap;
290////@end wxRichTextStylePage bitmap retrieval
291}
292
293/*!
294 * Get icon resources
295 */
296
297wxIcon wxRichTextStylePage::GetIconResource( const wxString& name )
298{
299 // Icon retrieval
300////@begin wxRichTextStylePage icon retrieval
301 wxUnusedVar(name);
302 return wxNullIcon;
303////@end wxRichTextStylePage icon retrieval
304}
305/*!
306 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEPAGE_NEXT_STYLE
307 */
308
309void wxRichTextStylePage::OnNextStyleUpdate( wxUpdateUIEvent& event )
310{
311 wxRichTextStyleDefinition* def = wxRichTextFormattingDialog::GetDialogStyleDefinition(this);
312 event.Enable(wxDynamicCast(def, wxRichTextParagraphStyleDefinition) != NULL);
313}
314
315#endif // wxUSE_RICHTEXT