Fixed centering/right alignment of last line
[wxWidgets.git] / src / richtext / richtextsizepage.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextsizepage.cpp
3 // Purpose:
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 20/10/2010 10:23:24
7 // RCS-ID:
8 // Copyright: (c) Julian Smart
9 // Licence:
10 /////////////////////////////////////////////////////////////////////////////
11
12 #include "wx/richtext/richtextsizepage.h"
13
14 ////@begin XPM images
15 ////@end XPM images
16
17
18 /*!
19 * wxRichTextSizePage type definition
20 */
21
22 IMPLEMENT_DYNAMIC_CLASS( wxRichTextSizePage, wxRichTextDialogPage )
23
24
25 /*!
26 * wxRichTextSizePage event table definition
27 */
28
29 BEGIN_EVENT_TABLE( wxRichTextSizePage, wxRichTextDialogPage )
30
31 ////@begin wxRichTextSizePage event table entries
32 EVT_UPDATE_UI( ID_RICHTEXT_VERTICAL_ALIGNMENT_COMBOBOX, wxRichTextSizePage::OnRichtextVerticalAlignmentComboboxUpdate )
33 EVT_UPDATE_UI( ID_RICHTEXT_WIDTH, wxRichTextSizePage::OnRichtextWidthUpdate )
34 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_W, wxRichTextSizePage::OnRichtextWidthUpdate )
35 EVT_UPDATE_UI( ID_RICHTEXT_HEIGHT, wxRichTextSizePage::OnRichtextHeightUpdate )
36 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_H, wxRichTextSizePage::OnRichtextHeightUpdate )
37 EVT_UPDATE_UI( ID_RICHTEXT_MIN_WIDTH, wxRichTextSizePage::OnRichtextMinWidthUpdate )
38 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_MIN_W, wxRichTextSizePage::OnRichtextMinWidthUpdate )
39 EVT_UPDATE_UI( ID_RICHTEXT_MIN_HEIGHT, wxRichTextSizePage::OnRichtextMinHeightUpdate )
40 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_MIN_H, wxRichTextSizePage::OnRichtextMinHeightUpdate )
41 EVT_UPDATE_UI( ID_RICHTEXT_MAX_WIDTH, wxRichTextSizePage::OnRichtextMaxWidthUpdate )
42 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_MAX_W, wxRichTextSizePage::OnRichtextMaxWidthUpdate )
43 EVT_UPDATE_UI( ID_RICHTEXT_MAX_HEIGHT, wxRichTextSizePage::OnRichtextMaxHeightUpdate )
44 EVT_UPDATE_UI( ID_RICHTEXT_UNITS_MAX_H, wxRichTextSizePage::OnRichtextMaxHeightUpdate )
45 EVT_UPDATE_UI( ID_RICHTEXT_LEFT, wxRichTextSizePage::OnRichtextLeftUpdate )
46 EVT_UPDATE_UI( ID_RICHTEXT_LEFT_UNITS, wxRichTextSizePage::OnRichtextTopUpdate )
47 EVT_UPDATE_UI( ID_RICHTEXT_TOP, wxRichTextSizePage::OnRichtextTopUpdate )
48 EVT_UPDATE_UI( ID_RICHTEXT_TOP_UNITS, wxRichTextSizePage::OnRichtextTopUpdate )
49 EVT_UPDATE_UI( ID_RICHTEXT_RIGHT, wxRichTextSizePage::OnRichtextRightUpdate )
50 EVT_UPDATE_UI( ID_RICHTEXT_RIGHT_UNITS, wxRichTextSizePage::OnRichtextRightUpdate )
51 EVT_UPDATE_UI( ID_RICHTEXT_BOTTOM, wxRichTextSizePage::OnRichtextBottomUpdate )
52 EVT_UPDATE_UI( ID_RICHTEXT_BOTTOM_UNITS, wxRichTextSizePage::OnRichtextBottomUpdate )
53 EVT_BUTTON( ID_RICHTEXT_PARA_UP, wxRichTextSizePage::OnRichtextParaUpClick )
54 EVT_BUTTON( ID_RICHTEXT_PARA_DOWN, wxRichTextSizePage::OnRichtextParaDownClick )
55 ////@end wxRichTextSizePage event table entries
56
57 END_EVENT_TABLE()
58
59 IMPLEMENT_HELP_PROVISION(wxRichTextSizePage)
60
61 bool wxRichTextSizePage::sm_showFloatingControls = true;
62 bool wxRichTextSizePage::sm_showPositionControls = true;
63 bool wxRichTextSizePage::sm_showPositionModeControls = true;
64 bool wxRichTextSizePage::sm_showRightBottomPositionControls = true;
65 bool wxRichTextSizePage::sm_showAlignmentControls = true;
66 bool wxRichTextSizePage::sm_showFloatingAndAlignmentControls = true;
67
68 /*!
69 * wxRichTextSizePage constructors
70 */
71
72 wxRichTextSizePage::wxRichTextSizePage()
73 {
74 Init();
75 }
76
77 wxRichTextSizePage::wxRichTextSizePage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
78 {
79 Init();
80 Create(parent, id, pos, size, style);
81 }
82
83
84 /*!
85 * wxRichTextSizePage creator
86 */
87
88 bool wxRichTextSizePage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
89 {
90 ////@begin wxRichTextSizePage creation
91 wxRichTextDialogPage::Create( parent, id, pos, size, style );
92
93 CreateControls();
94 if (GetSizer())
95 {
96 GetSizer()->SetSizeHints(this);
97 }
98 Centre();
99 ////@end wxRichTextSizePage creation
100 return true;
101 }
102
103
104 /*!
105 * wxRichTextSizePage destructor
106 */
107
108 wxRichTextSizePage::~wxRichTextSizePage()
109 {
110 sm_showFloatingControls = true;
111 sm_showPositionControls = true;
112 sm_showPositionModeControls = true;
113 sm_showRightBottomPositionControls = true;
114 sm_showAlignmentControls = true;
115 sm_showFloatingAndAlignmentControls = true;
116
117 ////@begin wxRichTextSizePage destruction
118 ////@end wxRichTextSizePage destruction
119 }
120
121
122 /*!
123 * Member initialisation
124 */
125
126 void wxRichTextSizePage::Init()
127 {
128 ////@begin wxRichTextSizePage member initialisation
129 m_positionMode = 0;
130 m_parentSizer = NULL;
131 m_floatingAlignmentSizer = NULL;
132 m_floatingSizer = NULL;
133 m_float = NULL;
134 m_alignmentSizer = NULL;
135 m_verticalAlignmentCheckbox = NULL;
136 m_verticalAlignmentComboBox = NULL;
137 m_widthCheckbox = NULL;
138 m_width = NULL;
139 m_unitsW = NULL;
140 m_heightCheckbox = NULL;
141 m_height = NULL;
142 m_unitsH = NULL;
143 m_minWidthCheckbox = NULL;
144 m_minWidth = NULL;
145 m_unitsMinW = NULL;
146 m_minHeightCheckbox = NULL;
147 m_minHeight = NULL;
148 m_unitsMinH = NULL;
149 m_maxWidthCheckbox = NULL;
150 m_maxWidth = NULL;
151 m_unitsMaxW = NULL;
152 m_maxHeightCheckbox = NULL;
153 m_maxHeight = NULL;
154 m_unitsMaxH = NULL;
155 m_positionControls = NULL;
156 m_moveObjectParentSizer = NULL;
157 m_positionModeSizer = NULL;
158 m_positionModeCtrl = NULL;
159 m_positionGridSizer = NULL;
160 m_positionLeftCheckbox = NULL;
161 m_left = NULL;
162 m_unitsLeft = NULL;
163 m_positionTopCheckbox = NULL;
164 m_top = NULL;
165 m_unitsTop = NULL;
166 m_positionRightCheckbox = NULL;
167 m_rightPositionSizer = NULL;
168 m_right = NULL;
169 m_unitsRight = NULL;
170 m_positionBottomCheckbox = NULL;
171 m_bottomPositionSizer = NULL;
172 m_bottom = NULL;
173 m_unitsBottom = NULL;
174 m_moveObjectSizer = NULL;
175 ////@end wxRichTextSizePage member initialisation
176 }
177
178
179 /*!
180 * Control creation for wxRichTextSizePage
181 */
182
183 void wxRichTextSizePage::CreateControls()
184 {
185 ////@begin wxRichTextSizePage content construction
186 wxRichTextSizePage* itemRichTextDialogPage1 = this;
187
188 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
189 itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
190
191 m_parentSizer = new wxBoxSizer(wxVERTICAL);
192 itemBoxSizer2->Add(m_parentSizer, 0, wxGROW|wxALL, 5);
193
194 m_floatingAlignmentSizer = new wxBoxSizer(wxHORIZONTAL);
195 m_parentSizer->Add(m_floatingAlignmentSizer, 0, wxGROW, 5);
196
197 m_floatingSizer = new wxBoxSizer(wxVERTICAL);
198 m_floatingAlignmentSizer->Add(m_floatingSizer, 0, wxALIGN_CENTER_VERTICAL, 5);
199
200 wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
201 m_floatingSizer->Add(itemBoxSizer6, 0, wxGROW, 5);
202
203 wxStaticText* itemStaticText7 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Floating"), wxDefaultPosition, wxDefaultSize, 0 );
204 itemStaticText7->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
205 itemBoxSizer6->Add(itemStaticText7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
206
207 wxStaticLine* itemStaticLine8 = new wxStaticLine( itemRichTextDialogPage1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
208 itemBoxSizer6->Add(itemStaticLine8, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
209
210 wxBoxSizer* itemBoxSizer9 = new wxBoxSizer(wxHORIZONTAL);
211 m_floatingSizer->Add(itemBoxSizer9, 0, wxGROW, 5);
212
213 itemBoxSizer9->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
214
215 wxFlexGridSizer* itemFlexGridSizer11 = new wxFlexGridSizer(0, 2, 0, 0);
216 itemBoxSizer9->Add(itemFlexGridSizer11, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
217
218 wxStaticText* itemStaticText12 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Floating mode:"), wxDefaultPosition, wxDefaultSize, 0 );
219 itemFlexGridSizer11->Add(itemStaticText12, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
220
221 wxArrayString m_floatStrings;
222 m_floatStrings.Add(_("None"));
223 m_floatStrings.Add(_("Left"));
224 m_floatStrings.Add(_("Right"));
225 m_float = new wxChoice( itemRichTextDialogPage1, ID_RICHTEXT_FLOATING_MODE, wxDefaultPosition, wxSize(80, -1), m_floatStrings, 0 );
226 m_float->SetStringSelection(_("None"));
227 m_float->SetHelpText(_("How the object will float relative to the text."));
228 if (wxRichTextSizePage::ShowToolTips())
229 m_float->SetToolTip(_("How the object will float relative to the text."));
230 itemFlexGridSizer11->Add(m_float, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
231
232 m_floatingAlignmentSizer->Add(0, 0, 1, wxALIGN_CENTER_VERTICAL, 5);
233
234 m_alignmentSizer = new wxBoxSizer(wxVERTICAL);
235 m_floatingAlignmentSizer->Add(m_alignmentSizer, 0, wxALIGN_CENTER_VERTICAL, 5);
236
237 wxBoxSizer* itemBoxSizer16 = new wxBoxSizer(wxHORIZONTAL);
238 m_alignmentSizer->Add(itemBoxSizer16, 0, wxGROW, 5);
239
240 wxStaticText* itemStaticText17 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Alignment"), wxDefaultPosition, wxDefaultSize, 0 );
241 itemStaticText17->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
242 itemBoxSizer16->Add(itemStaticText17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
243
244 wxStaticLine* itemStaticLine18 = new wxStaticLine( itemRichTextDialogPage1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
245 itemBoxSizer16->Add(itemStaticLine18, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
246
247 wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
248 m_alignmentSizer->Add(itemBoxSizer19, 0, wxGROW, 5);
249
250 itemBoxSizer19->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
251
252 m_verticalAlignmentCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_VERTICAL_ALIGNMENT_CHECKBOX, _("&Vertical alignment:"), wxDefaultPosition, wxDefaultSize, 0 );
253 m_verticalAlignmentCheckbox->SetValue(false);
254 m_verticalAlignmentCheckbox->SetHelpText(_("Enable vertical alignment."));
255 if (wxRichTextSizePage::ShowToolTips())
256 m_verticalAlignmentCheckbox->SetToolTip(_("Enable vertical alignment."));
257 itemBoxSizer19->Add(m_verticalAlignmentCheckbox, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
258
259 wxArrayString m_verticalAlignmentComboBoxStrings;
260 m_verticalAlignmentComboBoxStrings.Add(_("Top"));
261 m_verticalAlignmentComboBoxStrings.Add(_("Centred"));
262 m_verticalAlignmentComboBoxStrings.Add(_("Bottom"));
263 m_verticalAlignmentComboBox = new wxChoice( itemRichTextDialogPage1, ID_RICHTEXT_VERTICAL_ALIGNMENT_COMBOBOX, wxDefaultPosition, wxDefaultSize, m_verticalAlignmentComboBoxStrings, 0 );
264 m_verticalAlignmentComboBox->SetStringSelection(_("Top"));
265 m_verticalAlignmentComboBox->SetHelpText(_("Vertical alignment."));
266 if (wxRichTextSizePage::ShowToolTips())
267 m_verticalAlignmentComboBox->SetToolTip(_("Vertical alignment."));
268 itemBoxSizer19->Add(m_verticalAlignmentComboBox, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
269
270 wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
271 m_parentSizer->Add(itemBoxSizer23, 0, wxGROW, 5);
272
273 wxStaticText* itemStaticText24 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Size"), wxDefaultPosition, wxDefaultSize, 0 );
274 itemStaticText24->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
275 itemBoxSizer23->Add(itemStaticText24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
276
277 wxStaticLine* itemStaticLine25 = new wxStaticLine( itemRichTextDialogPage1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
278 itemBoxSizer23->Add(itemStaticLine25, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
279
280 wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxHORIZONTAL);
281 m_parentSizer->Add(itemBoxSizer26, 0, wxGROW, 5);
282
283 itemBoxSizer26->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
284
285 wxFlexGridSizer* itemFlexGridSizer28 = new wxFlexGridSizer(0, 4, 0, 0);
286 itemBoxSizer26->Add(itemFlexGridSizer28, 0, wxALIGN_CENTER_VERTICAL, 5);
287
288 m_widthCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_WIDTH_CHECKBOX, _("&Width:"), wxDefaultPosition, wxDefaultSize, 0 );
289 m_widthCheckbox->SetValue(false);
290 m_widthCheckbox->SetHelpText(_("Enable the width value."));
291 if (wxRichTextSizePage::ShowToolTips())
292 m_widthCheckbox->SetToolTip(_("Enable the width value."));
293 itemFlexGridSizer28->Add(m_widthCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
294
295 wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxHORIZONTAL);
296 itemFlexGridSizer28->Add(itemBoxSizer30, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
297
298 m_width = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_WIDTH, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
299 m_width->SetHelpText(_("The object width."));
300 if (wxRichTextSizePage::ShowToolTips())
301 m_width->SetToolTip(_("The object width."));
302 itemBoxSizer30->Add(m_width, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
303
304 wxArrayString m_unitsWStrings;
305 m_unitsWStrings.Add(_("px"));
306 m_unitsWStrings.Add(_("cm"));
307 m_unitsWStrings.Add(_("percent"));
308 m_unitsW = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_W, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsWStrings, wxCB_READONLY );
309 m_unitsW->SetStringSelection(_("px"));
310 m_unitsW->SetHelpText(_("Units for the object width."));
311 if (wxRichTextSizePage::ShowToolTips())
312 m_unitsW->SetToolTip(_("Units for the object width."));
313 itemBoxSizer30->Add(m_unitsW, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
314
315 m_heightCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_HEIGHT_CHECKBOX, _("&Height:"), wxDefaultPosition, wxDefaultSize, 0 );
316 m_heightCheckbox->SetValue(false);
317 m_heightCheckbox->SetHelpText(_("Enable the height value."));
318 if (wxRichTextSizePage::ShowToolTips())
319 m_heightCheckbox->SetToolTip(_("Enable the height value."));
320 itemFlexGridSizer28->Add(m_heightCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
321
322 wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxHORIZONTAL);
323 itemFlexGridSizer28->Add(itemBoxSizer34, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
324
325 m_height = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_HEIGHT, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
326 m_height->SetHelpText(_("The object height."));
327 if (wxRichTextSizePage::ShowToolTips())
328 m_height->SetToolTip(_("The object height."));
329 itemBoxSizer34->Add(m_height, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
330
331 wxArrayString m_unitsHStrings;
332 m_unitsHStrings.Add(_("px"));
333 m_unitsHStrings.Add(_("cm"));
334 m_unitsHStrings.Add(_("percent"));
335 m_unitsH = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_H, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsHStrings, wxCB_READONLY );
336 m_unitsH->SetStringSelection(_("px"));
337 m_unitsH->SetHelpText(_("Units for the object height."));
338 if (wxRichTextSizePage::ShowToolTips())
339 m_unitsH->SetToolTip(_("Units for the object height."));
340 itemBoxSizer34->Add(m_unitsH, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
341
342 m_minWidthCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_MIN_WIDTH_CHECKBOX, _("Min width:"), wxDefaultPosition, wxDefaultSize, 0 );
343 m_minWidthCheckbox->SetValue(false);
344 m_minWidthCheckbox->SetHelpText(_("Enable the minimum width value."));
345 if (wxRichTextSizePage::ShowToolTips())
346 m_minWidthCheckbox->SetToolTip(_("Enable the minimum width value."));
347 itemFlexGridSizer28->Add(m_minWidthCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
348
349 wxBoxSizer* itemBoxSizer38 = new wxBoxSizer(wxHORIZONTAL);
350 itemFlexGridSizer28->Add(itemBoxSizer38, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
351
352 m_minWidth = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_MIN_WIDTH, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
353 m_minWidth->SetHelpText(_("The object minimum width."));
354 if (wxRichTextSizePage::ShowToolTips())
355 m_minWidth->SetToolTip(_("The object minimum width."));
356 itemBoxSizer38->Add(m_minWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
357
358 wxArrayString m_unitsMinWStrings;
359 m_unitsMinWStrings.Add(_("px"));
360 m_unitsMinWStrings.Add(_("cm"));
361 m_unitsMinWStrings.Add(_("percent"));
362 m_unitsMinW = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_MIN_W, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsMinWStrings, wxCB_READONLY );
363 m_unitsMinW->SetStringSelection(_("px"));
364 m_unitsMinW->SetHelpText(_("Units for the minimum object width."));
365 if (wxRichTextSizePage::ShowToolTips())
366 m_unitsMinW->SetToolTip(_("Units for the minimum object width."));
367 itemBoxSizer38->Add(m_unitsMinW, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
368
369 m_minHeightCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_MIN_HEIGHT_CHECKBOX, _("Min height:"), wxDefaultPosition, wxDefaultSize, 0 );
370 m_minHeightCheckbox->SetValue(false);
371 m_minHeightCheckbox->SetHelpText(_("Enable the minimum height value."));
372 if (wxRichTextSizePage::ShowToolTips())
373 m_minHeightCheckbox->SetToolTip(_("Enable the minimum height value."));
374 itemFlexGridSizer28->Add(m_minHeightCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
375
376 wxBoxSizer* itemBoxSizer42 = new wxBoxSizer(wxHORIZONTAL);
377 itemFlexGridSizer28->Add(itemBoxSizer42, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
378
379 m_minHeight = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_MIN_HEIGHT, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
380 m_minHeight->SetHelpText(_("The object minimum height."));
381 if (wxRichTextSizePage::ShowToolTips())
382 m_minHeight->SetToolTip(_("The object minimum height."));
383 itemBoxSizer42->Add(m_minHeight, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
384
385 wxArrayString m_unitsMinHStrings;
386 m_unitsMinHStrings.Add(_("px"));
387 m_unitsMinHStrings.Add(_("cm"));
388 m_unitsMinHStrings.Add(_("percent"));
389 m_unitsMinH = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_MIN_H, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsMinHStrings, wxCB_READONLY );
390 m_unitsMinH->SetStringSelection(_("px"));
391 m_unitsMinH->SetHelpText(_("Units for the minimum object height."));
392 if (wxRichTextSizePage::ShowToolTips())
393 m_unitsMinH->SetToolTip(_("Units for the minimum object height."));
394 itemBoxSizer42->Add(m_unitsMinH, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
395
396 m_maxWidthCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_MAX_WIDTH_CHECKBOX, _("Max width:"), wxDefaultPosition, wxDefaultSize, 0 );
397 m_maxWidthCheckbox->SetValue(false);
398 m_maxWidthCheckbox->SetHelpText(_("Enable the maximum width value."));
399 if (wxRichTextSizePage::ShowToolTips())
400 m_maxWidthCheckbox->SetToolTip(_("Enable the maximum width value."));
401 itemFlexGridSizer28->Add(m_maxWidthCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
402
403 wxBoxSizer* itemBoxSizer46 = new wxBoxSizer(wxHORIZONTAL);
404 itemFlexGridSizer28->Add(itemBoxSizer46, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
405
406 m_maxWidth = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_MAX_WIDTH, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
407 m_maxWidth->SetHelpText(_("The object maximum width."));
408 if (wxRichTextSizePage::ShowToolTips())
409 m_maxWidth->SetToolTip(_("The object maximum width."));
410 itemBoxSizer46->Add(m_maxWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
411
412 wxArrayString m_unitsMaxWStrings;
413 m_unitsMaxWStrings.Add(_("px"));
414 m_unitsMaxWStrings.Add(_("cm"));
415 m_unitsMaxWStrings.Add(_("percent"));
416 m_unitsMaxW = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_MAX_W, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsMaxWStrings, wxCB_READONLY );
417 m_unitsMaxW->SetStringSelection(_("px"));
418 m_unitsMaxW->SetHelpText(_("Units for the maximum object width."));
419 if (wxRichTextSizePage::ShowToolTips())
420 m_unitsMaxW->SetToolTip(_("Units for the maximum object width."));
421 itemBoxSizer46->Add(m_unitsMaxW, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
422
423 m_maxHeightCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_MAX_HEIGHT_CHECKBOX, _("Max height:"), wxDefaultPosition, wxDefaultSize, 0 );
424 m_maxHeightCheckbox->SetValue(false);
425 m_maxHeightCheckbox->SetHelpText(_("Enable the height value."));
426 if (wxRichTextSizePage::ShowToolTips())
427 m_maxHeightCheckbox->SetToolTip(_("Enable the height value."));
428 itemFlexGridSizer28->Add(m_maxHeightCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
429
430 wxBoxSizer* itemBoxSizer50 = new wxBoxSizer(wxHORIZONTAL);
431 itemFlexGridSizer28->Add(itemBoxSizer50, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
432
433 m_maxHeight = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_MAX_HEIGHT, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0 );
434 m_maxHeight->SetHelpText(_("The object maximum height."));
435 if (wxRichTextSizePage::ShowToolTips())
436 m_maxHeight->SetToolTip(_("The object maximum height."));
437 itemBoxSizer50->Add(m_maxHeight, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
438
439 wxArrayString m_unitsMaxHStrings;
440 m_unitsMaxHStrings.Add(_("px"));
441 m_unitsMaxHStrings.Add(_("cm"));
442 m_unitsMaxHStrings.Add(_("percent"));
443 m_unitsMaxH = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_UNITS_MAX_H, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsMaxHStrings, wxCB_READONLY );
444 m_unitsMaxH->SetStringSelection(_("px"));
445 m_unitsMaxH->SetHelpText(_("Units for the maximum object height."));
446 if (wxRichTextSizePage::ShowToolTips())
447 m_unitsMaxH->SetToolTip(_("Units for the maximum object height."));
448 itemBoxSizer50->Add(m_unitsMaxH, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
449
450 m_positionControls = new wxBoxSizer(wxVERTICAL);
451 m_parentSizer->Add(m_positionControls, 0, wxGROW, 5);
452
453 wxBoxSizer* itemBoxSizer54 = new wxBoxSizer(wxHORIZONTAL);
454 m_positionControls->Add(itemBoxSizer54, 0, wxGROW, 5);
455
456 wxStaticText* itemStaticText55 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Position"), wxDefaultPosition, wxDefaultSize, 0 );
457 itemStaticText55->SetFont(wxFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetPointSize(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetFamily(), wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).GetStyle(), wxBOLD, false, wxT("")));
458 itemBoxSizer54->Add(itemStaticText55, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
459
460 wxStaticLine* itemStaticLine56 = new wxStaticLine( itemRichTextDialogPage1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
461 itemBoxSizer54->Add(itemStaticLine56, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
462
463 wxBoxSizer* itemBoxSizer57 = new wxBoxSizer(wxHORIZONTAL);
464 m_positionControls->Add(itemBoxSizer57, 0, wxGROW, 5);
465
466 itemBoxSizer57->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
467
468 m_moveObjectParentSizer = new wxBoxSizer(wxVERTICAL);
469 itemBoxSizer57->Add(m_moveObjectParentSizer, 0, wxALIGN_TOP, 5);
470
471 m_positionModeSizer = new wxBoxSizer(wxHORIZONTAL);
472 m_moveObjectParentSizer->Add(m_positionModeSizer, 0, wxALIGN_LEFT, 5);
473
474 wxStaticText* itemStaticText61 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Position mode:"), wxDefaultPosition, wxDefaultSize, 0 );
475 m_positionModeSizer->Add(itemStaticText61, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
476
477 wxArrayString m_positionModeCtrlStrings;
478 m_positionModeCtrlStrings.Add(_("Static"));
479 m_positionModeCtrlStrings.Add(_("Relative"));
480 m_positionModeCtrlStrings.Add(_("Absolute"));
481 m_positionModeCtrlStrings.Add(_("Fixed"));
482 m_positionModeCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_POSITION_MODE, _("Static"), wxDefaultPosition, wxDefaultSize, m_positionModeCtrlStrings, wxCB_READONLY );
483 m_positionModeCtrl->SetStringSelection(_("Static"));
484 m_positionModeSizer->Add(m_positionModeCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
485
486 m_positionGridSizer = new wxFlexGridSizer(0, 4, 0, 0);
487 m_moveObjectParentSizer->Add(m_positionGridSizer, 0, wxGROW, 5);
488
489 m_positionLeftCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_LEFT_CHECKBOX, _("&Left:"), wxDefaultPosition, wxDefaultSize, 0 );
490 m_positionLeftCheckbox->SetValue(false);
491 m_positionLeftCheckbox->SetHelpText(_("The left position."));
492 if (wxRichTextSizePage::ShowToolTips())
493 m_positionLeftCheckbox->SetToolTip(_("The left position."));
494 m_positionGridSizer->Add(m_positionLeftCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
495
496 wxBoxSizer* itemBoxSizer65 = new wxBoxSizer(wxHORIZONTAL);
497 m_positionGridSizer->Add(itemBoxSizer65, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
498
499 m_left = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_LEFT, wxEmptyString, wxDefaultPosition, wxSize(65, -1), 0 );
500 m_left->SetMaxLength(10);
501 m_left->SetHelpText(_("The left position."));
502 if (wxRichTextSizePage::ShowToolTips())
503 m_left->SetToolTip(_("The left position."));
504 itemBoxSizer65->Add(m_left, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
505
506 wxArrayString m_unitsLeftStrings;
507 m_unitsLeftStrings.Add(_("px"));
508 m_unitsLeftStrings.Add(_("cm"));
509 m_unitsLeftStrings.Add(_("percent"));
510 m_unitsLeft = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsLeftStrings, wxCB_READONLY );
511 m_unitsLeft->SetStringSelection(_("px"));
512 m_unitsLeft->SetHelpText(_("Units for the left position."));
513 if (wxRichTextSizePage::ShowToolTips())
514 m_unitsLeft->SetToolTip(_("Units for the left position."));
515 itemBoxSizer65->Add(m_unitsLeft, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
516
517 m_positionTopCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_TOP_CHECKBOX, _("&Top:"), wxDefaultPosition, wxDefaultSize, 0 );
518 m_positionTopCheckbox->SetValue(false);
519 m_positionTopCheckbox->SetHelpText(_("The top position."));
520 if (wxRichTextSizePage::ShowToolTips())
521 m_positionTopCheckbox->SetToolTip(_("The top position."));
522 m_positionGridSizer->Add(m_positionTopCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
523
524 wxBoxSizer* itemBoxSizer69 = new wxBoxSizer(wxHORIZONTAL);
525 m_positionGridSizer->Add(itemBoxSizer69, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
526
527 m_top = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_TOP, wxEmptyString, wxDefaultPosition, wxSize(65, -1), 0 );
528 m_top->SetMaxLength(10);
529 m_top->SetHelpText(_("The top position."));
530 if (wxRichTextSizePage::ShowToolTips())
531 m_top->SetToolTip(_("The top position."));
532 itemBoxSizer69->Add(m_top, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
533
534 wxArrayString m_unitsTopStrings;
535 m_unitsTopStrings.Add(_("px"));
536 m_unitsTopStrings.Add(_("cm"));
537 m_unitsTopStrings.Add(_("percent"));
538 m_unitsTop = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsTopStrings, wxCB_READONLY );
539 m_unitsTop->SetStringSelection(_("px"));
540 m_unitsTop->SetHelpText(_("Units for the top position."));
541 if (wxRichTextSizePage::ShowToolTips())
542 m_unitsTop->SetToolTip(_("Units for the top position."));
543 itemBoxSizer69->Add(m_unitsTop, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
544
545 m_positionRightCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_RIGHT_CHECKBOX, _("&Right:"), wxDefaultPosition, wxDefaultSize, 0 );
546 m_positionRightCheckbox->SetValue(false);
547 m_positionRightCheckbox->SetHelpText(_("The right position."));
548 if (wxRichTextSizePage::ShowToolTips())
549 m_positionRightCheckbox->SetToolTip(_("The right position."));
550 m_positionGridSizer->Add(m_positionRightCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
551
552 m_rightPositionSizer = new wxBoxSizer(wxHORIZONTAL);
553 m_positionGridSizer->Add(m_rightPositionSizer, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
554
555 m_right = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(65, -1), 0 );
556 m_right->SetMaxLength(10);
557 m_right->SetHelpText(_("The right position."));
558 if (wxRichTextSizePage::ShowToolTips())
559 m_right->SetToolTip(_("The right position."));
560 m_rightPositionSizer->Add(m_right, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
561
562 wxArrayString m_unitsRightStrings;
563 m_unitsRightStrings.Add(_("px"));
564 m_unitsRightStrings.Add(_("cm"));
565 m_unitsRightStrings.Add(_("percent"));
566 m_unitsRight = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsRightStrings, wxCB_READONLY );
567 m_unitsRight->SetStringSelection(_("px"));
568 m_unitsRight->SetHelpText(_("Units for the right position."));
569 if (wxRichTextSizePage::ShowToolTips())
570 m_unitsRight->SetToolTip(_("Units for the right position."));
571 m_rightPositionSizer->Add(m_unitsRight, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
572
573 m_positionBottomCheckbox = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXT_BOTTOM_CHECKBOX, _("&Bottom:"), wxDefaultPosition, wxDefaultSize, 0 );
574 m_positionBottomCheckbox->SetValue(false);
575 m_positionBottomCheckbox->SetHelpText(_("The bottom position."));
576 if (wxRichTextSizePage::ShowToolTips())
577 m_positionBottomCheckbox->SetToolTip(_("The bottom position."));
578 m_positionGridSizer->Add(m_positionBottomCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
579
580 m_bottomPositionSizer = new wxBoxSizer(wxHORIZONTAL);
581 m_positionGridSizer->Add(m_bottomPositionSizer, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
582
583 m_bottom = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXT_BOTTOM, wxEmptyString, wxDefaultPosition, wxSize(65, -1), 0 );
584 m_bottom->SetMaxLength(10);
585 m_bottom->SetHelpText(_("The bottom position."));
586 if (wxRichTextSizePage::ShowToolTips())
587 m_bottom->SetToolTip(_("The bottom position."));
588 m_bottomPositionSizer->Add(m_bottom, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
589
590 wxArrayString m_unitsBottomStrings;
591 m_unitsBottomStrings.Add(_("px"));
592 m_unitsBottomStrings.Add(_("cm"));
593 m_unitsBottomStrings.Add(_("percent"));
594 m_unitsBottom = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXT_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_unitsBottomStrings, wxCB_READONLY );
595 m_unitsBottom->SetStringSelection(_("px"));
596 m_unitsBottom->SetHelpText(_("Units for the bottom position."));
597 if (wxRichTextSizePage::ShowToolTips())
598 m_unitsBottom->SetToolTip(_("Units for the bottom position."));
599 m_bottomPositionSizer->Add(m_unitsBottom, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
600
601 m_moveObjectSizer = new wxBoxSizer(wxHORIZONTAL);
602 m_moveObjectParentSizer->Add(m_moveObjectSizer, 0, wxGROW, 5);
603
604 wxStaticText* itemStaticText81 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Move the object to:"), wxDefaultPosition, wxDefaultSize, 0 );
605 m_moveObjectSizer->Add(itemStaticText81, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
606
607 wxButton* itemButton82 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXT_PARA_UP, _("&Previous Paragraph"), wxDefaultPosition, wxDefaultSize, 0 );
608 itemButton82->SetHelpText(_("Moves the object to the previous paragraph."));
609 if (wxRichTextSizePage::ShowToolTips())
610 itemButton82->SetToolTip(_("Moves the object to the previous paragraph."));
611 m_moveObjectSizer->Add(itemButton82, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
612
613 wxButton* itemButton83 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXT_PARA_DOWN, _("&Next Paragraph"), wxDefaultPosition, wxDefaultSize, 0 );
614 itemButton83->SetHelpText(_("Moves the object to the next paragraph."));
615 if (wxRichTextSizePage::ShowToolTips())
616 itemButton83->SetToolTip(_("Moves the object to the next paragraph."));
617 m_moveObjectSizer->Add(itemButton83, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5);
618
619 // Set validators
620 m_positionModeCtrl->SetValidator( wxGenericValidator(& m_positionMode) );
621 ////@end wxRichTextSizePage content construction
622
623 if (!sm_showFloatingAndAlignmentControls)
624 m_parentSizer->Show(m_floatingAlignmentSizer, false);
625
626 if (!sm_showFloatingControls)
627 m_floatingAlignmentSizer->Show(m_floatingSizer, false);
628
629 if (!sm_showAlignmentControls)
630 m_floatingAlignmentSizer->Show(m_alignmentSizer, false);
631
632 if (!sm_showPositionControls)
633 m_parentSizer->Show(m_positionControls, false);
634
635 if (!sm_showRightBottomPositionControls)
636 {
637 m_positionGridSizer->Show(m_positionRightCheckbox, false);
638 m_positionGridSizer->Show(m_rightPositionSizer, false);
639 m_positionGridSizer->Show(m_positionBottomCheckbox, false);
640 m_positionGridSizer->Show(m_bottomPositionSizer, false);
641 }
642
643 if (!sm_showPositionModeControls)
644 m_moveObjectParentSizer->Show(m_positionModeSizer, false);
645 }
646
647 wxRichTextAttr* wxRichTextSizePage::GetAttributes()
648 {
649 return wxRichTextFormattingDialog::GetDialogAttributes(this);
650 }
651
652 /*!
653 * Should we show tooltips?
654 */
655
656 bool wxRichTextSizePage::ShowToolTips()
657 {
658 return true;
659 }
660
661 bool wxRichTextSizePage::TransferDataToWindow()
662 {
663 m_float->SetSelection(GetAttributes()->GetTextBoxAttr().GetFloatMode());
664 m_verticalAlignmentCheckbox->SetValue(GetAttributes()->GetTextBoxAttr().HasVerticalAlignment());
665 if (GetAttributes()->GetTextBoxAttr().HasVerticalAlignment())
666 {
667 if ((int) GetAttributes()->GetTextBoxAttr().GetVerticalAlignment() > 0 &&
668 (int) GetAttributes()->GetTextBoxAttr().GetVerticalAlignment() < 4)
669 {
670 m_verticalAlignmentComboBox->SetSelection(((int) GetAttributes()->GetTextBoxAttr().GetVerticalAlignment() - 1));
671 }
672 else
673 m_verticalAlignmentComboBox->SetSelection(0);
674 }
675
676 wxRichTextFormattingDialog* dialog = wxRichTextFormattingDialog::GetDialog(this);
677
678 if (dialog)
679 {
680 // Only show the Move Object controls if there's an object.
681 if (!dialog->GetObject())
682 {
683 m_moveObjectParentSizer->Show(m_moveObjectSizer, false);
684 GetSizer()->Layout();
685 }
686 }
687
688 wxRichTextImage* imageObj = NULL;
689 if (dialog)
690 imageObj = wxDynamicCast(dialog->GetObject(), wxRichTextImage);
691
692 // For an image, show the original width and height if the size is not explicitly specified.
693 if (imageObj && !GetAttributes()->GetTextBoxAttr().GetWidth().IsValid() && !GetAttributes()->GetTextBoxAttr().GetHeight().IsValid() &&
694 imageObj->GetOriginalImageSize() != wxSize(-1, -1))
695 {
696 m_widthCheckbox->SetValue(false);
697 m_heightCheckbox->SetValue(false);
698 m_unitsW->SetSelection(0);
699 m_unitsH->SetSelection(0);
700 m_width->SetValue(wxString::Format(wxT("%d"), (int) imageObj->GetOriginalImageSize().GetWidth()));
701 m_height->SetValue(wxString::Format(wxT("%d"), (int) imageObj->GetOriginalImageSize().GetHeight()));
702 }
703 else
704 {
705 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetWidth(), m_width, m_unitsW, m_widthCheckbox);
706 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetHeight(), m_height, m_unitsH, m_heightCheckbox);
707 }
708
709 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMinSize().GetWidth(), m_minWidth, m_unitsMinW, m_minWidthCheckbox);
710 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMinSize().GetHeight(), m_minHeight, m_unitsMinH, m_minHeightCheckbox);
711 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMaxSize().GetWidth(), m_maxWidth, m_unitsMaxW, m_maxWidthCheckbox);
712 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMaxSize().GetHeight(), m_maxHeight, m_unitsMaxH, m_maxHeightCheckbox);
713 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetLeft(), m_left, m_unitsLeft, m_positionLeftCheckbox);
714 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetTop(), m_top, m_unitsTop, m_positionTopCheckbox);
715 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetRight(), m_right, m_unitsRight, m_positionRightCheckbox);
716 wxRichTextFormattingDialog::SetDimensionValue(GetAttributes()->GetTextBoxAttr().GetBottom(), m_bottom, m_unitsBottom, m_positionBottomCheckbox);
717
718 if ((GetAttributes()->GetTextBoxAttr().GetLeft().GetPosition() & wxTEXT_BOX_ATTR_POSITION_FIXED) ||
719 (GetAttributes()->GetTextBoxAttr().GetRight().GetPosition() & wxTEXT_BOX_ATTR_POSITION_FIXED) ||
720 (GetAttributes()->GetTextBoxAttr().GetTop().GetPosition() & wxTEXT_BOX_ATTR_POSITION_FIXED) ||
721 (GetAttributes()->GetTextBoxAttr().GetBottom().GetPosition() & wxTEXT_BOX_ATTR_POSITION_FIXED))
722 {
723 m_positionMode = 3;
724 }
725 else
726 if ((GetAttributes()->GetTextBoxAttr().GetLeft().GetPosition() & wxTEXT_BOX_ATTR_POSITION_ABSOLUTE) ||
727 (GetAttributes()->GetTextBoxAttr().GetRight().GetPosition() & wxTEXT_BOX_ATTR_POSITION_ABSOLUTE) ||
728 (GetAttributes()->GetTextBoxAttr().GetTop().GetPosition() & wxTEXT_BOX_ATTR_POSITION_ABSOLUTE) ||
729 (GetAttributes()->GetTextBoxAttr().GetBottom().GetPosition() & wxTEXT_BOX_ATTR_POSITION_ABSOLUTE))
730 {
731 m_positionMode = 2;
732 }
733 else
734 if ((GetAttributes()->GetTextBoxAttr().GetLeft().GetPosition() & wxTEXT_BOX_ATTR_POSITION_RELATIVE) ||
735 (GetAttributes()->GetTextBoxAttr().GetRight().GetPosition() & wxTEXT_BOX_ATTR_POSITION_RELATIVE) ||
736 (GetAttributes()->GetTextBoxAttr().GetTop().GetPosition() & wxTEXT_BOX_ATTR_POSITION_RELATIVE) ||
737 (GetAttributes()->GetTextBoxAttr().GetBottom().GetPosition() & wxTEXT_BOX_ATTR_POSITION_RELATIVE))
738 {
739 m_positionMode = 1;
740 }
741 else
742 m_positionMode = 0;
743
744 return wxPanel::TransferDataToWindow();
745 }
746
747 bool wxRichTextSizePage::TransferDataFromWindow()
748 {
749 wxPanel::TransferDataFromWindow();
750
751 GetAttributes()->GetTextBoxAttr().SetFloatMode((wxTextBoxAttrFloatStyle) m_float->GetSelection());
752 if (m_float->GetSelection() == 0)
753 GetAttributes()->GetTextBoxAttr().RemoveFlag(wxTEXT_BOX_ATTR_FLOAT);
754
755 if (m_verticalAlignmentCheckbox->GetValue())
756 GetAttributes()->GetTextBoxAttr().SetVerticalAlignment((wxTextBoxAttrVerticalAlignment) (m_verticalAlignmentComboBox->GetSelection() + 1));
757 else
758 {
759 GetAttributes()->GetTextBoxAttr().SetVerticalAlignment(wxTEXT_BOX_ATTR_VERTICAL_ALIGNMENT_NONE);
760 GetAttributes()->GetTextBoxAttr().RemoveFlag(wxTEXT_BOX_ATTR_VERTICAL_ALIGNMENT);
761 }
762
763 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetWidth(), m_width, m_unitsW, m_widthCheckbox);
764 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetHeight(), m_height, m_unitsH, m_heightCheckbox);
765 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMinSize().GetWidth(), m_minWidth, m_unitsMinW, m_minWidthCheckbox);
766 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMinSize().GetHeight(), m_minHeight, m_unitsMinH, m_minHeightCheckbox);
767 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMaxSize().GetWidth(), m_maxWidth, m_unitsMaxW, m_maxWidthCheckbox);
768 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetMaxSize().GetHeight(), m_maxHeight, m_unitsMaxH, m_maxHeightCheckbox);
769
770 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetLeft(), m_left, m_unitsLeft, m_positionLeftCheckbox);
771 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetTop(), m_top, m_unitsTop, m_positionTopCheckbox);
772 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetRight(), m_right, m_unitsRight, m_positionRightCheckbox);
773 wxRichTextFormattingDialog::GetDimensionValue(GetAttributes()->GetTextBoxAttr().GetBottom(), m_bottom, m_unitsBottom, m_positionBottomCheckbox);
774
775 wxTextBoxAttrPosition flags;
776 if (m_positionMode == 3)
777 flags = wxTEXT_BOX_ATTR_POSITION_FIXED;
778 else if (m_positionMode == 2)
779 flags = wxTEXT_BOX_ATTR_POSITION_ABSOLUTE;
780 else if (m_positionMode == 1)
781 flags = wxTEXT_BOX_ATTR_POSITION_RELATIVE;
782 else
783 flags = wxTEXT_BOX_ATTR_POSITION_STATIC;
784
785 if (GetAttributes()->GetTextBoxAttr().GetLeft().IsValid())
786 GetAttributes()->GetTextBoxAttr().GetLeft().SetPosition(flags);
787 if (GetAttributes()->GetTextBoxAttr().GetTop().IsValid())
788 GetAttributes()->GetTextBoxAttr().GetTop().SetPosition(flags);
789 if (GetAttributes()->GetTextBoxAttr().GetRight().IsValid())
790 GetAttributes()->GetTextBoxAttr().GetRight().SetPosition(flags);
791 if (GetAttributes()->GetTextBoxAttr().GetBottom().IsValid())
792 GetAttributes()->GetTextBoxAttr().GetBottom().SetPosition(flags);
793
794 return true;
795 }
796
797 /*!
798 * Get bitmap resources
799 */
800
801 wxBitmap wxRichTextSizePage::GetBitmapResource( const wxString& name )
802 {
803 // Bitmap retrieval
804 ////@begin wxRichTextSizePage bitmap retrieval
805 wxUnusedVar(name);
806 return wxNullBitmap;
807 ////@end wxRichTextSizePage bitmap retrieval
808 }
809
810 /*!
811 * Get icon resources
812 */
813
814 wxIcon wxRichTextSizePage::GetIconResource( const wxString& name )
815 {
816 // Icon retrieval
817 ////@begin wxRichTextSizePage icon retrieval
818 wxUnusedVar(name);
819 return wxNullIcon;
820 ////@end wxRichTextSizePage icon retrieval
821 }
822
823
824 /*!
825 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_WIDTH
826 */
827
828 void wxRichTextSizePage::OnRichtextWidthUpdate( wxUpdateUIEvent& event )
829 {
830 event.Enable(m_widthCheckbox->GetValue());
831 }
832
833 /*!
834 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_HEIGHT
835 */
836
837 void wxRichTextSizePage::OnRichtextHeightUpdate( wxUpdateUIEvent& event )
838 {
839 event.Enable(m_heightCheckbox->GetValue());
840 }
841
842 /*!
843 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXT_PARA_UP
844 */
845
846 void wxRichTextSizePage::OnRichtextParaUpClick( wxCommandEvent& WXUNUSED(event) )
847 {
848 wxRichTextFormattingDialog* dialog = wxRichTextFormattingDialog::GetDialog(this);
849 if (!dialog || !dialog->GetObject())
850 return;
851
852 // Make sure object attributes are up-to-date
853 dialog->TransferDataFromWindow();
854
855 wxRichTextBuffer* buffer = dialog->GetObject()->GetBuffer();
856 wxRichTextParagraphLayoutBox* container = dialog->GetObject()->GetParentContainer();
857 wxRichTextObject* parent = dialog->GetObject()->GetParent();
858 if (!container || !parent || !buffer)
859 return;
860
861 wxRichTextRange range = dialog->GetObject()->GetRange();
862 wxRichTextObjectList::compatibility_iterator iter = container->GetChildren().GetFirst();
863 if (!iter)
864 return;
865
866 while (iter)
867 {
868 if (iter->GetData() == parent)
869 break;
870 iter = iter->GetNext();
871 }
872 if (!iter)
873 return;
874 iter = iter->GetPrevious();
875 if (!iter)
876 return;
877
878 wxRichTextObject *obj = iter->GetData();
879 wxRichTextRange rg = obj->GetRange();
880 // tempObj will be deleted along with the undo object, and a clone of it will be
881 // returned by InsertObjectWithUndo
882 wxRichTextObject* tempObj = dialog->GetObject()->Clone();
883
884 container->DeleteRangeWithUndo(range, buffer->GetRichTextCtrl(), buffer);
885
886 wxRichTextObject* obj2 = container->InsertObjectWithUndo(buffer, rg.GetStart(), tempObj, buffer->GetRichTextCtrl(), 0);
887 dialog->SetObject(obj2);
888 }
889
890 /*!
891 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXT_DOWN
892 */
893
894 void wxRichTextSizePage::OnRichtextParaDownClick( wxCommandEvent& WXUNUSED(event) )
895 {
896 wxRichTextFormattingDialog* dialog = wxRichTextFormattingDialog::GetDialog(this);
897 if (!dialog || !dialog->GetObject())
898 return;
899
900 // Make sure object attributes are up-to-date
901 dialog->TransferDataFromWindow();
902
903 wxRichTextBuffer* buffer = dialog->GetObject()->GetBuffer();
904 wxRichTextParagraphLayoutBox* container = dialog->GetObject()->GetParentContainer();
905 wxRichTextObject* parent = dialog->GetObject()->GetParent();
906 if (!container || !parent || !buffer)
907 return;
908
909 wxRichTextRange range = dialog->GetObject()->GetRange();
910
911 wxRichTextObjectList::compatibility_iterator iter = buffer->GetChildren().GetFirst();
912 if (!iter)
913 return;
914
915 while (iter)
916 {
917 if (iter->GetData() == parent)
918 break;
919 iter = iter->GetNext();
920 }
921
922 iter = iter->GetNext();
923 if (!iter)
924 return;
925
926 wxRichTextObject *obj = iter->GetData();
927 wxRichTextRange rg = obj->GetRange();
928 // tempObj will be deleted along with the undo object, and a clone of it will be
929 // returned by InsertObjectWithUndo
930 wxRichTextObject* tempObj = dialog->GetObject()->Clone();
931
932 container->DeleteRangeWithUndo(range, buffer->GetRichTextCtrl(), buffer);
933
934 // Minus one because we deleted an object
935 wxRichTextObject* obj2 = container->InsertObjectWithUndo(buffer, rg.GetStart()-1, tempObj, buffer->GetRichTextCtrl(), 0);
936 dialog->SetObject(obj2);
937 }
938
939
940 /*!
941 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_VERTICAL_ALIGNMENT_COMBOBOX
942 */
943
944 void wxRichTextSizePage::OnRichtextVerticalAlignmentComboboxUpdate( wxUpdateUIEvent& event )
945 {
946 event.Enable(m_verticalAlignmentCheckbox->GetValue());
947 }
948
949
950 /*!
951 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_MIN_WIDTH
952 */
953
954 void wxRichTextSizePage::OnRichtextMinWidthUpdate( wxUpdateUIEvent& event )
955 {
956 event.Enable(m_minWidthCheckbox->GetValue());
957 }
958
959 /*!
960 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_MIN_HEIGHT
961 */
962
963 void wxRichTextSizePage::OnRichtextMinHeightUpdate( wxUpdateUIEvent& event )
964 {
965 event.Enable(m_minHeightCheckbox->GetValue());
966 }
967
968
969 /*!
970 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_MAX_WIDTH
971 */
972
973 void wxRichTextSizePage::OnRichtextMaxWidthUpdate( wxUpdateUIEvent& event )
974 {
975 event.Enable(m_maxWidthCheckbox->GetValue());
976 }
977
978
979 /*!
980 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_MAX_HEIGHT
981 */
982
983 void wxRichTextSizePage::OnRichtextMaxHeightUpdate( wxUpdateUIEvent& event )
984 {
985 event.Enable(m_maxHeightCheckbox->GetValue());
986 }
987
988
989 /*!
990 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_LEFT
991 */
992
993 void wxRichTextSizePage::OnRichtextLeftUpdate( wxUpdateUIEvent& event )
994 {
995 event.Enable(m_positionLeftCheckbox->GetValue());
996 }
997
998 /*!
999 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_LEFT_UNITS
1000 */
1001
1002 void wxRichTextSizePage::OnRichtextTopUpdate( wxUpdateUIEvent& event )
1003 {
1004 event.Enable(m_positionTopCheckbox->GetValue());
1005 }
1006
1007 /*!
1008 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_RIGHT
1009 */
1010
1011 void wxRichTextSizePage::OnRichtextRightUpdate( wxUpdateUIEvent& event )
1012 {
1013 event.Enable(m_positionRightCheckbox->GetValue());
1014 }
1015
1016
1017 /*!
1018 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BOTTOM
1019 */
1020
1021 void wxRichTextSizePage::OnRichtextBottomUpdate( wxUpdateUIEvent& event )
1022 {
1023 event.Enable(m_positionBottomCheckbox->GetValue());
1024 }
1025