1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextfontpage.cpp
3 // Purpose: Font page for wxRichTextFormattingDialog
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 2006-10-02
7 // Copyright: (c) Julian Smart
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #include "wx/richtext/richtextfontpage.h"
12
13 /*!
14 * wxRichTextFontPage type definition
15 */
16
IMPLEMENT_DYNAMIC_CLASS(wxRichTextFontPage,wxRichTextDialogPage)17 IMPLEMENT_DYNAMIC_CLASS( wxRichTextFontPage, wxRichTextDialogPage )
18
19 /*!
20 * wxRichTextFontPage event table definition
21 */
22
23 BEGIN_EVENT_TABLE( wxRichTextFontPage, wxRichTextDialogPage )
24 EVT_LISTBOX( ID_RICHTEXTFONTPAGE_FACELISTBOX, wxRichTextFontPage::OnFaceListBoxSelected )
25 EVT_BUTTON( ID_RICHTEXTFONTPAGE_COLOURCTRL, wxRichTextFontPage::OnColourClicked )
26 EVT_BUTTON( ID_RICHTEXTFONTPAGE_BGCOLOURCTRL, wxRichTextFontPage::OnColourClicked )
27
28 ////@begin wxRichTextFontPage event table entries
29 EVT_IDLE( wxRichTextFontPage::OnIdle )
30
31 EVT_TEXT( ID_RICHTEXTFONTPAGE_FACETEXTCTRL, wxRichTextFontPage::OnFaceTextCtrlUpdated )
32
33 EVT_TEXT( ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, wxRichTextFontPage::OnSizeTextCtrlUpdated )
34
35 EVT_SPIN_UP( ID_RICHTEXTFONTPAGE_SPINBUTTONS, wxRichTextFontPage::OnRichtextfontpageSpinbuttonsUp )
36 EVT_SPIN_DOWN( ID_RICHTEXTFONTPAGE_SPINBUTTONS, wxRichTextFontPage::OnRichtextfontpageSpinbuttonsDown )
37
38 EVT_CHOICE( ID_RICHTEXTFONTPAGE_SIZE_UNITS, wxRichTextFontPage::OnRichtextfontpageSizeUnitsSelected )
39
40 EVT_LISTBOX( ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxRichTextFontPage::OnSizeListBoxSelected )
41
42 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_STYLECTRL, wxRichTextFontPage::OnStyleCtrlSelected )
43
44 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_WEIGHTCTRL, wxRichTextFontPage::OnWeightCtrlSelected )
45
46 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, wxRichTextFontPage::OnUnderliningCtrlSelected )
47
48 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_COLOURCTRL_LABEL, wxRichTextFontPage::OnUnderliningCtrlSelected )
49
50 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_BGCOLOURCTRL_LABEL, wxRichTextFontPage::OnUnderliningCtrlSelected )
51
52 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, wxRichTextFontPage::OnStrikethroughctrlClick )
53
54 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_CAPSCTRL, wxRichTextFontPage::OnCapsctrlClick )
55
56 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_SMALLCAPSCTRL, wxRichTextFontPage::OnCapsctrlClick )
57
58 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_SUPERSCRIPT, wxRichTextFontPage::OnRichtextfontpageSuperscriptClick )
59
60 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_SUBSCRIPT, wxRichTextFontPage::OnRichtextfontpageSubscriptClick )
61
62 ////@end wxRichTextFontPage event table entries
63
64 END_EVENT_TABLE()
65
66 IMPLEMENT_HELP_PROVISION(wxRichTextFontPage)
67 /*!
68 * wxRichTextFontPage constructors
69 */
70
71 wxRichTextFontPage::wxRichTextFontPage( )
72 {
73 Init();
74 }
75
wxRichTextFontPage(wxWindow * parent,wxWindowID id,const wxPoint & pos,const wxSize & size,long style)76 wxRichTextFontPage::wxRichTextFontPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
77 {
78 Init();
79 Create(parent, id, pos, size, style);
80 }
81
82 /*!
83 * Initialise members
84 */
85
Init()86 void wxRichTextFontPage::Init()
87 {
88 m_dontUpdate = false;
89 m_colourPresent = false;
90 m_bgColourPresent = false;
91
92 ////@begin wxRichTextFontPage member initialisation
93 m_faceTextCtrl = NULL;
94 m_sizeTextCtrl = NULL;
95 m_fontSizeSpinButtons = NULL;
96 m_sizeUnitsCtrl = NULL;
97 m_fontListBoxParent = NULL;
98 m_faceListBox = NULL;
99 m_sizeListBox = NULL;
100 m_styleCtrl = NULL;
101 m_weightCtrl = NULL;
102 m_underliningCtrl = NULL;
103 m_textColourLabel = NULL;
104 m_colourCtrl = NULL;
105 m_bgColourLabel = NULL;
106 m_bgColourCtrl = NULL;
107 m_strikethroughCtrl = NULL;
108 m_capitalsCtrl = NULL;
109 m_smallCapitalsCtrl = NULL;
110 m_superscriptCtrl = NULL;
111 m_subscriptCtrl = NULL;
112 m_previewCtrl = NULL;
113 ////@end wxRichTextFontPage member initialisation
114 }
115
116 /*!
117 * wxRichTextFontPage creator
118 */
119
Create(wxWindow * parent,wxWindowID id,const wxPoint & pos,const wxSize & size,long style)120 bool wxRichTextFontPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
121 {
122 ////@begin wxRichTextFontPage creation
123 wxRichTextDialogPage::Create( parent, id, pos, size, style );
124
125 CreateControls();
126 if (GetSizer())
127 {
128 GetSizer()->SetSizeHints(this);
129 }
130 Centre();
131 ////@end wxRichTextFontPage creation
132 return true;
133 }
134
135 /*!
136 * Control creation for wxRichTextFontPage
137 */
138
CreateControls()139 void wxRichTextFontPage::CreateControls()
140 {
141 ////@begin wxRichTextFontPage content construction
142 wxRichTextFontPage* itemRichTextDialogPage1 = this;
143
144 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
145 itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
146
147 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
148 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
149
150 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
151 itemBoxSizer3->Add(itemBoxSizer4, 1, wxGROW, 5);
152
153 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
154 itemBoxSizer4->Add(itemBoxSizer5, 1, wxGROW, 5);
155
156 wxStaticText* itemStaticText6 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Font:"), wxDefaultPosition, wxDefaultSize, 0 );
157 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
158
159 m_faceTextCtrl = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_FACETEXTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
160 m_faceTextCtrl->SetHelpText(_("Type a font name."));
161 if (wxRichTextFontPage::ShowToolTips())
162 m_faceTextCtrl->SetToolTip(_("Type a font name."));
163 itemBoxSizer5->Add(m_faceTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
164
165 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL);
166 itemBoxSizer4->Add(itemBoxSizer8, 0, wxGROW, 5);
167
168 wxStaticText* itemStaticText9 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Size:"), wxDefaultPosition, wxDefaultSize, 0 );
169 itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
170
171 wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxHORIZONTAL);
172 itemBoxSizer8->Add(itemBoxSizer10, 0, wxGROW, 5);
173
174 m_sizeTextCtrl = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
175 m_sizeTextCtrl->SetHelpText(_("Type a size in points."));
176 if (wxRichTextFontPage::ShowToolTips())
177 m_sizeTextCtrl->SetToolTip(_("Type a size in points."));
178 itemBoxSizer10->Add(m_sizeTextCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5);
179
180 m_fontSizeSpinButtons = new wxSpinButton( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SPINBUTTONS, wxDefaultPosition, wxSize(-1, 20), wxSP_VERTICAL );
181 m_fontSizeSpinButtons->SetRange(0, 100);
182 m_fontSizeSpinButtons->SetValue(0);
183 itemBoxSizer10->Add(m_fontSizeSpinButtons, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5);
184
185 wxArrayString m_sizeUnitsCtrlStrings;
186 m_sizeUnitsCtrlStrings.Add(_("pt"));
187 m_sizeUnitsCtrlStrings.Add(_("px"));
188 m_sizeUnitsCtrl = new wxChoice( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SIZE_UNITS, wxDefaultPosition, wxDefaultSize, m_sizeUnitsCtrlStrings, 0 );
189 m_sizeUnitsCtrl->SetStringSelection(_("pt"));
190 m_sizeUnitsCtrl->SetHelpText(_("The font size units, points or pixels."));
191 if (wxRichTextFontPage::ShowToolTips())
192 m_sizeUnitsCtrl->SetToolTip(_("The font size units, points or pixels."));
193 itemBoxSizer10->Add(m_sizeUnitsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5);
194
195 m_fontListBoxParent = new wxBoxSizer(wxHORIZONTAL);
196 itemBoxSizer3->Add(m_fontListBoxParent, 0, wxGROW, 5);
197
198 m_faceListBox = new wxRichTextFontListBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_FACELISTBOX, wxDefaultPosition, wxSize(200, 100), 0 );
199 m_faceListBox->SetHelpText(_("Lists the available fonts."));
200 if (wxRichTextFontPage::ShowToolTips())
201 m_faceListBox->SetToolTip(_("Lists the available fonts."));
202 m_fontListBoxParent->Add(m_faceListBox, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxFIXED_MINSIZE, 5);
203
204 wxArrayString m_sizeListBoxStrings;
205 m_sizeListBox = new wxListBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxDefaultPosition, wxSize(50, -1), m_sizeListBoxStrings, wxLB_SINGLE );
206 m_sizeListBox->SetHelpText(_("Lists font sizes in points."));
207 if (wxRichTextFontPage::ShowToolTips())
208 m_sizeListBox->SetToolTip(_("Lists font sizes in points."));
209 m_fontListBoxParent->Add(m_sizeListBox, 0, wxGROW|wxALL|wxFIXED_MINSIZE, 5);
210
211 wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxHORIZONTAL);
212 itemBoxSizer3->Add(itemBoxSizer17, 0, wxGROW, 5);
213
214 wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
215 itemBoxSizer17->Add(itemBoxSizer18, 0, wxGROW, 5);
216
217 wxStaticText* itemStaticText19 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Font st&yle:"), wxDefaultPosition, wxDefaultSize, 0 );
218 itemBoxSizer18->Add(itemStaticText19, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
219
220 wxArrayString m_styleCtrlStrings;
221 m_styleCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_STYLECTRL, wxEmptyString, wxDefaultPosition, wxSize(110, -1), m_styleCtrlStrings, wxCB_READONLY );
222 m_styleCtrl->SetHelpText(_("Select regular or italic style."));
223 if (wxRichTextFontPage::ShowToolTips())
224 m_styleCtrl->SetToolTip(_("Select regular or italic style."));
225 itemBoxSizer18->Add(m_styleCtrl, 0, wxGROW|wxALL, 5);
226
227 wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL);
228 itemBoxSizer17->Add(itemBoxSizer21, 0, wxGROW, 5);
229
230 wxStaticText* itemStaticText22 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Font &weight:"), wxDefaultPosition, wxDefaultSize, 0 );
231 itemBoxSizer21->Add(itemStaticText22, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
232
233 wxArrayString m_weightCtrlStrings;
234 m_weightCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_WEIGHTCTRL, wxEmptyString, wxDefaultPosition, wxSize(110, -1), m_weightCtrlStrings, wxCB_READONLY );
235 m_weightCtrl->SetHelpText(_("Select regular or bold."));
236 if (wxRichTextFontPage::ShowToolTips())
237 m_weightCtrl->SetToolTip(_("Select regular or bold."));
238 itemBoxSizer21->Add(m_weightCtrl, 0, wxGROW|wxALL, 5);
239
240 wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxVERTICAL);
241 itemBoxSizer17->Add(itemBoxSizer24, 0, wxGROW, 5);
242
243 wxStaticText* itemStaticText25 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Underlining:"), wxDefaultPosition, wxDefaultSize, 0 );
244 itemBoxSizer24->Add(itemStaticText25, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
245
246 wxArrayString m_underliningCtrlStrings;
247 m_underliningCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, wxEmptyString, wxDefaultPosition, wxSize(110, -1), m_underliningCtrlStrings, wxCB_READONLY );
248 m_underliningCtrl->SetHelpText(_("Select underlining or no underlining."));
249 if (wxRichTextFontPage::ShowToolTips())
250 m_underliningCtrl->SetToolTip(_("Select underlining or no underlining."));
251 itemBoxSizer24->Add(m_underliningCtrl, 0, wxGROW|wxALL, 5);
252
253 itemBoxSizer17->Add(0, 0, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5);
254
255 wxBoxSizer* itemBoxSizer28 = new wxBoxSizer(wxVERTICAL);
256 itemBoxSizer17->Add(itemBoxSizer28, 0, wxGROW, 5);
257
258 m_textColourLabel = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_COLOURCTRL_LABEL, _("&Colour:"), wxDefaultPosition, wxDefaultSize, 0 );
259 m_textColourLabel->SetValue(false);
260 itemBoxSizer28->Add(m_textColourLabel, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxTOP, 5);
261
262 m_colourCtrl = new wxRichTextColourSwatchCtrl( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_COLOURCTRL, wxDefaultPosition, wxSize(40, 20), 0 );
263 m_colourCtrl->SetHelpText(_("Click to change the text colour."));
264 if (wxRichTextFontPage::ShowToolTips())
265 m_colourCtrl->SetToolTip(_("Click to change the text colour."));
266 itemBoxSizer28->Add(m_colourCtrl, 0, wxGROW|wxALL, 5);
267
268 wxBoxSizer* itemBoxSizer31 = new wxBoxSizer(wxVERTICAL);
269 itemBoxSizer17->Add(itemBoxSizer31, 0, wxGROW, 5);
270
271 m_bgColourLabel = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_BGCOLOURCTRL_LABEL, _("&Bg colour:"), wxDefaultPosition, wxDefaultSize, 0 );
272 m_bgColourLabel->SetValue(false);
273 itemBoxSizer31->Add(m_bgColourLabel, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxTOP, 5);
274
275 m_bgColourCtrl = new wxRichTextColourSwatchCtrl( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_BGCOLOURCTRL, wxDefaultPosition, wxSize(40, 20), 0 );
276 m_bgColourCtrl->SetHelpText(_("Click to change the text background colour."));
277 if (wxRichTextFontPage::ShowToolTips())
278 m_bgColourCtrl->SetToolTip(_("Click to change the text background colour."));
279 itemBoxSizer31->Add(m_bgColourCtrl, 0, wxGROW|wxALL, 5);
280
281 wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxHORIZONTAL);
282 itemBoxSizer3->Add(itemBoxSizer34, 0, wxGROW, 5);
283
284 m_strikethroughCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, _("&Strikethrough"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
285 m_strikethroughCtrl->SetValue(false);
286 m_strikethroughCtrl->SetHelpText(_("Check to show a line through the text."));
287 if (wxRichTextFontPage::ShowToolTips())
288 m_strikethroughCtrl->SetToolTip(_("Check to show a line through the text."));
289 itemBoxSizer34->Add(m_strikethroughCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
290
291 m_capitalsCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_CAPSCTRL, _("Ca&pitals"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
292 m_capitalsCtrl->SetValue(false);
293 m_capitalsCtrl->SetHelpText(_("Check to show the text in capitals."));
294 if (wxRichTextFontPage::ShowToolTips())
295 m_capitalsCtrl->SetToolTip(_("Check to show the text in capitals."));
296 itemBoxSizer34->Add(m_capitalsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
297
298 m_smallCapitalsCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SMALLCAPSCTRL, _("Small C&apitals"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
299 m_smallCapitalsCtrl->SetValue(false);
300 m_smallCapitalsCtrl->SetHelpText(_("Check to show the text in small capitals."));
301 if (wxRichTextFontPage::ShowToolTips())
302 m_smallCapitalsCtrl->SetToolTip(_("Check to show the text in small capitals."));
303 itemBoxSizer34->Add(m_smallCapitalsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
304
305 m_superscriptCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SUPERSCRIPT, _("Supe&rscript"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
306 m_superscriptCtrl->SetValue(false);
307 m_superscriptCtrl->SetHelpText(_("Check to show the text in superscript."));
308 if (wxRichTextFontPage::ShowToolTips())
309 m_superscriptCtrl->SetToolTip(_("Check to show the text in superscript."));
310 itemBoxSizer34->Add(m_superscriptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
311
312 m_subscriptCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_SUBSCRIPT, _("Subscrip&t"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
313 m_subscriptCtrl->SetValue(false);
314 m_subscriptCtrl->SetHelpText(_("Check to show the text in subscript."));
315 if (wxRichTextFontPage::ShowToolTips())
316 m_subscriptCtrl->SetToolTip(_("Check to show the text in subscript."));
317 itemBoxSizer34->Add(m_subscriptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
318
319 itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
320
321 m_previewCtrl = new wxRichTextFontPreviewCtrl( itemRichTextDialogPage1, ID_RICHTEXTFONTPAGE_PREVIEWCTRL, wxDefaultPosition, wxSize(100, 60), 0 );
322 m_previewCtrl->SetHelpText(_("Shows a preview of the font settings."));
323 if (wxRichTextFontPage::ShowToolTips())
324 m_previewCtrl->SetToolTip(_("Shows a preview of the font settings."));
325 itemBoxSizer3->Add(m_previewCtrl, 0, wxGROW|wxALL, 5);
326
327 ////@end wxRichTextFontPage content construction
328
329 m_fontSizeSpinButtons->SetRange(0, 999);
330
331 m_faceListBox->UpdateFonts();
332
333 m_styleCtrl->Append(_("(none)"));
334 m_styleCtrl->Append(_("Regular"));
335 m_styleCtrl->Append(_("Italic"));
336
337 m_weightCtrl->Append(_("(none)"));
338 m_weightCtrl->Append(_("Regular"));
339 m_weightCtrl->Append(_("Bold"));
340
341 m_underliningCtrl->Append(_("(none)"));
342 m_underliningCtrl->Append(_("Not underlined"));
343 m_underliningCtrl->Append(_("Underlined"));
344
345 wxString nStr;
346 int i;
347 for (i = 8; i < 40; i++)
348 {
349 nStr.Printf(wxT("%d"), i);
350 m_sizeListBox->Append(nStr);
351 }
352 m_sizeListBox->Append(wxT("48"));
353 m_sizeListBox->Append(wxT("72"));
354 }
355
356 /// Transfer data from/to window
TransferDataFromWindow()357 bool wxRichTextFontPage::TransferDataFromWindow()
358 {
359 wxPanel::TransferDataFromWindow();
360
361 wxRichTextAttr* attr = GetAttributes();
362
363 if (!m_faceTextCtrl->GetValue().IsEmpty())
364 {
365 wxString faceName = m_faceTextCtrl->GetValue();
366 attr->SetFontFaceName(faceName);
367 }
368 else
369 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_FACE));
370
371 wxString strSize = m_sizeTextCtrl->GetValue();
372 if (!strSize.IsEmpty())
373 {
374 int sz = wxAtoi(strSize);
375 if (sz > 0)
376 {
377 if (m_sizeUnitsCtrl->GetSelection() == 0)
378 attr->SetFontPointSize(sz);
379 else
380 attr->SetFontPixelSize(sz);
381 }
382 }
383 else
384 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_SIZE));
385
386 if (m_styleCtrl->GetSelection() != wxNOT_FOUND && m_styleCtrl->GetSelection() != 0)
387 {
388 wxFontStyle style;
389 if (m_styleCtrl->GetSelection() == 2)
390 style = wxFONTSTYLE_ITALIC;
391 else
392 style = wxFONTSTYLE_NORMAL;
393
394 attr->SetFontStyle(style);
395 }
396 else
397 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_ITALIC));
398
399 if (m_weightCtrl->GetSelection() != wxNOT_FOUND && m_weightCtrl->GetSelection() != 0)
400 {
401 wxFontWeight weight;
402 if (m_weightCtrl->GetSelection() == 2)
403 weight = wxFONTWEIGHT_BOLD;
404 else
405 weight = wxFONTWEIGHT_NORMAL;
406
407 attr->SetFontWeight(weight);
408 }
409 else
410 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_WEIGHT));
411
412 if (m_underliningCtrl->GetSelection() != wxNOT_FOUND && m_underliningCtrl->GetSelection() != 0)
413 {
414 bool underlined;
415 if (m_underliningCtrl->GetSelection() == 2)
416 underlined = true;
417 else
418 underlined = false;
419
420 attr->SetFontUnderlined(underlined);
421 }
422 else
423 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_UNDERLINE));
424
425 if (m_textColourLabel->GetValue())
426 {
427 attr->SetTextColour(m_colourCtrl->GetColour());
428 }
429 else
430 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_TEXT_COLOUR));
431
432 if (m_bgColourLabel->GetValue())
433 {
434 attr->SetBackgroundColour(m_bgColourCtrl->GetColour());
435 }
436 else
437 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_BACKGROUND_COLOUR));
438
439 if (m_strikethroughCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
440 {
441 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
442
443 if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
444 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
445 else
446 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
447 }
448 else
449 {
450 attr->SetTextEffectFlags(attr->GetTextEffectFlags() & ~wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
451 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
452 }
453
454 if (m_capitalsCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
455 {
456 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_CAPITALS);
457
458 if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
459 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_CAPITALS);
460 else
461 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_CAPITALS);
462 }
463 else
464 {
465 attr->SetTextEffectFlags(attr->GetTextEffectFlags() & ~wxTEXT_ATTR_EFFECT_CAPITALS);
466 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_CAPITALS);
467 }
468
469 if (m_smallCapitalsCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
470 {
471 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_SMALL_CAPITALS);
472
473 if (m_smallCapitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
474 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_SMALL_CAPITALS);
475 else
476 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SMALL_CAPITALS);
477 }
478 else
479 {
480 attr->SetTextEffectFlags(attr->GetTextEffectFlags() & ~wxTEXT_ATTR_EFFECT_SMALL_CAPITALS);
481 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SMALL_CAPITALS);
482 }
483
484 if (m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
485 {
486 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
487 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
488 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SUBSCRIPT);
489 }
490 else if (m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
491 {
492 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_SUBSCRIPT);
493 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_SUBSCRIPT);
494 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_SUPERSCRIPT);
495 }
496 else
497 {
498 // If they are undetermined, we don't want to include these flags in the text effects - the objects
499 // should retain their original style.
500 attr->SetTextEffectFlags(attr->GetTextEffectFlags() & ~(wxTEXT_ATTR_EFFECT_SUBSCRIPT|wxTEXT_ATTR_EFFECT_SUPERSCRIPT) );
501 attr->SetTextEffects(attr->GetTextEffects() & ~(wxTEXT_ATTR_EFFECT_SUBSCRIPT|wxTEXT_ATTR_EFFECT_SUPERSCRIPT) );
502 }
503
504 if (attr->GetTextEffectFlags() == 0)
505 attr->SetFlags(attr->GetFlags() & ~wxTEXT_ATTR_EFFECTS);
506
507 return true;
508 }
509
TransferDataToWindow()510 bool wxRichTextFontPage::TransferDataToWindow()
511 {
512 wxPanel::TransferDataToWindow();
513
514 m_dontUpdate = true;
515 wxRichTextAttr* attr = GetAttributes();
516
517 if (attr->HasFontFaceName())
518 {
519 m_faceTextCtrl->SetValue(attr->GetFontFaceName());
520 m_faceListBox->SetFaceNameSelection(attr->GetFont().GetFaceName());
521 }
522 else
523 {
524 m_faceTextCtrl->SetValue(wxEmptyString);
525 m_faceListBox->SetFaceNameSelection(wxEmptyString);
526 }
527
528 if (attr->HasFontPointSize())
529 {
530 wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
531 m_sizeTextCtrl->SetValue(strSize);
532 m_fontSizeSpinButtons->SetValue(attr->GetFontSize());
533 m_sizeUnitsCtrl->SetSelection(0);
534 if (m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
535 m_sizeListBox->SetStringSelection(strSize);
536 }
537 else if (attr->HasFontPixelSize())
538 {
539 wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
540 m_sizeTextCtrl->SetValue(strSize);
541 m_fontSizeSpinButtons->SetValue(attr->GetFontSize());
542 m_sizeUnitsCtrl->SetSelection(1);
543 m_sizeListBox->SetSelection(wxNOT_FOUND);
544 }
545 else
546 {
547 m_sizeTextCtrl->SetValue(wxEmptyString);
548 m_sizeListBox->SetSelection(wxNOT_FOUND);
549 }
550
551 if (attr->HasFontWeight())
552 {
553 if (attr->GetFontWeight() == wxFONTWEIGHT_BOLD)
554 m_weightCtrl->SetSelection(2);
555 else
556 m_weightCtrl->SetSelection(1);
557 }
558 else
559 {
560 m_weightCtrl->SetSelection(0);
561 }
562
563 if (attr->HasFontItalic())
564 {
565 if (attr->GetFontStyle() == wxFONTSTYLE_ITALIC)
566 m_styleCtrl->SetSelection(2);
567 else
568 m_styleCtrl->SetSelection(1);
569 }
570 else
571 {
572 m_styleCtrl->SetSelection(0);
573 }
574
575 if (attr->HasFontUnderlined())
576 {
577 if (attr->GetFontUnderlined())
578 m_underliningCtrl->SetSelection(2);
579 else
580 m_underliningCtrl->SetSelection(1);
581 }
582 else
583 {
584 m_underliningCtrl->SetSelection(0);
585 }
586
587 if (attr->HasTextColour())
588 {
589 m_colourCtrl->SetColour(attr->GetTextColour());
590 m_textColourLabel->SetValue(true);
591 m_colourPresent = true;
592 }
593 else
594 {
595 m_colourCtrl->SetColour(*wxBLACK);
596 m_textColourLabel->SetValue(false);
597 }
598
599 if (attr->HasBackgroundColour())
600 {
601 m_bgColourCtrl->SetColour(attr->GetBackgroundColour());
602 m_bgColourLabel->SetValue(true);
603 m_bgColourPresent = true;
604 }
605 else
606 {
607 m_bgColourCtrl->SetColour(*wxWHITE);
608 m_bgColourLabel->SetValue(false);
609 }
610
611 if (attr->HasTextEffects())
612 {
613 if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
614 {
615 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
616 m_strikethroughCtrl->Set3StateValue(wxCHK_CHECKED);
617 else
618 m_strikethroughCtrl->Set3StateValue(wxCHK_UNCHECKED);
619 }
620 else
621 m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
622
623 if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_CAPITALS)
624 {
625 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_CAPITALS)
626 m_capitalsCtrl->Set3StateValue(wxCHK_CHECKED);
627 else
628 m_capitalsCtrl->Set3StateValue(wxCHK_UNCHECKED);
629 }
630 else
631 m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
632
633 if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_SMALL_CAPITALS)
634 {
635 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_SMALL_CAPITALS)
636 m_smallCapitalsCtrl->Set3StateValue(wxCHK_CHECKED);
637 else
638 m_smallCapitalsCtrl->Set3StateValue(wxCHK_UNCHECKED);
639 }
640 else
641 m_smallCapitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
642
643 if ( attr->GetTextEffectFlags() & (wxTEXT_ATTR_EFFECT_SUPERSCRIPT | wxTEXT_ATTR_EFFECT_SUBSCRIPT) )
644 {
645 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_SUPERSCRIPT)
646 {
647 m_superscriptCtrl->Set3StateValue(wxCHK_CHECKED);
648 m_subscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
649 }
650 else if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_SUBSCRIPT)
651 {
652 m_superscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
653 m_subscriptCtrl->Set3StateValue(wxCHK_CHECKED);
654 }
655 else
656 {
657 m_superscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
658 m_subscriptCtrl->Set3StateValue(wxCHK_UNCHECKED);
659 }
660 }
661 else
662 {
663 m_superscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
664 m_subscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
665 }
666 }
667 else
668 {
669 m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
670 m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
671 m_smallCapitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
672 m_superscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
673 m_subscriptCtrl->Set3StateValue(wxCHK_UNDETERMINED);
674 }
675
676 UpdatePreview();
677
678 m_dontUpdate = false;
679
680 return true;
681 }
682
GetAttributes()683 wxRichTextAttr* wxRichTextFontPage::GetAttributes()
684 {
685 return wxRichTextFormattingDialog::GetDialogAttributes(this);
686 }
687
688 /// Updates the font preview
UpdatePreview()689 void wxRichTextFontPage::UpdatePreview()
690 {
691 wxRichTextAttr attr;
692
693 if (m_textColourLabel->GetValue())
694 m_previewCtrl->SetForegroundColour(m_colourCtrl->GetColour());
695 else
696 {
697 m_previewCtrl->SetForegroundColour(*wxBLACK);
698 if (!(m_colourCtrl->GetColour() == *wxBLACK))
699 {
700 m_colourCtrl->SetColour(*wxBLACK);
701 m_colourCtrl->Refresh();
702 }
703 }
704
705 if (m_bgColourLabel->GetValue())
706 m_previewCtrl->SetBackgroundColour(m_bgColourCtrl->GetColour());
707 else
708 {
709 m_previewCtrl->SetBackgroundColour(*wxWHITE);
710
711 if (!(m_bgColourCtrl->GetColour() == *wxWHITE))
712 {
713 m_bgColourCtrl->SetColour(*wxWHITE);
714 m_bgColourCtrl->Refresh();
715 }
716 }
717
718 if (m_faceListBox->GetSelection() != wxNOT_FOUND)
719 {
720 wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
721 attr.SetFontFaceName(faceName);
722 }
723
724 wxString strSize = m_sizeTextCtrl->GetValue();
725 if (!strSize.IsEmpty())
726 {
727 int sz = wxAtoi(strSize);
728 if (sz > 0)
729 {
730 if (m_sizeUnitsCtrl->GetSelection() == 1)
731 attr.SetFontPixelSize(sz);
732 else
733 attr.SetFontPointSize(sz);
734 }
735 }
736
737 if (m_styleCtrl->GetSelection() != wxNOT_FOUND && m_styleCtrl->GetSelection() != 0)
738 {
739 wxFontStyle style;
740 if (m_styleCtrl->GetSelection() == 2)
741 style = wxFONTSTYLE_ITALIC;
742 else
743 style = wxFONTSTYLE_NORMAL;
744
745 attr.SetFontStyle(style);
746 }
747
748 if (m_weightCtrl->GetSelection() != wxNOT_FOUND && m_weightCtrl->GetSelection() != 0)
749 {
750 wxFontWeight weight;
751 if (m_weightCtrl->GetSelection() == 2)
752 weight = wxFONTWEIGHT_BOLD;
753 else
754 weight = wxFONTWEIGHT_NORMAL;
755
756 attr.SetFontWeight(weight);
757 }
758
759 if (m_underliningCtrl->GetSelection() != wxNOT_FOUND && m_underliningCtrl->GetSelection() != 0)
760 {
761 bool underlined;
762 if (m_underliningCtrl->GetSelection() == 2)
763 underlined = true;
764 else
765 underlined = false;
766
767 attr.SetFontUnderlined(underlined);
768 }
769
770 int textEffects = 0;
771
772 if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
773 {
774 textEffects |= wxTEXT_ATTR_EFFECT_STRIKETHROUGH;
775 }
776
777 if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
778 {
779 textEffects |= wxTEXT_ATTR_EFFECT_CAPITALS;
780 }
781
782 if (m_smallCapitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
783 {
784 textEffects |= wxTEXT_ATTR_EFFECT_SMALL_CAPITALS;
785 }
786
787 if ( m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED )
788 textEffects |= wxTEXT_ATTR_EFFECT_SUPERSCRIPT;
789 else if ( m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED )
790 textEffects |= wxTEXT_ATTR_EFFECT_SUBSCRIPT;
791
792 wxFont font = attr.GetFont();
793 m_previewCtrl->SetFont(font);
794 m_previewCtrl->SetTextEffects(textEffects);
795 m_previewCtrl->Refresh();
796 }
797
798 /*!
799 * Should we show tooltips?
800 */
801
ShowToolTips()802 bool wxRichTextFontPage::ShowToolTips()
803 {
804 return wxRichTextFormattingDialog::ShowToolTips();
805 }
806
807 /*!
808 * Get bitmap resources
809 */
810
GetBitmapResource(const wxString & name)811 wxBitmap wxRichTextFontPage::GetBitmapResource( const wxString& name )
812 {
813 // Bitmap retrieval
814 ////@begin wxRichTextFontPage bitmap retrieval
815 wxUnusedVar(name);
816 return wxNullBitmap;
817 ////@end wxRichTextFontPage bitmap retrieval
818 }
819
820 /*!
821 * Get icon resources
822 */
823
GetIconResource(const wxString & name)824 wxIcon wxRichTextFontPage::GetIconResource( const wxString& name )
825 {
826 // Icon retrieval
827 ////@begin wxRichTextFontPage icon retrieval
828 wxUnusedVar(name);
829 return wxNullIcon;
830 ////@end wxRichTextFontPage icon retrieval
831 }
832
833 /*!
834 * wxEVT_TEXT event handler for ID_RICHTEXTFONTPAGE_FACETEXTCTRL
835 */
836
OnFaceTextCtrlUpdated(wxCommandEvent & WXUNUSED (event))837 void wxRichTextFontPage::OnFaceTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
838 {
839 if (m_dontUpdate)
840 return;
841
842 wxString facename = m_faceTextCtrl->GetValue();
843 if (!facename.IsEmpty())
844 {
845 if (m_faceListBox->HasFaceName(facename))
846 {
847 m_faceListBox->SetFaceNameSelection(facename);
848 UpdatePreview();
849 }
850 else
851 {
852 // Try to find a partial match
853 const wxArrayString& arr = m_faceListBox->GetFaceNames();
854 size_t i;
855 for (i = 0; i < arr.GetCount(); i++)
856 {
857 if (arr[i].Mid(0, facename.Length()).Lower() == facename.Lower())
858 {
859 m_faceListBox->ScrollToRow(i);
860 break;
861 }
862 }
863 }
864 }
865 }
866
867
868 /*!
869 * wxEVT_TEXT event handler for ID_RICHTEXTFONTPAGE_SIZETEXTCTRL
870 */
871
OnSizeTextCtrlUpdated(wxCommandEvent & WXUNUSED (event))872 void wxRichTextFontPage::OnSizeTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
873 {
874 if (m_dontUpdate)
875 return;
876
877 m_dontUpdate = true;
878
879 wxString strSize = m_sizeTextCtrl->GetValue();
880 if (!strSize.IsEmpty() && m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
881 m_sizeListBox->SetStringSelection(strSize);
882 if (!strSize.IsEmpty())
883 m_fontSizeSpinButtons->SetValue(wxAtoi(strSize));
884
885 m_dontUpdate = false;
886
887 UpdatePreview();
888 }
889
890
891 /*!
892 * wxEVT_LISTBOX event handler for ID_RICHTEXTFONTPAGE_SIZELISTBOX
893 */
894
OnSizeListBoxSelected(wxCommandEvent & event)895 void wxRichTextFontPage::OnSizeListBoxSelected( wxCommandEvent& event )
896 {
897 bool oldDontUpdate = m_dontUpdate;
898 m_dontUpdate = true;
899
900 m_sizeTextCtrl->SetValue(event.GetString());
901 if (!event.GetString().IsEmpty())
902 m_fontSizeSpinButtons->SetValue(wxAtoi(event.GetString()));
903
904 m_dontUpdate = oldDontUpdate;
905
906 if (m_dontUpdate)
907 return;
908
909 UpdatePreview();
910 }
911
912 /*!
913 * wxEVT_LISTBOX event handler for ID_RICHTEXTFONTPAGE_FACELISTBOX
914 */
915
OnFaceListBoxSelected(wxCommandEvent & WXUNUSED (event))916 void wxRichTextFontPage::OnFaceListBoxSelected( wxCommandEvent& WXUNUSED(event) )
917 {
918 bool oldDontUpdate = m_dontUpdate;
919 m_dontUpdate = true;
920
921 m_faceTextCtrl->SetValue(m_faceListBox->GetFaceName(m_faceListBox->GetSelection()));
922
923 m_dontUpdate = oldDontUpdate;
924
925 if (m_dontUpdate)
926 return;
927
928 UpdatePreview();
929 }
930
931 /*!
932 * wxEVT_COMBOBOX event handler for ID_RICHTEXTFONTPAGE_STYLECTRL
933 */
934
OnStyleCtrlSelected(wxCommandEvent & WXUNUSED (event))935 void wxRichTextFontPage::OnStyleCtrlSelected( wxCommandEvent& WXUNUSED(event) )
936 {
937 if (m_dontUpdate)
938 return;
939
940 UpdatePreview();
941 }
942
943
944 /*!
945 * wxEVT_COMBOBOX event handler for ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL
946 */
947
OnUnderliningCtrlSelected(wxCommandEvent & WXUNUSED (event))948 void wxRichTextFontPage::OnUnderliningCtrlSelected( wxCommandEvent& WXUNUSED(event) )
949 {
950 if (m_dontUpdate)
951 return;
952
953 UpdatePreview();
954 }
955
956
957 /*!
958 * wxEVT_COMBOBOX event handler for ID_RICHTEXTFONTPAGE_WEIGHTCTRL
959 */
960
OnWeightCtrlSelected(wxCommandEvent & WXUNUSED (event))961 void wxRichTextFontPage::OnWeightCtrlSelected( wxCommandEvent& WXUNUSED(event) )
962 {
963 if (m_dontUpdate)
964 return;
965
966 UpdatePreview();
967 }
968
OnColourClicked(wxCommandEvent & event)969 void wxRichTextFontPage::OnColourClicked( wxCommandEvent& event )
970 {
971 if (event.GetId() == m_colourCtrl->GetId())
972 m_colourPresent = true;
973 else if (event.GetId() == m_bgColourCtrl->GetId())
974 m_bgColourPresent = true;
975
976 m_dontUpdate = true;
977
978 if (event.GetId() == m_colourCtrl->GetId())
979 {
980 m_textColourLabel->SetValue(true);
981 }
982 else if (event.GetId() == m_bgColourCtrl->GetId())
983 {
984 m_bgColourLabel->SetValue(true);
985 }
986
987 m_dontUpdate = false;
988
989 UpdatePreview();
990 }
991 /*!
992 * wxEVT_CHECKBOX event handler for ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL
993 */
994
OnStrikethroughctrlClick(wxCommandEvent & WXUNUSED (event))995 void wxRichTextFontPage::OnStrikethroughctrlClick( wxCommandEvent& WXUNUSED(event) )
996 {
997 if (m_dontUpdate)
998 return;
999
1000 UpdatePreview();
1001 }
1002
1003 /*!
1004 * wxEVT_CHECKBOX event handler for ID_RICHTEXTFONTPAGE_CAPSCTRL
1005 */
1006
OnCapsctrlClick(wxCommandEvent & WXUNUSED (event))1007 void wxRichTextFontPage::OnCapsctrlClick( wxCommandEvent& WXUNUSED(event) )
1008 {
1009 if (m_dontUpdate)
1010 return;
1011
1012 UpdatePreview();
1013 }
1014
1015 /*!
1016 * wxEVT_CHECKBOX event handler for ID_RICHTEXTFONTPAGE_SUPERSCRIPT
1017 */
1018
OnRichtextfontpageSuperscriptClick(wxCommandEvent & WXUNUSED (event))1019 void wxRichTextFontPage::OnRichtextfontpageSuperscriptClick( wxCommandEvent& WXUNUSED(event) )
1020 {
1021 if (m_dontUpdate)
1022 return;
1023
1024 if ( m_superscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
1025 m_subscriptCtrl->Set3StateValue( wxCHK_UNCHECKED );
1026
1027 UpdatePreview();
1028 }
1029
1030 /*!
1031 * wxEVT_CHECKBOX event handler for ID_RICHTEXTFONTPAGE_SUBSCRIPT
1032 */
1033
OnRichtextfontpageSubscriptClick(wxCommandEvent & WXUNUSED (event))1034 void wxRichTextFontPage::OnRichtextfontpageSubscriptClick( wxCommandEvent& WXUNUSED(event) )
1035 {
1036 if (m_dontUpdate)
1037 return;
1038
1039 if ( m_subscriptCtrl->Get3StateValue() == wxCHK_CHECKED)
1040 m_superscriptCtrl->Set3StateValue( wxCHK_UNCHECKED );
1041
1042 UpdatePreview();
1043 }
1044
1045 /*!
1046 * wxEVT_CHOICE event handler for ID_RICHTEXTFONTPAGE_SIZE_UNITS
1047 */
1048
OnRichtextfontpageSizeUnitsSelected(wxCommandEvent & WXUNUSED (event))1049 void wxRichTextFontPage::OnRichtextfontpageSizeUnitsSelected( wxCommandEvent& WXUNUSED(event) )
1050 {
1051 if (m_dontUpdate)
1052 return;
1053
1054 UpdatePreview();
1055 }
1056
1057 /*!
1058 * wxEVT_SPINCTRL event handler for ID_RICHTEXTFONTPAGE_SPINBUTTONS
1059 */
1060
OnRichtextfontpageSpinbuttonsUp(wxSpinEvent & WXUNUSED (event))1061 void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsUp( wxSpinEvent& WXUNUSED(event) )
1062 {
1063 if (m_dontUpdate)
1064 return;
1065
1066 m_dontUpdate = true;
1067
1068 wxString text = m_sizeTextCtrl->GetValue();
1069 int size = 12;
1070 if (!text.IsEmpty())
1071 {
1072 size = wxAtoi(text);
1073 size ++;
1074 }
1075
1076 if (size < 1 || size > 999)
1077 size = 12;
1078
1079 if (m_fontSizeSpinButtons->GetValue() != size)
1080 m_fontSizeSpinButtons->SetValue(size);
1081
1082 wxString newText(wxString::Format(wxT("%d"), size));
1083
1084 m_sizeTextCtrl->SetValue(newText);
1085 if (!newText.IsEmpty() && m_sizeListBox->FindString(newText) != wxNOT_FOUND)
1086 m_sizeListBox->SetStringSelection(newText);
1087 UpdatePreview();
1088
1089 m_dontUpdate = false;
1090 }
1091
1092 /*!
1093 * wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTFONTPAGE_SPINBUTTONS
1094 */
1095
OnRichtextfontpageSpinbuttonsDown(wxSpinEvent & WXUNUSED (event))1096 void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsDown( wxSpinEvent& WXUNUSED(event) )
1097 {
1098 if (m_dontUpdate)
1099 return;
1100
1101 m_dontUpdate = true;
1102
1103 wxString text = m_sizeTextCtrl->GetValue();
1104 int size = 12;
1105 if (!text.IsEmpty())
1106 {
1107 size = wxAtoi(text);
1108 if (size > 1)
1109 size --;
1110 }
1111
1112 if (size < 1 || size > 999)
1113 size = 12;
1114
1115 if (m_fontSizeSpinButtons->GetValue() != size)
1116 m_fontSizeSpinButtons->SetValue(size);
1117
1118 wxString newText(wxString::Format(wxT("%d"), size));
1119
1120 m_sizeTextCtrl->SetValue(newText);
1121 if (!newText.IsEmpty() && m_sizeListBox->FindString(newText) != wxNOT_FOUND)
1122 m_sizeListBox->SetStringSelection(newText);
1123 UpdatePreview();
1124
1125 m_dontUpdate = false;
1126 }
1127
1128 /*!
1129 * wxEVT_IDLE event handler for ID_RICHTEXTFONTPAGE
1130 */
1131
OnIdle(wxIdleEvent & WXUNUSED (event))1132 void wxRichTextFontPage::OnIdle( wxIdleEvent& WXUNUSED(event) )
1133 {
1134 if (!m_sizeUnitsCtrl)
1135 return;
1136
1137 if (m_sizeUnitsCtrl->GetSelection() == 1 && m_sizeListBox->IsShown())
1138 {
1139 m_fontListBoxParent->Show(m_sizeListBox, false);
1140 Layout();
1141 }
1142 else if (m_sizeUnitsCtrl->GetSelection() == 0 && !m_sizeListBox->IsShown())
1143 {
1144 m_fontListBoxParent->Show(m_sizeListBox, true);
1145 Layout();
1146 }
1147 if (!wxRichTextFormattingDialog::GetDialog(this)->HasOption(wxRichTextFormattingDialog::Option_AllowPixelFontSize) &&
1148 m_sizeUnitsCtrl->IsEnabled())
1149 {
1150 m_sizeUnitsCtrl->Disable();
1151 }
1152 }
1153