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
, wxPanel 
) 
  23  * wxRichTextIndentsSpacingPage event table definition 
  26 BEGIN_EVENT_TABLE( wxRichTextIndentsSpacingPage
, wxPanel 
) 
  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_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
, wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated 
) 
  47     EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
, wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated 
) 
  49     EVT_COMBOBOX( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
, wxRichTextIndentsSpacingPage::OnSpacingLineSelected 
) 
  51 ////@end wxRichTextIndentsSpacingPage event table entries 
  56  * wxRichTextIndentsSpacingPage constructors 
  59 wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( ) 
  64 wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style 
) 
  67     Create(parent
, id
, pos
, size
, style
); 
  74 void wxRichTextIndentsSpacingPage::Init() 
  78 ////@begin wxRichTextIndentsSpacingPage member initialisation 
  79     m_alignmentLeft 
= NULL
; 
  80     m_alignmentRight 
= NULL
; 
  81     m_alignmentJustified 
= NULL
; 
  82     m_alignmentCentred 
= NULL
; 
  83     m_alignmentIndeterminate 
= NULL
; 
  85     m_indentLeftFirst 
= NULL
; 
  87     m_spacingBefore 
= NULL
; 
  88     m_spacingAfter 
= NULL
; 
  91 ////@end wxRichTextIndentsSpacingPage member initialisation 
  96  * wxRichTextIndentsSpacingPage creator 
  99 bool wxRichTextIndentsSpacingPage::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style 
) 
 101 ////@begin wxRichTextIndentsSpacingPage creation 
 102     wxPanel::Create( parent
, id
, pos
, size
, style 
); 
 107         GetSizer()->SetSizeHints(this); 
 110 ////@end wxRichTextIndentsSpacingPage creation 
 115  * Control creation for wxRichTextIndentsSpacingPage 
 118 void wxRichTextIndentsSpacingPage::CreateControls() 
 120 ////@begin wxRichTextIndentsSpacingPage content construction 
 121     wxRichTextIndentsSpacingPage
* itemPanel1 
= this; 
 123     wxBoxSizer
* itemBoxSizer2 
= new wxBoxSizer(wxVERTICAL
); 
 124     itemPanel1
->SetSizer(itemBoxSizer2
); 
 126     wxBoxSizer
* itemBoxSizer3 
= new wxBoxSizer(wxVERTICAL
); 
 127     itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5); 
 129     wxBoxSizer
* itemBoxSizer4 
= new wxBoxSizer(wxHORIZONTAL
); 
 130     itemBoxSizer3
->Add(itemBoxSizer4
, 0, wxGROW
, 5); 
 132     wxBoxSizer
* itemBoxSizer5 
= new wxBoxSizer(wxVERTICAL
); 
 133     itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5); 
 135     wxStaticText
* itemStaticText6 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Alignment"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 136     itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 138     wxBoxSizer
* itemBoxSizer7 
= new wxBoxSizer(wxHORIZONTAL
); 
 139     itemBoxSizer5
->Add(itemBoxSizer7
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 141     itemBoxSizer7
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 143     wxBoxSizer
* itemBoxSizer9 
= new wxBoxSizer(wxVERTICAL
); 
 144     itemBoxSizer7
->Add(itemBoxSizer9
, 0, wxALIGN_CENTER_VERTICAL
|wxTOP
, 5); 
 146     m_alignmentLeft 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
, _("&Left"), wxDefaultPosition
, wxDefaultSize
, wxRB_GROUP 
); 
 147     m_alignmentLeft
->SetValue(false); 
 148     m_alignmentLeft
->SetHelpText(_("Left-align text.")); 
 150         m_alignmentLeft
->SetToolTip(_("Left-align text.")); 
 151     itemBoxSizer9
->Add(m_alignmentLeft
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 153     m_alignmentRight 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
, _("&Right"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 154     m_alignmentRight
->SetValue(false); 
 155     m_alignmentRight
->SetHelpText(_("Right-align text.")); 
 157         m_alignmentRight
->SetToolTip(_("Right-align text.")); 
 158     itemBoxSizer9
->Add(m_alignmentRight
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 160     m_alignmentJustified 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
, _("&Justified"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 161     m_alignmentJustified
->SetValue(false); 
 162     m_alignmentJustified
->SetHelpText(_("Justify text left and right.")); 
 164         m_alignmentJustified
->SetToolTip(_("Justify text left and right.")); 
 165     itemBoxSizer9
->Add(m_alignmentJustified
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 167     m_alignmentCentred 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
, _("Cen&tred"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 168     m_alignmentCentred
->SetValue(false); 
 169     m_alignmentCentred
->SetHelpText(_("Centre text.")); 
 171         m_alignmentCentred
->SetToolTip(_("Centre text.")); 
 172     itemBoxSizer9
->Add(m_alignmentCentred
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 174     m_alignmentIndeterminate 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
, _("&Indeterminate"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 175     m_alignmentIndeterminate
->SetValue(false); 
 176     m_alignmentIndeterminate
->SetHelpText(_("Use the current alignment setting.")); 
 178         m_alignmentIndeterminate
->SetToolTip(_("Use the current alignment setting.")); 
 179     itemBoxSizer9
->Add(m_alignmentIndeterminate
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 181     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 183     wxStaticLine
* itemStaticLine16 
= new wxStaticLine( itemPanel1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL 
); 
 184     itemBoxSizer4
->Add(itemStaticLine16
, 0, wxGROW
|wxLEFT
|wxBOTTOM
, 5); 
 186     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 188     wxBoxSizer
* itemBoxSizer18 
= new wxBoxSizer(wxVERTICAL
); 
 189     itemBoxSizer4
->Add(itemBoxSizer18
, 0, wxGROW
, 5); 
 191     wxStaticText
* itemStaticText19 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Indentation (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 192     itemBoxSizer18
->Add(itemStaticText19
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 194     wxBoxSizer
* itemBoxSizer20 
= new wxBoxSizer(wxHORIZONTAL
); 
 195     itemBoxSizer18
->Add(itemBoxSizer20
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 197     itemBoxSizer20
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 199     wxFlexGridSizer
* itemFlexGridSizer22 
= new wxFlexGridSizer(2, 2, 0, 0); 
 200     itemBoxSizer20
->Add(itemFlexGridSizer22
, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 202     wxStaticText
* itemStaticText23 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Left:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 203     itemFlexGridSizer22
->Add(itemStaticText23
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 205     wxBoxSizer
* itemBoxSizer24 
= new wxBoxSizer(wxHORIZONTAL
); 
 206     itemFlexGridSizer22
->Add(itemBoxSizer24
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 208     m_indentLeft 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 209     m_indentLeft
->SetHelpText(_("The left indent.")); 
 211         m_indentLeft
->SetToolTip(_("The left indent.")); 
 212     itemBoxSizer24
->Add(m_indentLeft
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 214     wxStaticText
* itemStaticText26 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("Left (&first line):"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 215     itemFlexGridSizer22
->Add(itemStaticText26
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 217     wxBoxSizer
* itemBoxSizer27 
= new wxBoxSizer(wxHORIZONTAL
); 
 218     itemFlexGridSizer22
->Add(itemBoxSizer27
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 220     m_indentLeftFirst 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 221     m_indentLeftFirst
->SetHelpText(_("The first line indent.")); 
 223         m_indentLeftFirst
->SetToolTip(_("The first line indent.")); 
 224     itemBoxSizer27
->Add(m_indentLeftFirst
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 226     wxStaticText
* itemStaticText29 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Right:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 227     itemFlexGridSizer22
->Add(itemStaticText29
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 229     wxBoxSizer
* itemBoxSizer30 
= new wxBoxSizer(wxHORIZONTAL
); 
 230     itemFlexGridSizer22
->Add(itemBoxSizer30
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 232     m_indentRight 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 233     m_indentRight
->SetHelpText(_("The right indent.")); 
 235         m_indentRight
->SetToolTip(_("The right indent.")); 
 236     itemBoxSizer30
->Add(m_indentRight
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 238     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 240     wxStaticLine
* itemStaticLine33 
= new wxStaticLine( itemPanel1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL 
); 
 241     itemBoxSizer4
->Add(itemStaticLine33
, 0, wxGROW
|wxTOP
|wxBOTTOM
, 5); 
 243     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 245     wxBoxSizer
* itemBoxSizer35 
= new wxBoxSizer(wxVERTICAL
); 
 246     itemBoxSizer4
->Add(itemBoxSizer35
, 0, wxGROW
, 5); 
 248     wxStaticText
* itemStaticText36 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Spacing (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 249     itemBoxSizer35
->Add(itemStaticText36
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 251     wxBoxSizer
* itemBoxSizer37 
= new wxBoxSizer(wxHORIZONTAL
); 
 252     itemBoxSizer35
->Add(itemBoxSizer37
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 254     itemBoxSizer37
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 256     wxFlexGridSizer
* itemFlexGridSizer39 
= new wxFlexGridSizer(2, 2, 0, 0); 
 257     itemBoxSizer37
->Add(itemFlexGridSizer39
, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 259     wxStaticText
* itemStaticText40 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("Before a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 260     itemFlexGridSizer39
->Add(itemStaticText40
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 262     wxBoxSizer
* itemBoxSizer41 
= new wxBoxSizer(wxHORIZONTAL
); 
 263     itemFlexGridSizer39
->Add(itemBoxSizer41
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 265     m_spacingBefore 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 266     m_spacingBefore
->SetHelpText(_("The spacing before the paragraph.")); 
 268         m_spacingBefore
->SetToolTip(_("The spacing before the paragraph.")); 
 269     itemBoxSizer41
->Add(m_spacingBefore
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 271     wxStaticText
* itemStaticText43 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("After a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 272     itemFlexGridSizer39
->Add(itemStaticText43
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 274     wxBoxSizer
* itemBoxSizer44 
= new wxBoxSizer(wxHORIZONTAL
); 
 275     itemFlexGridSizer39
->Add(itemBoxSizer44
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 277     m_spacingAfter 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 279         m_spacingAfter
->SetToolTip(_("The spacing after the paragraph.")); 
 280     itemBoxSizer44
->Add(m_spacingAfter
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 282     wxStaticText
* itemStaticText46 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("Line spacing:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 283     itemFlexGridSizer39
->Add(itemStaticText46
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 285     wxBoxSizer
* itemBoxSizer47 
= new wxBoxSizer(wxHORIZONTAL
); 
 286     itemFlexGridSizer39
->Add(itemBoxSizer47
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
, 5); 
 288     wxString m_spacingLineStrings
[] = { 
 293     m_spacingLine 
= new wxComboBox( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
, _("Single"), wxDefaultPosition
, wxDefaultSize
, 3, m_spacingLineStrings
, wxCB_READONLY 
); 
 294     m_spacingLine
->SetStringSelection(_("Single")); 
 295     m_spacingLine
->SetHelpText(_("The line spacing.")); 
 297         m_spacingLine
->SetToolTip(_("The line spacing.")); 
 298     itemBoxSizer47
->Add(m_spacingLine
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 300     itemBoxSizer3
->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 302     m_previewCtrl 
= new wxRichTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_PREVIEW_CTRL
, wxEmptyString
, wxDefaultPosition
, wxSize(350, 180), wxSUNKEN_BORDER 
); 
 303     m_previewCtrl
->SetHelpText(_("Shows a preview of the paragraph settings.")); 
 305         m_previewCtrl
->SetToolTip(_("Shows a preview of the paragraph settings.")); 
 306     itemBoxSizer3
->Add(m_previewCtrl
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 308 ////@end wxRichTextIndentsSpacingPage content construction 
 311 wxTextAttrEx
* wxRichTextIndentsSpacingPage::GetAttributes() 
 313     return wxRichTextFormattingDialog::GetDialogAttributes(this); 
 316 /// Updates the font preview 
 317 void wxRichTextIndentsSpacingPage::UpdatePreview() 
 319     static const wxChar
* s_para1 
= wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ 
 320 Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus."); 
 322     static const wxChar
* s_para2 
= wxT("\nDuis pharetra consequat dui. Cum sociis natoque penatibus \ 
 323 et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum."); 
 325     static const wxChar
* s_para3 
= wxT("\nInteger convallis dolor at augue \ 
 326 iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n"); 
 328     TransferDataFromWindow(); 
 329     wxTextAttrEx 
attr(*GetAttributes()); 
 330     attr
.SetFlags(attr
.GetFlags() & 
 331       (wxTEXT_ATTR_ALIGNMENT
|wxTEXT_ATTR_LEFT_INDENT
|wxTEXT_ATTR_RIGHT_INDENT
|wxTEXT_ATTR_PARA_SPACING_BEFORE
|wxTEXT_ATTR_PARA_SPACING_AFTER
| 
 332        wxTEXT_ATTR_LINE_SPACING
| 
 333        wxTEXT_ATTR_BULLET_STYLE
|wxTEXT_ATTR_BULLET_NUMBER
|wxTEXT_ATTR_BULLET_TEXT
)); 
 335     wxFont 
font(m_previewCtrl
->GetFont()); 
 336     font
.SetPointSize(9); 
 337     m_previewCtrl
->SetFont(font
); 
 339     wxTextAttrEx normalParaAttr
; 
 340     normalParaAttr
.SetFont(font
); 
 341     normalParaAttr
.SetTextColour(wxColour(wxT("LIGHT GREY"))); 
 343     m_previewCtrl
->Freeze(); 
 344     m_previewCtrl
->Clear(); 
 346     m_previewCtrl
->BeginStyle(normalParaAttr
); 
 347     m_previewCtrl
->WriteText(s_para1
); 
 348     m_previewCtrl
->EndStyle(); 
 350     m_previewCtrl
->BeginStyle(attr
); 
 351     m_previewCtrl
->WriteText(s_para2
); 
 352     m_previewCtrl
->EndStyle(); 
 354     m_previewCtrl
->BeginStyle(normalParaAttr
); 
 355     m_previewCtrl
->WriteText(s_para3
); 
 356     m_previewCtrl
->EndStyle(); 
 358     m_previewCtrl
->Thaw(); 
 361 /// Transfer data from/to window 
 362 bool wxRichTextIndentsSpacingPage::TransferDataFromWindow() 
 364     wxPanel::TransferDataFromWindow(); 
 366     wxTextAttrEx
* attr 
= GetAttributes(); 
 368     if (m_alignmentLeft
->GetValue()) 
 369         attr
->SetAlignment(wxTEXT_ALIGNMENT_LEFT
); 
 370     else if (m_alignmentCentred
->GetValue()) 
 371         attr
->SetAlignment(wxTEXT_ALIGNMENT_CENTRE
); 
 372     else if (m_alignmentRight
->GetValue()) 
 373         attr
->SetAlignment(wxTEXT_ALIGNMENT_RIGHT
); 
 374     else if (m_alignmentJustified
->GetValue()) 
 375         attr
->SetAlignment(wxTEXT_ALIGNMENT_JUSTIFIED
); 
 378         attr
->SetAlignment(wxTEXT_ALIGNMENT_DEFAULT
); 
 379         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_ALIGNMENT
)); 
 382     wxString 
leftIndent(m_indentLeft
->GetValue()); 
 383     wxString 
leftFirstIndent(m_indentLeftFirst
->GetValue()); 
 384     if (!leftIndent
.empty()) 
 386         int visualLeftIndent 
= wxAtoi(leftIndent
); 
 387         int visualLeftFirstIndent 
= wxAtoi(leftFirstIndent
); 
 388         int actualLeftIndent 
= visualLeftFirstIndent
; 
 389         int actualLeftSubIndent 
= visualLeftIndent 
- visualLeftFirstIndent
; 
 391         attr
->SetLeftIndent(actualLeftIndent
, actualLeftSubIndent
); 
 394         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LEFT_INDENT
)); 
 396     wxString 
rightIndent(m_indentRight
->GetValue()); 
 397     if (!rightIndent
.empty()) 
 398         attr
->SetRightIndent(wxAtoi(rightIndent
)); 
 400         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_RIGHT_INDENT
)); 
 402     wxString 
spacingAfter(m_spacingAfter
->GetValue()); 
 403     if (!spacingAfter
.empty()) 
 404         attr
->SetParagraphSpacingAfter(wxAtoi(spacingAfter
)); 
 406         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_AFTER
)); 
 408     wxString 
spacingBefore(m_spacingBefore
->GetValue()); 
 409     if (!spacingBefore
.empty()) 
 410         attr
->SetParagraphSpacingBefore(wxAtoi(spacingBefore
)); 
 412         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_BEFORE
)); 
 414     int spacingIndex 
= m_spacingLine
->GetSelection(); 
 416     if (spacingIndex 
== 0) 
 418     else if (spacingIndex 
== 1) 
 420     else if (spacingIndex 
== 2) 
 423     if (lineSpacing 
== 0) 
 424         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING
)); 
 426         attr
->SetLineSpacing(lineSpacing
); 
 431 bool wxRichTextIndentsSpacingPage::TransferDataToWindow() 
 435     wxPanel::TransferDataToWindow(); 
 437     wxTextAttrEx
* attr 
= GetAttributes(); 
 439     if (attr
->HasAlignment()) 
 441         if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_LEFT
) 
 442             m_alignmentLeft
->SetValue(true); 
 443         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_RIGHT
) 
 444             m_alignmentRight
->SetValue(true); 
 445         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_CENTRE
) 
 446             m_alignmentCentred
->SetValue(true); 
 447         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED
) 
 448             m_alignmentJustified
->SetValue(true); 
 450             m_alignmentIndeterminate
->SetValue(true); 
 453         m_alignmentIndeterminate
->SetValue(true); 
 455     if (attr
->HasLeftIndent()) 
 457         wxString 
leftIndent(wxString::Format(wxT("%ld"), attr
->GetLeftIndent() + attr
->GetLeftSubIndent())); 
 458         wxString 
leftFirstIndent(wxString::Format(wxT("%ld"), attr
->GetLeftIndent())); 
 460         m_indentLeft
->SetValue(leftIndent
); 
 461         m_indentLeftFirst
->SetValue(leftFirstIndent
); 
 465         m_indentLeft
->SetValue(wxEmptyString
); 
 466         m_indentLeftFirst
->SetValue(wxEmptyString
); 
 469     if (attr
->HasRightIndent()) 
 471         wxString 
rightIndent(wxString::Format(wxT("%ld"), attr
->GetRightIndent())); 
 473         m_indentRight
->SetValue(rightIndent
); 
 476         m_indentRight
->SetValue(wxEmptyString
); 
 478     if (attr
->HasParagraphSpacingAfter()) 
 480         wxString 
spacingAfter(wxString::Format(wxT("%d"), attr
->GetParagraphSpacingAfter())); 
 482         m_spacingAfter
->SetValue(spacingAfter
); 
 485         m_spacingAfter
->SetValue(wxEmptyString
); 
 487     if (attr
->HasParagraphSpacingBefore()) 
 489         wxString 
spacingBefore(wxString::Format(wxT("%d"), attr
->GetParagraphSpacingBefore())); 
 491         m_spacingBefore
->SetValue(spacingBefore
); 
 494         m_spacingBefore
->SetValue(wxEmptyString
); 
 496     if (attr
->HasLineSpacing()) 
 500         int lineSpacing 
= attr
->GetLineSpacing(); 
 501         if (lineSpacing 
== 10) 
 503         else if (lineSpacing 
== 15) 
 505         else if (lineSpacing 
== 20) 
 510         m_spacingLine
->SetSelection(index
); 
 513         m_spacingLine
->SetSelection(-1); 
 517     m_dontUpdate 
= false; 
 524  * Should we show tooltips? 
 527 bool wxRichTextIndentsSpacingPage::ShowToolTips() 
 529     return wxRichTextFormattingDialog::ShowToolTips(); 
 533  * Get bitmap resources 
 536 wxBitmap 
wxRichTextIndentsSpacingPage::GetBitmapResource( const wxString
& name 
) 
 539 ////@begin wxRichTextIndentsSpacingPage bitmap retrieval 
 542 ////@end wxRichTextIndentsSpacingPage bitmap retrieval 
 549 wxIcon 
wxRichTextIndentsSpacingPage::GetIconResource( const wxString
& name 
) 
 552 ////@begin wxRichTextIndentsSpacingPage icon retrieval 
 555 ////@end wxRichTextIndentsSpacingPage icon retrieval 
 558  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT 
 561 void wxRichTextIndentsSpacingPage::OnAlignmentLeftSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 569  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT 
 572 void wxRichTextIndentsSpacingPage::OnAlignmentRightSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 580  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED 
 583 void wxRichTextIndentsSpacingPage::OnAlignmentJustifiedSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 591  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED 
 594 void wxRichTextIndentsSpacingPage::OnAlignmentCentredSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 602  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE 
 605 void wxRichTextIndentsSpacingPage::OnAlignmentIndeterminateSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 613  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT 
 616 void wxRichTextIndentsSpacingPage::OnIndentLeftUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 624  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST 
 627 void wxRichTextIndentsSpacingPage::OnIndentLeftFirstUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 635  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT 
 638 void wxRichTextIndentsSpacingPage::OnIndentRightUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 646  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE 
 649 void wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 657  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER 
 660 void wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 667  * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE 
 670 void wxRichTextIndentsSpacingPage::OnSpacingLineSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 676 #endif // wxUSE_RICHTEXT