]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/richtext/richtextstyles.h
WXIMPORT must specify default visibility too, otherwise things like typeinfo may...
[wxWidgets.git] / include / wx / richtext / richtextstyles.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/richtext/richtextstyles.h
3// Purpose: Style management for wxRichTextCtrl
4// Author: Julian Smart
5// Modified by:
6// Created: 2005-09-30
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_RICHTEXTSTYLES_H_
13#define _WX_RICHTEXTSTYLES_H_
14
15/*!
16 * Includes
17 */
18
19#include "wx/defs.h"
20
21#if wxUSE_RICHTEXT
22
23#include "wx/richtext/richtextbuffer.h"
24
25#if wxUSE_HTML
26#include "wx/htmllbox.h"
27#endif
28
29#if wxUSE_COMBOCTRL
30#include "wx/combo.h"
31#endif
32
33#include "wx/choice.h"
34
35/*!
36 * Forward declarations
37 */
38
39class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCtrl;
40class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextBuffer;
41
42/*!
43 * wxRichTextStyleDefinition class declaration
44 * A base class for paragraph and character styles.
45 */
46
47class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition: public wxObject
48{
49 DECLARE_CLASS(wxRichTextStyleDefinition)
50public:
51
52 /// Copy constructors
53 wxRichTextStyleDefinition(const wxRichTextStyleDefinition& def)
54 : wxObject()
55 {
56 Init();
57 Copy(def);
58 }
59
60 /// Default constructor
61 wxRichTextStyleDefinition(const wxString& name = wxEmptyString) { Init(); m_name = name; }
62
63 /// Destructor
64 virtual ~wxRichTextStyleDefinition() {}
65
66 /// Initialises members
67 void Init() {}
68
69 /// Copies from def
70 void Copy(const wxRichTextStyleDefinition& def);
71
72 /// Equality test
73 bool Eq(const wxRichTextStyleDefinition& def) const;
74
75 /// Assignment operator
76 void operator =(const wxRichTextStyleDefinition& def) { Copy(def); }
77
78 /// Equality operator
79 bool operator ==(const wxRichTextStyleDefinition& def) const { return Eq(def); }
80
81 /// Override to clone the object
82 virtual wxRichTextStyleDefinition* Clone() const = 0;
83
84 /// Sets and gets the name of the style
85 void SetName(const wxString& name) { m_name = name; }
86 const wxString& GetName() const { return m_name; }
87
88 /// Sets and gets the style description
89 void SetDescription(const wxString& descr) { m_description = descr; }
90 const wxString& GetDescription() const { return m_description; }
91
92 /// Sets and gets the name of the style that this style is based on
93 void SetBaseStyle(const wxString& name) { m_baseStyle = name; }
94 const wxString& GetBaseStyle() const { return m_baseStyle; }
95
96 /// Sets and gets the style
97 void SetStyle(const wxRichTextAttr& style) { m_style = style; }
98 const wxRichTextAttr& GetStyle() const { return m_style; }
99 wxRichTextAttr& GetStyle() { return m_style; }
100
101 /// Gets the style combined with the base style
102 virtual wxRichTextAttr GetStyleMergedWithBase(const wxRichTextStyleSheet* sheet) const;
103
104protected:
105 wxString m_name;
106 wxString m_baseStyle;
107 wxString m_description;
108 wxRichTextAttr m_style;
109};
110
111/*!
112 * wxRichTextCharacterStyleDefinition class declaration
113 */
114
115class WXDLLIMPEXP_RICHTEXT wxRichTextCharacterStyleDefinition: public wxRichTextStyleDefinition
116{
117 DECLARE_DYNAMIC_CLASS(wxRichTextCharacterStyleDefinition)
118public:
119
120 /// Copy constructor
121 wxRichTextCharacterStyleDefinition(const wxRichTextCharacterStyleDefinition& def): wxRichTextStyleDefinition(def) {}
122
123 /// Default constructor
124 wxRichTextCharacterStyleDefinition(const wxString& name = wxEmptyString):
125 wxRichTextStyleDefinition(name) {}
126
127 /// Destructor
128 virtual ~wxRichTextCharacterStyleDefinition() {}
129
130 /// Clones the object
131 virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextCharacterStyleDefinition(*this); }
132
133protected:
134};
135
136/*!
137 * wxRichTextParagraphStyleDefinition class declaration
138 */
139
140class WXDLLIMPEXP_RICHTEXT wxRichTextParagraphStyleDefinition: public wxRichTextStyleDefinition
141{
142 DECLARE_DYNAMIC_CLASS(wxRichTextParagraphStyleDefinition)
143public:
144
145 /// Copy constructor
146 wxRichTextParagraphStyleDefinition(const wxRichTextParagraphStyleDefinition& def): wxRichTextStyleDefinition(def) { m_nextStyle = def.m_nextStyle; }
147
148 /// Default constructor
149 wxRichTextParagraphStyleDefinition(const wxString& name = wxEmptyString):
150 wxRichTextStyleDefinition(name) {}
151
152 // Destructor
153 virtual ~wxRichTextParagraphStyleDefinition() {}
154
155 /// Sets and gets the next style
156 void SetNextStyle(const wxString& name) { m_nextStyle = name; }
157 const wxString& GetNextStyle() const { return m_nextStyle; }
158
159 /// Copies from def
160 void Copy(const wxRichTextParagraphStyleDefinition& def);
161
162 /// Assignment operator
163 void operator =(const wxRichTextParagraphStyleDefinition& def) { Copy(def); }
164
165 /// Equality operator
166 bool operator ==(const wxRichTextParagraphStyleDefinition& def) const;
167
168 /// Clones the object
169 virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextParagraphStyleDefinition(*this); }
170
171protected:
172
173 /// The next style to use when adding a paragraph after this style.
174 wxString m_nextStyle;
175};
176
177/*!
178 * wxRichTextListStyleDefinition class declaration
179 */
180
181class WXDLLIMPEXP_RICHTEXT wxRichTextListStyleDefinition: public wxRichTextParagraphStyleDefinition
182{
183 DECLARE_DYNAMIC_CLASS(wxRichTextListStyleDefinition)
184public:
185
186 /// Copy constructor
187 wxRichTextListStyleDefinition(const wxRichTextListStyleDefinition& def): wxRichTextParagraphStyleDefinition(def) { Init(); Copy(def); }
188
189 /// Default constructor
190 wxRichTextListStyleDefinition(const wxString& name = wxEmptyString):
191 wxRichTextParagraphStyleDefinition(name) { Init(); }
192
193 /// Destructor
194 virtual ~wxRichTextListStyleDefinition() {}
195
196 /// Copies from def
197 void Copy(const wxRichTextListStyleDefinition& def);
198
199 /// Assignment operator
200 void operator =(const wxRichTextListStyleDefinition& def) { Copy(def); }
201
202 /// Equality operator
203 bool operator ==(const wxRichTextListStyleDefinition& def) const;
204
205 /// Clones the object
206 virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextListStyleDefinition(*this); }
207
208 /// Sets/gets the attributes for the given level
209 void SetLevelAttributes(int i, const wxRichTextAttr& attr);
210 wxRichTextAttr* GetLevelAttributes(int i);
211 const wxRichTextAttr* GetLevelAttributes(int i) const;
212
213 /// Convenience function for setting the major attributes for a list level specification
214 void SetAttributes(int i, int leftIndent, int leftSubIndent, int bulletStyle, const wxString& bulletSymbol = wxEmptyString);
215
216 /// Finds the level corresponding to the given indentation
217 int FindLevelForIndent(int indent) const;
218
219 /// Combine the base and list style with a paragraph style, using the given indent (from which
220 /// an appropriate level is found)
221 wxRichTextAttr CombineWithParagraphStyle(int indent, const wxRichTextAttr& paraStyle, wxRichTextStyleSheet* styleSheet = NULL);
222
223 /// Combine the base and list style, using the given indent (from which
224 /// an appropriate level is found)
225 wxRichTextAttr GetCombinedStyle(int indent, wxRichTextStyleSheet* styleSheet = NULL);
226
227 /// Combine the base and list style, using the given level from which
228 /// an appropriate level is found)
229 wxRichTextAttr GetCombinedStyleForLevel(int level, wxRichTextStyleSheet* styleSheet = NULL);
230
231 /// Gets the number of available levels
232 int GetLevelCount() const { return 10; }
233
234 /// Is this a numbered list?
235 bool IsNumbered(int i) const;
236
237protected:
238
239 /// The styles for each level (up to 10)
240 wxRichTextAttr m_levelStyles[10];
241};
242
243/*!
244 * The style sheet
245 */
246
247class WXDLLIMPEXP_RICHTEXT wxRichTextStyleSheet: public wxObject
248{
249 DECLARE_CLASS( wxRichTextStyleSheet )
250
251public:
252 /// Constructors
253 wxRichTextStyleSheet(const wxRichTextStyleSheet& sheet)
254 : wxObject()
255 {
256 Init();
257 Copy(sheet);
258 }
259 wxRichTextStyleSheet() { Init(); }
260 virtual ~wxRichTextStyleSheet();
261
262 /// Initialisation
263 void Init();
264
265 /// Copy
266 void Copy(const wxRichTextStyleSheet& sheet);
267
268 /// Assignment
269 void operator=(const wxRichTextStyleSheet& sheet) { Copy(sheet); }
270
271 /// Equality
272 bool operator==(const wxRichTextStyleSheet& sheet) const;
273
274 /// Add a definition to the character style list
275 bool AddCharacterStyle(wxRichTextCharacterStyleDefinition* def);
276
277 /// Add a definition to the paragraph style list
278 bool AddParagraphStyle(wxRichTextParagraphStyleDefinition* def);
279
280 /// Add a definition to the list style list
281 bool AddListStyle(wxRichTextListStyleDefinition* def);
282
283 /// Add a definition to the appropriate style list
284 bool AddStyle(wxRichTextStyleDefinition* def);
285
286 /// Remove a character style
287 bool RemoveCharacterStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_characterStyleDefinitions, def, deleteStyle); }
288
289 /// Remove a paragraph style
290 bool RemoveParagraphStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_paragraphStyleDefinitions, def, deleteStyle); }
291
292 /// Remove a list style
293 bool RemoveListStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_listStyleDefinitions, def, deleteStyle); }
294
295 /// Remove a style
296 bool RemoveStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false);
297
298 /// Find a character definition by name
299 wxRichTextCharacterStyleDefinition* FindCharacterStyle(const wxString& name, bool recurse = true) const { return (wxRichTextCharacterStyleDefinition*) FindStyle(m_characterStyleDefinitions, name, recurse); }
300
301 /// Find a paragraph definition by name
302 wxRichTextParagraphStyleDefinition* FindParagraphStyle(const wxString& name, bool recurse = true) const { return (wxRichTextParagraphStyleDefinition*) FindStyle(m_paragraphStyleDefinitions, name, recurse); }
303
304 /// Find a list definition by name
305 wxRichTextListStyleDefinition* FindListStyle(const wxString& name, bool recurse = true) const { return (wxRichTextListStyleDefinition*) FindStyle(m_listStyleDefinitions, name, recurse); }
306
307 /// Find any definition by name
308 wxRichTextStyleDefinition* FindStyle(const wxString& name, bool recurse = true) const;
309
310 /// Return the number of character styles
311 size_t GetCharacterStyleCount() const { return m_characterStyleDefinitions.GetCount(); }
312
313 /// Return the number of paragraph styles
314 size_t GetParagraphStyleCount() const { return m_paragraphStyleDefinitions.GetCount(); }
315
316 /// Return the number of list styles
317 size_t GetListStyleCount() const { return m_listStyleDefinitions.GetCount(); }
318
319 /// Return the nth character style
320 wxRichTextCharacterStyleDefinition* GetCharacterStyle(size_t n) const { return (wxRichTextCharacterStyleDefinition*) m_characterStyleDefinitions.Item(n)->GetData(); }
321
322 /// Return the nth paragraph style
323 wxRichTextParagraphStyleDefinition* GetParagraphStyle(size_t n) const { return (wxRichTextParagraphStyleDefinition*) m_paragraphStyleDefinitions.Item(n)->GetData(); }
324
325 /// Return the nth list style
326 wxRichTextListStyleDefinition* GetListStyle(size_t n) const { return (wxRichTextListStyleDefinition*) m_listStyleDefinitions.Item(n)->GetData(); }
327
328 /// Delete all styles
329 void DeleteStyles();
330
331 /// Insert into list of style sheets
332 bool InsertSheet(wxRichTextStyleSheet* before);
333
334 /// Append to list of style sheets
335 bool AppendSheet(wxRichTextStyleSheet* after);
336
337 /// Unlink from the list of style sheets
338 void Unlink();
339
340 /// Get/set next sheet
341 wxRichTextStyleSheet* GetNextSheet() const { return m_nextSheet; }
342 void SetNextSheet(wxRichTextStyleSheet* sheet) { m_nextSheet = sheet; }
343
344 /// Get/set previous sheet
345 wxRichTextStyleSheet* GetPreviousSheet() const { return m_previousSheet; }
346 void SetPreviousSheet(wxRichTextStyleSheet* sheet) { m_previousSheet = sheet; }
347
348 /// Sets and gets the name of the style sheet
349 void SetName(const wxString& name) { m_name = name; }
350 const wxString& GetName() const { return m_name; }
351
352 /// Sets and gets the style description
353 void SetDescription(const wxString& descr) { m_description = descr; }
354 const wxString& GetDescription() const { return m_description; }
355
356/// Implementation
357
358 /// Add a definition to one of the style lists
359 bool AddStyle(wxList& list, wxRichTextStyleDefinition* def);
360
361 /// Remove a style
362 bool RemoveStyle(wxList& list, wxRichTextStyleDefinition* def, bool deleteStyle);
363
364 /// Find a definition by name
365 wxRichTextStyleDefinition* FindStyle(const wxList& list, const wxString& name, bool recurse = true) const;
366
367protected:
368
369 wxString m_description;
370 wxString m_name;
371
372 wxList m_characterStyleDefinitions;
373 wxList m_paragraphStyleDefinitions;
374 wxList m_listStyleDefinitions;
375
376 wxRichTextStyleSheet* m_previousSheet;
377 wxRichTextStyleSheet* m_nextSheet;
378};
379
380#if wxUSE_HTML
381/*!
382 * wxRichTextStyleListBox class declaration
383 * A listbox to display styles.
384 */
385
386class WXDLLIMPEXP_RICHTEXT wxRichTextStyleListBox: public wxHtmlListBox
387{
388 DECLARE_CLASS(wxRichTextStyleListBox)
389 DECLARE_EVENT_TABLE()
390
391public:
392 /// Which type of style definition is currently showing?
393 enum wxRichTextStyleType
394 {
395 wxRICHTEXT_STYLE_ALL,
396 wxRICHTEXT_STYLE_PARAGRAPH,
397 wxRICHTEXT_STYLE_CHARACTER,
398 wxRICHTEXT_STYLE_LIST
399 };
400
401 wxRichTextStyleListBox()
402 {
403 Init();
404 }
405 wxRichTextStyleListBox(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
406 const wxSize& size = wxDefaultSize, long style = 0);
407 virtual ~wxRichTextStyleListBox();
408
409 void Init()
410 {
411 m_styleSheet = NULL;
412 m_richTextCtrl = NULL;
413 m_applyOnSelection = false;
414 m_styleType = wxRICHTEXT_STYLE_PARAGRAPH;
415 m_autoSetSelection = true;
416 }
417
418 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
419 const wxSize& size = wxDefaultSize, long style = 0);
420
421 /// Creates a suitable HTML fragment for a definition
422 wxString CreateHTML(wxRichTextStyleDefinition* def) const;
423
424 /// Associates the control with a style sheet
425 void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_styleSheet = styleSheet; }
426 wxRichTextStyleSheet* GetStyleSheet() const { return m_styleSheet; }
427
428 /// Associates the control with a wxRichTextCtrl
429 void SetRichTextCtrl(wxRichTextCtrl* ctrl) { m_richTextCtrl = ctrl; }
430 wxRichTextCtrl* GetRichTextCtrl() const { return m_richTextCtrl; }
431
432 /// Get style for index
433 wxRichTextStyleDefinition* GetStyle(size_t i) const ;
434
435 /// Get index for style name
436 int GetIndexForStyle(const wxString& name) const ;
437
438 /// Set selection for string, returning the index.
439 int SetStyleSelection(const wxString& name);
440
441 /// Updates the list
442 void UpdateStyles();
443
444 /// Apply the style
445 void ApplyStyle(int i);
446
447 /// Left click
448 void OnLeftDown(wxMouseEvent& event);
449
450 /// Left double-click
451 void OnLeftDoubleClick(wxMouseEvent& event);
452
453 /// Auto-select from style under caret in idle time
454 void OnIdle(wxIdleEvent& event);
455
456 /// Convert units in tends of a millimetre to device units
457 int ConvertTenthsMMToPixels(wxDC& dc, int units) const;
458
459 /// Can we set the selection based on the editor caret position?
460 /// Need to override this if being used in a combobox popup
461 virtual bool CanAutoSetSelection() { return m_autoSetSelection; }
462 virtual void SetAutoSetSelection(bool autoSet) { m_autoSetSelection = autoSet; }
463
464 /// Set whether the style should be applied as soon as the item is selected (the default)
465 void SetApplyOnSelection(bool applyOnSel) { m_applyOnSelection = applyOnSel; }
466 bool GetApplyOnSelection() const { return m_applyOnSelection; }
467
468 /// Set the style type to display
469 void SetStyleType(wxRichTextStyleType styleType) { m_styleType = styleType; UpdateStyles(); }
470 wxRichTextStyleType GetStyleType() const { return m_styleType; }
471
472 /// Helper for listbox and combo control
473 static wxString GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, wxRichTextStyleType styleType);
474
475protected:
476 /// Returns the HTML for this item
477 virtual wxString OnGetItem(size_t n) const;
478
479private:
480
481 wxRichTextStyleSheet* m_styleSheet;
482 wxRichTextCtrl* m_richTextCtrl;
483 bool m_applyOnSelection; // if true, applies style on selection
484 wxRichTextStyleType m_styleType; // style type to display
485 bool m_autoSetSelection;
486 wxArrayString m_styleNames;
487};
488
489/*!
490 * wxRichTextStyleListCtrl class declaration
491 * This is a container for the list control plus a combobox to switch between
492 * style types.
493 */
494
495#define wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR 0x1000
496
497class WXDLLIMPEXP_RICHTEXT wxRichTextStyleListCtrl: public wxControl
498{
499 DECLARE_CLASS(wxRichTextStyleListCtrl)
500 DECLARE_EVENT_TABLE()
501
502public:
503
504 /// Constructors
505 wxRichTextStyleListCtrl()
506 {
507 Init();
508 }
509
510 wxRichTextStyleListCtrl(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
511 const wxSize& size = wxDefaultSize, long style = 0);
512
513 /// Constructors
514 virtual ~wxRichTextStyleListCtrl();
515
516 /// Member initialisation
517 void Init()
518 {
519 m_styleListBox = NULL;
520 m_styleChoice = NULL;
521 m_dontUpdate = false;
522 }
523
524 /// Creates the windows
525 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
526 const wxSize& size = wxDefaultSize, long style = 0);
527
528 /// Updates the style list box
529 void UpdateStyles();
530
531 /// Associates the control with a style sheet
532 void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
533 wxRichTextStyleSheet* GetStyleSheet() const;
534
535 /// Associates the control with a wxRichTextCtrl
536 void SetRichTextCtrl(wxRichTextCtrl* ctrl);
537 wxRichTextCtrl* GetRichTextCtrl() const;
538
539 /// Set/get the style type to display
540 void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType);
541 wxRichTextStyleListBox::wxRichTextStyleType GetStyleType() const;
542
543 /// Get the choice index for style type
544 int StyleTypeToIndex(wxRichTextStyleListBox::wxRichTextStyleType styleType);
545
546 /// Get the style type for choice index
547 wxRichTextStyleListBox::wxRichTextStyleType StyleIndexToType(int i);
548
549 /// Get the listbox
550 wxRichTextStyleListBox* GetStyleListBox() const { return m_styleListBox; }
551
552 /// Get the choice
553 wxChoice* GetStyleChoice() const { return m_styleChoice; }
554
555 /// React to style type choice
556 void OnChooseType(wxCommandEvent& event);
557
558 /// Lay out the controls
559 void OnSize(wxSizeEvent& event);
560
561private:
562
563 wxRichTextStyleListBox* m_styleListBox;
564 wxChoice* m_styleChoice;
565 bool m_dontUpdate;
566};
567
568#if wxUSE_COMBOCTRL
569
570/*!
571 * Style drop-down for a wxComboCtrl
572 */
573
574class wxRichTextStyleComboPopup : public wxRichTextStyleListBox, public wxComboPopup
575{
576public:
577 virtual void Init()
578 {
579 m_itemHere = -1; // hot item in list
580 m_value = -1;
581 }
582
583 virtual bool Create( wxWindow* parent )
584 {
585 return wxRichTextStyleListBox::Create(parent, wxID_ANY,
586 wxPoint(0,0), wxDefaultSize,
587 wxSIMPLE_BORDER);
588 }
589
590 virtual wxWindow *GetControl() { return this; }
591
592 virtual void SetStringValue( const wxString& s );
593
594 virtual wxString GetStringValue() const;
595
596 /// Can we set the selection based on the editor caret position?
597 // virtual bool CanAutoSetSelection() { return ((m_combo == NULL) || !m_combo->IsPopupShown()); }
598 virtual bool CanAutoSetSelection() { return false; }
599
600 //
601 // Popup event handlers
602 //
603
604 // Mouse hot-tracking
605 void OnMouseMove(wxMouseEvent& event);
606
607 // On mouse left, set the value and close the popup
608 void OnMouseClick(wxMouseEvent& WXUNUSED(event));
609
610protected:
611
612 int m_itemHere; // hot item in popup
613 int m_value;
614
615private:
616 DECLARE_EVENT_TABLE()
617};
618
619/*!
620 * wxRichTextStyleComboCtrl
621 * A combo for applying styles.
622 */
623
624class WXDLLIMPEXP_RICHTEXT wxRichTextStyleComboCtrl: public wxComboCtrl
625{
626 DECLARE_CLASS(wxRichTextStyleComboCtrl)
627 DECLARE_EVENT_TABLE()
628
629public:
630 wxRichTextStyleComboCtrl()
631 {
632 Init();
633 }
634
635 wxRichTextStyleComboCtrl(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
636 const wxSize& size = wxDefaultSize, long style = wxCB_READONLY)
637 {
638 Init();
639 Create(parent, id, pos, size, style);
640 }
641
642 virtual ~wxRichTextStyleComboCtrl() {}
643
644 void Init()
645 {
646 m_stylePopup = NULL;
647 }
648
649 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
650 const wxSize& size = wxDefaultSize, long style = 0);
651
652 /// Updates the list
653 void UpdateStyles() { m_stylePopup->UpdateStyles(); }
654
655 /// Associates the control with a style sheet
656 void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_stylePopup->SetStyleSheet(styleSheet); }
657 wxRichTextStyleSheet* GetStyleSheet() const { return m_stylePopup->GetStyleSheet(); }
658
659 /// Associates the control with a wxRichTextCtrl
660 void SetRichTextCtrl(wxRichTextCtrl* ctrl) { m_stylePopup->SetRichTextCtrl(ctrl); }
661 wxRichTextCtrl* GetRichTextCtrl() const { return m_stylePopup->GetRichTextCtrl(); }
662
663 /// Gets the style popup
664 wxRichTextStyleComboPopup* GetStylePopup() const { return m_stylePopup; }
665
666 /// Auto-select from style under caret in idle time
667 void OnIdle(wxIdleEvent& event);
668
669protected:
670 wxRichTextStyleComboPopup* m_stylePopup;
671};
672
673#endif
674 // wxUSE_COMBOCTRL
675
676#endif
677 // wxUSE_HTML
678
679#endif
680 // wxUSE_RICHTEXT
681
682#endif
683 // _WX_RICHTEXTSTYLES_H_