]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/ribbon/control.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / ribbon / control.h
CommitLineData
3c3ead1d
PC
1///////////////////////////////////////////////////////////////////////////////
2// Name: ribbon/control.h
3// Purpose: interface of wxRibbonControl
4// Author: Peter Cawley
5// RCS-ID: $Id$
6// Licence: wxWindows licence
7///////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxRibbonControl
11
12 wxRibbonControl serves as a base class for all controls which share the
57ab6f23
BP
13 ribbon characteristics of having a ribbon art provider, and (optionally)
14 non-continuous resizing. Despite what the name may imply, it is not the
3c3ead1d 15 top-level control for creating a ribbon interface - that is wxRibbonBar.
98742322 16
3c3ead1d
PC
17 Ribbon controls often have a region which is "transparent", and shows the
18 contents of the ribbon page or panel behind it. If implementing a new
19 ribbon control, then it may be useful to realise that this effect is done
20 by the art provider when painting the background of the control, and hence
21 in the paint handler for the new control, you should call a draw background
22 method on the art provider (wxRibbonArtProvider::DrawButtonBarBackground()
23 and wxRibbonArtProvider::DrawToolBarBackground() typically just redraw what
24 is behind the rectangle being painted) if you want transparent regions.
25
26 @library{wxribbon}
27 @category{ribbon}
28*/
29class wxRibbonControl : public wxControl
30{
31public:
32 /**
33 Constructor.
34 */
35 wxRibbonControl();
36
37 /**
38 Constructor.
98742322 39
3c3ead1d
PC
40 If @a parent is a wxRibbonControl with a non-NULL art provider, then
41 the art provider of new control is set to that of @a parent.
42 */
43 wxRibbonControl(wxWindow *parent, wxWindowID id,
44 const wxPoint& pos = wxDefaultPosition,
45 const wxSize& size = wxDefaultSize, long style = 0,
46 const wxValidator& validator = wxDefaultValidator,
47 const wxString& name = wxControlNameStr);
48
49 /**
50 Set the art provider to be used. In many cases, setting the art provider
51 will also set the art provider on all child windows which extend
52 wxRibbonControl.
98742322 53
3c3ead1d
PC
54 In most cases, controls will not take ownership of the given pointer,
55 with the notable exception being wxRibbonBar::SetArtProvider().
56 */
57 virtual void SetArtProvider(wxRibbonArtProvider* art);
98742322 58
3c3ead1d
PC
59 /**
60 Get the art provider to be used. Note that until an art provider has
61 been set in some way, this function may return NULL.
62 */
63 wxRibbonArtProvider* GetArtProvider() const;
64
65 /**
66 @return @true if this window can take any size (greater than its minimum
67 size), @false if it can only take certain sizes.
98742322 68
3c3ead1d
PC
69 @see GetNextSmallerSize()
70 @see GetNextLargerSize()
71 */
72 virtual bool IsSizingContinuous() const;
98742322 73
3c3ead1d
PC
74 /**
75 If sizing is not continuous, then return a suitable size for the control
76 which is smaller than the current size.
98742322 77
3c3ead1d
PC
78 @param direction
79 The direction(s) in which the size should reduce.
80 @return
81 The current size if there is no smaller size, otherwise a suitable
82 size which is smaller in the given direction(s), and the same as the
83 current size in the other direction (if any).
98742322 84
3c3ead1d
PC
85 @see IsSizingContinuous()
86 */
87 wxSize GetNextSmallerSize(wxOrientation direction) const;
98742322 88
3c3ead1d
PC
89 /**
90 If sizing is not continuous, then return a suitable size for the control
91 which is smaller than the given size.
98742322 92
3c3ead1d
PC
93 @param direction
94 The direction(s) in which the size should reduce.
95 @param relative_to
96 The size for which a smaller size should be found.
97 @return
98 @a relative_to if there is no smaller size, otherwise a suitable
99 size which is smaller in the given direction(s), and the same as
100 @a relative_to in the other direction (if any).
98742322 101
3c3ead1d
PC
102 @see IsSizingContinuous()
103 @see DoGetNextSmallerSize()
104 */
105 wxSize GetNextSmallerSize(wxOrientation direction, wxSize relative_to) const;
98742322 106
3c3ead1d
PC
107 /**
108 If sizing is not continuous, then return a suitable size for the control
d13b34d3 109 which is larger than the current size.
98742322 110
3c3ead1d
PC
111 @param direction
112 The direction(s) in which the size should increase.
113 @return
114 The current size if there is no larger size, otherwise a suitable
115 size which is larger in the given direction(s), and the same as the
116 current size in the other direction (if any).
98742322 117
3c3ead1d
PC
118 @see IsSizingContinuous()
119 */
120 wxSize GetNextLargerSize(wxOrientation direction) const;
98742322 121
3c3ead1d
PC
122 /**
123 If sizing is not continuous, then return a suitable size for the control
d13b34d3 124 which is larger than the given size.
98742322 125
3c3ead1d
PC
126 @param direction
127 The direction(s) in which the size should increase.
128 @param relative_to
129 The size for which a larger size should be found.
130 @return
131 @a relative_to if there is no larger size, otherwise a suitable
132 size which is larger in the given direction(s), and the same as
133 @a relative_to in the other direction (if any).
98742322 134
3c3ead1d
PC
135 @see IsSizingContinuous()
136 @see DoGetNextLargerSize()
137 */
138 wxSize GetNextLargerSize(wxOrientation direction, wxSize relative_to) const;
98742322 139
3c3ead1d
PC
140 /**
141 Perform initial size and layout calculations after children have been
142 added, and/or realize children.
143 */
144 virtual bool Realize();
98742322 145
3c3ead1d
PC
146 /**
147 Alias for Realize().
148 */
149 bool Realise();
98742322 150
07c72264
VZ
151 /**
152 Get the first ancestor which is a wxRibbonBar (or derived) or NULL
153 if not having such parent.
154
155 @since 2.9.4
156 */
157 virtual wxRibbonBar* GetAncestorRibbonBar()const;
158
159
98742322
JS
160 /**
161 Finds the best width and height given the parent's width and height.
162 Used to implement the wxRIBBON_PANEL_FLEXIBLE panel style.
163 */
164 virtual wxSize GetBestSizeForParentSize(const wxSize& parentSize) const;
3c3ead1d
PC
165protected:
166 /**
167 Implementation of GetNextSmallerSize().
168 Controls which have non-continuous sizing must override this virtual
169 function rather than GetNextSmallerSize().
170 */
171 virtual wxSize DoGetNextSmallerSize(wxOrientation direction,
172 wxSize relative_to) const;
173
174 /**
175 Implementation of GetNextLargerSize().
176 Controls which have non-continuous sizing must override this virtual
177 function rather than GetNextLargerSize().
178 */
179 virtual wxSize DoGetNextLargerSize(wxOrientation direction,
180 wxSize relative_to) const;
181};