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_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 
  58  * wxRichTextIndentsSpacingPage constructors 
  61 wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( ) 
  66 wxRichTextIndentsSpacingPage::wxRichTextIndentsSpacingPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style 
) 
  69     Create(parent
, id
, pos
, size
, style
); 
  76 void wxRichTextIndentsSpacingPage::Init() 
  80 ////@begin wxRichTextIndentsSpacingPage member initialisation 
  81     m_alignmentLeft 
= NULL
; 
  82     m_alignmentRight 
= NULL
; 
  83     m_alignmentJustified 
= NULL
; 
  84     m_alignmentCentred 
= NULL
; 
  85     m_alignmentIndeterminate 
= NULL
; 
  87     m_indentLeftFirst 
= NULL
; 
  89     m_outlineLevelCtrl 
= NULL
; 
  90     m_spacingBefore 
= NULL
; 
  91     m_spacingAfter 
= NULL
; 
  94 ////@end wxRichTextIndentsSpacingPage member initialisation 
  99  * wxRichTextIndentsSpacingPage creator 
 102 bool wxRichTextIndentsSpacingPage::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style 
) 
 104 ////@begin wxRichTextIndentsSpacingPage creation 
 105     wxPanel::Create( parent
, id
, pos
, size
, style 
); 
 110         GetSizer()->SetSizeHints(this); 
 113 ////@end wxRichTextIndentsSpacingPage creation 
 118  * Control creation for wxRichTextIndentsSpacingPage 
 121 void wxRichTextIndentsSpacingPage::CreateControls() 
 123 ////@begin wxRichTextIndentsSpacingPage content construction 
 124     wxRichTextIndentsSpacingPage
* itemPanel1 
= this; 
 126     wxBoxSizer
* itemBoxSizer2 
= new wxBoxSizer(wxVERTICAL
); 
 127     itemPanel1
->SetSizer(itemBoxSizer2
); 
 129     wxBoxSizer
* itemBoxSizer3 
= new wxBoxSizer(wxVERTICAL
); 
 130     itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5); 
 132     wxBoxSizer
* itemBoxSizer4 
= new wxBoxSizer(wxHORIZONTAL
); 
 133     itemBoxSizer3
->Add(itemBoxSizer4
, 0, wxGROW
, 5); 
 135     wxBoxSizer
* itemBoxSizer5 
= new wxBoxSizer(wxVERTICAL
); 
 136     itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5); 
 138     wxStaticText
* itemStaticText6 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Alignment"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 139     itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 141     wxBoxSizer
* itemBoxSizer7 
= new wxBoxSizer(wxHORIZONTAL
); 
 142     itemBoxSizer5
->Add(itemBoxSizer7
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 144     itemBoxSizer7
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 146     wxBoxSizer
* itemBoxSizer9 
= new wxBoxSizer(wxVERTICAL
); 
 147     itemBoxSizer7
->Add(itemBoxSizer9
, 0, wxALIGN_CENTER_VERTICAL
|wxTOP
, 5); 
 149     m_alignmentLeft 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT
, _("&Left"), wxDefaultPosition
, wxDefaultSize
, wxRB_GROUP 
); 
 150     m_alignmentLeft
->SetValue(false); 
 151     m_alignmentLeft
->SetHelpText(_("Left-align text.")); 
 153         m_alignmentLeft
->SetToolTip(_("Left-align text.")); 
 154     itemBoxSizer9
->Add(m_alignmentLeft
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 156     m_alignmentRight 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT
, _("&Right"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 157     m_alignmentRight
->SetValue(false); 
 158     m_alignmentRight
->SetHelpText(_("Right-align text.")); 
 160         m_alignmentRight
->SetToolTip(_("Right-align text.")); 
 161     itemBoxSizer9
->Add(m_alignmentRight
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 163     m_alignmentJustified 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED
, _("&Justified"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 164     m_alignmentJustified
->SetValue(false); 
 165     m_alignmentJustified
->SetHelpText(_("Justify text left and right.")); 
 167         m_alignmentJustified
->SetToolTip(_("Justify text left and right.")); 
 168     itemBoxSizer9
->Add(m_alignmentJustified
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 170     m_alignmentCentred 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED
, _("Cen&tred"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 171     m_alignmentCentred
->SetValue(false); 
 172     m_alignmentCentred
->SetHelpText(_("Centre text.")); 
 174         m_alignmentCentred
->SetToolTip(_("Centre text.")); 
 175     itemBoxSizer9
->Add(m_alignmentCentred
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 177     m_alignmentIndeterminate 
= new wxRadioButton( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE
, _("&Indeterminate"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 178     m_alignmentIndeterminate
->SetValue(false); 
 179     m_alignmentIndeterminate
->SetHelpText(_("Use the current alignment setting.")); 
 181         m_alignmentIndeterminate
->SetToolTip(_("Use the current alignment setting.")); 
 182     itemBoxSizer9
->Add(m_alignmentIndeterminate
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 184     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 186     wxStaticLine
* itemStaticLine16 
= new wxStaticLine( itemPanel1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL 
); 
 187     itemBoxSizer4
->Add(itemStaticLine16
, 0, wxGROW
|wxLEFT
|wxBOTTOM
, 5); 
 189     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 191     wxBoxSizer
* itemBoxSizer18 
= new wxBoxSizer(wxVERTICAL
); 
 192     itemBoxSizer4
->Add(itemBoxSizer18
, 0, wxGROW
, 5); 
 194     wxStaticText
* itemStaticText19 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Indentation (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 195     itemBoxSizer18
->Add(itemStaticText19
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 197     wxBoxSizer
* itemBoxSizer20 
= new wxBoxSizer(wxHORIZONTAL
); 
 198     itemBoxSizer18
->Add(itemBoxSizer20
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 200     itemBoxSizer20
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 202     wxFlexGridSizer
* itemFlexGridSizer22 
= new wxFlexGridSizer(2, 2, 0, 0); 
 203     itemBoxSizer20
->Add(itemFlexGridSizer22
, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 205     wxStaticText
* itemStaticText23 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Left:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 206     itemFlexGridSizer22
->Add(itemStaticText23
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 208     wxBoxSizer
* itemBoxSizer24 
= new wxBoxSizer(wxHORIZONTAL
); 
 209     itemFlexGridSizer22
->Add(itemBoxSizer24
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 211     m_indentLeft 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 212     m_indentLeft
->SetHelpText(_("The left indent.")); 
 214         m_indentLeft
->SetToolTip(_("The left indent.")); 
 215     itemBoxSizer24
->Add(m_indentLeft
, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 217     wxStaticText
* itemStaticText26 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("Left (&first line):"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 218     itemFlexGridSizer22
->Add(itemStaticText26
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 220     wxBoxSizer
* itemBoxSizer27 
= new wxBoxSizer(wxHORIZONTAL
); 
 221     itemFlexGridSizer22
->Add(itemBoxSizer27
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 223     m_indentLeftFirst 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 224     m_indentLeftFirst
->SetHelpText(_("The first line indent.")); 
 226         m_indentLeftFirst
->SetToolTip(_("The first line indent.")); 
 227     itemBoxSizer27
->Add(m_indentLeftFirst
, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 229     wxStaticText
* itemStaticText29 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Right:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 230     itemFlexGridSizer22
->Add(itemStaticText29
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 232     wxBoxSizer
* itemBoxSizer30 
= new wxBoxSizer(wxHORIZONTAL
); 
 233     itemFlexGridSizer22
->Add(itemBoxSizer30
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 235     m_indentRight 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 236     m_indentRight
->SetHelpText(_("The right indent.")); 
 238         m_indentRight
->SetToolTip(_("The right indent.")); 
 239     itemBoxSizer30
->Add(m_indentRight
, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 241     wxStaticText
* itemStaticText32 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Outline level:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 242     itemFlexGridSizer22
->Add(itemStaticText32
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 244     wxString m_outlineLevelCtrlStrings
[] = { 
 256     m_outlineLevelCtrl 
= new wxComboBox( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
, _("Normal"), wxDefaultPosition
, wxDefaultSize
, 10, m_outlineLevelCtrlStrings
, wxCB_READONLY 
); 
 257     m_outlineLevelCtrl
->SetStringSelection(_("Normal")); 
 258     m_outlineLevelCtrl
->SetHelpText(_("The outline level.")); 
 260         m_outlineLevelCtrl
->SetToolTip(_("The outline level.")); 
 261     itemFlexGridSizer22
->Add(m_outlineLevelCtrl
, 1, wxGROW
|wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 263     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 265     wxStaticLine
* itemStaticLine35 
= new wxStaticLine( itemPanel1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL 
); 
 266     itemBoxSizer4
->Add(itemStaticLine35
, 0, wxGROW
|wxTOP
|wxBOTTOM
, 5); 
 268     itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5); 
 270     wxBoxSizer
* itemBoxSizer37 
= new wxBoxSizer(wxVERTICAL
); 
 271     itemBoxSizer4
->Add(itemBoxSizer37
, 0, wxGROW
, 5); 
 273     wxStaticText
* itemStaticText38 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Spacing (tenths of a mm)"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 274     itemBoxSizer37
->Add(itemStaticText38
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5); 
 276     wxBoxSizer
* itemBoxSizer39 
= new wxBoxSizer(wxHORIZONTAL
); 
 277     itemBoxSizer37
->Add(itemBoxSizer39
, 0, wxALIGN_LEFT
|wxALL
, 5); 
 279     itemBoxSizer39
->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 281     wxFlexGridSizer
* itemFlexGridSizer41 
= new wxFlexGridSizer(2, 2, 0, 0); 
 282     itemFlexGridSizer41
->AddGrowableCol(1); 
 283     itemBoxSizer39
->Add(itemFlexGridSizer41
, 0, wxALIGN_CENTER_VERTICAL
, 5); 
 285     wxStaticText
* itemStaticText42 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Before a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 286     itemFlexGridSizer41
->Add(itemStaticText42
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 288     wxBoxSizer
* itemBoxSizer43 
= new wxBoxSizer(wxHORIZONTAL
); 
 289     itemFlexGridSizer41
->Add(itemBoxSizer43
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 291     m_spacingBefore 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 292     m_spacingBefore
->SetHelpText(_("The spacing before the paragraph.")); 
 294         m_spacingBefore
->SetToolTip(_("The spacing before the paragraph.")); 
 295     itemBoxSizer43
->Add(m_spacingBefore
, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 297     wxStaticText
* itemStaticText45 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&After a paragraph:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 298     itemFlexGridSizer41
->Add(itemStaticText45
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 300     wxBoxSizer
* itemBoxSizer46 
= new wxBoxSizer(wxHORIZONTAL
); 
 301     itemFlexGridSizer41
->Add(itemBoxSizer46
, 1, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 303     m_spacingAfter 
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER
, _T(""), wxDefaultPosition
, wxSize(50, -1), 0 ); 
 305         m_spacingAfter
->SetToolTip(_("The spacing after the paragraph.")); 
 306     itemBoxSizer46
->Add(m_spacingAfter
, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 308     wxStaticText
* itemStaticText48 
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("L&ine spacing:"), wxDefaultPosition
, wxDefaultSize
, 0 ); 
 309     itemFlexGridSizer41
->Add(itemStaticText48
, 0, wxALIGN_RIGHT
|wxALIGN_CENTER_VERTICAL
|wxALL
|wxADJUST_MINSIZE
, 5); 
 311     wxBoxSizer
* itemBoxSizer49 
= new wxBoxSizer(wxHORIZONTAL
); 
 312     itemFlexGridSizer41
->Add(itemBoxSizer49
, 0, wxGROW
|wxALIGN_CENTER_VERTICAL
, 5); 
 314     wxString m_spacingLineStrings
[] = { 
 319     m_spacingLine 
= new wxComboBox( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE
, _("Single"), wxDefaultPosition
, wxDefaultSize
, 3, m_spacingLineStrings
, wxCB_READONLY 
); 
 320     m_spacingLine
->SetStringSelection(_("Single")); 
 321     m_spacingLine
->SetHelpText(_("The line spacing.")); 
 323         m_spacingLine
->SetToolTip(_("The line spacing.")); 
 324     itemBoxSizer49
->Add(m_spacingLine
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5); 
 326     itemBoxSizer3
->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 328     m_previewCtrl 
= new wxRichTextCtrl( itemPanel1
, ID_RICHTEXTINDENTSSPACINGPAGE_PREVIEW_CTRL
, wxEmptyString
, wxDefaultPosition
, wxSize(350, 180), wxSUNKEN_BORDER 
); 
 329     m_previewCtrl
->SetHelpText(_("Shows a preview of the paragraph settings.")); 
 331         m_previewCtrl
->SetToolTip(_("Shows a preview of the paragraph settings.")); 
 332     itemBoxSizer3
->Add(m_previewCtrl
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5); 
 334 ////@end wxRichTextIndentsSpacingPage content construction 
 337 wxTextAttrEx
* wxRichTextIndentsSpacingPage::GetAttributes() 
 339     return wxRichTextFormattingDialog::GetDialogAttributes(this); 
 342 /// Updates the font preview 
 343 void wxRichTextIndentsSpacingPage::UpdatePreview() 
 345     static const wxChar
* s_para1 
= wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ 
 346 Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus."); 
 348     static const wxChar
* s_para2 
= wxT("\nDuis pharetra consequat dui. Cum sociis natoque penatibus \ 
 349 et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum."); 
 351     static const wxChar
* s_para3 
= wxT("\nInteger convallis dolor at augue \ 
 352 iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n"); 
 354     TransferDataFromWindow(); 
 355     wxTextAttrEx 
attr(*GetAttributes()); 
 356     attr
.SetFlags(attr
.GetFlags() & 
 357       (wxTEXT_ATTR_ALIGNMENT
|wxTEXT_ATTR_LEFT_INDENT
|wxTEXT_ATTR_RIGHT_INDENT
|wxTEXT_ATTR_PARA_SPACING_BEFORE
|wxTEXT_ATTR_PARA_SPACING_AFTER
| 
 358        wxTEXT_ATTR_LINE_SPACING
| 
 359        wxTEXT_ATTR_BULLET_STYLE
|wxTEXT_ATTR_BULLET_NUMBER
|wxTEXT_ATTR_BULLET_TEXT
)); 
 361     wxFont 
font(m_previewCtrl
->GetFont()); 
 362     font
.SetPointSize(9); 
 363     m_previewCtrl
->SetFont(font
); 
 365     wxTextAttrEx normalParaAttr
; 
 366     normalParaAttr
.SetFont(font
); 
 367     normalParaAttr
.SetTextColour(wxColour(wxT("LIGHT GREY"))); 
 369     m_previewCtrl
->Freeze(); 
 370     m_previewCtrl
->Clear(); 
 372     m_previewCtrl
->BeginStyle(normalParaAttr
); 
 373     m_previewCtrl
->WriteText(s_para1
); 
 374     m_previewCtrl
->EndStyle(); 
 376     m_previewCtrl
->BeginStyle(attr
); 
 377     m_previewCtrl
->WriteText(s_para2
); 
 378     m_previewCtrl
->EndStyle(); 
 380     m_previewCtrl
->BeginStyle(normalParaAttr
); 
 381     m_previewCtrl
->WriteText(s_para3
); 
 382     m_previewCtrl
->EndStyle(); 
 384     m_previewCtrl
->Thaw(); 
 387 /// Transfer data from/to window 
 388 bool wxRichTextIndentsSpacingPage::TransferDataFromWindow() 
 390     wxPanel::TransferDataFromWindow(); 
 392     wxTextAttrEx
* attr 
= GetAttributes(); 
 394     if (m_alignmentLeft
->GetValue()) 
 395         attr
->SetAlignment(wxTEXT_ALIGNMENT_LEFT
); 
 396     else if (m_alignmentCentred
->GetValue()) 
 397         attr
->SetAlignment(wxTEXT_ALIGNMENT_CENTRE
); 
 398     else if (m_alignmentRight
->GetValue()) 
 399         attr
->SetAlignment(wxTEXT_ALIGNMENT_RIGHT
); 
 400     else if (m_alignmentJustified
->GetValue()) 
 401         attr
->SetAlignment(wxTEXT_ALIGNMENT_JUSTIFIED
); 
 404         attr
->SetAlignment(wxTEXT_ALIGNMENT_DEFAULT
); 
 405         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_ALIGNMENT
)); 
 408     wxString 
leftIndent(m_indentLeft
->GetValue()); 
 409     wxString 
leftFirstIndent(m_indentLeftFirst
->GetValue()); 
 410     if (!leftIndent
.empty()) 
 412         int visualLeftIndent 
= wxAtoi(leftIndent
); 
 413         int visualLeftFirstIndent 
= wxAtoi(leftFirstIndent
); 
 414         int actualLeftIndent 
= visualLeftFirstIndent
; 
 415         int actualLeftSubIndent 
= visualLeftIndent 
- visualLeftFirstIndent
; 
 417         attr
->SetLeftIndent(actualLeftIndent
, actualLeftSubIndent
); 
 420         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LEFT_INDENT
)); 
 422     wxString 
rightIndent(m_indentRight
->GetValue()); 
 423     if (!rightIndent
.empty()) 
 424         attr
->SetRightIndent(wxAtoi(rightIndent
)); 
 426         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_RIGHT_INDENT
)); 
 428     wxString 
spacingAfter(m_spacingAfter
->GetValue()); 
 429     if (!spacingAfter
.empty()) 
 430         attr
->SetParagraphSpacingAfter(wxAtoi(spacingAfter
)); 
 432         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_AFTER
)); 
 434     wxString 
spacingBefore(m_spacingBefore
->GetValue()); 
 435     if (!spacingBefore
.empty()) 
 436         attr
->SetParagraphSpacingBefore(wxAtoi(spacingBefore
)); 
 438         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_BEFORE
)); 
 440     int spacingIndex 
= m_spacingLine
->GetSelection(); 
 442     if (spacingIndex 
== 0) 
 444     else if (spacingIndex 
== 1) 
 446     else if (spacingIndex 
== 2) 
 449     if (lineSpacing 
== 0) 
 450         attr
->SetFlags(attr
->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING
)); 
 452         attr
->SetLineSpacing(lineSpacing
); 
 454     int outlineLevel 
= m_outlineLevelCtrl
->GetSelection(); 
 455     if (outlineLevel 
!= wxNOT_FOUND
) 
 456         attr
->SetOutlineLevel(outlineLevel
); 
 461 bool wxRichTextIndentsSpacingPage::TransferDataToWindow() 
 465     wxPanel::TransferDataToWindow(); 
 467     wxTextAttrEx
* attr 
= GetAttributes(); 
 469     if (attr
->HasAlignment()) 
 471         if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_LEFT
) 
 472             m_alignmentLeft
->SetValue(true); 
 473         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_RIGHT
) 
 474             m_alignmentRight
->SetValue(true); 
 475         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_CENTRE
) 
 476             m_alignmentCentred
->SetValue(true); 
 477         else if (attr
->GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED
) 
 478             m_alignmentJustified
->SetValue(true); 
 480             m_alignmentIndeterminate
->SetValue(true); 
 483         m_alignmentIndeterminate
->SetValue(true); 
 485     if (attr
->HasLeftIndent()) 
 487         wxString 
leftIndent(wxString::Format(wxT("%ld"), attr
->GetLeftIndent() + attr
->GetLeftSubIndent())); 
 488         wxString 
leftFirstIndent(wxString::Format(wxT("%ld"), attr
->GetLeftIndent())); 
 490         m_indentLeft
->SetValue(leftIndent
); 
 491         m_indentLeftFirst
->SetValue(leftFirstIndent
); 
 495         m_indentLeft
->SetValue(wxEmptyString
); 
 496         m_indentLeftFirst
->SetValue(wxEmptyString
); 
 499     if (attr
->HasRightIndent()) 
 501         wxString 
rightIndent(wxString::Format(wxT("%ld"), attr
->GetRightIndent())); 
 503         m_indentRight
->SetValue(rightIndent
); 
 506         m_indentRight
->SetValue(wxEmptyString
); 
 508     if (attr
->HasParagraphSpacingAfter()) 
 510         wxString 
spacingAfter(wxString::Format(wxT("%d"), attr
->GetParagraphSpacingAfter())); 
 512         m_spacingAfter
->SetValue(spacingAfter
); 
 515         m_spacingAfter
->SetValue(wxEmptyString
); 
 517     if (attr
->HasParagraphSpacingBefore()) 
 519         wxString 
spacingBefore(wxString::Format(wxT("%d"), attr
->GetParagraphSpacingBefore())); 
 521         m_spacingBefore
->SetValue(spacingBefore
); 
 524         m_spacingBefore
->SetValue(wxEmptyString
); 
 526     if (attr
->HasLineSpacing()) 
 530         int lineSpacing 
= attr
->GetLineSpacing(); 
 531         if (lineSpacing 
== 10) 
 533         else if (lineSpacing 
== 15) 
 535         else if (lineSpacing 
== 20) 
 540         m_spacingLine
->SetSelection(index
); 
 543         m_spacingLine
->SetSelection(-1); 
 545     if (attr
->HasOutlineLevel()) 
 547         int outlineLevel 
= attr
->GetOutlineLevel(); 
 548         if (outlineLevel 
< 0) 
 550         if (outlineLevel 
> 9) 
 553         m_outlineLevelCtrl
->SetSelection(outlineLevel
); 
 556         m_outlineLevelCtrl
->SetSelection(-1); 
 560     m_dontUpdate 
= false; 
 567  * Should we show tooltips? 
 570 bool wxRichTextIndentsSpacingPage::ShowToolTips() 
 572     return wxRichTextFormattingDialog::ShowToolTips(); 
 576  * Get bitmap resources 
 579 wxBitmap 
wxRichTextIndentsSpacingPage::GetBitmapResource( const wxString
& name 
) 
 582 ////@begin wxRichTextIndentsSpacingPage bitmap retrieval 
 585 ////@end wxRichTextIndentsSpacingPage bitmap retrieval 
 592 wxIcon 
wxRichTextIndentsSpacingPage::GetIconResource( const wxString
& name 
) 
 595 ////@begin wxRichTextIndentsSpacingPage icon retrieval 
 598 ////@end wxRichTextIndentsSpacingPage icon retrieval 
 601  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_LEFT 
 604 void wxRichTextIndentsSpacingPage::OnAlignmentLeftSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 612  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_RIGHT 
 615 void wxRichTextIndentsSpacingPage::OnAlignmentRightSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 623  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_JUSTIFIED 
 626 void wxRichTextIndentsSpacingPage::OnAlignmentJustifiedSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 634  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_CENTRED 
 637 void wxRichTextIndentsSpacingPage::OnAlignmentCentredSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 645  * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_ALIGNMENT_INDETERMINATE 
 648 void wxRichTextIndentsSpacingPage::OnAlignmentIndeterminateSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 656  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT 
 659 void wxRichTextIndentsSpacingPage::OnIndentLeftUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 667  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST 
 670 void wxRichTextIndentsSpacingPage::OnIndentLeftFirstUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 678  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT 
 681 void wxRichTextIndentsSpacingPage::OnIndentRightUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 689  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE 
 692 void wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 700  * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER 
 703 void wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated( wxCommandEvent
& WXUNUSED(event
) ) 
 710  * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE 
 713 void wxRichTextIndentsSpacingPage::OnSpacingLineSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 720  * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL 
 723 void wxRichTextIndentsSpacingPage::OnRichtextOutlinelevelSelected( wxCommandEvent
& WXUNUSED(event
) ) 
 729 #endif // wxUSE_RICHTEXT