- Fix text origin and extent computations in wxSVGFileDC (Neil Chittenden).
- Show tooltips for the too long items in generic wxTreeCtrl (Steven Houchins).
- Add wxStyledTextCtrl::AnnotationClearLine() (sentieshar).
+- Add "inherit" to <font> XRC tag (Steffen Olszewski, Gero Meßsysteme GmbH).
wxGTK:
XRC uses similar, but more flexible, abstract description of fonts to that
used by wxFont class. A font can be described either in terms of its elementary
-properties, or it can be derived from one of system fonts.
+properties, or it can be derived from one of system fonts or the parent window
+font.
The font property element is "composite" element: unlike majority of
properties, it doesn't have text value but contains several child elements
@hdr3col{property, type, description}
@row3col{size, unsigned integer,
Pixel size of the font (default: wxNORMAL_FONT's size or @c sysfont's
- size if the @c sysfont property is used.}
+ size if the @c sysfont property is used or the current size of the font
+ of the enclosing control if the @c inherit property is used.}
@row3col{style, enum,
One of "normal", "italic" or "slant" (default: normal).}
@row3col{weight, enum,
(default: unspecified).}
@row3col{sysfont, ,
Symbolic name of system standard font(one of wxSYS_*_FONT constants).}
+@row3col{inherit, @ref overview_xrcformat_type_bool,
+ If true, the font of the enclosing control is used. If this property and the
+ @c sysfont property are specified the @c sysfont property takes precedence.}
@row3col{relativesize, float,
- Float, font size relative to chosen system font's size; can only be
- used when 'sysfont' is used and when 'size' is not used.}
+ Float, font size relative to chosen system font's or inherited font's size;
+ can only be used when 'sysfont' or 'inherit' is used and when 'size' is not
+ used.}
@endTable
All of them are optional, if they are missing, appropriate wxFont default is
-used. If the @c sysfont property is used, then the defaults are taken from it
-instead.
+used. If the @c sysfont or @c inherit property is used, then the defaults are
+taken from it instead.
Examples:
@code
</font>
@endcode
+@note You cannot use @c inherit for a font that gets used before the enclosing
+ control is created, e.g. if the control gets the font passed as parameter
+ for its constructor, or if the control is not derived from wxWindow.
+
@section overview_xrcformat_windows Controls and Windows
#endif
// Gets a font.
- wxFont GetFont(const wxString& param = wxT("font"));
+ wxFont GetFont(const wxString& param = wxT("font"), wxWindow* parent = NULL);
// Gets the value of a boolean attribute (only "0" and "1" are valid values)
bool GetBoolAttr(const wxString& attr, bool defaultv);
<object class="choicebookpage">
<label>wxStaticText</label>
<object class="wxPanel" name="statictext">
+ <font>
+ <size>12</size>
+ </font>
<object class="wxFlexGridSizer">
- <cols>1</cols>
+ <cols>2</cols>
<rows>0</rows>
<vgap>0</vgap>
<hgap>0</hgap>
- <growablecols>0</growablecols>
- <growablerows>0</growablerows>
+ <growablecols>0,1</growablecols>
+ <growablerows>0,1,2</growablerows>
<object class="sizeritem">
- <flag>wxALIGN_CENTRE|wxALL</flag>
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="wxID_STATIC">
+ <label>Default font:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_statictext">
+ <label>It was a dark and stormy night.</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="wxID_STATIC">
+ <label>Default constructed bold font:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="controls_statictext">
+ <label>It was a dark and stormy night.</label>
+ <font>
+ <weight>bold</weight>
+ </font>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL|wxALL</flag>
+ <border>5</border>
+ <object class="wxStaticText" name="wxID_STATIC">
+ <label>Inheritance constructed bold font:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL</flag>
<border>5</border>
<object class="wxStaticText" name="controls_statictext">
<label>It was a dark and stormy night.</label>
+ <font>
+ <inherit>1</inherit>
+ <weight>bold</weight>
+ </font>
</object>
</object>
</object>
if (HasParam(wxT("data")))
item.SetData(GetLong(wxT("data")));
if (HasParam(wxT("font")))
- item.SetFont(GetFont());
+ item.SetFont(GetFont(wxT("font"), list));
if (HasParam(wxT("state")))
item.SetState(GetStyle(wxT("state")));
if (HasParam(wxT("textcolour")))
return wxNullFont;
}
-wxFont wxXmlResourceHandler::GetFont(const wxString& param)
+wxFont wxXmlResourceHandler::GetFont(const wxString& param, wxWindow* parent)
{
wxXmlNode *font_node = GetParamNode(param);
if (font_node == NULL)
}
#endif // wxUSE_FONTMAP
+ wxFont font;
+
// is this font based on a system font?
- wxFont font = GetSystemFont(GetParamValue(wxT("sysfont")));
+ if (HasParam(wxT("sysfont")))
+ {
+ font = GetSystemFont(GetParamValue(wxT("sysfont")));
+ }
+ // or should the font of the widget be used?
+ else if (GetBool(wxT("inherit"), false))
+ {
+ if (parent)
+ font = parent->GetFont();
+ else
+ ReportError("no parent window specified to derive the font from");
+ }
if (font.IsOk())
{
wnd->SetToolTip(GetText(wxT("tooltip")));
#endif
if (HasParam(wxT("font")))
- wnd->SetFont(GetFont(wxT("font")));
+ wnd->SetFont(GetFont(wxT("font"), wnd));
if (HasParam(wxT("ownfont")))
- wnd->SetOwnFont(GetFont(wxT("ownfont")));
+ wnd->SetOwnFont(GetFont(wxT("ownfont"), wnd));
if (HasParam(wxT("help")))
wnd->SetHelpText(GetText(wxT("help")));
}