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