1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextindentspage.cpp
4 // Author: Julian Smart
6 // Created: 10/3/2006 2:28:21 PM
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
14 #include "wx/richtext/richtextindentspage.h"
17 * wxRichTextIndentsSpacingPage type definition
20 IMPLEMENT_DYNAMIC_CLASS( wxRichTextIndentsSpacingPage
, wxRichTextDialogPage
)
23 * wxRichTextIndentsSpacingPage event table definition
26 BEGIN_EVENT_TABLE( wxRichTextIndentsSpacingPage
, wxRichTextDialogPage
)
28 ////@begin wxRichTextIndentsSpacingPage event table entries
29 EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
, wxRichTextIndentsSpacingPage
::OnAlignmentLeftSelected
)
31 EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
, wxRichTextIndentsSpacingPage
::OnAlignmentRightSelected
)
33 EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
, wxRichTextIndentsSpacingPage
::OnAlignmentJustifiedSelected
)
35 EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
, wxRichTextIndentsSpacingPage
::OnAlignmentCentredSelected
)
37 EVT_RADIOBUTTON( ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
, wxRichTextIndentsSpacingPage
::OnAlignmentIndeterminateSelected
)
39 EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
, wxRichTextIndentsSpacingPage
::OnIndentLeftUpdated
)
41 EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
, wxRichTextIndentsSpacingPage
::OnIndentLeftFirstUpdated
)
43 EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
, wxRichTextIndentsSpacingPage
::OnIndentRightUpdated
)
45 EVT_COMBOBOX( ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
, wxRichTextIndentsSpacingPage
::OnRichtextOutlinelevelSelected
)
47 EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
, wxRichTextIndentsSpacingPage
::OnSpacingBeforeUpdated
)
49 EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
, wxRichTextIndentsSpacingPage
::OnSpacingAfterUpdated
)
51 EVT_COMBOBOX( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
, wxRichTextIndentsSpacingPage
::OnSpacingLineSelected
)
53 ////@end wxRichTextIndentsSpacingPage event table entries
57 IMPLEMENT_HELP_PROVISION(wxRichTextIndentsSpacingPage
)
60 * wxRichTextIndentsSpacingPage constructors
63 wxRichTextIndentsSpacingPage
::wxRichTextIndentsSpacingPage( )
68 wxRichTextIndentsSpacingPage
::wxRichTextIndentsSpacingPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
71 Create(parent
, id
, pos
, size
, style
);
78 void wxRichTextIndentsSpacingPage
::Init()
82 ////@begin wxRichTextIndentsSpacingPage member initialisation
83 m_alignmentLeft
= NULL
;
84 m_alignmentRight
= NULL
;
85 m_alignmentJustified
= NULL
;
86 m_alignmentCentred
= NULL
;
87 m_alignmentIndeterminate
= NULL
;
89 m_indentLeftFirst
= NULL
;
91 m_outlineLevelCtrl
= NULL
;
92 m_spacingBefore
= NULL
;
93 m_spacingAfter
= NULL
;
96 ////@end wxRichTextIndentsSpacingPage member initialisation
101 * wxRichTextIndentsSpacingPage creator
104 bool wxRichTextIndentsSpacingPage
::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
106 ////@begin wxRichTextIndentsSpacingPage creation
107 wxRichTextDialogPage
::Create( parent
, id
, pos
, size
, style
);
112 GetSizer()->SetSizeHints(this);
115 ////@end wxRichTextIndentsSpacingPage creation
120 * Control creation for wxRichTextIndentsSpacingPage
123 void wxRichTextIndentsSpacingPage
::CreateControls()
125 ////@begin wxRichTextIndentsSpacingPage content construction
126 wxRichTextIndentsSpacingPage
* itemRichTextDialogPage1
= this;
128 wxBoxSizer
* itemBoxSizer2
= new wxBoxSizer(wxVERTICAL
);
129 itemRichTextDialogPage1
->SetSizer(itemBoxSizer2
);
131 wxBoxSizer
* itemBoxSizer3
= new wxBoxSizer(wxVERTICAL
);
132 itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5);
134 wxBoxSizer
* itemBoxSizer4
= new wxBoxSizer(wxHORIZONTAL
);
135 itemBoxSizer3
->Add(itemBoxSizer4
, 0, wxGROW
, 5);
137 wxBoxSizer
* itemBoxSizer5
= new wxBoxSizer(wxVERTICAL
);
138 itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5);
140 wxStaticText
* itemStaticText6
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Alignment"), wxDefaultPosition
, wxDefaultSize
, 0 );
141 itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
143 wxBoxSizer
* itemBoxSizer7
= new wxBoxSizer(wxHORIZONTAL
);
144 itemBoxSizer5
->Add(itemBoxSizer7
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5);
146 itemBoxSizer7
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5);
148 wxBoxSizer
* itemBoxSizer9
= new wxBoxSizer(wxVERTICAL
);
149 itemBoxSizer7
->Add(itemBoxSizer9
, 0, wxALIGN_CENTER_VERTICAL
|wxTOP
, 5);
151 m_alignmentLeft
= new wxRadioButton( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
, _("&Left"), wxDefaultPosition
, wxDefaultSize
, wxRB_GROUP
);
152 m_alignmentLeft
->SetValue(false);
153 m_alignmentLeft
->SetHelpText(_("Left-align text."));
154 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
155 m_alignmentLeft
->SetToolTip(_("Left-align text."));
156 itemBoxSizer9
->Add(m_alignmentLeft
, 0, wxALIGN_LEFT
|wxALL
, 5);
158 m_alignmentRight
= new wxRadioButton( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
, _("&Right"), wxDefaultPosition
, wxDefaultSize
, 0 );
159 m_alignmentRight
->SetValue(false);
160 m_alignmentRight
->SetHelpText(_("Right-align text."));
161 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
162 m_alignmentRight
->SetToolTip(_("Right-align text."));
163 itemBoxSizer9
->Add(m_alignmentRight
, 0, wxALIGN_LEFT
|wxALL
, 5);
165 m_alignmentJustified
= new wxRadioButton( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
, _("&Justified"), wxDefaultPosition
, wxDefaultSize
, 0 );
166 m_alignmentJustified
->SetValue(false);
167 m_alignmentJustified
->SetHelpText(_("Justify text left and right."));
168 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
169 m_alignmentJustified
->SetToolTip(_("Justify text left and right."));
170 itemBoxSizer9
->Add(m_alignmentJustified
, 0, wxALIGN_LEFT
|wxALL
, 5);
172 m_alignmentCentred
= new wxRadioButton( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
, _("Cen&tred"), wxDefaultPosition
, wxDefaultSize
, 0 );
173 m_alignmentCentred
->SetValue(false);
174 m_alignmentCentred
->SetHelpText(_("Centre text."));
175 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
176 m_alignmentCentred
->SetToolTip(_("Centre text."));
177 itemBoxSizer9
->Add(m_alignmentCentred
, 0, wxALIGN_LEFT
|wxALL
, 5);
179 m_alignmentIndeterminate
= new wxRadioButton( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
, _("&Indeterminate"), wxDefaultPosition
, wxDefaultSize
, 0 );
180 m_alignmentIndeterminate
->SetValue(false);
181 m_alignmentIndeterminate
->SetHelpText(_("Use the current alignment setting."));
182 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
183 m_alignmentIndeterminate
->SetToolTip(_("Use the current alignment setting."));
184 itemBoxSizer9
->Add(m_alignmentIndeterminate
, 0, wxALIGN_LEFT
|wxALL
, 5);
186 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
188 wxStaticLine
* itemStaticLine16
= new wxStaticLine( itemRichTextDialogPage1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL
);
189 itemBoxSizer4
->Add(itemStaticLine16
, 0, wxGROW
|wxLEFT
|wxBOTTOM
, 5);
191 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
193 wxBoxSizer
* itemBoxSizer18
= new wxBoxSizer(wxVERTICAL
);
194 itemBoxSizer4
->Add(itemBoxSizer18
, 0, wxGROW
, 5);
196 wxStaticText
* itemStaticText19
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Indentation (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 );
197 itemBoxSizer18
->Add(itemStaticText19
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
199 wxBoxSizer
* itemBoxSizer20
= new wxBoxSizer(wxHORIZONTAL
);
200 itemBoxSizer18
->Add(itemBoxSizer20
, 0, wxALIGN_LEFT
|wxALL
, 5);
202 itemBoxSizer20
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5);
204 wxFlexGridSizer
* itemFlexGridSizer22
= new wxFlexGridSizer(0, 2, 0, 0);
205 itemBoxSizer20
->Add(itemFlexGridSizer22
, 0, wxALIGN_CENTER_VERTICAL
, 5);
207 wxStaticText
* itemStaticText23
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Left:"), wxDefaultPosition
, wxDefaultSize
, 0 );
208 itemFlexGridSizer22
->Add(itemStaticText23
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
210 m_indentLeft
= new wxTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
, wxEmptyString
, wxDefaultPosition
, wxSize(50, -1), 0 );
211 m_indentLeft
->SetHelpText(_("The left indent."));
212 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
213 m_indentLeft
->SetToolTip(_("The left indent."));
214 itemFlexGridSizer22
->Add(m_indentLeft
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
216 wxStaticText
* itemStaticText25
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("Left (&first line):"), wxDefaultPosition
, wxDefaultSize
, 0 );
217 itemFlexGridSizer22
->Add(itemStaticText25
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
219 m_indentLeftFirst
= new wxTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
, wxEmptyString
, wxDefaultPosition
, wxSize(50, -1), 0 );
220 m_indentLeftFirst
->SetHelpText(_("The first line indent."));
221 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
222 m_indentLeftFirst
->SetToolTip(_("The first line indent."));
223 itemFlexGridSizer22
->Add(m_indentLeftFirst
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
225 wxStaticText
* itemStaticText27
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Right:"), wxDefaultPosition
, wxDefaultSize
, 0 );
226 itemFlexGridSizer22
->Add(itemStaticText27
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
228 m_indentRight
= new wxTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
, wxEmptyString
, wxDefaultPosition
, wxSize(50, -1), 0 );
229 m_indentRight
->SetHelpText(_("The right indent."));
230 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
231 m_indentRight
->SetToolTip(_("The right indent."));
232 itemFlexGridSizer22
->Add(m_indentRight
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
234 wxStaticText
* itemStaticText29
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Outline level:"), wxDefaultPosition
, wxDefaultSize
, 0 );
235 itemFlexGridSizer22
->Add(itemStaticText29
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
237 wxArrayString m_outlineLevelCtrlStrings
;
238 m_outlineLevelCtrlStrings
.Add(_("(none)"));
239 m_outlineLevelCtrlStrings
.Add(_("1"));
240 m_outlineLevelCtrlStrings
.Add(_("2"));
241 m_outlineLevelCtrlStrings
.Add(_("3"));
242 m_outlineLevelCtrlStrings
.Add(_("4"));
243 m_outlineLevelCtrlStrings
.Add(_("5"));
244 m_outlineLevelCtrlStrings
.Add(_("6"));
245 m_outlineLevelCtrlStrings
.Add(_("7"));
246 m_outlineLevelCtrlStrings
.Add(_("8"));
247 m_outlineLevelCtrlStrings
.Add(_("9"));
248 m_outlineLevelCtrlStrings
.Add(_("10"));
249 m_outlineLevelCtrl
= new wxComboBox( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
, _("(none)"), wxDefaultPosition
, wxSize(85, -1), m_outlineLevelCtrlStrings
, wxCB_READONLY
);
250 m_outlineLevelCtrl
->SetStringSelection(_("(none)"));
251 m_outlineLevelCtrl
->SetHelpText(_("The outline level."));
252 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
253 m_outlineLevelCtrl
->SetToolTip(_("The outline level."));
254 itemFlexGridSizer22
->Add(m_outlineLevelCtrl
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
256 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
258 wxStaticLine
* itemStaticLine32
= new wxStaticLine( itemRichTextDialogPage1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL
);
259 itemBoxSizer4
->Add(itemStaticLine32
, 0, wxGROW
|wxTOP
|wxBOTTOM
, 5);
261 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
263 wxBoxSizer
* itemBoxSizer34
= new wxBoxSizer(wxVERTICAL
);
264 itemBoxSizer4
->Add(itemBoxSizer34
, 0, wxGROW
, 5);
266 wxStaticText
* itemStaticText35
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Spacing (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 );
267 itemBoxSizer34
->Add(itemStaticText35
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
269 wxBoxSizer
* itemBoxSizer36
= new wxBoxSizer(wxHORIZONTAL
);
270 itemBoxSizer34
->Add(itemBoxSizer36
, 0, wxALIGN_LEFT
|wxALL
, 5);
272 itemBoxSizer36
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5);
274 wxFlexGridSizer
* itemFlexGridSizer38
= new wxFlexGridSizer(30, 2, 0, 0);
275 itemBoxSizer36
->Add(itemFlexGridSizer38
, 0, wxALIGN_CENTER_VERTICAL
, 5);
277 wxStaticText
* itemStaticText39
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Before a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 );
278 itemFlexGridSizer38
->Add(itemStaticText39
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
280 m_spacingBefore
= new wxTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
, wxEmptyString
, wxDefaultPosition
, wxSize(50, -1), 0 );
281 m_spacingBefore
->SetHelpText(_("The spacing before the paragraph."));
282 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
283 m_spacingBefore
->SetToolTip(_("The spacing before the paragraph."));
284 itemFlexGridSizer38
->Add(m_spacingBefore
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
286 wxStaticText
* itemStaticText41
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&After a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 );
287 itemFlexGridSizer38
->Add(itemStaticText41
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
289 m_spacingAfter
= new wxTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
, wxEmptyString
, wxDefaultPosition
, wxSize(50, -1), 0 );
290 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
291 m_spacingAfter
->SetToolTip(_("The spacing after the paragraph."));
292 itemFlexGridSizer38
->Add(m_spacingAfter
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
294 wxStaticText
* itemStaticText43
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("L&ine spacing:"), wxDefaultPosition
, wxDefaultSize
, 0 );
295 itemFlexGridSizer38
->Add(itemStaticText43
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
297 wxArrayString m_spacingLineStrings
;
298 m_spacingLineStrings
.Add(_("(none)"));
299 m_spacingLineStrings
.Add(_("Single"));
300 m_spacingLineStrings
.Add(_("1.1"));
301 m_spacingLineStrings
.Add(_("1.2"));
302 m_spacingLineStrings
.Add(_("1.3"));
303 m_spacingLineStrings
.Add(_("1.4"));
304 m_spacingLineStrings
.Add(_("1.5"));
305 m_spacingLineStrings
.Add(_("1.6"));
306 m_spacingLineStrings
.Add(_("1.7"));
307 m_spacingLineStrings
.Add(_("1.8"));
308 m_spacingLineStrings
.Add(_("1.9"));
309 m_spacingLineStrings
.Add(_("2"));
310 m_spacingLine
= new wxComboBox( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
, _("(none)"), wxDefaultPosition
, wxSize(85, -1), m_spacingLineStrings
, wxCB_READONLY
);
311 m_spacingLine
->SetStringSelection(_("(none)"));
312 m_spacingLine
->SetHelpText(_("The line spacing."));
313 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
314 m_spacingLine
->SetToolTip(_("The line spacing."));
315 itemFlexGridSizer38
->Add(m_spacingLine
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
317 itemBoxSizer3
->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL
, 5);
319 m_previewCtrl
= new wxRichTextCtrl( itemRichTextDialogPage1
, ID_RICHTEXTINDENTSSPACINGPAGE_PREVIEW_CTRL
, wxEmptyString
, wxDefaultPosition
, wxSize(350, 100), wxVSCROLL
|wxTE_READONLY
);
320 m_previewCtrl
->SetHelpText(_("Shows a preview of the paragraph settings."));
321 if (wxRichTextIndentsSpacingPage
::ShowToolTips())
322 m_previewCtrl
->SetToolTip(_("Shows a preview of the paragraph settings."));
323 itemBoxSizer3
->Add(m_previewCtrl
, 1, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5);
325 ////@end wxRichTextIndentsSpacingPage content construction
328 wxRichTextAttr
* wxRichTextIndentsSpacingPage
::GetAttributes()
330 return wxRichTextFormattingDialog
::GetDialogAttributes(this);
333 /// Updates the font preview
334 void wxRichTextIndentsSpacingPage
::UpdatePreview()
336 static const wxChar
* s_para1
= wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
337 Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.\n");
339 static const wxChar
* s_para2
= wxT("Duis pharetra consequat dui. Cum sociis natoque penatibus \
340 et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.\n");
342 static const wxChar
* s_para3
= wxT("Integer convallis dolor at augue \
343 iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
345 TransferDataFromWindow();
346 wxRichTextAttr
attr(*GetAttributes());
347 attr
.SetFlags(attr
.GetFlags() &
348 (wxTEXT_ATTR_ALIGNMENT
|wxTEXT_ATTR_LEFT_INDENT
|wxTEXT_ATTR_RIGHT_INDENT
|wxTEXT_ATTR_PARA_SPACING_BEFORE
|wxTEXT_ATTR_PARA_SPACING_AFTER
|
349 wxTEXT_ATTR_LINE_SPACING
|
350 wxTEXT_ATTR_BULLET_STYLE
|wxTEXT_ATTR_BULLET_NUMBER
|wxTEXT_ATTR_BULLET_TEXT
));
352 wxFont
font(m_previewCtrl
->GetFont());
353 font
.SetPointSize(9);
354 m_previewCtrl
->SetFont(font
);
356 wxRichTextAttr normalParaAttr
;
357 normalParaAttr
.SetFont(font
);
358 normalParaAttr
.SetTextColour(wxColour(wxT("LIGHT GREY")));
360 m_previewCtrl
->Freeze();
361 m_previewCtrl
->Clear();
363 m_previewCtrl
->BeginStyle(normalParaAttr
);
364 m_previewCtrl
->WriteText(s_para1
);
365 m_previewCtrl
->EndStyle();
367 m_previewCtrl
->BeginStyle(attr
);
368 m_previewCtrl
->WriteText(s_para2
);
369 m_previewCtrl
->EndStyle();
371 m_previewCtrl
->BeginStyle(normalParaAttr
);
372 m_previewCtrl
->WriteText(s_para3
);
373 m_previewCtrl
->EndStyle();
375 m_previewCtrl
->Thaw();
378 /// Transfer data from/to window
379 bool wxRichTextIndentsSpacingPage
::TransferDataFromWindow()
381 wxPanel
::TransferDataFromWindow();
383 wxRichTextAttr
* attr
= GetAttributes();
385 if (m_alignmentLeft
->GetValue())
386 attr
->SetAlignment(wxTEXT_ALIGNMENT_LEFT
);
387 else if (m_alignmentCentred
->GetValue())
388 attr
->SetAlignment(wxTEXT_ALIGNMENT_CENTRE
);
389 else if (m_alignmentRight
->GetValue())
390 attr
->SetAlignment(wxTEXT_ALIGNMENT_RIGHT
);
391 else if (m_alignmentJustified
->GetValue())
392 attr
->SetAlignment(wxTEXT_ALIGNMENT_JUSTIFIED
);
395 attr
->SetAlignment(wxTEXT_ALIGNMENT_DEFAULT
);
396 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_ALIGNMENT
));
399 wxString
leftIndent(m_indentLeft
->GetValue());
400 wxString
leftFirstIndent(m_indentLeftFirst
->GetValue());
401 if (!leftIndent
.empty() || !leftFirstIndent
.empty())
403 int visualLeftIndent
= 0;
404 if (!leftIndent
.empty())
405 visualLeftIndent
= wxAtoi(leftIndent
);
407 int visualLeftFirstIndent
= wxAtoi(leftFirstIndent
);
408 int actualLeftIndent
= visualLeftFirstIndent
;
409 int actualLeftSubIndent
= visualLeftIndent
- visualLeftFirstIndent
;
411 attr
->SetLeftIndent(actualLeftIndent
, actualLeftSubIndent
);
414 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LEFT_INDENT
));
416 wxString
rightIndent(m_indentRight
->GetValue());
417 if (!rightIndent
.empty())
418 attr
->SetRightIndent(wxAtoi(rightIndent
));
420 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_RIGHT_INDENT
));
422 wxString
spacingAfter(m_spacingAfter
->GetValue());
423 if (!spacingAfter
.empty())
424 attr
->SetParagraphSpacingAfter(wxAtoi(spacingAfter
));
426 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_AFTER
));
428 wxString
spacingBefore(m_spacingBefore
->GetValue());
429 if (!spacingBefore
.empty())
430 attr
->SetParagraphSpacingBefore(wxAtoi(spacingBefore
));
432 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_BEFORE
));
434 int spacingIndex
= m_spacingLine
->GetSelection() - 1;
436 if (spacingIndex
> -1)
437 lineSpacing
= 10 + spacingIndex
;
439 if (lineSpacing
== 0)
440 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING
));
442 attr
->SetLineSpacing(lineSpacing
);
444 int outlineLevel
= m_outlineLevelCtrl
->GetSelection();
445 if (outlineLevel
== wxNOT_FOUND
|| outlineLevel
== 0)
447 attr
->SetOutlineLevel(-1);
448 attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_OUTLINE_LEVEL
));
451 attr
->SetOutlineLevel(outlineLevel
-1);
456 bool wxRichTextIndentsSpacingPage
::TransferDataToWindow()
460 wxPanel
::TransferDataToWindow();
462 wxRichTextAttr
* attr
= GetAttributes();
464 if (attr
->HasAlignment())
466 if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_LEFT
)
467 m_alignmentLeft
->SetValue(true);
468 else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_RIGHT
)
469 m_alignmentRight
->SetValue(true);
470 else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_CENTRE
)
471 m_alignmentCentred
->SetValue(true);
472 else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED
)
473 m_alignmentJustified
->SetValue(true);
475 m_alignmentIndeterminate
->SetValue(true);
478 m_alignmentIndeterminate
->SetValue(true);
480 if (attr
->HasLeftIndent())
482 wxString
leftIndent(wxString
::Format(wxT("%ld"), attr
->GetLeftIndent() + attr
->GetLeftSubIndent()));
483 wxString
leftFirstIndent(wxString
::Format(wxT("%ld"), attr
->GetLeftIndent()));
485 m_indentLeft
->SetValue(leftIndent
);
486 m_indentLeftFirst
->SetValue(leftFirstIndent
);
490 m_indentLeft
->SetValue(wxEmptyString
);
491 m_indentLeftFirst
->SetValue(wxEmptyString
);
494 if (attr
->HasRightIndent())
496 wxString
rightIndent(wxString
::Format(wxT("%ld"), attr
->GetRightIndent()));
498 m_indentRight
->SetValue(rightIndent
);
501 m_indentRight
->SetValue(wxEmptyString
);
503 if (attr
->HasParagraphSpacingAfter())
505 wxString
spacingAfter(wxString
::Format(wxT("%d"), attr
->GetParagraphSpacingAfter()));
507 m_spacingAfter
->SetValue(spacingAfter
);
510 m_spacingAfter
->SetValue(wxEmptyString
);
512 if (attr
->HasParagraphSpacingBefore())
514 wxString
spacingBefore(wxString
::Format(wxT("%d"), attr
->GetParagraphSpacingBefore()));
516 m_spacingBefore
->SetValue(spacingBefore
);
519 m_spacingBefore
->SetValue(wxEmptyString
);
521 if (attr
->HasLineSpacing())
525 int lineSpacing
= attr
->GetLineSpacing();
526 if (lineSpacing
>= 10 && lineSpacing
<= 20)
527 index
= (lineSpacing
- 10) + 1;
531 m_spacingLine
->SetSelection(index
);
534 m_spacingLine
->SetSelection(0);
536 if (attr
->HasOutlineLevel())
538 int outlineLevel
= attr
->GetOutlineLevel();
539 if (outlineLevel
< 0)
541 if (outlineLevel
> 9)
544 m_outlineLevelCtrl
->SetSelection(outlineLevel
+1);
547 m_outlineLevelCtrl
->SetSelection(0);
551 m_dontUpdate
= false;
558 * Should we show tooltips?
561 bool wxRichTextIndentsSpacingPage
::ShowToolTips()
563 return wxRichTextFormattingDialog
::ShowToolTips();
567 * Get bitmap resources
570 wxBitmap wxRichTextIndentsSpacingPage
::GetBitmapResource( const wxString
& name
)
573 ////@begin wxRichTextIndentsSpacingPage bitmap retrieval
576 ////@end wxRichTextIndentsSpacingPage bitmap retrieval
583 wxIcon wxRichTextIndentsSpacingPage
::GetIconResource( const wxString
& name
)
586 ////@begin wxRichTextIndentsSpacingPage icon retrieval
589 ////@end wxRichTextIndentsSpacingPage icon retrieval
592 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
595 void wxRichTextIndentsSpacingPage
::OnAlignmentLeftSelected( wxCommandEvent
& WXUNUSED(event
) )
603 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
606 void wxRichTextIndentsSpacingPage
::OnAlignmentRightSelected( wxCommandEvent
& WXUNUSED(event
) )
614 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
617 void wxRichTextIndentsSpacingPage
::OnAlignmentJustifiedSelected( wxCommandEvent
& WXUNUSED(event
) )
625 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
628 void wxRichTextIndentsSpacingPage
::OnAlignmentCentredSelected( wxCommandEvent
& WXUNUSED(event
) )
636 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
639 void wxRichTextIndentsSpacingPage
::OnAlignmentIndeterminateSelected( wxCommandEvent
& WXUNUSED(event
) )
647 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
650 void wxRichTextIndentsSpacingPage
::OnIndentLeftUpdated( wxCommandEvent
& WXUNUSED(event
) )
658 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
661 void wxRichTextIndentsSpacingPage
::OnIndentLeftFirstUpdated( wxCommandEvent
& WXUNUSED(event
) )
669 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
672 void wxRichTextIndentsSpacingPage
::OnIndentRightUpdated( wxCommandEvent
& WXUNUSED(event
) )
680 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
683 void wxRichTextIndentsSpacingPage
::OnSpacingBeforeUpdated( wxCommandEvent
& WXUNUSED(event
) )
691 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
694 void wxRichTextIndentsSpacingPage
::OnSpacingAfterUpdated( wxCommandEvent
& WXUNUSED(event
) )
701 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
704 void wxRichTextIndentsSpacingPage
::OnSpacingLineSelected( wxCommandEvent
& WXUNUSED(event
) )
711 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
714 void wxRichTextIndentsSpacingPage
::OnRichtextOutlinelevelSelected( wxCommandEvent
& WXUNUSED(event
) )
720 #endif // wxUSE_RICHTEXT