]> git.saurik.com Git - wxWidgets.git/blob - src/richtext/richtextborderspage.cpp
Ensure there is valid context for DrawRectangle
[wxWidgets.git] / src / richtext / richtextborderspage.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextborderspage.cpp
3 // Purpose:
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 21/10/2010 11:34:24
7 // RCS-ID:
8 // Copyright: (c) Julian Smart
9 // Licence:
10 /////////////////////////////////////////////////////////////////////////////
11
12 ////@begin includes
13 #include "wx/imaglist.h"
14 ////@end includes
15
16 #include "wx/richtext/richtextborderspage.h"
17
18 ////@begin XPM images
19 ////@end XPM images
20
21
22 /*!
23 * wxRichTextBordersPage type definition
24 */
25
26 IMPLEMENT_DYNAMIC_CLASS( wxRichTextBordersPage, wxRichTextDialogPage )
27
28
29 /*!
30 * wxRichTextBordersPage event table definition
31 */
32
33 BEGIN_EVENT_TABLE( wxRichTextBordersPage, wxRichTextDialogPage )
34
35 EVT_CHECKBOX(wxID_ANY, wxRichTextBordersPage::OnCommand)
36 EVT_TEXT(wxID_ANY, wxRichTextBordersPage::OnCommand)
37 EVT_TEXT_ENTER(wxID_ANY, wxRichTextBordersPage::OnCommand)
38 EVT_COMBOBOX(wxID_ANY, wxRichTextBordersPage::OnCommand)
39 EVT_BUTTON(wxID_ANY, wxRichTextBordersPage::OnCommand)
40
41 ////@begin wxRichTextBordersPage event table entries
42 EVT_CHECKBOX( ID_RICHTEXT_BORDER_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
43
44 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
45
46 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_UNITS, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
47
48 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_STYLE, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
49
50 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
51
52 EVT_CHECKBOX( ID_RICHTEXT_BORDER_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
53
54 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
55
56 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
57
58 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
59
60 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
61
62 EVT_CHECKBOX( ID_RICHTEXT_BORDER_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
63
64 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
65
66 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_UNITS, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
67
68 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_STYLE, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
69
70 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_COLOUR, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
71
72 EVT_CHECKBOX( ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
73
74 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
75
76 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
77
78 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
79
80 EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
81
82 EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
83
84 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
85
86 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_UNITS, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
87
88 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_STYLE, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
89
90 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
91
92 EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
93
94 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
95
96 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
97
98 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
99
100 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
101
102 EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
103
104 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
105
106 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_UNITS, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
107
108 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_STYLE, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
109
110 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_COLOUR, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
111
112 EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
113
114 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
115
116 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
117
118 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
119
120 EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
121
122 ////@end wxRichTextBordersPage event table entries
123
124 END_EVENT_TABLE()
125
126 IMPLEMENT_HELP_PROVISION(wxRichTextBordersPage)
127
128 /*!
129 * wxRichTextBordersPage constructors
130 */
131
132 wxRichTextBordersPage::wxRichTextBordersPage()
133 {
134 Init();
135 }
136
137 wxRichTextBordersPage::wxRichTextBordersPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
138 {
139 Init();
140 Create(parent, id, pos, size, style);
141 }
142
143
144 /*!
145 * wxRichTextBordersPage creator
146 */
147
148 bool wxRichTextBordersPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
149 {
150 ////@begin wxRichTextBordersPage creation
151 SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
152 wxRichTextDialogPage::Create( parent, id, pos, size, style );
153
154 CreateControls();
155 if (GetSizer())
156 {
157 GetSizer()->SetSizeHints(this);
158 }
159 Centre();
160 ////@end wxRichTextBordersPage creation
161 return true;
162 }
163
164
165 /*!
166 * wxRichTextBordersPage destructor
167 */
168
169 wxRichTextBordersPage::~wxRichTextBordersPage()
170 {
171 ////@begin wxRichTextBordersPage destruction
172 ////@end wxRichTextBordersPage destruction
173 }
174
175
176 /*!
177 * Member initialisation
178 */
179
180 void wxRichTextBordersPage::Init()
181 {
182 m_ignoreUpdates = false;
183
184 ////@begin wxRichTextBordersPage member initialisation
185 m_leftBorderCheckbox = NULL;
186 m_leftBorderWidth = NULL;
187 m_leftBorderWidthUnits = NULL;
188 m_leftBorderStyle = NULL;
189 m_leftBorderColour = NULL;
190 m_rightBorderCheckbox = NULL;
191 m_rightBorderWidth = NULL;
192 m_rightBorderWidthUnits = NULL;
193 m_rightBorderStyle = NULL;
194 m_rightBorderColour = NULL;
195 m_topBorderCheckbox = NULL;
196 m_topBorderWidth = NULL;
197 m_topBorderWidthUnits = NULL;
198 m_topBorderStyle = NULL;
199 m_topBorderColour = NULL;
200 m_bottomBorderCheckbox = NULL;
201 m_bottomBorderWidth = NULL;
202 m_bottomBorderWidthUnits = NULL;
203 m_bottomBorderStyle = NULL;
204 m_bottomBorderColour = NULL;
205 m_leftOutlineCheckbox = NULL;
206 m_leftOutlineWidth = NULL;
207 m_leftOutlineWidthUnits = NULL;
208 m_leftOutlineStyle = NULL;
209 m_leftOutlineColour = NULL;
210 m_rightOutlineCheckbox = NULL;
211 m_rightOutlineWidth = NULL;
212 m_rightOutlineWidthUnits = NULL;
213 m_rightOutlineStyle = NULL;
214 m_rightOutlineColour = NULL;
215 m_topOutlineCheckbox = NULL;
216 m_topOutlineWidth = NULL;
217 m_topOutlineWidthUnits = NULL;
218 m_topOutlineStyle = NULL;
219 m_topOutlineColour = NULL;
220 m_bottomOutlineCheckbox = NULL;
221 m_bottomOutlineWidth = NULL;
222 m_bottomOutlineWidthUnits = NULL;
223 m_bottomOutlineStyle = NULL;
224 m_bottomOutlineColour = NULL;
225 m_borderPreviewCtrl = NULL;
226 ////@end wxRichTextBordersPage member initialisation
227 }
228
229
230 /*!
231 * Control creation for wxRichTextBordersPage
232 */
233
234 void wxRichTextBordersPage::CreateControls()
235 {
236 ////@begin wxRichTextBordersPage content construction
237 wxRichTextBordersPage* itemRichTextDialogPage1 = this;
238
239 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
240 itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
241
242 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
243 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
244
245 wxNotebook* itemNotebook4 = new wxNotebook( itemRichTextDialogPage1, ID_RICHTEXTBORDERSPAGE_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxBK_DEFAULT );
246
247 wxPanel* itemPanel5 = new wxPanel( itemNotebook4, ID_RICHTEXTBORDERSPAGE_BORDERS, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
248 itemPanel5->SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
249 wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxVERTICAL);
250 itemPanel5->SetSizer(itemBoxSizer6);
251
252 wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxVERTICAL);
253 itemBoxSizer6->Add(itemBoxSizer7, 0, wxGROW|wxALL, 5);
254 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
255 itemBoxSizer7->Add(itemBoxSizer8, 0, wxGROW, 5);
256 wxStaticText* itemStaticText9 = new wxStaticText( itemPanel5, wxID_STATIC, _("Border"), wxDefaultPosition, wxDefaultSize, 0 );
257 itemStaticText9->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("")));
258 itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
259
260 wxStaticLine* itemStaticLine10 = new wxStaticLine( itemPanel5, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
261 itemBoxSizer8->Add(itemStaticLine10, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
262
263 wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxHORIZONTAL);
264 itemBoxSizer7->Add(itemBoxSizer11, 0, wxGROW, 5);
265 itemBoxSizer11->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
266
267 wxFlexGridSizer* itemFlexGridSizer13 = new wxFlexGridSizer(0, 2, 0, 0);
268 itemBoxSizer11->Add(itemFlexGridSizer13, 0, wxGROW, 5);
269 m_leftBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_CHECKBOX, _("&Left:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
270 m_leftBorderCheckbox->SetValue(false);
271 itemFlexGridSizer13->Add(m_leftBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
272
273 wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxHORIZONTAL);
274 itemFlexGridSizer13->Add(itemBoxSizer15, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
275 m_leftBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_LEFT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
276 itemBoxSizer15->Add(m_leftBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
277
278 wxArrayString m_leftBorderWidthUnitsStrings;
279 m_leftBorderWidthUnitsStrings.Add(_("px"));
280 m_leftBorderWidthUnitsStrings.Add(_("cm"));
281 m_leftBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftBorderWidthUnitsStrings, wxCB_READONLY );
282 m_leftBorderWidthUnits->SetStringSelection(_("px"));
283 m_leftBorderWidthUnits->SetHelpText(_("Units for the left border width."));
284 if (wxRichTextBordersPage::ShowToolTips())
285 m_leftBorderWidthUnits->SetToolTip(_("Units for the left border width."));
286 itemBoxSizer15->Add(m_leftBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
287
288 itemBoxSizer15->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
289
290 wxArrayString m_leftBorderStyleStrings;
291 m_leftBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_leftBorderStyleStrings, wxCB_READONLY );
292 itemBoxSizer15->Add(m_leftBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
293
294 itemBoxSizer15->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
295
296 m_leftBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_LEFT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
297 itemBoxSizer15->Add(m_leftBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
298
299 m_rightBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_CHECKBOX, _("&Right:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
300 m_rightBorderCheckbox->SetValue(false);
301 itemFlexGridSizer13->Add(m_rightBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
302
303 wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
304 itemFlexGridSizer13->Add(itemBoxSizer23, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
305 m_rightBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
306 itemBoxSizer23->Add(m_rightBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
307
308 wxArrayString m_rightBorderWidthUnitsStrings;
309 m_rightBorderWidthUnitsStrings.Add(_("px"));
310 m_rightBorderWidthUnitsStrings.Add(_("cm"));
311 m_rightBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightBorderWidthUnitsStrings, wxCB_READONLY );
312 m_rightBorderWidthUnits->SetStringSelection(_("px"));
313 m_rightBorderWidthUnits->SetHelpText(_("Units for the right border width."));
314 if (wxRichTextBordersPage::ShowToolTips())
315 m_rightBorderWidthUnits->SetToolTip(_("Units for the right border width."));
316 itemBoxSizer23->Add(m_rightBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
317
318 itemBoxSizer23->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
319
320 wxArrayString m_rightBorderStyleStrings;
321 m_rightBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_rightBorderStyleStrings, wxCB_READONLY );
322 itemBoxSizer23->Add(m_rightBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
323
324 itemBoxSizer23->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
325
326 m_rightBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
327 itemBoxSizer23->Add(m_rightBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
328
329 m_topBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_CHECKBOX, _("&Top:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
330 m_topBorderCheckbox->SetValue(false);
331 itemFlexGridSizer13->Add(m_topBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
332
333 wxBoxSizer* itemBoxSizer31 = new wxBoxSizer(wxHORIZONTAL);
334 itemFlexGridSizer13->Add(itemBoxSizer31, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
335 m_topBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_TOP, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
336 itemBoxSizer31->Add(m_topBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
337
338 wxArrayString m_topBorderWidthUnitsStrings;
339 m_topBorderWidthUnitsStrings.Add(_("px"));
340 m_topBorderWidthUnitsStrings.Add(_("cm"));
341 m_topBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topBorderWidthUnitsStrings, wxCB_READONLY );
342 m_topBorderWidthUnits->SetStringSelection(_("px"));
343 m_topBorderWidthUnits->SetHelpText(_("Units for the top border width."));
344 if (wxRichTextBordersPage::ShowToolTips())
345 m_topBorderWidthUnits->SetToolTip(_("Units for the top border width."));
346 itemBoxSizer31->Add(m_topBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
347
348 itemBoxSizer31->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
349
350 wxArrayString m_topBorderStyleStrings;
351 m_topBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_topBorderStyleStrings, wxCB_READONLY );
352 itemBoxSizer31->Add(m_topBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
353
354 itemBoxSizer31->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
355
356 m_topBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_TOP_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
357 itemBoxSizer31->Add(m_topBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
358
359 m_bottomBorderCheckbox = new wxCheckBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX, _("&Bottom:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
360 m_bottomBorderCheckbox->SetValue(false);
361 itemFlexGridSizer13->Add(m_bottomBorderCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
362
363 wxBoxSizer* itemBoxSizer39 = new wxBoxSizer(wxHORIZONTAL);
364 itemFlexGridSizer13->Add(itemBoxSizer39, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
365 m_bottomBorderWidth = new wxTextCtrl( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
366 itemBoxSizer39->Add(m_bottomBorderWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
367
368 wxArrayString m_bottomBorderWidthUnitsStrings;
369 m_bottomBorderWidthUnitsStrings.Add(_("px"));
370 m_bottomBorderWidthUnitsStrings.Add(_("cm"));
371 m_bottomBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomBorderWidthUnitsStrings, wxCB_READONLY );
372 m_bottomBorderWidthUnits->SetStringSelection(_("px"));
373 m_bottomBorderWidthUnits->SetHelpText(_("Units for the bottom border width."));
374 if (wxRichTextBordersPage::ShowToolTips())
375 m_bottomBorderWidthUnits->SetToolTip(_("Units for the bottom border width."));
376 itemBoxSizer39->Add(m_bottomBorderWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
377
378 itemBoxSizer39->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
379
380 wxArrayString m_bottomBorderStyleStrings;
381 m_bottomBorderStyle = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_bottomBorderStyleStrings, wxCB_READONLY );
382 itemBoxSizer39->Add(m_bottomBorderStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
383
384 itemBoxSizer39->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
385
386 m_bottomBorderColour = new wxRichTextColourSwatchCtrl( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
387 itemBoxSizer39->Add(m_bottomBorderColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
388
389 itemNotebook4->AddPage(itemPanel5, _("Border"));
390
391 wxPanel* itemPanel46 = new wxPanel( itemNotebook4, ID_RICHTEXTBORDERSPAGE_OUTLINE, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL );
392 itemPanel46->SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
393 wxBoxSizer* itemBoxSizer47 = new wxBoxSizer(wxVERTICAL);
394 itemPanel46->SetSizer(itemBoxSizer47);
395
396 wxBoxSizer* itemBoxSizer48 = new wxBoxSizer(wxVERTICAL);
397 itemBoxSizer47->Add(itemBoxSizer48, 0, wxGROW|wxALL, 5);
398 wxBoxSizer* itemBoxSizer49 = new wxBoxSizer(wxHORIZONTAL);
399 itemBoxSizer48->Add(itemBoxSizer49, 0, wxGROW, 5);
400 wxStaticText* itemStaticText50 = new wxStaticText( itemPanel46, wxID_STATIC, _("Outline"), wxDefaultPosition, wxDefaultSize, 0 );
401 itemStaticText50->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("")));
402 itemBoxSizer49->Add(itemStaticText50, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
403
404 wxStaticLine* itemStaticLine51 = new wxStaticLine( itemPanel46, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
405 itemBoxSizer49->Add(itemStaticLine51, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
406
407 wxBoxSizer* itemBoxSizer52 = new wxBoxSizer(wxHORIZONTAL);
408 itemBoxSizer48->Add(itemBoxSizer52, 0, wxGROW, 5);
409 itemBoxSizer52->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
410
411 wxFlexGridSizer* itemFlexGridSizer54 = new wxFlexGridSizer(0, 2, 0, 0);
412 itemBoxSizer52->Add(itemFlexGridSizer54, 0, wxGROW, 5);
413 m_leftOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX, _("&Left:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
414 m_leftOutlineCheckbox->SetValue(false);
415 itemFlexGridSizer54->Add(m_leftOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
416
417 wxBoxSizer* itemBoxSizer56 = new wxBoxSizer(wxHORIZONTAL);
418 itemFlexGridSizer54->Add(itemBoxSizer56, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
419 m_leftOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
420 itemBoxSizer56->Add(m_leftOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
421
422 wxArrayString m_leftOutlineWidthUnitsStrings;
423 m_leftOutlineWidthUnitsStrings.Add(_("px"));
424 m_leftOutlineWidthUnitsStrings.Add(_("cm"));
425 m_leftOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftOutlineWidthUnitsStrings, wxCB_READONLY );
426 m_leftOutlineWidthUnits->SetStringSelection(_("px"));
427 m_leftOutlineWidthUnits->SetHelpText(_("Units for the left outline width."));
428 if (wxRichTextBordersPage::ShowToolTips())
429 m_leftOutlineWidthUnits->SetToolTip(_("Units for the left outline width."));
430 itemBoxSizer56->Add(m_leftOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
431
432 itemBoxSizer56->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
433
434 wxArrayString m_leftOutlineStyleStrings;
435 m_leftOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_leftOutlineStyleStrings, wxCB_READONLY );
436 itemBoxSizer56->Add(m_leftOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
437
438 itemBoxSizer56->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
439
440 m_leftOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
441 itemBoxSizer56->Add(m_leftOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
442
443 m_rightOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX, _("&Right:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
444 m_rightOutlineCheckbox->SetValue(false);
445 itemFlexGridSizer54->Add(m_rightOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
446
447 wxBoxSizer* itemBoxSizer64 = new wxBoxSizer(wxHORIZONTAL);
448 itemFlexGridSizer54->Add(itemBoxSizer64, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
449 m_rightOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
450 itemBoxSizer64->Add(m_rightOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
451
452 wxArrayString m_rightOutlineWidthUnitsStrings;
453 m_rightOutlineWidthUnitsStrings.Add(_("px"));
454 m_rightOutlineWidthUnitsStrings.Add(_("cm"));
455 m_rightOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightOutlineWidthUnitsStrings, wxCB_READONLY );
456 m_rightOutlineWidthUnits->SetStringSelection(_("px"));
457 m_rightOutlineWidthUnits->SetHelpText(_("Units for the right outline width."));
458 if (wxRichTextBordersPage::ShowToolTips())
459 m_rightOutlineWidthUnits->SetToolTip(_("Units for the right outline width."));
460 itemBoxSizer64->Add(m_rightOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
461
462 itemBoxSizer64->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
463
464 wxArrayString m_rightOutlineStyleStrings;
465 m_rightOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_rightOutlineStyleStrings, wxCB_READONLY );
466 itemBoxSizer64->Add(m_rightOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
467
468 itemBoxSizer64->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
469
470 m_rightOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
471 itemBoxSizer64->Add(m_rightOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
472
473 m_topOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_CHECKBOX, _("&Top:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
474 m_topOutlineCheckbox->SetValue(false);
475 itemFlexGridSizer54->Add(m_topOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
476
477 wxBoxSizer* itemBoxSizer72 = new wxBoxSizer(wxHORIZONTAL);
478 itemFlexGridSizer54->Add(itemBoxSizer72, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
479 m_topOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_TOP, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
480 itemBoxSizer72->Add(m_topOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
481
482 wxArrayString m_topOutlineWidthUnitsStrings;
483 m_topOutlineWidthUnitsStrings.Add(_("px"));
484 m_topOutlineWidthUnitsStrings.Add(_("cm"));
485 m_topOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topOutlineWidthUnitsStrings, wxCB_READONLY );
486 m_topOutlineWidthUnits->SetStringSelection(_("px"));
487 m_topOutlineWidthUnits->SetHelpText(_("Units for the top outline width."));
488 if (wxRichTextBordersPage::ShowToolTips())
489 m_topOutlineWidthUnits->SetToolTip(_("Units for the top outline width."));
490 itemBoxSizer72->Add(m_topOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
491
492 itemBoxSizer72->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
493
494 wxArrayString m_topOutlineStyleStrings;
495 m_topOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_topOutlineStyleStrings, wxCB_READONLY );
496 itemBoxSizer72->Add(m_topOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
497
498 itemBoxSizer72->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
499
500 m_topOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
501 itemBoxSizer72->Add(m_topOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
502
503 m_bottomOutlineCheckbox = new wxCheckBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX, _("&Bottom:"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
504 m_bottomOutlineCheckbox->SetValue(false);
505 itemFlexGridSizer54->Add(m_bottomOutlineCheckbox, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
506
507 wxBoxSizer* itemBoxSizer80 = new wxBoxSizer(wxHORIZONTAL);
508 itemFlexGridSizer54->Add(itemBoxSizer80, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
509 m_bottomOutlineWidth = new wxTextCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
510 itemBoxSizer80->Add(m_bottomOutlineWidth, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
511
512 wxArrayString m_bottomOutlineWidthUnitsStrings;
513 m_bottomOutlineWidthUnitsStrings.Add(_("px"));
514 m_bottomOutlineWidthUnitsStrings.Add(_("cm"));
515 m_bottomOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomOutlineWidthUnitsStrings, wxCB_READONLY );
516 m_bottomOutlineWidthUnits->SetStringSelection(_("px"));
517 m_bottomOutlineWidthUnits->SetHelpText(_("Units for the bottom outline width."));
518 if (wxRichTextBordersPage::ShowToolTips())
519 m_bottomOutlineWidthUnits->SetToolTip(_("Units for the bottom outline width."));
520 itemBoxSizer80->Add(m_bottomOutlineWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
521
522 itemBoxSizer80->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
523
524 wxArrayString m_bottomOutlineStyleStrings;
525 m_bottomOutlineStyle = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_STYLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_bottomOutlineStyleStrings, wxCB_READONLY );
526 itemBoxSizer80->Add(m_bottomOutlineStyle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
527
528 itemBoxSizer80->Add(2, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2);
529
530 m_bottomOutlineColour = new wxRichTextColourSwatchCtrl( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR, wxDefaultPosition, wxSize(40, 20), wxBORDER_THEME );
531 itemBoxSizer80->Add(m_bottomOutlineColour, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
532
533 itemNotebook4->AddPage(itemPanel46, _("Outline"));
534
535 itemBoxSizer3->Add(itemNotebook4, 0, wxGROW|wxALL, 5);
536
537 m_borderPreviewCtrl = new wxRichTextBorderPreviewCtrl( itemRichTextDialogPage1, ID_RICHTEXT_BORDER_PREVIEW, wxDefaultPosition, wxSize(60, 60), wxBORDER_THEME );
538 itemBoxSizer3->Add(m_borderPreviewCtrl, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
539
540 ////@end wxRichTextBordersPage content construction
541
542 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_NONE); m_borderStyleNames.Add(_("None"));
543 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_SOLID); m_borderStyleNames.Add(_("Solid"));
544 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DOTTED); m_borderStyleNames.Add(_("Dotted"));
545 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DASHED); m_borderStyleNames.Add(_("Dashed"));
546 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_DOUBLE); m_borderStyleNames.Add(_("Double"));
547 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_GROOVE); m_borderStyleNames.Add(_("Groove"));
548 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_RIDGE); m_borderStyleNames.Add(_("Ridge"));
549 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_INSET); m_borderStyleNames.Add(_("Inset"));
550 m_borderStyles.Add(wxTEXT_BOX_ATTR_BORDER_OUTSET); m_borderStyleNames.Add(_("Outset"));
551
552 m_ignoreUpdates = true;
553
554 FillStyleComboBox(m_leftBorderStyle);
555 FillStyleComboBox(m_rightBorderStyle);
556 FillStyleComboBox(m_topBorderStyle);
557 FillStyleComboBox(m_bottomBorderStyle);
558
559 FillStyleComboBox(m_leftOutlineStyle);
560 FillStyleComboBox(m_rightOutlineStyle);
561 FillStyleComboBox(m_topOutlineStyle);
562 FillStyleComboBox(m_bottomOutlineStyle);
563
564 m_borderPreviewCtrl->SetAttributes(GetAttributes());
565
566 m_ignoreUpdates = false;
567 }
568
569
570 /*!
571 * Should we show tooltips?
572 */
573
574 bool wxRichTextBordersPage::ShowToolTips()
575 {
576 return true;
577 }
578
579 // Updates the preview
580 void wxRichTextBordersPage::OnCommand(wxCommandEvent& event)
581 {
582 event.Skip();
583 if (m_ignoreUpdates)
584 return;
585
586 if (m_borderPreviewCtrl)
587 {
588 TransferDataFromWindow();
589 m_borderPreviewCtrl->Refresh();
590 }
591 }
592
593 wxRichTextAttr* wxRichTextBordersPage::GetAttributes()
594 {
595 return wxRichTextFormattingDialog::GetDialogAttributes(this);
596 }
597
598 // Fill style combo
599 void wxRichTextBordersPage::FillStyleComboBox(wxComboBox* styleComboBox)
600 {
601 styleComboBox->Freeze();
602 styleComboBox->Append(m_borderStyleNames);
603 styleComboBox->Thaw();
604 }
605
606 bool wxRichTextBordersPage::TransferDataToWindow()
607 {
608 m_ignoreUpdates = true;
609
610 // Border
611 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetLeft(), m_leftBorderWidth, m_leftBorderWidthUnits, m_leftBorderCheckbox, m_leftBorderStyle, m_leftBorderColour, m_borderStyles);
612 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetRight(), m_rightBorderWidth, m_rightBorderWidthUnits, m_rightBorderCheckbox, m_rightBorderStyle, m_rightBorderColour, m_borderStyles);
613 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetTop(), m_topBorderWidth, m_topBorderWidthUnits, m_topBorderCheckbox, m_topBorderStyle, m_topBorderColour, m_borderStyles);
614 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetBottom(), m_bottomBorderWidth, m_bottomBorderWidthUnits, m_bottomBorderCheckbox, m_bottomBorderStyle, m_bottomBorderColour, m_borderStyles);
615
616 // Outline
617 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetLeft(), m_leftOutlineWidth, m_leftOutlineWidthUnits, m_leftOutlineCheckbox, m_leftOutlineStyle, m_leftOutlineColour, m_borderStyles);
618 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetRight(), m_rightOutlineWidth, m_rightOutlineWidthUnits, m_rightOutlineCheckbox, m_rightOutlineStyle, m_rightOutlineColour, m_borderStyles);
619 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetTop(), m_topOutlineWidth, m_topOutlineWidthUnits, m_topOutlineCheckbox, m_topOutlineStyle, m_topOutlineColour, m_borderStyles);
620 SetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetBottom(), m_bottomOutlineWidth, m_bottomOutlineWidthUnits, m_bottomOutlineCheckbox, m_bottomOutlineStyle, m_bottomOutlineColour, m_borderStyles);
621
622 m_ignoreUpdates = false;
623
624 return true;
625 }
626
627 bool wxRichTextBordersPage::TransferDataFromWindow()
628 {
629 // Border
630 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetLeft(), m_leftBorderWidth, m_leftBorderWidthUnits, m_leftBorderCheckbox, m_leftBorderStyle, m_leftBorderColour, m_borderStyles);
631 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetRight(), m_rightBorderWidth, m_rightBorderWidthUnits, m_rightBorderCheckbox, m_rightBorderStyle, m_rightBorderColour, m_borderStyles);
632 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetTop(), m_topBorderWidth, m_topBorderWidthUnits, m_topBorderCheckbox, m_topBorderStyle, m_topBorderColour, m_borderStyles);
633 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetBorder().GetBottom(), m_bottomBorderWidth, m_bottomBorderWidthUnits, m_bottomBorderCheckbox, m_bottomBorderStyle, m_bottomBorderColour, m_borderStyles);
634
635 // Outline
636 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetLeft(), m_leftOutlineWidth, m_leftOutlineWidthUnits, m_leftOutlineCheckbox, m_leftOutlineStyle, m_leftOutlineColour, m_borderStyles);
637 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetRight(), m_rightOutlineWidth, m_rightOutlineWidthUnits, m_rightOutlineCheckbox, m_rightOutlineStyle, m_rightOutlineColour, m_borderStyles);
638 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetTop(), m_topOutlineWidth, m_topOutlineWidthUnits, m_topOutlineCheckbox, m_topOutlineStyle, m_topOutlineColour, m_borderStyles);
639 GetBorderValue(GetAttributes()->GetTextBoxAttr().GetOutline().GetBottom(), m_bottomOutlineWidth, m_bottomOutlineWidthUnits, m_bottomOutlineCheckbox, m_bottomOutlineStyle, m_bottomOutlineColour, m_borderStyles);
640
641 return true;
642 }
643
644 // Set the border controls
645 void wxRichTextBordersPage::SetBorderValue(wxTextAttrBorder& border, /* wxTextAttrBorder& borderToReset, */ wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
646 wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles)
647 {
648 if (!border.IsValid())
649 {
650 checkBox->Set3StateValue(wxCHK_UNDETERMINED);
651 widthValueCtrl->SetValue(wxT("1"));
652 widthUnitsCtrl->SetSelection(0);
653 colourCtrl->SetColour(*wxBLACK);
654 styleCtrl->SetSelection(0);
655 }
656 else
657 {
658 wxRichTextFormattingDialog::SetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
659
660 int sel = borderStyles.Index(border.GetStyle());
661 if (sel == -1)
662 sel = 1;
663 styleCtrl->SetSelection(sel);
664 colourCtrl->SetColour(border.GetColour());
665
666 if (sel == 0)
667 checkBox->Set3StateValue(wxCHK_UNCHECKED);
668 else
669 checkBox->Set3StateValue(wxCHK_CHECKED);
670 }
671 }
672
673 // Get data from the border controls
674 void wxRichTextBordersPage::GetBorderValue(wxTextAttrBorder& border, /* wxTextAttrBorder& borderToReset, */ wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
675 wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles)
676 {
677 wxRichTextFormattingDialog::GetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
678
679 int sel = styleCtrl->GetSelection();
680 border.SetColour(colourCtrl->GetColour());
681
682 if (checkBox->Get3StateValue() == wxCHK_UNDETERMINED)
683 {
684 // When we apply the attributes, we won't apply this one, to leave the original unchanged.
685 border.Reset();
686 // borderToReset.Reset();
687 }
688 else if (checkBox->Get3StateValue() == wxCHK_UNCHECKED)
689 {
690 // We make a note to reset this attribute.
691 // borderToReset.GetWidth().MakeValid();
692 border.SetStyle(wxTEXT_BOX_ATTR_BORDER_NONE);
693 }
694 else
695 {
696 // borderToReset.Reset(); // Don't reset this, in case we were going to previously.
697 if (sel != -1)
698 border.SetStyle(borderStyles[sel]);
699 }
700 }
701
702 /*!
703 * Get bitmap resources
704 */
705
706 wxBitmap wxRichTextBordersPage::GetBitmapResource( const wxString& name )
707 {
708 // Bitmap retrieval
709 ////@begin wxRichTextBordersPage bitmap retrieval
710 wxUnusedVar(name);
711 return wxNullBitmap;
712 ////@end wxRichTextBordersPage bitmap retrieval
713 }
714
715 /*!
716 * Get icon resources
717 */
718
719 wxIcon wxRichTextBordersPage::GetIconResource( const wxString& name )
720 {
721 // Icon retrieval
722 ////@begin wxRichTextBordersPage icon retrieval
723 wxUnusedVar(name);
724 return wxNullIcon;
725 ////@end wxRichTextBordersPage icon retrieval
726 }
727
728
729 /*!
730 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_LEFT
731 */
732
733 void wxRichTextBordersPage::OnRichtextBorderLeftUpdate( wxUpdateUIEvent& event )
734 {
735 event.Enable(m_leftBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
736 }
737
738
739 /*!
740 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_RIGHT
741 */
742
743 void wxRichTextBordersPage::OnRichtextBorderRightUpdate( wxUpdateUIEvent& event )
744 {
745 event.Enable(m_rightBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
746 }
747
748
749 /*!
750 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_TOP
751 */
752
753 void wxRichTextBordersPage::OnRichtextBorderTopUpdate( wxUpdateUIEvent& event )
754 {
755 event.Enable(m_topBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
756 }
757
758 /*!
759 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_BOTTOM
760 */
761
762 void wxRichTextBordersPage::OnRichtextBorderBottomUpdate( wxUpdateUIEvent& event )
763 {
764 event.Enable(m_bottomBorderCheckbox->Get3StateValue() == wxCHK_CHECKED);
765 }
766
767
768 /*!
769 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_LEFT
770 */
771
772 void wxRichTextBordersPage::OnRichtextOutlineLeftUpdate( wxUpdateUIEvent& event )
773 {
774 event.Enable(m_leftOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
775 }
776
777
778 /*!
779 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_RIGHT
780 */
781
782 void wxRichTextBordersPage::OnRichtextOutlineRightUpdate( wxUpdateUIEvent& event )
783 {
784 event.Enable(m_rightOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
785 }
786
787
788 /*!
789 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_TOP
790 */
791
792 void wxRichTextBordersPage::OnRichtextOutlineTopUpdate( wxUpdateUIEvent& event )
793 {
794 event.Enable(m_topOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
795 }
796
797
798 /*!
799 * wxEVT_UPDATE_UI event handler for ID_RICHTEXT_OUTLINE_BOTTOM
800 */
801
802 void wxRichTextBordersPage::OnRichtextOutlineBottomUpdate( wxUpdateUIEvent& event )
803 {
804 event.Enable(m_bottomOutlineCheckbox->Get3StateValue() == wxCHK_CHECKED);
805 }
806
807 /*!
808 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_BORDER_LEFT_CHECKBOX
809 */
810
811 void wxRichTextBordersPage::OnRichtextBorderCheckboxClick( wxCommandEvent& event )
812 {
813 if (m_ignoreUpdates)
814 return;
815
816 m_ignoreUpdates = true;
817 wxCheckBox* checkBox = NULL;
818 wxComboBox* comboBox = NULL;
819 if (event.GetId() == ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX)
820 {
821 checkBox = m_leftOutlineCheckbox;
822 comboBox = m_leftOutlineStyle;
823 }
824 else if (event.GetId() == ID_RICHTEXT_OUTLINE_TOP_CHECKBOX)
825 {
826 checkBox = m_topOutlineCheckbox;
827 comboBox = m_topOutlineStyle;
828 }
829 else if (event.GetId() == ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX)
830 {
831 checkBox = m_rightOutlineCheckbox;
832 comboBox = m_rightOutlineStyle;
833 }
834 else if (event.GetId() == ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX)
835 {
836 checkBox = m_bottomOutlineCheckbox;
837 comboBox = m_bottomOutlineStyle;
838 }
839 else if (event.GetId() == ID_RICHTEXT_BORDER_LEFT_CHECKBOX)
840 {
841 checkBox = m_leftBorderCheckbox;
842 comboBox = m_leftBorderStyle;
843 }
844 else if (event.GetId() == ID_RICHTEXT_BORDER_TOP_CHECKBOX)
845 {
846 checkBox = m_topBorderCheckbox;
847 comboBox = m_topBorderStyle;
848 }
849 else if (event.GetId() == ID_RICHTEXT_BORDER_RIGHT_CHECKBOX)
850 {
851 checkBox = m_rightBorderCheckbox;
852 comboBox = m_rightBorderStyle;
853 }
854 else if (event.GetId() == ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX)
855 {
856 checkBox = m_bottomBorderCheckbox;
857 comboBox = m_bottomBorderStyle;
858 }
859
860 if (checkBox && comboBox)
861 {
862 if (checkBox->Get3StateValue() == wxCHK_UNCHECKED || checkBox->Get3StateValue() == wxCHK_UNDETERMINED)
863 comboBox->SetSelection(0);
864 else
865 comboBox->SetSelection(1);
866
867 TransferDataFromWindow();
868 m_borderPreviewCtrl->Refresh();
869 }
870
871 m_ignoreUpdates = false;
872 }
873
874 BEGIN_EVENT_TABLE(wxRichTextBorderPreviewCtrl, wxWindow)
875 EVT_PAINT(wxRichTextBorderPreviewCtrl::OnPaint)
876 END_EVENT_TABLE()
877
878 wxRichTextBorderPreviewCtrl::wxRichTextBorderPreviewCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& sz, long style)
879 {
880 if ((style & wxBORDER_MASK) == wxBORDER_DEFAULT)
881 style |= wxBORDER_THEME;
882
883 m_attributes = NULL;
884
885 wxWindow::Create(parent, id, pos, sz, style);
886 SetBackgroundColour(*wxWHITE);
887 }
888
889 void wxRichTextBorderPreviewCtrl::OnPaint(wxPaintEvent& WXUNUSED(event))
890 {
891 wxPaintDC dc(this);
892
893 if (m_attributes)
894 {
895 wxRect rect = GetClientRect();
896
897 int margin = 10;
898 rect.x += margin;
899 rect.y += margin;
900 rect.width -= 2*margin;
901 rect.height -= 2*margin;
902
903 wxRichTextObject::DrawBorder(dc, NULL, m_attributes->GetTextBoxAttr().GetOutline(), rect);
904
905 rect.x += margin;
906 rect.y += margin;
907 rect.width -= 2*margin;
908 rect.height -= 2*margin;
909
910 wxRichTextObject::DrawBorder(dc, NULL, m_attributes->GetTextBoxAttr().GetBorder(), rect);
911 }
912 }